Hatred's Log Place

DON'T PANIC!

Dec 22, 2013 - 2 minute read - linux

Wifi на Asus X551C

Не думаю, что проблема дистрибутивно-специфичная, но писать буду про Linux Mint 16.

Итак, имеем проблему: при загрузке с CD и уже в самой системе после установки у нас заблокирован Wifi:

user@user-X551CAP ~ $ rfkill list
1: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: yes
2: asus-wlan: Wireless LAN
	Soft blocked: no
	Hard blocked: no
3: asus-bluetooth: Bluetooth
	Soft blocked: no
	Hard blocked: no
4: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no

Обращаем внимание на строку

Hard blocked: yes

для устройства phy0. Обычно такое бывает когда карта выключена или через BIOS или через переключатель корпусе ноутбука. В случае конкретной модели Asus это состояние должно переклчаться через Fn-F2. Да вот беда: не работает эта комбинация. Вызов acpi_listen молчит как партизан при нажатии этой кнопки.

Но самым шоком стало то, что после засыпания и просыпания карта включалась! Собственно это стало поводом к поиску. И… первым воркэраундом :)

Перебирая выводы команд lspci -nn, lsmod, изучил какие модули используются. Особо заинтересовали модули из серии wmi - Windows Management Instrumentation и, в частности, asus_nb_wmi отвечающий, судя по всему за трансляцию различных клавиатурных эвентов, и его опция wapf, которая, судя по интернетам, отвечает за поведение клавиш включения/выключения Wifi и Bt.

Итак, погуглив по интернетам, нахожу следующие ссылки:

  1. http://ubuntuforums.org/showthread.php?t=2173539
  2. http://ubuntuforums.org/showthread.php?t=2172434

В общем, вроде как у некоторых проблему решает. Забегая вперёд хочу отметить: wifi заработал со значением wapf равным единице, но сама клавиша Fn-F2 - нет. Пробовать начинал с 0. Беда в том, что просто перегрузка модуля не помогает, нужно или полностью перегружать модули для карты и всего сопутствующего или просто перегружать комп.

В общем решение: создаём файл /etc/modprobe.d/asus.conf следующего содержимого:

options asus_nb_wmi wapf=1

и перегружаем комп.

Отмечу, что ещё до этого решения я задал через параметры ядра (задал в /etc/default/grub.conf) следующие настройки:

GRUB_CMDLINE_LINUX_DEFAULT="... rfkill.master_switch_mode=2 rfkill.default_state=1"

Быть может они помогли в комплексе, но проверять WAPF без параметров для rfkill было уже лень.

Ссылки по теме: