Dominique Meeùs
Dernière modification le   
retour à la table des matières — à l’index — à ma page de départ

Atheros AR9485 Wireless Network Adapter et pilote ath9k

Mon Zenbook ASUS UX21 E est équipé d’un adaptateur de réseau sans fil AR9485 de Atheros Communications Inc. Ce dispositif utilise le pilote ath9k. Il y a dans le module ath9k un bug connu qui donne un signal très faible, et donc une liaison seulement à très courte distance, qui décroche dès qu’on s’éloigne (on ne tient pas à dix mètres). Cela vaut pour les noyaux 3.5 à 3.8. Voir https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1160188.

Solution lourde, kernel 3.10 rc 5 et patch

Il existe un patch, mais qui n’est toujours pas intégré, dans aucun kernel disponible. Quelqu’un a donc compilé un noyau 3.10 (type 64 bits) avec le patch et propose en ligne ce noyau par un script d’installation. Je l’ai utilisé avec succès le dimanche 7 juillet 2013 et j’ai fonctionné dix jours avec ce noyau spécial. Il faut exécuter successivement :

wget -O kernel.sh http://ubuntuone.com/1iJaMuISila67x9wV07SW4
sudo chmod +x kernel.sh
kernel.sh

C’est à dire (i) télécharger le script d’installation kernel.sh ; (ii) le rendre exécutable ; (iii) exécuter kernel.sh, lequel télécharge les composants du noyau et les installe. Le script kernel.sh contient un sudo là où il faut ; on peut donc l’exécuter comme utilisateur ordinaire. Il fait très bien tout ce qu’il faut, y compris mettre à jour le grub. On ne se retrouve donc pas avec un système qui ne démarre plus. Pour information, le code du script kernel.sh est le suivant :

#!/bin/bash
#kernel 3.10.rc5 compiled for amd64 with ath9k and bluetooth patch

wget -O kernel.tar.gz http://ubuntuone.com/4lW7ZCTMpOmwspUacREbFU

sudo su -c 'tar xzvf kernel.tar.gz ; mv linux-3.10-rc5 /usr/src/ ; cd /usr/src/linux-3.10-rc5 ; make modules_install ; make install ; cd /boot ; mkinitramfs -o initrd.img-3.10.0-rc5 3.10.0-rc5 ; update-grub'

Cela donne une amélioration saisissante de la communication sans fil. Reste à espérer que ça passe rapidement dans les noyaux officiels, pour qu’on puisse en revenir aux mises à jour ordinaires du noyau à partir des dépôts Ubuntu.

Solution légère dans dans son noyau ordinaire

Depuis, dans la même discussion du bug ci-dessus, est apparue depuis une solution beaucoup plus satisfaisante parce qu’elle s’applique au noyau ordinaire de la distribution. Il faut cependant avoir installé les headers du kernel, par exemple en Ubuntu le paquet linux-headers-generic. Si on a installé un noyau spécial comme ci-dessus, il faut redémarrer avec le noyau normal et faire ce qui suit (de 2 à 7, ce sont des commandes que l’on peut copier-coller (Ctrl+Maj+V, dans un terminal) :

  1. Open a terminal console / ouvrir une fenêtre de terminal
  2. wget https://www.kernel.org/pub/linux/kernel/projects/backports/2013/06/18/backports-20130618.tar.xz
  3. tar xvf backports-20130618.tar.xz
  4. cd backports-20130618
  5. make defconfig-ath9k
  6. make
  7. sudo make install
  8. Insert your password when sudo asks it / introduire son mot de passe
  9. Ready! Reboot the computer / Et voilà ! redémarrer.

Appliqué le 18 juillet à mon noyau 3.8 de la distribution. Le résultat est pareil : extraordinaire ! (J’ai effacé les fichiers du noyau 3.10 et mis à jour le Grub.) Une réserve cependant : l’effet est perdu à chaque mise à jour du noyau. Le 18 juillet, c’était 3.8.0-26. Début août, j’ai remarqué que l’amélioration était perdue. Il faut donc chaque fois recommencer l’opération, heureusement assez simple. Ça ne prend que quelques dizaines de secondes. (Il est préférable de conserver dans ce but le répertoire backports-20130618 pour y exécuter les étapes 5, 6 et 7.) J’ai recommencé le 3 août pour 3.8.0-27. Il serait bien sûr heureux que ce soit repris officiellement dans le noyau.

Dominique Meeùs . Date: 2011… 2017