Беспроводной коммутатор на Dell XT2 - странное поведение rfkill

У меня Dell Latitude XT2, использующий карту Intel WLAN (в lspci он указан как «Intel Corporation Ultimate N WiFi Link 5300») под управлением Lubuntu 12.04 с последними обновлениями. В ноутбуке есть аппаратный переключатель WLAN.

У меня проблемы с активацией WLAN при загрузке с выключенным аппаратным переключателем. К сожалению, ситуация немного запутанная.

rfkill перечисляет два устройства WLAN (хотя lspci показывает только одно устройство Intel). Это ситуация при загрузке с аппаратным переключателем, установленным в положение «Выкл.»:

0: dell-wifi: Wireless LAN
    Soft blocked: yes
    Hard blocked: yes
1: dell-bluetooth: Bluetooth
    Soft blocked: yes
    Hard blocked: yes
2: phy0: Wireless LAN
    Soft blocked: yes
    Hard blocked: yes

Из некоторых тестов я заключаю, что WLAN активируется только тогда, когда оба, dell-wifi и phy0, разблокированы программно-аппаратный. Но я могу разблокировать dell-wifi только после того, как аппаратный переключатель установлен в положение «on».

Процедура справа от загрузки с аппаратным переключателем, установленным в положение «Выкл.»:

  • Мягкая разблокировка phy0 работает, как и ожидалось. Это можно сделать с помощью сценария запуска.
  • sudo rfkill unblock 0: ничего не происходит. Мягкий блок dell-wifi не удален .
  • Установите аппаратный переключатель в положение «on»: phy0 удаляет свой жесткий блок. Все еще нет WLAN.
  • sudo rfkill unblock 0: и , мягкая и жесткая блокировка dell-wifi удалены. WLAN сейчас активен и работает.
  • sudo rfkill block 0: только добавляет мягкий блок, как и ожидалось. WLAN снова отключается.

Итак, чтобы активировать WLAN, мне нужно использовать аппаратный переключатель, а затем (вручную) запустить скрипт - это немного неудобно.

Кто-нибудь знает лучшее решение? Может быть, демон может помочь, чтобы прослушивать события rfkill, чтобы разблокировать dell-wifi после того, как я установил аппаратный переключатель в положение «on»? (звучит как обходной путь)

При загрузке с аппаратным переключателем, установленным в положение «Вкл.», ничто не блокируется ни жестко, ни мягко.

0
задан 28 September 2012 в 16:06

1 ответ

Уже существует демон, которого можно использовать с этой целью: udevd

Можно создать файл правил для него, чтобы слушать rfkill события, видеть этот ответ unix.stackexchange.com. Просто адаптируйте сценарий к своей цели, посмотрите ниже. Знайте, что мой удар не является лучшим - он работает, но вероятно не может считаться хорошим примером.

#!/bin/bash
#/usr/local/bin/unblock-dell-wifi

DEV_CHANGED_BY_HW_SWITCH=phy0
DEV_TO_UNBLOCK=dell-wifi


if [ ${RFKILL_NAME} != ${DEV_CHANGED_BY_HW_SWITCH} ]
then
        exit
fi


# get $DEV_TO_UNBLOCK rfkill id
DEV_TO_UNBLOCK_ID=`rfkill list wlan | grep $DEV_TO_UNBLOCK | grep -o -e "^[0-9]*"`

# maybe add error handling if $DEV_TO_UNBLOCK couldn't be found
if [ -z $DEV_TO_UNBLOCK_ID ]
then
        echo "$DEV_TO_UNBLOCK not found in rfkill list" 1>2&
        exit
fi  


if [ ${RFKILL_STATE} = 0 ]
then
        sudo rfkill block $DEV_TO_UNBLOCK_ID
else
        sudo rfkill unblock $DEV_TO_UNBLOCK_ID
fi
0
ответ дан 28 September 2012 в 16:06

Другие вопросы по тегам:

Похожие вопросы: