Installation de NDISwrapper
Article écrit et wikisé par Pathe
Attention : ce tutoriel est assez ancien. De nombreuses cartes wifi sont désormais supportées directement par le noyau. Renseignez-vous à ce sujet avant d'utiliser ndiswrapper ! Avec l'aide de la commande lspci
vous pourrez déterminer quel chipset utilise votre carte. Googlisez « Debian + votre carte » pour vérifier si elle est supportée ou non. Si elle l'est, je vous renvoie, à titre d'exemple, au tutoriel suivant : Utiliser une carte wifi Broadcom BCM43XX.
Certaines cartes WiFi n'ont pas encore de pilotes Linux. NDISwrapper vous permet de les utiliser en émulant les pilotes conçus pour le système d'exploitation Fenêtres.
Pré-requis
Kernel-headers
Il faut s'assurer d'avoir le kernel-header correspondant à son noyau. Seuls les kernel-headers sont indispensables ; le reste vient par un jeu de dépendances. La commande uname -r
renvoyant le numéro du noyau, il suffit donc de faire :
**apt-get install kernel-headers-`uname -r`
Outils de compilation
En règle générale, tous les outils nécessaires sont installés par défaut si l'on choisit les paquets “développement” lors de l'installation initiale de Debian.
Dans le cas présent, je suis certain qu'il faut gcc
et libc6-dev
.
Je ne suis pas expert : n'hésitez pas à améliorer ce point.
Le compilateur C de GNU est livré en standard, je crois ; la librairie non. Donc :
# apt-get install gcc # apt-get install libc6-dev
Outils WiFi
Installer les wireless-tools
# apt-get install wireless-tools
cela installe les outils iwconfig
, iwlist
, etc…
Sources de ndiswrapper
Les sources sont donc à télécharger sur SourceForge.
Choisir la version désirée dont on télécharge l'archive (~100 kB).
Décompression de l'archive
Décompresser l'archive dans le dossier /home/user
:
/home/user# tar -zxvf ndiswrapper-<numéro_de_version>.tar.gz
Compilation
Création des deux paquets ndiswrapper
Se placer dans le dossier ndiswrapper récemment décompressé :
/home/user# cd ndiswrapper-<numéro_de_version> /home/user/ndiswrapper-<numéro_de_version># ./debian/rules binary
La fonction est bien ./debian/rules binary
!
Cette opération crée les deux paquets ndiswrapper-modules-2.6.8-2-686_0.12-1_i386.deb et ndiswrapper-utils_0.12-1_i386.deb. Ils sont au même niveau que le dossier ndiswrapper lui-même :
/home/user# ls ndis* ndiswrapper-0.12 ndiswrapper-modules-2.6.8-2-686_0.12-1_i386.deb ndiswrapper-utils_0.12-1_i386.deb <code> ==== Installation des paquets ==== Il est impératif d'installer ''ndiswrapper-utils'' avant ''ndiswrapper-modules'', car l'installation du second de ces modules dépend de celle du premier. <code># dpkg -i ndiswrapper-utils
puis
# dpkg -i ndiswrapper-modules
Vérifier qu'ils sont bien installés :
# dpkg -l 'ndis*' ... ||/ Nom Version Description +++-========================- un ndiswrapper-modules <néant> (aucune description n'est disponible) ii ndiswrapper-modules-2.6. 0.12-1 Linux kernel module for NdisWrapper for 2.6.8-2-686 pn ndiswrapper-source <néant> (aucune description n'est disponible) ii ndiswrapper-utils 0.12-1 User space tools for ndiswrapper un ndiswrapper-utils-0.12 <néant> (aucune description n'est disponible)
C'est bien le cas : les deux ii l'indiquent.
ndiswrapper est prêt à fonctionner.
Reste à le mettre en oeuvre.
Mise en oeuvre de ndiswrapper
Télécharger les pilotes correspondant à sa carte.
On trouvera sur SourceForge leur version la plus récente.
Après décompression, copier les fichiers se terminant par .sys et .inf dans un dossier, par exemple piloteswifi
:
/home/user/piloteswifi# ls bcmwl5.sys lsbcmnds.inf
Dans cet exemple, les fichiers sont bcmwl5.sys
et lsbcmnds.inf
.
Installer les pilotes avec ndiswrapper
Il est impératif d'effectuer cette opération à partir du dossier contenant lesdits pilotes :
/home/user/piloteswifi# ndiswrapper -i lsbcmnds.inf ls: /etc/ndiswrapper: Aucun fichier ou répertoire de ce type Installing lsbcmnds
Cette opération installe ces fichiers dans /etc/ndiswrapper
:
# ls /etc/ndiswrapper lsbcmnds
# ls -al /etc/ndiswrapper/ls* total 352 drwxr-xr-x 2 root root 4096 2005-03-07 01:15 . drwxr-xr-x 3 root root 4096 2005-03-07 01:15 .. -rw-r--r-- 1 root root 460 2005-03-07 01:15 14E4:4301:1737:4301.conf lrwxrwxrwx 1 root root 50 2005-03-07 01:15 14E4:4301.conf -> /etc/ndiswrapper/lsbcmnds/14E4:4301:1737:4301.conf -rw-r--r-- 1 root root 486 2005-03-07 01:15 14E4:4320:14E4:0417.conf -rw-r--r-- 1 root root 486 2005-03-07 01:15 14E4:4320:1737:4320.conf lrwxrwxrwx 1 root root 50 2005-03-07 01:15 14E4:4320.conf -> /etc/ndiswrapper/lsbcmnds/14E4:4320:1737:4320.conf -rw-r--r-- 1 root root 300928 2005-03-07 01:15 bcmwl5.sys -rwxr-xr-x 1 root root 29701 2005-03-07 01:15 lsbcmnds.inf
Il est à noter que les chiffres des fichiers se terminant par .conf correspondent au pci_vendor et au pci_driver (voir le site Léa-Linux à ce sujet).
Vérifier ensuite que pilotes et matériel sont bien installés :
# ndiswrapper -l Installed ndis drivers: lsbcmnds driver present, hardware present
Démarrer ndiswrapper.
# modprobe ndiswrapper
Rien ne s'écrit : ce silence vaut pour acquiescement.
Immédiatement après, vérifier dans le dmesg que le module ndiswrapper est bien chargé :
# dmesg | tail ndiswrapper version 1.0 loaded (preempt=no,smp=no) ndiswrapper: driver bcmwl5 (Linksys,07/17/2003, 3.30.15.0) added ACPI: PCI interrupt 0000:00:07.0[A] -> GSI 18 (level, low) -> IRQ 18 ndiswrapper: using irq 18 wlan0: ndiswrapper ethernet device 00:0c:41:13:8e:bf using driver bcmwl5 wlan0: encryption modes supported: WEP, WPA with TKIP, WPA with AES/CCMP
Si cela vous renvoie quelque chose d'approchant, avec la bonne adresse de carte (ici 00:0c:41:13:8e:bf) votre situation est optimale.
Sinon, inutile d'aller plus loin, quelque chose cloche : revenez en arrière.
Configurer sa carte WiFi
La carte est reconnue par le système
Vérifier qu'elle est bien reconnue :
# iwconfig lo no wireless extensions. eth0 no wireless extensions. wlan0 IEEE 802.11g ESSID:"off/any" Mode:Managed Frequency:2.462 GHz ... ... Missed beacon:0 sit0 no wireless extensions.
C'est le cas.
Trouver le réseau WiFi
Ma carte est là, mais ne détecte rien pour l'instant. D'où :
# iwlist wlan0 scan wlan0 Scan completed : Cell 01 - Address: ... ESSID:"monESSID" Protocol:IEEE 802.11b Mode:Managed Frequency:2.462 GHz (Channel 11) ... ... Bit Rate:48 Mb/s Extra:bcn_int=100 Extra:atim=0
Lier le point d'accès à la carte.
Dès l'ESSID (c'est à dire le nom) du point d'accès récupéré, l'indiquer au système :
# iwconfig wlan0 essid "monESSID"
Dans cette commande, ne pas oublier de taper les guillemets autour de l'ESSID !
Vérifier que l'information circule bien par la carte :
# route -n Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
Dans cet exemple, il n'y a pas eu à configurer plus avant le routage car la configuration était en DHCP, c'est à dire que c'est le routeur qui attribuait une adresse réseau aux ordinateurs connectés au réseau local.
Automatisation du processus de connexion WiFi
Rajouter le mot “ndiswrapper” dans /etc/modules
; ainsi, ndiswrapper est chargé dès le démarrage.
Modifier /etc/network/interfaces
pour que le wifi soit pris en compte dès le démarrage :
# The loopback network interface auto lo iface lo inet loopback # The primary network interface #auto eth0 iface eth0 inet dhcp auto wlan0 iface wlan0 inet dhcp pre-up iwconfig wlan0 essid "monESSID"
La syntaxe est simple :
- le # au début d'une ligne la rend inopérante ; dans cet exemple, n'ayant plus un besoin permanent du port ethernet, celui-ci est court-circuité.
- le auto wlan0 fait démarrer cette interface en même temps que l'ordinateur.
- iface wlan0 inet dhcp lui indique d'aller récupérer une adresse IP auprès du routeur, dont pre-up iwconfig wlan0 essid “monESSID” fournit l'ESSID (c'est à dire le nom, pardi !).
Et voilà. Ça marche. Ce n'était pas trop long ?
En cas de problème
Un rappel pour les malchanceux : en cas de difficultés, les fonctions…
# cat /var/log/syslog | grep ndis
# dmesg | tail
… vous seront très utiles : elles vous informent de l'état de la relation du système avec ndiswrapper…
Par ailleurs, si lors de l'étape de compilation, vous rencontrez des difficultés et que vous voyez s'afficher parmi diverses lignes un
Can't find kernel sources in /usr/src/linux
vous avez un problème de lien symbolique, c'est à dire que lors de la compilation un fichier ne pointe pas là où il faudrait.
Enfin, il vous reste les merveilleux forums du présent site et de wlanfr.net sur lesquels poser des questions.