Беспроводной жесткий блок

У меня есть Lenovo Yoga 2 11"с Ubuntu 13.10 (x64). У меня просто небольшая проблема с моим Wi-Fi. (Bluetooth работает)

Я старался:

sudo rfkill list

Статус:

0: ideapad_wlan: Wireless LAN
    Soft blocked: no
    Hard blocked: yes
1: ideapad_bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: yes
2: phy0: wireless LAN
    Soft blocked: no
    Hard blocked: no
3: hci0: bluetooth
    Soft blocked: no
    Hard blocked: no

следующий:

sudo rfkill unblock all
sudo rfkill unblock number

Они работают только мягким блоком... мой жесткий блок все еще на "да".

В моей йоге нет аппаратной кнопки. Я пробовал настройки в биосе, но не работает.

Если у кого-то есть другое решение, я буду очень признателен.

3 ответа

Так что, похоже, что ваша IdeaPad Yoga 2 наполовину обмуровалась так же, как моя. Я только что понял, как это исправить с помощью следующего:

Rfkill управляется встроенным EC, который управляется модулем ideapad-ноутбук. Этот модуль подправляет некоторые ошибки в Yoga 2, но, к счастью, не таким образом, что навсегда ломает вещи.

EC представляет собой устройство платформы ACPI с перечисляемыми командами и методом чтения и записи свойства. Структура довольно очевидна, если вы посмотрите на ideapad-laptop.c в вашем локальном дереве исходных текстов Linux.

Интересны 3 бита: VPCCMD_W_RF: вообще включает / выключает РЧ устройства? Это интересно, так как оно не используется в ideapad_laptop.c, а наоборот, VPCCMD_R_RF -is-. VPCCMD_W_BT: включает / выключает устройства Bluetooth. VPCCMD_W_WIFI: включает / выключает Wi-Fi.

Для каждой из этих команд отправка им 1 включает их функцию, а 0 выключает их. Я подозреваю, что W_RF фактически не работает в йоге. Драйвер ideapad-ноутбук увидит свои настройки и включит постоянные флаги rfkill для устройств BT и WIFI.

Я исправил это, скомпилировав локальную версию драйвера ideapad-laptop.c, который выполняет следующие команды, как только может, и затем отключает модуль:

write_ec_cmd(ideapad_handle, VPCCMD_W_RF, 1);
write_ec_cmd(ideapad_handle, VPCCMD_W_BT, 1);
write_ec_cmd(ideapad_handle, VPCCMD_W_WIFI, 1);

После этого я позаботился о том, чтобы модуль ideapad-Laptop с опцией черного списка ideapad-laptop оставался в файле /etc/modprobe.d/whwhat.conf.

С тех пор я работаю нормально.

К сожалению, модуль ideapad-laptop изменился с одной версии ядра на другую, поэтому я не могу просто сбросить встроенный модуль для полного исходного файла, но если вы будете искать в этом файле строки write_ec_cmd, и создадите свою собственную копию этого файла с помощью Инструкции, подобные приведенным на https://www.kernel.org/doc/Documentation/kbuild/modules.txt для сборки внешних модулей, могут подойти.

Возможно, вы захотите поместить его в один из файлов debugfs, чтобы запустить его, перехватив файл debugfs, а затем выгрузить модуль, прежде чем вы случайно нажмете кнопку rfkill.

После этого вы сможете просмотреть список и увидеть себя разблокированным!

Доступное обновление BIOS решило это для меня.

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