Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

Ceci est une ancienne révision du document !



Ndiswrapper

NDISWrapper est un utilitaire permettant d'utiliser les pilotes (drivers) Windows pour faire reconnaître les cartes réseaux sous Ubuntu (et plus particulièrement, les cartes réseaux Wifi).

Sous Breezy et Dapper, NDISWrapper fonctionne sur plateforme 32 bits et amd64 car il existe des paquets précompilés pour ces deux architectures. Sous Hoary, il n'existe pas de paquets pour amd64, voici une méthode pour son installation. De plus, si vous utilisez amd64, vous devez absolument utiliser des drivers pour windows64 car les drivers pour windows normaux (32bits) ne fonctionneront pas en 64bits (voyez sur le site du constructeur si un tel driver existe).

Vous pouvez consulter le site ndiswrapper pour la liste de matériel compatible et leur pilotes.

  • 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. Vous pouvez aussi trouver des procédures spécifiques pour votre matériel ici.
  • 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.

Remarque 1 : Si les pilotes ne sont pas disponibles sous forme d'une archive (.zip) ni d'un répertoire mais uniquement du fichier exécutable (.exe) qui les installe, vous pouvez alors utiliser cabextract ou unshield pour extraire les pilotes de l'exécutable (ces deux logiciels sont disponibles dans les dépôts).

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 personnel. Vous devez copier tout le contenu du répertoire, pas seulement le fichier .inf.

Il existe deux méthodes pour installer ndiswrapper : le plus simple et le plus pratique est d'installer le paquet se trouvant dans les dépôts (malheureusement, la version disponible est 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 !).

Installation du paquet

Pour installer Ndiswrapper simplement, il suffit d'installer le paquet ndiswrapper-utils à l'aide du gestionnaire de paquets Synaptic ou alors de taper dans un terminal :

sudo apt-get install ndiswrapper-utils

Pour ceux qui ne disposent pas de connexion internet, ce paquet se trouve sur le CD d'installation d'Ubuntu (dans ce cas, ne pas oublier d'ajouter le cd-rom comme dépôt).

Sous Edgy

Il faut installer le paquet ndiswrapper-utils-1.8.

Compilation de ndiswrapper

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.31). 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 (voir le paragraphe Désinstallation ci-dessous).

Pour compiler, installez les linux-headers de votre noyau ainsi que tous les outils nécessaires :

sudo apt-get install linux-headers-`uname -r` dh-make fakeroot build-essential

Ensuite, on télécharge ndiswrapper sur le site officiel : http://ndiswrapper.sourceforge.net/. Ndiswrapper se trouve sous la forme d'une archive .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:

sudo make uninstall
make
sudo make install

Sous Breezy

Il est possible de rencontrer des erreurs de compilation si le compilateur gcc n'est pas la version appropriée. Sous Breezy Badger avec le noyau 2.6.12, il faut utiliser gcc-3.4, pourtant la version standard est la 4.0. La solution est d'installer gcc-3.4 en plus de gcc-4.0 :

sudo apt-get install gcc-3.4

puis de préciser la version de gcc à utiliser dans une variable d'environnement :

export CC=gcc-3.4

On peut maintenant procéder à la compilation. Cette variable ne dure que le temps d'une session. Il faudra donc la repréciser chaque fois que nécessaire.

Liens utiles
  • Premièrement, nous allons charger dans le système le pilote Windows que nous avons récupéré (voir plus haut). Pour ce faire, ouvrez un terminal, placez-vous dans le répertoire où se trouvent les drivers (avec les fichiers .sys etc, pas uniquement le fichier .inf) et tapez : (le nom du fichier .inf dépend de votre driver)
cd répertoire_où_se_trouve_le_driver
sudo ndiswrapper -i votre_driver.inf

Attention : le nom du fichier .inf est sensible à la casse ! N'hésitez pas à utiliser la touche Tab pour compléter automatiquement le nom du fichier.

  • Pour vérifer que ndiswrapper a bien installé votre driver,

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
  • 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 wlan0 existante. Vous pouvez vérifier cela en tapant iwconfig dans un terminal ou en allant dans le menu Système ⇒ Administration ⇒ Réseau. Vous pouvez maintenant configurer l'interface sans fil (voir wifi).

PS: sous Edgy Eft, pour que le modprobe fonctionne, il faut mettre la version 1.8 de ndiswrapper.

  • Si ce n'est pas le cas, essayez de décharger le module (chargé par défaut sous Breezy) et rechargez-le :
sudo modprobe -r ndiswrapper
sudo modprobe ndiswrapper
  • 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
  • Pour la configuration du Wifi, reportez vous à cette page.

Remarque: 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. Système→Administration→Windows Wireless Drivers

ndisgtk.jpg

Suppression du driver

Alt+F2 puis :

  gksudo gedit /etc/modules     (pour Ubuntu)
ou
  kdesu kate /etc/modules       (pour Kubuntu)

et supprimez ndiswrapper à la fin du fichier

Puis, on décharge le module du noyau :

sudo modprobe -r ndiswrapper

On désinstalle le driver:

ndiswrapper -e <nomdudriver>

Suppression du paquet installé

sudo apt-get --purge remove ndiswrapper-utils

et suppression des autres "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 traces d'Ndiswrapper dans votre système.

Vu sur une 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 gedit en mode administrateur :

Alt+F2 puis

  gksudo gedit     (pour Ubuntu)
ou
  kdesu kate       (pour Kubuntu)

Ouvrez tous les fichiers .conf du répertoire /etc/ndiswrapper et remplacez RadioState|1 par RadioState|0 puis sauvegardez les modifications

Dans le cas d'un chipset ACX100

Personnelement, j'ai une carte US Robotics 5416 (PCI) qui est équipée d'un chipset Texas Instrument ACX111. Le problème est que le module du kernel se charge automatiquement et donc, ndiswrapper ne peut pas prendre le contrôle de la carte. Pour éviter d'utiliser le module du noyau, vous devez :

Sous Breezy

Vous devez éditer éditer le fichier /etc/hotplug/blacklist à l'aide de la commande suivante :

Alt+F2 puis

  gksudo gedit /etc/hotplug/blacklist    (pour Ubuntu)
ou
  kdesu kate /etc/hotplug/blacklist      (pour Kubuntu)

Et ajouter à la fin du fichier la ligne :

acx_pci

Au démarrage suivant, le module noyau acx_pci ne sera pas utilisé par le système Hotplug et ainsi, le module ndiswrapper pourra prendre le contrôle de la carte réseau wifi.

Sous Dapper

Sous Dapper Hotplug a été remplacé par udev, il y a donc des modifications : acx_pci devien acx, et le fichier de blacklist a changé.

Vous devez éditer éditer le fichier /etc/modprobe.d/blacklist à l'aide de la commande suivante :

Alt+F2 puis

  gksudo gedit /etc/modprobe.d/blacklist     (pour Ubuntu)
ou
  kdesu kate /etc/modprobe.d/blacklist       (pour Kubuntu)

Et ajouter à la fin du fichier la ligne :

blacklist acx

Dans le cas d'une carte NETGEAR PCMIA MA521

Le pilote à utiliser pour qu'elle fonctionne avec ndiswrapper est celui ci :

ftp://202.65.194.18/cn/wlan/rtl8180l/ndis5x-8180(173).zip

Cas d'un dongle usb wifi utilisant le driver sis163u

Télécharger la dernière version du driver sur http://www.sis.com Bien que détectant le matériel, la version de ndiswrapper de Edgy alimente bien le dongle wifi, mais celui-ci ne permet pas de se connecter à l'Internet (il fait planter le noyau). Il faut donc désinstaller cette version et compiler la version 1.16 de ndiswrapper à http://ndiswrapper.sourceforge.net/. (cf partie ci-après pour voir comment compiler ndiswrapper). La dernière version ne semble pas non plus fonctionner avec ce driver. Une fois ceci fait, installer le driver comme expliqué précédemment. Testé sur 2 dongles usb : netcow et trendnet connecté à un réseau wifi alice et livebox.

Cas de la clef usb wifi TrendNet TEW-424UB utilisant le driver sis163u

Après passage sous Edgy, cela ne fonctionnait plus, en supprimant la version ndiswrapper-utils-1.1 puis en installant (apt-get) la version ndiswrapper-utils-1.8 cela fonctionne de nouveau.

Dongle WiFi WD85-EU

Application de la méthode avec succès sans coup férir

Dans certains cas où les ESSID ne s'affichent pas

Il n'est pas inutile de réécrire le fichier /etc/network/interfaces comme indiqué :

Alt+F2 puis

  gksudo gedit /etc/network/interfaces     (pour Ubuntu)
ou
  kdesu kate /etc/network/interfaces       (pour Kubuntu)

puis sauvegarder

  • materiel/wifi/ndiswrapper.1167212891.txt.gz
  • Dernière modification: Le 18/04/2011, 14:48
  • (modification externe)