Радость от обновления Ubuntu на своем ноутбуке (Dell Vostro A860) до версии 9.10 Karmic Koala омрачилась нерабочим вайфаем. Причем в логах наблюдалась абсолютная тишина. Модуль ath5k грузится без ошибки и правильно распознает чип от Atheros. А Network Manager скупо пишет "Устройство не готово".
После продолжительного гугления выяснилось, что все дело в некорректной работе функциональной кнопки (Fn + F11), отвечающей за включение/отключение вайфая и блютуза. К слову – я им никогда и не пользовался, так как казалось, она как-то не так работает.
$ tail /sys/class/rfkill/*/{state,name,type,persistent}
==> /sys/class/rfkill/rfkill1/state <==Как видим,
0
==> /sys/class/rfkill/rfkill2/state <==
0
==> /sys/class/rfkill/rfkill3/state <==
0
==> /sys/class/rfkill/rfkill1/name <==
phy0
==> /sys/class/rfkill/rfkill2/name <==
dell-wifi
==> /sys/class/rfkill/rfkill3/name <==
dell-bluetooth
==> /sys/class/rfkill/rfkill1/type <==
wlan
==> /sys/class/rfkill/rfkill2/type <==
wlan
==> /sys/class/rfkill/rfkill3/type <==
bluetooth
==> /sys/class/rfkill/rfkill1/persistent <==
0
==> /sys/class/rfkill/rfkill2/persistent <==
0
==> /sys/class/rfkill/rfkill3/persistent <==
0
rfkill1
и rfkill2
имеют тип wlan
. Состояние (state) у обоих равно 0
, означающему SOFT LOCK
. Кроме состояния 0
могут быть 1
и 2
, UNLOCK
и HARD LOCK
соответственно.Вся проблема состоит в том, что при нажатии на упомянутую ранее функциональную кнопку состояние переключается только между значениями
SOFT LOCK
и HARD LOCK
, минуя UNLOCK
. Из-за этого блокируется переход интерфейса файвая в активный режим, наглядно демонстрируемый командой$ sudo ifconfig wlan0 up
SIOCSIFFLAGS: Unknown error 132Решение состоит в принудительном переводе в состояние
UNLOCK
.Для этого пишем простой скрипт
#!/bin/shСохраняем скрипт в файл «
for i in /sys/class/rfkill/rfkill*/type;
do
type="`cat $i`"
if [ "$type" = "wlan" ];
then
n="`echo $i | sed -r 's%/type$%%'`";
echo 1 > ${n}/state;
fi;
done;
/usr/local/sbin/unlock-wlan
» и делаем его исполняемым$ sudo chmod +x /usr/local/sbin/unlock-wlanПосле ручного запуска скрипта надо перезапускать
Network Manager
– иначе он ничего не заметит.Теперь настраиваем
Upstart
для исполнения нашего скрипта при загрузке системы, перед стартом Network Manager
. Для этого создаем файл «/etc/init/unlock-wlan.conf
»# unlock-wlan - unlock wireless device
#
description "unlock wireless device"
# Скрипт запускается перед настройкой сетевых интерфейсов
start on starting networking
task
exec /usr/local/sbin/unlock-wlan
2 комментария:
Баг о котором известно, не баг, а фича :)
Лозунг M$? :)
Отправить комментарий