Fourre Tout

C'est mon pense-bête

Outils pour utilisateurs

Outils du site


linux:ndiswrapper

Configurer une carte Wifi avec ndiswrapper

Préambule : À faire

décrire plus précisément le cas particulier du D600

  • pilote b43legacy avec firmware propriétaire qui marche mal
  • installation de ndiswrapper
  • désactivation du chargement de b43legacy et surtout de ssb

:!: vérifier si ssb est requis par la carte ethernet (cf http://doc.ubuntu-fr.org/wifi_broadcom_bcm43xx)

Introduction

Certains adaptateurs wifi ne fonctionnent correctement qu'avec un pilote windows chargé avec l'utilitaire ndiswrapper.

Exemples :

  • carte PCMCIA Marvell 88w8335
  • chipset BCM4306 Broadcom

Le document suivant explique comment installer ndiswrapper, le pilote windows et comment gérer le chipset wifi avec le pilote en question.

Il est (très légèrement) adapté du tutoriel trouvé sur le forum ubuntu

voir aussi le document doc.ubuntu-fr.org/ndiswrapper un peu plus clair…

Pour connaître les périphériques réseau, tapez dans un terminal :

lspci

Vous obtenez ce type de résultat :

Ethernet controller: Marvell Technology Group Ltd. 88w8335 [Libertas] 802.11b/g Wireless

ou :

Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller

Ces deux chipsets (entre autres) ne sont correctement gérés qu'avec un pilote windows.

Si votre machine a une connexion internet (par exemple avec un cable réseau), vous pouvez directement télécharger et installer les outils depuis la machine à configurer ; si ce n'est pas le cas, il faudra évidemment effectuer le téléchargement des outils depuis une autre machine.

Outils nécessaires à l'installation du pilote

Les outils nécessaires sont : ndiswrapper et le pilote de la carte wifi.

Avec une connexion internet

Tapez dans un terminal :

sudo aptitude update
sudo aptitude install ndiswrapper-utils-1.9
wget ftp://downloads.netgear.com/files/wg311v3_1_0.zip (pilote marvell)
wget http://ubuntuondell.tuxfamily.org/download/bcmwl5/bcmwl5.tar.gz (pilote broadcom)

Sans connexion internet

Téléchargez ces 3 paquets

puis installez-les :

sudo dpkg -i ndiswrapper-common_1.43-1ubuntu2_all.deb
sudo dpkg -i ndiswrapper-utils-1.9_1.43-1ubuntu2_i386.deb

Installation du pilote

Installation

  • cas du pilote marvell
  unzip wg311v3_1_0.zip -dlibertas      ; # décompacte l'archive
  sudo ndiswrapper -i libertas/WG311v3\ V1.0/Driver/Windows\ XP/WG311v3.INF
  sudo ndiswrapper -m                   ; # écrit la configuration pour modprobe
  • cas du pilote broadcom
  tar -zxf bcmwl5.tar.gz                ; # décompacte l'archive
  sudo ndiswrapper -i DRIVER/bcmwl5.inf ; # installe le pilote
  sudo ndiswrapper -m                   ; # écrit la configuration pour modprobe

Vérification

Tapez :

ndiswrapper -l

vous devez voir un retour ressemblant à :

wg311v3         driver present, hardware present

passez alors au point Charger le pilote

Si vous voyez :

wg311v3:  invalid driver

supprimer le pilote avec la commande :

sudo ndiswrapper -e wg311v3

puis recommencez à partir du point Installation

Charger le pilote

  • Charger le pilote ndiswrapper :
sudo modprobe ndiswrapper
  • Mettre ndiswrapper dans les modules chargés au démarrage :
echo 'ndiswrapper' | sudo tee -a /etc/modules
  • si besoin, empêcher le chargement des pilotes non fonctionnels ; par exemple b43legacy et ssb dans le cas du chipset Broadcom :
sudo echo 'blacklist b43legacy' >> /etc/modprobe.d/blacklist.conf
sudo echo 'blacklist ssb' >> /etc/modprobe.d/blacklist.conf
  • Relancer l'activité du réseau :
sudo /etc/init.d/networking restart

Problème et solution

Dans mon cas perso, le module ssb était chargé très tôt lors du démarrage (malgré le blacklistage) et empêchait le fonctionnement correct de ndiswrapper (le pilote bcmwl5 n'était pas chargé) ; la solution trouvée ici a consisté à régénérer initramfs avec la commande :

sudo update-initramfs -u

dont l'effet est de mettre à jour les informations de démarrage du système pour qu'il n'essaie pas de charger le module ssb au démarrage.

Problème (bis) et rustine

:-( rien n'est simple… :-/

Maintenant que le Wifi fonctionne, je m'aperçois que les périphériques USB ne sont plus reconnus… Après investigation (longue et fastidieuse) voici la conclusion :

  • quand ndiswrapper est chargé au démarrage, il empêche la bonne reconnaissance des périphériques USB ;
  • quand ndiswrapper n'est pas chargé au démarrage, les périphériques USB sont correctement reconnus, mais on n'a plus de Wifi… on peut activer le Wifi en chargeant manuellement ndiswrapper, mais les périphériques USB insérés après le chargement de ndiswrapper ne sont pas reconnus

J'ai donc :

  • désactivé le chargement de ndiswrapper au démarrage ;
  • écrit un script qui permet à l'utilisateur de :
    • désactiver le Wifi (et ndiswrapper) lorsqu'il veut insérer un nouveau périphérique USB
    • réactiver le Wifi quand le péripérique a été reconnu

Visiblement, le problème a été signalé (une ou deux fois) dans les forums Ubuntu , mais aucune solution n'a été proposée…

à suivre…

linux/ndiswrapper.txt · Dernière modification: 2021/04/11 13:50 (modification externe)