Installer des pilotes Windows avec Ndiswrapper

Un article de Wiki de la communauté Mandriva.

(Redirigé depuis Ndiswrapper)
Jump to: navigation, search
Ndiswrapper est un logiciel permettant d'utiliser sous Linux des pilotes de cartes et clés wifi disponibles pour Microsoft Windows.

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 !

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

[modifier] Récupération des pilotes Windows

Ce n'est pas simple si vous n'en disposez pas avec votre ordinateur, dans la mesure où chaque version, chaque révision de la puce possède ses propres pilotes. Pour avoir une chance de trouver les bons, essayez sur le site du constructeur de votre portable, ou bien :


lspci vous indique la liste des périphériques PCI trouvés dans l'ordinateur, assortis pour chacun d'un numéro du type 02:02.0 (pour ma puce bcm4318). Notez soigneusement ce numéro.
(Pour vous aider à vous y retrouver dans la sortie de cette commande, notez que la ligne qui vous concerne ici devrait être celle qui commence, après le numéro de code en question, par l'expression Network Controller: (= contrôleur réseau) et le nom de la puce qui fait suite contient fort probablement l'expression wireless (= 'sans fil').)


Ensuite :

lspci -n vous donnera une seconde liste associant chacun de ces numéros à une référence du type 14e4-4138 (pour ma puce), à noter soigneusement.

Une visite sur la page de Ndiswrapper vous indiquera alors le pilote adapté en fonction de cette référence, avec un lien pour le télécharger. Il arrive qu'aucun ne corresponde exactement aux références trouvées ci-dessus, il faut alors en télécharger plusieurs pour les essayer successivement (ce fut mon cas).

S'il s'agit d'un .exe, l'utilitaire cabextract (urpmi cabextract) parviendra en général à extraire le contenu (le .inf et le .sys, et tout le reste) dont nous aurons besoin, par la commande :

cabextract fichier.exe

[modifier] Installer un pilote Windows

Le logiciel Ndiswrapper étant intégré d'office dans les versions récentes de Mandriva Linux, il est dorénavant facile d'installer des pilotes Windows pour les périphériques wifi et sans-fil. Il permet ainsi de faire fonctionner les périphériques sans-fil n'ayant pas encore de pilotes natifs Linux.

Pour cela, il faut passer par Image:drakconf-icon.png drakconf ou Centre de Contrôle, puis par Image:drakconnect-icon.png drakconnect (littéralement Configurer une nouvelle connexion internet...).

Sélectionnez ensuite dans la liste "Sans-fil".


Vous est ensuite proposé le choix entre éventuellement utiliser un périphérique réseau et utiliser un pilote Windows. Choisissez "Utiliser un pilote Windows 'avec Ndiswrapper)".


Une nouvelle fenêtre apparaît, vous demandant de choisir un fichier. Vous devez aller dans le répertoire contenant vos pilotes Windows, et choisir un fichier portant l'extension ".inf" ou ".INF". Ces fichiers peuvent se trouver dans le CD contenant vos pilotes wifi, ou dans le dossier ou les pilotes ont été extraits précédemment.


À noter !
Si vous ne trouvez pas de fichier ".inf" dans tous les dossiers que vous avez explorés, mais que vous constatez la présence d'un fichier .cab (généralement, ces fichiers se nomment data1.cab ou similaire), ceci signifie que le fichier pilote ".inf" se trouve à l'intérieur. Veuillez vous reporter à la section précédente pour savoir comment extraire ces fichiers. Sachez enfin qu'il est nécessaire d'extraire les pilotes d'une archive .zip avant de chercher à le sélectionner.


Vous pouvez ensuite paramétrer normalement votre connexion Internet. Si le pilote fonctionne, vous devriez pouvoir vous connecter sans problème.


[modifier] Installation de ndiswrapper

C'est peut-être là que le bât blesse...

Sur le site de Ndiswrapper, il est vivement conseillé d'utiliser la dernière version en la compilant sur son ordinateur ... j'ai préféré privilégier une solution simple, laissant une installation parfaitement propre.

[modifier] Cas des anciennes versions de Mandriva <= 2007.1

Cette section est obsolète
Ces informations ne sont peut être plus valables et nécessite d'être vérifiées. Si vous en savez plus, n'hésitez pas à les corriger.

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

[modifier] Installer les paquetages ndiswrapper

Installez ndiswrapper :

Image:Konsole.png
[root@ordi ~]# urpmi ndiswrapper
Attention !
Installez dkms-ndiswrapper uniquement si vous n'utilisez pas un kernel officiel Mandriva, ou un kernel-tmb.

[modifier] Blacklistage

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.

[modifier] 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


[modifier] 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 (root) :

# cd /là-ou-vous-les-avez-mis ou à la souris dans Konqueror (root)

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

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.

[modifier] 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-x.xx

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:

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.

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

[modifier] Autres sources d'information