Utilisation de ndiswrapper

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

Pourquoi ndiswrapper ?

Certains fabricants de carte wifi ne développent pas de pilote Linux pour leur matériel et ne divulguent aucune spécification technique permettant d'en programmer un. Heureusement, il existe Ndiswrapper qui permet dans beaucoup de cas d'utiliser les pilotes prévus pour la plateforme Microsoft-Windows©.

Pré-requis

Ndiswrapper fournit un module externe au noyau Linux, il va donc nous falloir plusieurs outils pour fabriquer ce module. Pour ce faire nous devons disposer des en-têtes de notre noyau, de module-assistant pour fabriquer ce module et de ndiswrapper. Ndiswrapper est disponible dans toutes les branches de Debian dans la section main.

Vous devez aussi, bien sur, connaître le modèle de votre carte wifi. La commande lspci sera d'une grande utilité.

# aptitude install linux-headers-`uname -r` module-assistant ndiswrapper-source ndiswrapper-utils-1.9

Compilation du module

Cette étape est simple à réaliser, il suffit de préparer puis de compiler.

# m-a prepare
# m-a a-i -f ndiswrapper

On charge ensuite le module par

# modprobe ndiswrapper

Configuration de ndiswrapper

Récupérer les pilotes Windows©

Les pilotes destinés à Windows© se présentent sous la forme d'un fichier avec l'extension .inf. Ils peuvent se trouver sur un cd-rom d'installation ou dans un répertoire de pilotes sur votre disque dur. ( Pensez également à faire un tour sur le site Web du constructeur de votre carte. Il propose sans doute, en téléchargement, des pilotes récents pour celle-ci.) Cherchez dans l'arborescence du cd un répertoire intitulé "drivers" ou "pilotes". A l'intérieur de celui-ci, on trouve souvent plusieurs sous-répertoires correspondant chacun à une version de Windows© ( XP, Vista...). Privilégiez la version XP. Attention à prendre les pilotes correspondant à votre architecture (32 bits pour i386 et 64 bits pour amd64), sinon vous aurez un message d'erreur lors du chargement du module. Avec un peu de chance ces fichiers seront directement des fichiers .inf, ils peuvent aussi se trouver en-capsulés dans un fichier exécutable ( exe ), dans un fichier cab ou directement dans le programme d'installation.

Si vous voyez directement un fichier .inf, copiez le, ainsi que tous les fichiers contenus dans le même répertoire, dont celui avec l'extension .sys, dans un répertoire que vous aurez créé dans votre répertoire personnel.

Si vous pensez que le pilote se trouve dans un fichier cab, dans un exécutable exe ou un installateur vous devrez extraire les fichiers. Debian propose des paquets pour réaliser cela : cabextract, unshield ou orange, disponibles dans les dépots. Il vous faut donc les installer par :

 # aptitude install cabextract unshield orange

Copiez ensuite le fichier cab ou l'exécutable exe dans le répertoire de votre choix et lancez l'extraction :

# cabextract fichier.cab

          ou

# cabextract fichier.exe

si aucun fichier n'apparait essayez

# unshield fichier.cab

          ou

# unshield fichier.exe

ou la même chose avec orange.

Dire à ndiswrapper quel pilote utiliser

Ouvrez une console et placez vous dans le répertoire contenant les pilotes Windows© que vous venez d'extraire. Installez ces pilotes par :

# ndiswrapper -i nom_du_fichier.inf

Vous pouvez vérifier l'installation par :

# ndiswrapper -l

qui devrait vous donner  quelque chose comme :

Installed ndis drivers:
(nom_du_pilote) driver present, hardware present

Il suffit maintenant de dire au noyau de charger automatiquement le module ndiswrapper par :

# ndiswrapper -m

Vérifiez que votre carte est bien reconnue par :

# iwconfig

Si votre carte apparait bien, il ne vous reste "plus" qu'à la configurer.

Attention, il se peut que votre carte soit déjà prise en charge par un module du noyau. Cela empêchera ndiswrapper de fonctionner. Il vous faut donc pour cela supprimer le module et empêcher son chargement au démarrage de la machine. Pour cela il faut

  • Identifier le module en question: un
lspci -v

affichera la carte et le module utilisé: Par exemple

 00:14.0 Bridge: nVidia Corporation MCP51 Ethernet Controller (rev a3)
	Subsystem: Device 1631:e027
	Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 20
	Memory at fe02b000 (32-bit, non-prefetchable) [size=4K]
	I/O ports at c800 [size=8]
	Capabilities: [44] Power Management version 2
	Kernel driver in use: forcedeth
	Kernel modules: forcedeth

montre que c'est le pilote forcedeth qui est utilisé pour cette carte. Faire donc ici

# rmmod forcedeth

puis ensuite

# modprobe ndiswrapper

Pour rendre cela automatique, il suffit d'empêcher le chargement éventuel du module au démarrage et de charger le module ndiswrapper. Cela se fait par

# echo forcedeth >> /etc/modprobe.d/blackndiswrapper

(remplacez forcedeth par le nom du module concerné) et par

# echo ndiswrapper >> /etc/modules

qui chargera le module ndiswrapper au démarrage.

Alternative graphique

Il existe un programme avec une interface graphique permettant de configurer ndiswrapper sans passer par la ligne de commande : ndisgtk

Liens utiles

Le wiki ndiswrapper

Archives Internet sur ndiswrapper

Wifi