web-dev-qa-db-fra.com

Bloc dur sans fil

J'ai un Lenovo Yoga 2 11 "avec Ubuntu 13.10 (x64). J'ai juste un petit problème avec mon wifi. (Bluetooth fonctionne)

J'ai essayé:

Sudo rfkill list

Statut:

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

suivant:

Sudo rfkill unblock all
Sudo rfkill unblock number

Ils ne fonctionnent que dans le bloc mou ... mon bloc dur est toujours sur "oui".

Mon yoga n'a pas de bouton matériel. J'ai essayé les paramètres dans le bios, mais ne fonctionne pas.

Si quelqu'un a une autre solution, je vous en serai très reconnaissant.

2
oliverbedi

Cela ressemble donc à votre IdeaPad Yoga 2 en semi-maçonné, comme le mien. Je viens de comprendre comment résoudre ce problème avec les éléments suivants:

Le rfkill est contrôlé par l’EC intégré, qui est piloté par le module ideapad-laptop. Ce module modifie quelques erreurs sur le Yoga 2, mais heureusement pas d'une manière qui casse définitivement les choses.

L'EC se présente comme un périphérique de la plateforme ACPI, avec des commandes énumérées et une méthode de lecture et d'écriture de propriétés. La structure est assez évidente si vous regardez ideapad-laptop.c dans votre arborescence source Linux locale.

Il y a 3 bits d’intérêt: VPCCMD_W_RF: allume/éteint RF appareils en général? Celui-ci est intéressant, car il n'est pas utilisé dans ideapad_laptop.c, mais son inverse, VPCCMD_R_RF -is-. VPCCMD_W_BT: active/désactive les périphériques Bluetooth. VPCCMD_W_WIFI: active/du wi-fi.

Envoyer un 1 pour chacune de ces commandes active leur fonction et 0 les désactive. Je soupçonne que le W_RF est en fait non fonctionnel sur les yogas. Le pilote ideapad-laptop verra cependant son réglage et activera les indicateurs persistants persistants pour les périphériques BT et WIFI.

J'ai résolu ce problème en compilant une version locale du pilote ideapad-laptop.c qui exécute les commandes suivantes dès que possible, puis le module est abandonné:

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);

Après cela, je me suis assuré de conserver le module ideapad-laptop avec l'option blacklist ideapad-laptop dans un fichier du fichier /etc/modprobe.d/wowels.conf.

Je travaille bien depuis.

Malheureusement, le module ideapad-laptop a changé d’une version du noyau à l’autre. Je ne peux donc pas vider un module construit du fichier source complet, mais si vous recherchez des chaînes write_ec_cmd dans ce fichier, et créez votre propre copie de ce fichier avec des instructions comme celles de https://www.kernel.org/doc/Documentation/kbuild/modules.txt pour la construction de modules externes, vous pourriez vous en sortir.

Vous voudrez probablement le placer dans l'un des fichiers debugfs pour pouvoir l'exécuter en attachant un fichier debugfs, puis déchargez le module avant d'appuyer accidentellement sur un bouton rfkill.

Vous devriez alors être capable de modifier votre liste et de vous voir débloqué!

2
Bryon Roché
0
serv-inc