Copyright © 2008 Muthaiah Ramanathan
Copyright © 2008 Nicolas Provost
Article paru dans le n°152 de la Gazette Linux de juillet 2008.
Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Table des matières
[Celui qui n'a jamais commis d'erreur n'a jamais tenté d'innover - Albert Einstein]
Extrait du site web du projet (http://ndiswrapper.sourceforge.net) :
"De nombreux fabricants ne publient pas les spécifications matérielles ou ne fournissent pas de pilote
Linux
pour leurs cartes réseau sans-fil. Ce projet implémente l'API (Application Programming Interface) NDIS (Network Driver Interface Specification) du noyauWindows
dans le systèmeLinux
. Un pilote de périphérique réseau sans-fil peut alors être lié à cette implémentation de telle façon qu'il fonctionne nativement, comme s'il fonctionnait sousWindows
, sans émulation binaire."
Extrait du site web du projet (http://www.madwifi.org) :
madwifi.org, c'est [...] une équipe de développeurs bénévoles travaillant sur les pilotes du noyau
Linux
pour les cartes réseau sans-fil équipées des puces Atheros. Nous proposons actuellement deux pilotes,madwifi
etath5k
.
C'est clair... et j'aurais dû réaliser que les pilotes
madwifi
supportaient les puces
Atheros mais pas les puces Marvell
équipant la carte PCI Netgear WG311.
Je l'ai compris à l'instant où j'ai eu des difficultés à configurer la
carte sans-fil.
Dés que j'ai eu la carte PCI sans-fil, j'ai commencé à la configurer après m'être assuré qu'elle était physiquement bien installée dans un slot PCI.
Conformement aux indications du site http://www.madwifi.org j'ai téléchargé le code source de la version 0.9.4 (version la plus récente disponible lors de la rédaction de cet article) et suivi les explications du guide du nouvel utilisateur madwifi. La première partie décrit une installation classique à partir du code source :
[root@thinnai /tmp/madwifi]# ./configure && make && make install [root@thinnai /tmp/madwifi]# modprobe ath_pci
Ensuite j'ai procédé à la création de l'interface, et c'est à ce moment que les choses ont mal tourné (pour être honnête, à cause d'une faute d'inattention de ma part).
[root@thinnai ~]# wlanconfig ath0 create wlandev wifi0 wlanmode sta wlanconfig: ioctl: No such device
Je me suis alors referré aux deux listes citées au début de cet
article. Les deux indiquaient clairement que la carte
PCI Netgear WG311 était supportée
par "ndiswrapper
" mais pas
"madwifi
".
Je connaissais alors la seule méthode à appliquer pour configurer ma
carte PCI sans fil, à savoir utiliser
ndiswrapper
. Après avoir lu la documentation de
base disponible sur le ndiswrapper
wiki, j'ai compris que cela devait être réalisé
en deux étapes : tout d'abord installer
ndiswrapper
à partir des sources, puis
télécharger et installer le pilote Windows
approprié.
Comment trouver quel pilote Windows
doit être téléchargé ? C'est simple,
il faut identifier la version de la puce placée sur la carte
PCI en suivant les étapes ci-dessous :
utiliser la commande lspci pour trouver l'identifiant de la carte ; ici c'était "01:07.0" (première colonne de la sortie sur l'écran ci-dessous)
utiliser la commande lspci -n avec cet identifiant comme paramètre pour trouver l'ID PCI de la carte (troisième colonne ci-dessous)
dans mon cas, le fabricant de la carte WG311 étant Netgear, j'ai consulté la section M-N de cette liste
l'identifiant de ma carte correspondait à l'item 4 de cette
liste ; après avoir vérifié à l'aide de l'ID PCI et
de la version de la puce utilisée, j'ai pu alors télécharger le pilote
Windows
correspondant à ma
carte
[root@thinnai:~]#/sbin/lspci|grep -i wireless 01:07.0 Ethernet controller: Marvell Technology Group Ltd. 88w8335 [Libertas] 802.11b/g Wireless (rev 03) [root@thinnai ~]# lspci -n|grep 01:07 01:07.0 0200: 11ab:1faa (rev 03)
avant d'installer et de configurer la carte sous
GNU/Linux
,
j'avais installé ces pilotes sous Windows
2000
et vérifié qu'ils fonctionnaient parfaitement.
Cette page
wiki détaille les étapes pour installer
ndiswrapper
à partir des sources et trouver le
pilote Windows
, entre autres
choses.
Il est précisé dans cette documentation qu'il est préférable
d'utiliser les pilotes pour Windows
XP
plutôt que les pilotes pour Windows 2000
; dans une autre section
("Install Windows driver"), il est écrit
que si le pilote Windows
fourni
par le fabricant fonctionne, alors ce pilote spécifique peut être utilisé.
C'est ce qui m'a conduit à télécharger le pilote Windows
à l'adresse ci-dessus plutôt que
d'utiliser le pilote présent par défaut dans mon installation de
Windows
.
Me plaçant dans le répertoire
/root/ndiswrapper-1.20
, j'ai lancé les commandes
suivantes :
[root@thinnai ndiswrapper-1.20]# make && make install [...] *** WARNING: Kernel is compiled with 4K stack size option (CONFIG_4KSTACKS); many Windows drivers will not work with this option enabled. Disable CONFIG_4KSTACKS option, recompile and install kernel [...]S'il vous arrive de voir ce type de "warnings" à la fin du processus "
make
", vous pouvez les ignorer sans risque. Ces
avertissements n'ont pas altéré le fonctionnement de la carte sans-fil, du
moins la carte PCI avec la version de la puce indiquée
plus haut.[root@thinnai ndiswrapper-1.20]# ls ../ENLWI-G_Driver_Utility_98SE-ME-2000-XP/V1.10/DRIVER/Windows XP Mrv8000c.cat Mrv8000c.inf Mrv8000c.sys [root@thinnai ndiswrapper-1.20]# cp ../ENLWI*/*{inf.sys} . # copie les pilotes dans le répertoire courant [root@thinnai ndiswrapper-1.20]# ndiswrapper -i Mrv8000c.inf # installe les pilotes Installing mrv8000c Forcing parameter AdhocGMode|1 to AdhocGMode|0 Forcing parameter AdhocGMode|1 to AdhocGMode|0 [root@thinnai ndiswrapper-1.20]# ls /etc/ndiswrapper/ # vérifie l'installation mrv8000c [root@thinnai ndiswrapper-1.20]# ls /etc/ndiswrapper/mrv8000c/ 11AB:1FAA.5.conf 11AB:1FAB.5.conf mrv8000c.inf mrv8000c.sys [root@thinnai lnx_data]# ndiswrapper -l Installed drivers: mrv8000c driver installed, hardware present
[root@thinnai ~]# rpm -qa | grep -i wireless wireless-tools-28-0.pre13.5.1 [root@thinnai ~]# iwconfig --version iwconfig Wireless-Tools version 28 Compatible with Wireless Extension v11 to v19. Kernel Currently compiled with Wireless Extension v19. wlan0 Recommend Wireless Extension v18 or later, Currently compiled with Wireless Extension v19.
echo "Activation du module de l'interface sans fil dans le système ..." modprobe ndiswrapper echo "====================================================================" echo "Etat des interfaces Ethernet ... " /sbin/ifconfig echo "====================================================================" echo "Activation de l'interface sans fil ... " /sbin/ifconfig wlan0 up echo "====================================================================" echo "Etat des interfaces sans fil ... " /sbin/iwconfig echo "====================================================================" echo "Recherche des points d'accès, attachement à un réseau disponible ..." iwlist wlan0 scan /sbin/iwconfig wlan0 essid default /sbin/iwconfig wlan0 echo "====================================================================" echo "Acquisition d'une adresse IP pour l'interface sans fil ... " dhclient wlan0Les commandes ci-dessous permettent de vérifier l'état de l'interface sans-fil une fois
ndiswrapper
installé et activé, grâce à la
commande "dhclient" :Acquiring IP address for the wireless interface ... Internet Systems Consortium DHCP Client V3.0.3-RedHat [...] Listening on LPF/wlan0/00:1e:2a:35:2a:79 Sending on LPF/wlan0/00:1e:2a:35:2a:79 Sending on Socket/fallback DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.1 bound to 192.168.0.147 -- renewal in 39 seconds.Voici les résultats d'un simple test pour vérifier la connection internet :
[ram@thinnai ~]$ host linuxgazette.net linuxgazette.net has address 64.246.26.120 linuxgazette.net mail is handled by 10 genetikayos.com. [ram@thinnai ~]$ ping -c 5 www.eham.net PING www.eham.net (69.36.242.135) 56(84) bytes of data. 64 bytes from atlanta.eham.net (69.36.242.135): icmp_seq=1 ttl=50 time=297 ms 64 bytes from atlanta.eham.net (69.36.242.135): icmp_seq=2 ttl=50 time=298 ms 64 bytes from atlanta.eham.net (69.36.242.135): icmp_seq=3 ttl=50 time=298 ms 64 bytes from atlanta.eham.net (69.36.242.135): icmp_seq=4 ttl=50 time=298 ms 64 bytes from atlanta.eham.net (69.36.242.135): icmp_seq=5 ttl=50 time=298 ms --- www.eham.net ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 3998ms rtt min/avg/max/mdev = 297.142/298.288/298.837/0.617 ms