Беспроводной жесткий блок
У меня есть 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.
После этого вы сможете просмотреть список и увидеть себя разблокированным!
Несколько вещей, чтобы попробовать
echo "blacklist ideapad_laptop" | sudo tee /etc/modprobe.d/ideapad.confотключает модуль драйвера Lenovo, илиНажмите F2 для входа в BIOS, затем F9 для сброса, затем F10 для сохранения и выхода. Ваш беспроводной должен работать в этот момент.