Installer des pilotes Windows avec Ndiswrapper

De Wiki de la communauté Mandriva.

(Redirigé depuis Ndiswrapper)
Ndiswrapper est un logiciel permettant d'utiliser sous Linux des pilotes de cartes et clés wifi disponibles pour Microsoft Windows.
Attention !
Cette page est destinée à Mandriva, mais elle doit s'appliquer dans ses grandes lignes à d'autres types de puces et même à une autre distribution Linux.

Sommaire

Configuration graphique de ndiswrapper avec Drakconnect

La configuration de ndiswrapper avec Drakconnect est expliquée pas à pas sur la page qui lui est consacrée.


Installation de ndiswrapper

Cas des version récentes (à partir de la 2008)

Sur les versions récentes de Mandriva, la dernière version de ndiswrapper est incluse dans les noyaux des différentes versions de (la One, la Free et la Powerpack), et le paquetage ndiswrapper est normalement installé. Il n'y a donc aucune manipulation particulière à faire pour l'utiliser.

Cas des anciennes versions de Mandriva <= 2007.1

Dans le cas de la Mandriva 2007.0, le RPM proposé installe une version ancienne de ndiswrapper ; de plus, j'ai lu ici ou là (et sur le forum MDV anglais), qu'il est bogué et fonctionne de façon aléatoire. Fort heureusement, quelqu'un a eu la délicate attention de nous en faire une version non boguée et plus jeune, accessible sur la source MDE.
Veillez donc à n'installer aucun RPM d'origine contenant la chaine « ndiswrapper » ou à les désinstaller, s'ils sont déjà là, puis ajoutez la nouvelle source :

Image:Konsole.png
[root@ordi ~]# urpmi.addmedia MDE http://www.mde.djura.org/2007.0/RPMS with hdlist.cz

Installer les paquetages ndiswrapper

Pour installer ndiswrapper, lancez Image:drakrpm-icon.png Installer et désinstaller des logiciels et recherchez le paquet ndiswrapper.

Sélectionnez-le et cliquez sur Appliquer (Aide).

Vous pouvez également l'installer en utilisant la console en tant qu'administrateur avec la commande suivante : urpmi ndiswrapper

Attention !
Installez dkms-ndiswrapper uniquement si vous n'utilisez pas un kernel officiel Mandriva, ou un kernel-tmb.


Blacklistage

À noter !
Cet exemple est bâti autour d'une Mandriva Spring installée sur un HP nx 6125, équipé d'une puce Broadcom 4318 (famille bmc43xx, très répandue). Le pilote linux bcm43xx est à ce jour immature, et la technique basée sur fwcutter ne fonctionne pas, justement, avec cette puce précise !

Il s'agit - avant de tenter quoi que ce soit - d'empêcher le système de charger son propre pilote bcm43xx (ainsi que d'autres pilotes qui pourraient entrainer celui-ci) : il serait inopérant et en plus, bloquerait le fonctionnement de ndiswrapper. Pour cela :

Image:Konsole.png
[utilisateur@ordi ~]$ kdesu kwrite

puis indiquer le mot de passe root pour ouvrir avec les privilèges administrateur le fichier qui gère le chargement systématique des pilotes au démarrage : /etc/modprobe.conf et ajoutez à la fin :

blacklist bcm43xx
blacklist ieee80211
blacklist ieee80211softmac
blacklist ieee80211_crypt
blacklist ssb

enregistrez et c'est fini pour ça. Plutôt que de redémarrer pour profiter de votre blacklistage (réflexe Windowsien), déchargez à la volée le pilote bcm43xx (au cas où il serait chargé) avec la commande rmmod bcm43xx.


Paquetage acpi

J'ai lu aussi quelque part qu'il est conseillé d'installer « acpi » (il ne s'agit pas de l'option à passer au noyau, mais bien d'un paquetage) ; j'ignore si c'est important, mais je l'ai fait aussi :

Image:Konsole.png
[root@ordi ~]# urpmi acpi


Commandes ndiswrapper

Nous sommes prêts, passons aux choses sérieuses.

Plaçons-nous dans le dossier contenant les fichiers extraits du pilote Windows, qui doit impérativement contenir deux fichiers nommés à peu près bcmwl5 : l'un en .inf et l'autre en .sys.

En console :

Image:Konsole.png
[utilisateur@ordi ~]$ cd /là-ou-vous-les-avez-mis ou à la souris dans Konqueror

Enfin, l'enchaînement des commandes qui vont vous mener au Nirvana (en root:

Image:Konsole.png
[root@ordi ~]# ndiswrapper -l

(par précaution) liste les pilotes actuellement chargés dans ndiswrapper : logiquement, aucun à ce stade ; si par extraordinaire il y en a un nommé xyz :

Image:Konsole.png
[root@ordi ~]# ndiswrapper -e xyz

l'enlèvera.

Image:Konsole.png
[root@ordi ~]# ndiswrapper -i bcmwl5.inf


dit à ndiswrapper d'installer ce qui l'intéresse de bcmwl5.inf, en « piquant » aussi un peu de bcmwl5.sys ; c'est pourquoi il faut que les deux soient là !

Image:Konsole.png
[root@ordi ~]# ndiswrapper -l


à nouveau pour lister les pilotes actuellement chargés dans ndiswrapper ; logiquement, on doit à présent y trouver bcmwl5, avec un commentaire disant que le matériel est bien là aussi.

Image:Konsole.png
[root@ordi ~]# ndiswrapper -m


crée un alias (en général wlan0) dans /etc/modprobe.conf pour que ndiswrapper soit chargé automatiquement au boot

Image:Konsole.png
[root@ordi ~]# modprobe ndiswrapper


charge à la volée ndiswrapper

Image:Konsole.png
[root@ordi ~]# iwconfig

liste les interfaces réseau sans fil ; nous voyons ainsi si nous avons un wlan enfin opérationnel.
Si les choses se présentent bien, il est temps d'ouvrir le MCC, Internet et réseau -> Configurer un réseau sans fil, pour donner tous les paramètres (choix du réseau, ESSID, clé etc.)

Si tel n'était pas le cas, attendez pour pleurer : dmesg vous racontera beaucoup (trop) de choses, mais les dernières lignes parlent de ndiswrapper et peuvent vous éclairer sur les causes de votre échec (généralement un pilote non adapté).
Attention : si vous enchaînez plusieurs tentatives, il se peut que vous lisiez dans dmesg des observations ayant trait à une tentative précédente : les commentaires de dmesg ne sont pas horo-datés.
Il faudra – si ça ne fonctionne pas - désinstaller tout ça avant d'essayer un autre pilote :

Image:Konsole.png
[root@ordi ~]# rmmod ndiswrapper

décharge le pilote ndiswrapper précédemment créé

Image:Konsole.png
[root@ordi ~]# ndiswrapper -e bcmwl5

le désinstalle (il ne faut pas mettre le « .inf »). et on peut recommencer l'ensemble de la manip avec un autre pilote, jusqu'à ce que tout fonctionne.


Compiler ndiswrapper

(jcl_vanier)

Il peut arriver que le paquetage proposé ne convienne pas avec tel ou tel matériel. Il faut alors attendre la mise à disposition d'un nouveau paquetage ou le compiler soit même. Heureusement ce n'est pas bien compliqué mais nécessite un peu d'attention. Voici une procédure:

1) installer (si ce n'est déjà fait) le paquetage des entêtes du noyau correspondant exactement au noyau utilisé. Par exemple, avec le le noyau kernel-desktop-2.6.22.9-1mdv, il faut installer kernel-desktop-devel-2.6.22.9-1mdv.

2) désinstaller le paquetage ndiswrapper

Image:Konsole.png
[root@ordi ~]# urpme ndiswrapper

3) télécharger la dernière version sur le site de ndiswrapper et éventuellement lire la doc (ça ne peut pas faire de mal ...)

4) on n'y apprend notamment qu'il faut lier /lib/modules/VERSION/build aux sources du noyau: Exemple:

Image:Konsole.png
[root@ordi ~]# ln -s /usr/src/linux-2.6.22.9-desktop-1mdv /lib/modules/2.6.22.9-desktop-1mdv/build

à adapter en fonction de sa propre version du noyau.

5) décompresser et compiler depuis le répertoire dans lequel on a extrait l'archive.

Image:Konsole.png
[utilisateur@ordi ~]$ make

puis

Image:Konsole.png
[root@ordi ~]# make install

en tant que root. Un module sera installé dans /lib/modules/2.6.22.9-desktop-1mdv/misc

6) supprimer manuellement le module dans /lib/modules/2.6.22.9-desktop-1mdv/kernel/3rdparty/ndiswrapper. Si on ne le fait pas c'est toujours celui-ci qui sera utilisé!

Image:Konsole.png
[root@ordi ~]# rm /lib/modules/2.6.22.9-desktop-1mdv/kernel/3rdparty/ndiswrapper/ndiswrapper.ko


7) vérifier que c'est bien le nouveau module qui sera utilisé avec

Image:Konsole.png
[root@ordi ~]# ndiswrapper -v


Remarque: il y a possibilité de créer un rpm avec

Image:Konsole.png
[root@ordi ~]# make rpm

Cela nécessite d'installer les sources complètes du noyau et de disposer du paquetage rpm-build


Autres sources d'information