Trucs:Carte Netgear MA311 firmware upgrade

De Lea Linux
Aller à la navigation Aller à la recherche
Par Jice <jice chez lea-linux.org>

Ma vieille carte wifi Netgear MA 311 (chipset Prism 2.5) avait de gros problèmes de stabilité de la connexion (sous Mandriva 2008.0, mais cela vient des dernières versions des drivers), avec des messages bizarres dans le log système (dmesg), du style : hermes @ f8850000: BAP0 offset timeout: reg=0x8000 id=0xfdc6 offset=0x0 printk: 66 messages suppressed. hermes @ f8850000: Error -16 issuing command 0x0021. eth0: Error -110 setting MAC address eth0: Error -110 configuring card

La seule chose à faire était de redémarrer le réseau par service network restart, et il fallait même parfois décharger les drivers de la carte (hermes & orinoco).

Cependant, l'utilisant uniquement pour me connecter à internet et ayant une connection à 2 Mb, les 11 Mb de la carte me suffisent amplement.

Les messages de ce genre dans le log système proviennent soit d'un problème matériel, soit d'un bug entre le driver et le firmware de la carte (le logiciel embarqué dans la carte).

J'ai donc décidé de rénover la carte en mettant à jour le firmware, après avoir trouvé la page suivante : http://linux.junsun.net/intersil-prism/ (qu'il m'aura fallu lire très attentivement plusieurs fois ;-). Cela a bien réussi, car maintenant ma connexion wifi est stable, plus besoin de la redémarrer, et plus de messages bizarres dans le log. De plus, d'après la page ci-avant, cela permet à cette carte de supporter le WPA (mais je n'ai pas testé).

Voici la procédure (un peu quick and dirty - rapide et sale) que j'ai suivie.

J'ai du compiler les modules du noyau, car pour flasher le bios de la MA311, il fallait activer une option spéciale dans le driver hostap, que Mandriva n'active pas par défaut.

Version du noyau : $ uname -a Linux jice.is-a-geek.org 2.6.22.18-desktop-1mdv #1 SMP Mon Feb 11 13:53:50 EST 2008 i686 AMD Athlon(tm) XP 1800+ GNU/Linux

On installe les sources (en croisant les doigts pour que la connexion ne tombe pas au milieu du téléchargement des 50 Mo) :

  1. urpmi kernel-source-2.6.22.18-1mdv

Pour aller vite, on va modifier le Makefile du kernel afin de construire les modules pour la version du kernel qui tourne. Remplacer la ligne EXTRAVERSION = .18-1mdvcustom par : EXTRAVERSION = .18-desktop-1mdv

Lancer l'outil de configuration du noyau :

  1. cd /usr/src/linux-2.6.22.18-1mdv
  2. make xconfig

Allez dans le menu Edit/Find, ou tapez <key>Ctrl+F</key>, entrez hostap puis cliquez sur le bouton <key>Search</key>. Vous devriez voir une ligne Support for non-volatile firmware download précédée d'une case à cocher. Cochez la case, quittez en sauvegardant vos changements.

Maintenant fabriquez les modules par :

  1. nice make -j2 modules

(J'utilise nice car cela va prendre beaucoup de temps et je veux pouvoir continuer à utiliser le PC pendant ce temps, et -j2 pour paralléliser les compilations : utilisez une valeur également au nombre de coeurs (cores) plus un de votre processeur).

Lorsque la compilation rend la main, arrêtez le réseau par : # service network stop

Déchargez les drivers wifi (dans mon cas orinoco/hermes, mais cela peut aussi être hostap ; vérifiez avec lsmod) :

  1. rmmod orinoco_pci orinoco hermes

ou :

  1. rmmod hostap_pci hostap ieee80211_crypt

(ou les 2, ca ne fera pas de mal).

Puis chargez les drivers hostap fraichement compilés :

  1. insmod ./net/ieee80211/ieee80211_crypt.ko
  2. insmod ./net/ieee80211/ieee80211_crypt_wep.ko
  3. insmod ./drivers/net/wireless/hostap/hostap.ko
  4. insmod ./drivers/net/wireless/hostap/hostap_pci.ko

Nous allons enfin pouvoir passer au flashage proprement dit. Téléchargez les 2 fichiers présents à cette adresse : http://linux.junsun.net/intersil-prism/firmware/1.8.2/ (PK010101.HEX & SF010802.HEX). Il s'agit des bios que l'on va flasher.

Testez leur compatibilité avec la commande suivante (du paquet hostap-utils ; installez-le au besoin) :

  1. prism2_srec -v eth0 -O /proc/net/hostap/wlan0/pda /chemin/des/firmware/PK010101.HEX /chemin/des/firmware/SF010802.HEX

Et si la commande vous retourne OK sur la dernière ligne, alors passez aux choses sérieuses par :

  1. prism2_srec -v -f eth0 -O /proc/net/hostap/wlan0/pda /chemin/des/firmware/PK010101.HEX /chemin/des/firmware/SF010802.HEX

(même ligne de commande en ajoutant -f).

Enfin, déchargez les drivers hostap, et relancez le réseau (ce qui va automatiquement recharger les drivers que vous aviez avant) par :

  1. rmmod hostap_pci hostap ieee80211_crypt_wep ieee80211_crypt
  2. service network start

Et voilà !

Vous avez recyclé votre vieille carte wifi, qui aura encore de nombreux méga-octets à faire passer !

Note: je suis ainsi passé des versions 1.0.7 & 1.3.6 à 1.1.1 & 1.8.2 des firmwares respectivement primaire et de station de la carte. On peut le vérifier dans le log dmesg : wifi0: NIC: id=0x8013 v1.0.0 wifi0: PRI: id=0x15 v1.1.1 wifi0: STA: id=0x1f v1.8.2

là ou avant on lisait : wifi0: NIC: id=0x8013 v1.0.0 wifi0: PRI: id=0x15 v1.0.7 wifi0: STA: id=0x1f v1.3.6