NDISWrapper - Pilotes Windows™ sous Linux™
NDISWrapper est un module du noyau Linux qui permet l'utilisation de pilotes Windows® (la plupart du temps pour des cartes réseaux Ethernet et Wifi mais pas uniquement.)
N'hésitez pas à tester toutes les versions des différents pilotes de ce que vous essayez de faire fonctionner. Les pilotes 32 bits pour Windows-XP® semblent être les premiers à tester. N'hésitez pas non plus à essayer les pilotes 64 bits si vous utilisez Windows 64 bits. (même s'il faut parfois aussi essayer les 32 bits …)
- Essayant la carte sans rien faire, en effet la majeur partie du temps aucun pilote supplémentaire n'est requis;
- Cherchant sur votre moteur de recherche préféré si un pilote Linux non officiellement présent dans Ubuntu est utilisable.
Si votre cate Wifi ne marche toujours pas (ou si le pilote non officiel est trop difficile à installer), essayez Ndiswrapper.
Pré-requis
- Disposer des droits d'administration.
- Disposer de préférence d'une connexion à Internet configurée et activée.
Identification du pilote
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, ce qui pourra être utile en cas de CD de pilote "multi-modèles". Voir ce chapitre pour vous permettre de l'identifier. Reportez-vous également à la liste des cartes Wi-Fi vous voir ce qui est requis au sujet de votre matériel.
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. 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".
Récupération du fichier .inf du pilote Wi-Fi
Si votre pilote est incompatible changer légèrement le modèle de votre ordinateur pour pouvoir essayer d'autres pilotes
Commençons par créer un dossier install_wifi dans votre dossier personnel.
Le fichier que nous cherchons est un fichier .inf, mais il est rarement disponible directement sous cette forme.
Quand vous ouvrez votre CD d'installation du pilote, ou si le pilote est sous forme d'un dossier compressé, vous trouverez peut-être un dossier Drivers, ou pilote, avec à l'intérieur plusieurs dossiers dans le style : Windows Me, Windows 2000, Windows XP. Dans ce cas prenez tous les fichiers du dossier Windows XP (ou windows 2000 si vous n'avez pas de dossier Windows XP), et déplacez-les dans votre dossier install_wifi fraîchement créé.
Le fichier .inf n'étant qu'un fichier texte faisant référence aux autres fichiers contenus dans le même dossier que lui !
Si vous ne trouvez pas de dossier comprenant de fichiers .inf dans votre CD d'installation, ou en téléchargement sur le site du constructeur, le pilote doit être contenu à l'intérieur même du fichier .exe du pilote. Déplacez donc ce .exe dans le dossier install_wifi …
Décompression du fichier .exe pour obtenir le .inf
Si vous avez déjà le fichier .inf, cette étape est donc inutile, vous pouvez directement passer à l'installation.
Si vous ne disposez que d'un .exe comme pilote sans fichier .inf, vous devez le décompresser pour obtenir le .inf nécessaire à l'installation du pilote.
- Décompressez le fichier .exe en tapant dans le même terminal ceci:
cabextract <nom_du_fichier.exe>
- Si aucun fichier n'apparaît dans votre dossier install_wifi, essayez de taper ceci après:
unshield <nom_du_fichier.exe>
- Si rien n'apparaît non plus après ceci, il vous reste l'ultime méthode:
Cette méthode consiste à installer le pilote avec Wine, puis de se rendre dans le dossier : ~/.wine/drive_c/windows/inf et de récupérer les fichiers qui s'y trouvent pour les mettre dans votre dossier install_wifi, allez ensuite dans le dossier: ~/.wine/drive_c/windows/system32/drivers et copiez aussi le contenu dans install_wifi.
- Ensuite allez dans votre dossier install_wifi et faites un peu de rangement si vous avez des dossiers résultants de la décompression du .exe, déplacez tous les fichiers contenus dans ces dossiers directement dans install_wifi.
Ne faites pas ça pour les sous-dossiers (les dossiers dans les dossiers), mais seulement pour les dossiers.
Garder ce dossier install_wifi précieusement, car il vous sera utile dans le cas d'une réinstallation, ou d'une mise à jour importante de votre distribution.
Installation
Connexion internet non opérationnelle
Pour ceux qui n'ont aucune possibilité de se connecter à internet, ces paquets se trouvent sur le média d'installation d'Ubuntu (desktop dvd, alternate, liveUSB) de votre version d'Ubuntu. Dans ce cas,
- Insérer le média d'installation d'Ubuntu dans son lecteur (ou port USB pour un liveUSB):
- Si cela n'est pas fait automatiquement: rechargez la liste de vos paquets;
Vous pouvez aussi copier ces fichiers Ndiswrapper du média d'installation d'Ubuntu dans votre dossier personnel et lancer la commande
sudo dpkg -i ndiswrapper*.deb
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, positionnez-vous à l'aide de la commande cd dans le dossier 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 <dossier_où_se_trouve_le_pilote>
Si vous avez suivi la documentation ça devrait être :
cd ~/install_wifi
ndiswr
puis demander une auto-complétion en appuyant plusieurs fois sur la touche <TAB>.
sudo ndiswrapper -i votre_pilote.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_pilote) 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 qui se nomme ndisgtk et qui effectue la procédure ci-dessus de manière graphique. Pour e lancer faites une recherche dans le tableau de bord Unity avec le mot clé 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 (Wi-Fi) et en même temps !
Pour décharger le module par défaut d'abord le connaître : Vous êtes donc invité à l'étudier 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_à_blacklister
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 blacklister voir la partie cas particuliers
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
.
sudo apt-get install ndiswrapper-dkms 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 exécutez la commande suivante dans un terminal: :
echo "ndiswrapper"|sudo tee -a /etc/modules
Ou bien lancer le chargement du module NDISwrapper en utilisant le script de démarrage /etc/rc.local. Pour ce faire:
- éditer le fichier /etc/rc.local;
- Insérer la commande
/sbin/modprobe ndiswrapper &
Devant la commande
exit 0
- Enregister et fermer le fichier.
Vérification de l'installation
L'ordre d'exécution des commandes
Ceci est peut-être trivial mais il vous faut respecter cet ordre (à adapter en fonction des cas), en résumé :
- installer NDISWrapper
- sudo ndiswrapper -i chemin_complet_du_pilote.inf
- sudo ndiswrapper -m
- sudo modprobe -r nom_du_module_a_backlister
- echo "blacklist module_a_backlister"|sudo tee -a /etc/modprobe.d/blacklist.conf
- 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_pilote) 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 Wi-Fi qui est reconnue !
Vous pouvez maintenant configurer l'interface sans fil. Pour cela, rendez-vous sur cette page.
Désinstallation
Suppression du pilote
Depuis un terminal avec les commandes suivantes:
- On désinstalle le pilote :
sudo ndiswrapper -r <nomdudriver>
- et Puis, on décharge le module du noyau :
sudo modprobe -r ndiswrapper
Désinstaller NDISWrapper
- Éditez le fichier « /etc/modules » en mode super-utilisateur et supprimez ndiswrapper à la fin du fichier.
Suppression des traces résiduelles
Supprimez le paquet ndiswrapper-utils, ndiswrapper-utils-1.9 selon votre version d'Ubuntu.
Enfin, supprimez les "résidus" d'installation avec les commandes suivantes siasies dans un terminal:
sudo rm -r /etc/ndiswrapper/ sudo rm -r /etc/modprobe.d/ndiswrapper sudo rm -r /etc/modprobe.d/ndiswrapper.conf 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
La méthode consistant à modifier le fichier /boot/grub/menu.lst pour activer le wifi ne fonctionne plus à partir d'ubuntu 9.10 En effet le fichier menu.lst est remplacé par grub.cfg. Ce fichier ne pouvant pas être modifié directement (il est généré à partir d'autres fichiers), le mode opératoire est le suivant: 1) ouvrir un terminal 2) taper gksudo gedit /etc/grub.d/10_linux 3) ajouter pnpbios=off acpi=force irqpoll au bon endroit:
…/… if [ "x$5" != "xquiet" ]; then
cat << EOF echo '$(printf "$(gettext_quoted "Loading Linux %s ...")" ${version})'
EOF
fi cat << EOF linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} pnpbios=off acpi=force irqpoll
EOF …/…
5) Enregistrer les modifications et fermer le fichier 6) dans le terminal taper sudo update-grub 7) Redémarrer l'ordinateur
Cas particuliers
Maintenant que NDISWrapper a pris en charge votre carte Wi-Fi, il faut désactiver le module/pilote 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.
Accès au Wi-Fi via un adaptateur USB Netgear
Vous trouverez la procédure sur cette page.
Broadcom Corporation
Chipset BCM4318
Il faut éditer le fichier /etc/modprobe.d/blacklist.conf et rajouter une ligne, le code suivant effectue cette manipulation automatiquement.
echo -e "blacklist ssb\nblacklist b43"| sudo tee -a /etc/modprobe.d/blacklist.conf
Puis de même pour le fichier /etc/modprobe.d/ndiswrapper
echo 'install ndiswrapper modprobe -r ssb; modprobe --ignore-install ndiswrapper $CMDLINE_OPTS; modprobe ssb'| sudo tee -a /etc/modprobe.d/ndiswrapper
Après un redémarrage votre carte devrait fonctionner.
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.conf et rajouter à la fin
# Atheros AR5006EG blacklist ath_pci
Et redémarrer ensuite. En effet, le pilote 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
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