{{tag>Focal réseau matériel windows wifi}}
----
====== NDISWrapper - Pilotes Windows sous Linux ======
**NDISWrapper** est un module du [[:kernel|noyau Linux]] qui permet l'utilisation de pilotes Windows® \\
Le module a été développé principalement pour l'utilisation de pilotes wifi et ethernet, \\
mais rien n'empêche de suivre cette procédure afin d'intégrer des pilotes bluetooth.
N'hésitez pas à tester toutes les versions des différents pilotes susceptibles de convenir à votre type de matériel. \\
Gardez à l'esprit que **Ndiswrapper** n'est qu'une solution de remplacement. \\
NDISWrapper est notoirement stable. \\
Son utilisation ne devra être envisagée que dans la mesure où il n'existe aucun pilote développé sous Linux.
Avant toute chose, il est préférable de vérifier si un pilote Linux existe en :
* 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é un pilote potentiellement compatible dans votre gamme de matériel.
Si votre [[:wifi_liste_carte|carte Wifi]] ne marche toujours pas ou bien s'avère trop difficile à installer ou à faire fonctionner, essayez **Ndiswrapper**.
===== Pré-requis =====
* Disposer des [[:sudo|droits d'administration]].
* Disposer de préférence d'une connexion à Internet configurée et activée.
* Toutes les manipulations suivantes vont se faire à l'aide d'un **[[:Terminal]]**. Aussi il est conseillé de suivre les quelques tutoriels pour comprendre comment utiliser efficacement ce **[[:terminal]]**.
==== Identification du pilote ====
**Pour savoir s'il est nécessaire d'installer NDISWrapper**, reportez-vous d'abord à la procédure générale de **[[:wifi|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 [[:wifi#identifier_sa_carte_reseau_wi-fi|ce chapitre]] pour vous permettre de l'identifier. Reportez-vous également à [[:wifi_liste_carte|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".
Vous pouvez trouver quelques pilotes Windows NDIS testés sous Linux sur la [[http://www.linuxant.com/driverloader/|page de Linuxant]] (lien //Windows Drivers// à gauche).
==== Récupération du fichier ''*.inf'' du pilote Wi-Fi ====
Choisissez en priorité le pilote qui correspond à votre version de Windows puis l'architecture de votre matériel.
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.\\ Lorsque vous ouvrez votre CD d'installation ou bien s'il se présente sous les formes de fichiers :
* ''*.exe'' d'installation
* ''*.zip'' d'archive compressée
vous devez d'abord éxecuter le fichier ou décompresser l'archive dans votre dossier nouvellement créé. \\
Si __le pilote est un dossier compressé__, vous trouverez peut-être __un dossier ''Drivers''__, ou pilote, avec à l'intérieur plusieurs sous-dossiers sous la forme ''Windows Me'', ''Windows 2000'', ''Windows XP'', correspondant aux différentes versions des pilotes. \\
Dans ce cas, choissisez tous les fichiers de votre version et déplacez-les dans votre dossier **install_wifi** fraîchement créé.
**Prenez bien garde à prendre tous les fichiers contenus dans le même dossier que le fichier ''*.inf'' dans votre déplacement de fichiers !!**\\
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 aucun fichier *.inf n'est présent, tel quel dans votre CD d'installation ou en le téléchargement sur le site du constructeur, le pilote peut ê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.
- [[:tutoriel:comment_installer_un_paquet|installez les paquets]] **[[apt>cabextract,unshield|cabextract et unshield]]**
- Se positionner dans le dossier **install_wifi** que vous aviez créé précédemment à l'aide de la commande **[[:console#cd|cd]]**: Pour cela, ouvrez un **[[terminal]]** et tapez la [[:commande_shell|commande]] :cd ~/install_wifi
- Décompressez le fichier .exe en tapant dans le même [[:terminal]] ceci: cabextract
* Si aucun fichier n'apparaît dans votre dossier install_wifi, essayez de taper : unshield x
* 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 =====
[[tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>ndiswrapper]]**.
===La connexion internet ne fonctionnepas ====
Pour ceux qui n'ont aucune possibilité de se connecter à internet, ces paquets se trouvent sur le [[:tutoriel:obtenir_cd_ubuntu|média d'installation d'Ubuntu (desktop dvd, alternate, liveUSB)]] de votre [[:versions|version d'Ubuntu]]. Dans ce cas,
- Insérer le [[:tutoriel:obtenir_cd_ubuntu|média d'installation d'Ubuntu]] dans son lecteur (ou port USB pour un liveUSB):
- [[depots#ajouter_un_cd-rom_comme_depot|Ajouter le cd-rom comme dépôt]];
- Si cela n'est pas fait automatiquement: [[:tutoriel:comment_modifier_sources_maj#recharger_la_liste_des_paquets|rechargez la liste de vos paquets]];
- [[tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>ndiswrapper]]**.
Vous pouvez aussi copier ces fichiers Ndiswrapper du [[:tutoriel:obtenir_cd_ubuntu|média d'installation d'Ubuntu]] dans votre dossier personnel et lancer la [[:commande_shell|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é ([[#Récupération du fichier .inf du pilote Wi-Fi|cf. supra]]). Pour cela, ouvrez un [[:terminal]], positionnez-vous à l'aide de la commande **[[:console#cd|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
Si vous avez suivi la documentation ça devrait être :
cd ~/install_wifi
Pour la [[commande_shell|commande]] ndiswrapper il se peut que la syntaxe soit légèrement différente, pour cela taper dans un [[:terminal]] ''**ndiswr**'' puis demander une [[:console#optimiser_la_console_auto-completion|auto-complétion]] en appuyant plusieurs fois sur la touche .
sudo ndiswrapper -i votre_pilote.inf
Le nom du fichier .inf est sensible à la casse ! N'hésitez pas à utiliser la [[:console#optimiser_la_console_auto-completion|touche pour compléter automatiquement le nom du fichier]].
Pour vérifier que NDISWrapper a bien installé votre pilote, tapez la [[:commande_shell|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 [[:kernel|noyau Linux]]. Ce module sera créé à partir du pilote Windows que nous avons chargé précédemment. Pour faire ceci, utilisez la [[:commande_shell|commande]] suivante dans un [[:terminal]]:
sudo ndiswrapper -m
==== Module et procédure graphiques d'installation du (ou des) pilote(s) Wifi et (ou) Bluetooth ====
Il existe un utilitaire nommé **[[:ndisgtk]]** chargé d'installer votre pilote via une interface graphique.
{{ materiel:wifi:ndisgtk.jpg }}
=== Version Xenial Xerus 16.04 et antérieures ===
Le fichier est présent dans le dépôt Universe.
[[http://fr.archive.ubuntu.com/ubuntu/pool/universe/n/ndisgtk/ndisgtk_0.8.5-1ubuntu1_amd64.deb|Fichier NDisGtk version 0.8.5]]
Pour le lancer faites une recherche dans [[:unity#tableau_de_bord_dash|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 ====
Il faut tout d'abord décharger le module qui gère votre carte Wi-Fi par défaut. \\
Même si vous avez correctement configuré NDISWrapper, cette étape est nécessaire. \\
En effet, deux modules ne peuvent gérer la même puce wifi en même temps !
Pour décharger le module par défaut, il est primordial de l'identifier. Vous êtes invité à consulter le chapitre « [[:ndiswrapper#cas_particuliers|Cas particuliers]] de la documentation sur NDISWrapper. \\
Vous pouvez également consulter le forum de discussion à ce sujet.
Lorsque vous avez identifié votre matériel, votre puce puis éventuellement votre pilote spécifiques, vous devez décharger le module présent à l'aide de la [[:commande_shell|commande]] :
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. Nous allons faire en sorte que ceux-ci ne se chargent pas au prochain démarrage. Pour ce faire, nous allons les placer en liste noire. Cette procédure est également décrite dans la section « [[:ndiswrapper#cas_particuliers|Cas particuliers]] » de la documentation sur NDISWrapper.
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_shell|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**.
Si ce n'est pas le cas, essayez de :
* décharger le module et
* rechargez-le : sudo modprobe -r ndiswrapper \\ sudo modprobe ndiswrapper
Il est fort possible que vous obteniez ce message d'erreur : \\
**FATAL: Module ndiswrapper not found**.
Dans ce cas :
* installez le paquet ''ndiswrapper-dkms'' puis
* rechargez le module : 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_shell|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:
- [[:tutoriel:comment_modifier_un_fichier|é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 le logiciel NDISWrapper
- référencer le pilote pour Windows dans NDISWrapper :\\ ''sudo ndiswrapper -i //chemin_complet_du_pilote.inf//''
- créer l'interface réseau associée à NDISWrapper : ''sudo ndiswrapper -m''
- décharger le pilote pour Linux :\\ ''sudo modprobe -r //nom_du_module_a_backlister//''
- bloquer le chargement automatique du pilote pour Linux :\\ ''echo "blacklist //module_a_backlister//"|sudo tee -a /etc/modprobe.d/blacklist.conf''
- charger NDISWrapper comme nouveau pilote pour Linux :\\ ''sudo modprobe ndiswrapper''
- forcer le chargement automatique de NDISWrapper au démarrage:\\ ''echo "ndiswrapper" | sudo tee -a /etc/modules''
==== Les réponses des commandes ====
La [[:commande_shell|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 [[:ndiswrapper#desinstallation|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 [[:wifi|cette page]].**
La page [[:WiFi]] n'explique pas quel utilitaire de connexion utiliser avec ndiswrapper, celui par défaut ne fonctionnant pas.
Il faut donc ajouter une section ici afin d'achever la procédure d'installation du module--- //[[:utilisateurs:doc83|doc83]] Le 27/10/2012, 18:27//
===== Désinstallation =====
==== Suppression du pilote ====
Depuis un [[terminal]] avec les [[commande_shell|commandes]] suivantes:
- On désinstalle le pilote :sudo ndiswrapper -r
- et Puis, on décharge le module du noyau :sudo modprobe -r ndiswrapper
==== Désinstaller NDISWrapper ====
- [[:tutoriel:comment_modifier_un_fichier|Éditez le fichier]] « /etc/modules » en mode [[:sudo|super-utilisateur]] et supprimez **ndiswrapper** à la fin du fichier.
- Depuis un [[:terminal]] avec les [[:commande_shell|commandes]] suivantes on désinstalle **NDISWrapper**: sudo modprobe -r ndiswrapper
sudo apt-get remove ndiswrapper-utils --purge
==== Suppression des traces résiduelles ====
[[:tutoriel:comment_supprimer_un_paquet|Supprimez le paquet]] **ndiswrapper-utils, ndiswrapper-utils-1.9** selon votre version d'Ubuntu.
Enfin, supprimez les "résidus" d'installation avec les [[commande_shell|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_shell|commande]] sudo iwlist wlan0 scan
retourne Aucun résultat
Cette erreur peut très bien ne pas être systématique ! C'est-à-dire que vous pouvez avoir un truc qui marche plusieurs fois, et qui se met à ne plus marcher un jour, pour un bon moment.
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 [[:tutoriel/comment_modifier_un_fichier|éditer le fichier]] ''/etc/default/grub'' avec les [[:sudo|droits d'administration]] et rajouter ''irqpoll'' à la fin de la ligne ''**GRUB_CMDLINE_LINUX_DEFAULT**''((voir le tutoriel [[:tutoriel:grub2_parametrage_manuel#fichieretcdefaultgrub|grub2 : parametrage manuel]] pour plus d'informations)).
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash irqpoll"
Ensuite, il faut régénérer le menu grub avec la commande :
sudo update-grub
Puis redémarrer Ubuntu et revérifier la détection des réseaux.
Si cela ne fonctionne toujours pas, essayer avec les options ''**pnpbios=off**'' et ''**acpi=force**'' en plus de irqpoll :
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pnpbios=off acpi=force irqpoll"
===== 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 [[:diagnostic_outil|lsmod]] sera utile.
==== Broadcom Corporation ====
[[:wifi_broadcom_BCM43xx|Page sur les bcm43xx en général, suivant différentes méthodes]]
===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: [[:wifi_chipset_ti_acx|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|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 ( [[utilisateurs:McPeter]] )
==== 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 =====
* [[:livebox]]
* [[:wifi_trendnet_tew-423pi]]
* [[:wifi_belkin_f5d6020|carte Wifi PCMCIA Belkin F5D6020]]
* Stick USB sans fil (802.11g) Olitec
===== Liens utiles =====
* **(en)** [[http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation|guide d'installation sur le site officiel]]
* **(en)** [[https://help.ubuntu.com/community/WifiDocs/Driver/Ndiswrapper|Guide d'installation sur le wiki anglophone]].
----
/ Contributeurs : [[utilisateurs:ostaquet]], [[utilisateurs:chuckychuck]], [[utilisateurs:DidRocks]], [[utilisateurs:Lestat_the_vampire|Lestat the vampire]], [[utilisateurs:McPeter]], Dav999, [[utilisateurs:owintwist|OwInTwIsT]]//