[[ndiswrapper]]
Piste: » ndiswrapper
Ndiswrapper : utiliser les pilotes réseaux de Windows sous Linux
NDISWrapper est un utilitaire permettant d'utiliser les pilotes (drivers) Windows pour rendre fonctionnelles les cartes réseau sous Ubuntu (et plus particulièrement, les cartes réseau Wifi).
NDISWrapper fonctionne sur plateforme 32 bits et AMD64 car il existe des paquets précompilés pour ces deux architectures. Si vous utilisez la version d'Ubuntu AMD64, vous devez absolument utiliser des pilotes pour Windows 64 bits car les pilotes pour Windows normaux (32 bits) ne fonctionneront pas en 64 bits (voyez sur le site du constructeur si un tel pilote existe).
Vous pouvez consulter le site NDISWrapper pour la liste de matériel compatible et leur pilotes.
Ne semble pas fonctionner avec Edgy.
Pré-requis
Toutes les manipulations suivantes vont se faire à l'aide d'un Terminal. Aussi je vous conseille de suivre les quelques tutoriels pour comprendre comment utiliser efficacement ce terminal.
- Etape 0 :
Pour savoir s'il est nécessaire d'installer NDISWrapper, reportez-vous d'abord à la procédure générale de configuration d'une interface réseau Wifi.
Avant de continuer vous devez connaître la marque et le modèle exacts de votre carte Wi-Fi. La documentation précédente doit vous permettre de le connaître.
Avant de pouvoir installer les pilotes Windows avec NDISWrapper, vous devez les télécharger ou utiliser ceux fournis sur le CD d'installation de votre carte réseau.
- Etape 1 : récupérer le pilote/driver Wi-Fi
Vous le trouverez sur le CD d'installation de Windows ou de votre carte Wi-Fi. En général il est aussi donné sur le site de la marque de votre carte Wi-Fi ou de votre ordinateur sous le nom de "Pilote de carte réseau local sans fil".
Nous allons travailler dans un dossier pour ne pas semer la pagaille ailleurs.
Créer un dossier et copier le pilote (dossier contenant des fichiers ou fichier compressé zip ou fichier .exe) dedans:
mkdir ~/install_wifi
Déplaçons-nous dans ce dossier :
cd ~/install_wifi
Vous pouvez visualiser son contenu avec la commande ls .
- Etape 2 : Décompresser si nécessaire le fichier contenant le pilote, si c'est un dossier contenant plusieurs fichiers dont un fichier .inf, vous pouvez passer à l'étape Installation de Ndiswrapper:
Pour les archives zippées (.zip ) :
unzip <nom du fichier>
Pour les exécutables ( .exe), après avoir activé les dépôts univers, choisissez un des logiciels à installer :
installer cabextract, OU installer unshield
Décompresser de la même manière :
cabextract <nom_du_fichier.exe>
OU
unshield <nom_du_fichier.exe>
Remarque 2: Vous pouvez trouver quelques pilotes Windows NDIS testés sous Linux sur la page de Linuxant (lien Windows Drivers à gauche).
Copiez le répertoire (décompressé) contenant les pilotes Windows (dont un fichier .inf) dans votre dossier install_wifi. Vous devez copier tout le contenu du répertoire, pas seulement le fichier .inf.
Je vous conseille de garder ce dossier précieusement, car il vous sera utile dans le cas d'une réinstallation, ou d'une mise à jour importante.
Installation de NDISWrapper
Il existe deux méthodes pour installer ndiswrapper : la plus simple et la plus pratique est d'installer le paquet se trouvant dans les dépôts (malheureusement, la version disponible est parfois un peu ancienne) ou alors il vous faut compiler manuellement à partir des sources (bien entendu on ne peut pas faire les deux en même temps !).
sudo apt-get remove ndiswrapper --purge
puis installer la dernière version avec la méthode de compilation, c'est très simple il suffit de lire.
Installation via les dépots
Sous Feisty et Gutsy
Il faut installer le paquet ndiswrapper-utils-1.9.
Sous Edgy
Il faut installer le paquet ndiswrapper-utils-1.8.
Sous Dapper
Il vous faut installer le paquet ndiswrapper-utils.
sudo dpkg -i ndiswrapper*.deb
Installation par Compilation
La compilation peut être nécessaire lorsqu'on change de noyau ou lorsque l'on désire installer une version de NDISWrapper autre que celle présente dans Synaptic (la plus récente par exemple, actuellement la 1.52). N'oubliez pas que vous devrez recompiler NDISWrapper à chaque mise à jour ou changement de noyau.
Tout d'abord, soyez sûr qu'aucune autre version n'est déjà installée. Si ce n'est pas le cas, commencez par désinstaller l'ancienne version de NDISWrapper et faites le ménage dans les fichiers de configuration (cf § Désinstallation).
Pour compiler, installez d'abord les paquets linux-headers-`uname -r` dh-make fakeroot build-essential
Ensuite, on télécharge NDISWrapper sur le site officiel :
http://ndiswrapper.sourceforge.net/ ou
http://sourceforge.net/project/showfiles.php?group_id=93482.
NDISWrapper se trouve sous la forme d'une tarball (.tar.gz). Placez ce fichier dans votre dossier personnel. On va décompresser cette archive, un répertoire portant alors le nom de ndiswrapper-(Version) va être créé ; on se place ensuite dedans. Pour cela, ouvrez un terminal et tapez :
tar zxvf ndiswrapper-(Version).tar.gz cd ndiswrapper-<Version>
Enfin, maintenant que l'on se trouve dans le bon répertoire, on passe à l'installation proprement dite :
make
sudo make uninstall
puis on déplace ce dossier dans le dossier /opt/ ou il sera en sécurité, et on s'y rend :
cd ..
sudo mv ndiswrapper-<version> /opt/
cd /opt/ndiswrapper-<version>
On installe ndiswrapper :
sudo make install
Liens utiles
Configuration de NDISWrapper
Deux choix s'offrent à vous :
Procédure manuelle
Premièrement, nous allons charger dans le système le pilote Windows que nous avons récupéré (cf. supra). Pour cela, ouvrez un terminal, placez-vous dans le répertoire où se trouvent les pilotes (avec les fichiers .sys etc., pas uniquement le fichier .inf) et tapez (le nom du fichier .inf dépend de votre pilote) :
cd répertoire_où_se_trouve_le_driver
Si vous avez suivi la documentation ça devrait être :
cd ~/install_wifi
Sous Feisty, Gutsy
sudo ndiswrapper-1.9 -i votre_driver.inf
Sous Edgy
sudo ndiswrapper-1.8 -i votre_driver.inf
Sous Dapper
sudo ndiswrapper -i votre_driver.inf
Avec la méthode de la compilation (méthode "universel")
sudo ndiswrapper -i votre_driver.inf
Pour vérifier que NDISWrapper a bien installé votre pilote, tapez la commande suivante :
ndiswrapper -l
Vous devriez voir un message dans le genre de celui-ci :
Installed ndis drivers: (votre_driver) driver present, hardware present
Ensuite, nous allons créer un module pour le charger dans le noyau Linux. Ce module sera créé à partir du pilote Windows que nous avons chargé précédemment. Pour faire ceci, utilisez la commande suivante dans un terminal :
sudo ndiswrapper -m
Procédure graphique
Il existe un utilitaire dans le dépôt « Universe » qui se nomme ndisgtk et qui effectue la procédure ci-dessus de manière graphique. Après son installation, il se situera dans Système → Administration → Windows Wireless Drivers.
Passer la main à NDISWrapper
Décharger le module par défaut et charger NDISWrapper
Étape supplémentaire avant de pouvoir goûter aux joies du nomadisme (limité) , décharger le module qui gère par défaut votre carte Wi-Fi. Même si vous avez correctement configuré NDISWrapper cette étape est nécessaire. En effet imaginez deux personnes (module par défaut et ndiswrapper) voulant manger avec une cuillère (wifi) et en même temps !
Pour décharger le module par défaut d'abord le connaître : Je vous invite donc à le connaître dans cette partie de la documentation ou sur le forum Ubuntu.
Une fois que vous savez lequel c'est, il vous faut entrer la commande suivante pour décharger ce module :
sudo modprobe -r nom_du_module_à_backlister
Par exemple pour le chipset bcm43xx
sudo modprobe -r bcm43xx
Les commandes ci-dessus déchargent les modules pour la session en cours et il faut qu'au prochain démarrage ces modules ne se chargent pas. Il faut donc les backliser voir la partie cas particuliers </note>
Nous allons maintenant tester si le module que nous venons de créer fonctionne. Pour cela, on va le charger dynamiquement dans le noyau avec la commande suivante :
sudo modprobe ndiswrapper
Si tout s'est bien passé, vous devriez avoir une interface eth1 ou wlan0 existante. Vous pouvez vérifier cela en tapant iwconfig dans un terminal ou en allant dans le menu Système → Administration → Réseau.
sudo modprobe -r ndiswrapper puis sudo modprobe ndiswrapper.
Charger automatiquement NDISWrapper au démarrage du système
Pour que NDISWrapper se charge à chaque démarrage, il suffit d'ajouter une ligne contenant ndiswrapper à la fin du fichier « /etc/modules ». Faites-le manuellement ou tapez :
echo "ndiswrapper"|sudo tee -a /etc/modules
Vérification de l'installation
L'ordre d'exécution des commandes
Ceci est peut être trivial mais il vous faut respecter cette ordre (à adapter en fonction des cas), en résumé :
- installer ndiswrapper
- sudo ndiswrapper -i chemin_complet_du_driver.inf
- sudo ndiswrapper -m
- sudo modprobe -r nom_du_module_a_backlister
- echo "blacklist module_a_backlister"|sudo tee -a /etc/modprobe.d/blacklist
- sudo modprobe ndiswrapper
- echo "ndiswrapper"|sudo tee -a /etc/modules
Les réponses des commandes
La commande magique ndiswrapper -l n'est pas là pour faire jolie, c'est elle qui vous indique que l'installation du pilote s'est bien passée ou pas. Si la réponse est :
Installed ndis drivers:
(votre_driver) driver present, hardware present
Bravo votre pilote est installé sinon ceci veut dire que le pilote ( .inf ) est incompatible. Il vous faut en chercher un autre mais ceci veut également dire qu'il vous faut désinstaller le pilote qui vient de causer problème (voir la partie désinstaller le pilote ).
Enfin la commande de confirmation est sans aucun doute iwconfig.
~$ iwconfig
lo no wireless extensions.
eth1 no wireless extensions.
eth0 IEEE 802.11g ESSID:"ssid"
Mode:Managed Frequency:2.417 GHz Access Point: xx:xx:xx:xx:xx
Bit Rate=5.5 Mb/s Tx-Power:32 dBm
RTS thr:2347 B Fragment thr:2346 B
Power Management:off
Link Quality:26/100 Signal level:-79 dBm Noise level:-96 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:12766 Invalid misc:559650 Missed beacon:0
eth0 est donc l'interface wifi qui est reconnu !
Vous pouvez maintenant configurer l'interface sans fil. Pour cela, rendez-vous sur cette page.
Désinstallation
Suppression du pilote
Puis, on décharge le module du noyau :
sudo modprobe -r ndiswrapper
On désinstalle le driver :
sudo ndiswrapper -e <nomdudriver>
Désinstaller Ndiswrapper
Ouvrez le fichier « /etc/modules » en mode super-utilisateur et supprimez ndiswrapper à la fin du fichier.
On désinstalle NDISWrapper:
sudo modprobe -r ndiswrapper sudo apt-get remove ndiswrapper-utils --purge
Avec la méthode compilation il vous faut vous déplacer dans le dossier :
cd /opt/ndiswrapper-<version>
Puis désinstaller :
sudo make uninstall
Suppression des traces résiduelles
Supprimez le paquet ndiswrapper-utils, ndiswrapper-utils-1.8 ou ndiswrapper-utils-1.9 selon votre version d'Ubuntu.
Enfin, supprimez les "résidus" d'installation :
sudo rm -r /etc/ndiswrapper/ sudo rm -r /etc/modprobe.d/ndiswrapper sudo rm /lib/modules/`uname -r`/kernel/drivers/net/ndiswrapper/ndiswrapper.ko
Maintenant, il ne devrait rester aucune trace de NDISWrapper dans votre système.
Problèmes et solutions
Carte « aveugle »
Il se peut que la carte ainsi configurée semble marcher mais ne voit jamais aucun réseau. Dans ce cas la commande
sudo iwlist wlan0 scan
retourne
Aucun résultat
Une solution qui marche plutôt bien pour régler ce problème est de rajouter l'option irqpoll au démarrage.
pour ce faire on édite le fichier /boot/grub/menu.lst et on rajoute irqpoll à la fin de la ligne kernel que l'on lance.
sudo gedit /boot/grub/menu.lst title Ubuntu 7.10, kernel 2.6.22-14-generic root (hd0,1) kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=ab2e6ac4-be95-4745-9775-0f09d21c1ca1 ro quiet splash irqpoll initrd /boot/initrd.img-2.6.22-14-generic quiet
Cas particuliers
Maintenant que NDISWrapper a pris en charge votre carte Wi-Fi, il faut désactiver le module/driver par défaut pour éviter un conflit au prochain redémarrage. Ceci se résume à écrire une seule ligne dans un fichier.
Si votre carte n'est pas listée en dessous, faites une recherche sur le module par défaut gérant la wifi de votre ordinateur. La commande lsmod sera utile.
Chipset BCM4318
Il faut éditer le fichier /etc/modprobe.d/blacklist et rajouter à la fin
# broadcom 43xx blacklist bcm43xx
Un redémarrage est conseillé après.
Chipset BCM4311
Même chose que dans le cas précédent, il faut éditer le fichier /etc/modprobe.d/blacklist et rajouter à la fin
# broadcom 43xx blacklist bcm43xx
Un redémarrage est conseillé après.
Chipset Atheros AR5006EG
(Rencontré sur un toshiba P200-12V et un Asus X51R) De la même manière que pour le chipset BCM4318 ci-dessus, il faut éditer le fichier /etc/modprobe.d/blacklist et rajouter à la fin
# Atheros AR5006EG blacklist ath_pci
Et redémarrer ensuite. En effet, le driver madwifi qui gère généralement les chipsets de la marque Atheros ne prend pas en charge ce chipset...
Carte Linksys WPC54G
Si la commande sudo ndiswrapper -i #driver#.inf vous a renvoyé des lignes du type:
Forcing parameter RadioState|0 to RadioState|1
Ouvrez tous les fichiers .conf du répertoire « /etc/ndiswrapper » en mode super-utilisateur et remplacez RadioState|1 par RadioState|0 puis sauvegardez les modifications.
Chipset ACX100
Si vous ne pouvez pas utiliser le pilote libre (incompatibilité ou WPA ...), avant d'installer le pilote windows via NDISWrapper, il faut désactiver le pilote libre, comme indiqué sur cette page: Pilote ACX
Carte NETGEAR PCMIA MA521
Se rendre sur le site constructeur http://firmware.netgear-forum.com/index.php?produit=MA521 (5.175).
De là décompresser l'archive (ma521_5_175_1204_2006.zip), on obtient un 'setup.exe'. En l'installant via wine, il suffit de se rendre dans le dossier : ~/.wine/drive_c/windows/inf/MA521_patch et récupérer les fichiers NETMA521.inf et MA521nd5.sys (il vous faut ces deux fichiers).
Un autre lien pour récupérer ces deux fichiers (archive tar.gz) : http://www.clicksources.com/netgear_MA521.tar.gz ( McPeter )
Carte Belkin Wireless PCMCIA Card - F5D6020 (rev 20)
Utiliser un pilote RealTek 8180 pour qu'elle fonctionne avec NDisWrapper.
Procédure détaillée : carte Wifi PCMCIA Belkin F5D6020
Dongle USB Wifi utilisant le pilote sis163u
Voir la page: thomson_wlg_1500a qui détaille la procédure.
Si les ESSID ne s'affichent pas
Il n'est pas inutile d'ouvrir en mode super-utilisateur le fichier « /etc/network/interfaces » puis sauvegarder sans rien modifier.
Exemples de cartes
- Stick USB sans fil (802.11g) Olitec
Contributeurs : ostaquet, chuckychuck, DidRocks, Lestat the vampire, McPeter, Dav999, OwInTwIsT
