====== 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| 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 [[ http://forum.ubuntu-fr.org/viewtopic.php?id=197719 | forum ubuntu ]] voir aussi le document [[ http://doc.ubuntu-fr.org/ndiswrapper | 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 * [[http://mirrors.kernel.org/ubuntu/pool/main/n/ndiswrapper/ndiswrapper-common_1.43-1ubuntu2_all.deb | ndiswrapper-common]] * [[http://mirrors.kernel.org/ubuntu/pool/main/n/ndiswrapper/ndiswrapper-utils-1.9_1.43-1ubuntu2_i386.deb | ndiswrapper-utils-1.9]] * [[ftp://downloads.netgear.com/files/wg311v3_1_0.zip | wg311v3_1_0.zip]] 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 | 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 du Pilote | 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 [[ http://www.uluga.ubuntuforums.org/showpost.php?p=8289810&postcount=14 | 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 [[ http://ubuntuforums.org/showthread.php?t=1559857&highlight=USB+drives+-loaded+when+including+entry+for+ndiswrapper+in+%2Fetc%2Fmodules | les forums Ubuntu ]], mais aucune solution n'a été proposée... à suivre...