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.
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`
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
Installer les wireless-tools
# apt-get install wireless-tools
cela installe les outils iwconfig
, iwlist
, etc…
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écompresser l'archive dans le dossier /home/user
:
/home/user# tar -zxvf ndiswrapper-<numéro_de_version>.tar.gz
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.
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
.
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
# 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.
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.
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
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.
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 :
Et voilà. Ça marche. Ce n'était pas trop long ?
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.