====== Pas à pas : faire que sa carte Wi-Fi soit détectée et fonctionnelle ======
* Objet : faire que sa carte Wi-Fi soit détectée et fonctionnelle
* Niveau requis :{{tag>débutant avisé}}
* Commentaires : //Résoudre les problèmes de fonctionnement d'une carte Wi-Fi//
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
* Suivi : {{tag>à-tester}}
* Création par [[user>captnfab]] le 26/04/2013
* Testé par .... le ....
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=114925#p114925 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
Suivez cette section en particulier si votre matériel n'est pas reconnu par le noyau.
**Attention**, ce tuto propose différents tests afin d'identifier les problèmes de détection de votre carte wifi. Il est important de le **suivre de manière chronologique** (chaque test supposant que le précédent est réussi), et **jusqu'au bout** (tous les tests devant être positifs pour que la détection soit complète et la carte fonctionnelle).
===== Étape 1 : Identifier la carte réseau =====
Il existe plusieurs niveaux de détection du matériel. En premier lieu, le noyau doit identifier la carte comme étant une carte WiFi. Pour vérifier si c'est le cas, la commande ''lspci'' nous sera très utile.
Pour identifier votre carte WiFi, tapez dans un [[doc:systeme:terminal|terminal]] la commande suivante :
lspci -nn | grep -i network
ou, à partir de Debian 9 :
lspci -nnd ::0280
Cela vous donnera quelque chose comme ceci :
03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
Cette ligne nous indique que cet ordinateur est équipé d’une carte avec une puce de marque Broadcom avec un //chipset// BCM4311. Les cartes Broadcom sont souvent pénibles à installer, heureusement les modes d'installation commencent à être bien rodés.
Il existe une multitude de tutoriels ou de cours sur internet qui expliquent comment identifier le matériel installé sur votre ordinateur.
Voici deux pages qui sont spécialement dédiées à Debian :
* https://inetdoc.net/travaux_pratiques/config.interface.wlan/config.interface.wlan.identification.html
* https://wiki.debian.org/fr/HowToIdentifyADevice
Si vous ne détectez pas la carte WiFi, cela peut être dû au fait que sur certains ordinateurs portables, la carte WiFi est en fait //un périphérique USB//.
Essayez la commande suivante :
lsusb
Les PC de bureau ne sont pas toujours (voire pas très souvent !) équipés d'une carte WiFi. Vous pouvez donc choisir la carte //PCI// ou la clef WiFi //USB// que vous voudrez installer par vous-même.
===== Étape 2 : Vérifier la présence du module noyau =====
FIXME (amalgame pilote/module/firmware) \\
La seconde étape nécessaire pour le fonctionnement d'une carte WiFi est qu'elle soit prise en charge par un module du noyau.
Pour vérifier si c'est le cas (et que ce module est installé), on utilisera à nouveau la commande ''lspci'' :
lspci -nnk | grep -i network -A 3
ou, à partir de Debian 9 :
lspci -nnkd ::0280
02:00.0 Network controller [0280]: Broadcom Limited BCM4313 802.11bgn Wireless Network Adapter [14e4:4727] (rev 01)
Subsystem: AzureWave BCM4313 802.11bgn Wireless Network Adapter [1a3b:2047]
Kernel driver in use: bcma-pci-bridge
Kernel modules: bcma
Cette fois-ci, on note que la carte WiFi est une BCM4313, et que le pilote noyau utilisé est ''bcma-pci-bridge''. (Notez au passage que ''bcma-pci-bridge'' n'est pas un module, et que le « vrai » pilote (module du noyau) utilisé est, en l'occurrence, brcmsmac, même s'il n'apparaît que dans le retour de [[doc:systeme:dmesg|dmesg]] -- cf. infra, ces charmantes cartes Broadcom sont le pire exemple qui soit, sur le plan pédagogique :-?)
Si ''lspci'' n'affiche pas de module en cours d'utilisation, c'est que le module noyau est manquant, il faut alors l'installer.
Si vous êtes possesseur d'un ordi portable, vous avez certainement une carte WiFi intégrée. Dans le meilleur des cas, votre carte sera reconnue automatiquement. Si si, ça arrive ! Sinon, vous devez connaître le modèle de votre carte pour pouvoir installer le bon pilote.
Il suffit alors de se reporter à la page "[[doc:materiel:wifi:wifi|Cartes Wifi]]" pour trouver le(s) module/paquet qui correspond(ent) à la carte en question.
===== Étape 3 : Vérifier la présence du firmware =====
FIXME (amalgame firmware/interface) \\
Les //firmwares// sont des micro-programmes souvent fournis par le constructeur, et que le pilote noyau doit charger dans la carte WiFi elle-même. De nombreux périphériques nécessitent aujourd'hui que soient chargés des //firmwares//, et comme ceux-ci sont rarement libres, ils ne sont pas installés par défaut sous Debian.
On vérifie si un //firmware// est présent (après s'être assuré que le module nécessaire était bien là), avec la commande [[doc:reseau:ip|ip]]. La commande ifconfig est dépréciée sous Debian 9 Stretch, en raison d'un manque de maintenance. La commande [[doc:reseau:ifconfig|ifconfig]] reste disponible pour les utilisateurs de Debian 8 Jessie et ceux qui ont migré de Jessie à Stretch.
ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: wlp5s0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether c4:17:fe:ce:3d:1e brd ff:ff:ff:ff:ff:ff
inet xxx.xxx.x.xx/xx brd xxx.xxx.x.xxx scope global dynamic wlp5s0
valid_lft 42384sec preferred_lft 42384sec
inet6 xxxx:xxx:xx:xxxx:xxxx:xxxx:xxxx:xxxx/xx scope global noprefixroute dynamic
valid_lft 86325sec preferred_lft 86325sec
inet6 xxxx::xxxx:xxx:xxxx:xxxx/xx scope link
valid_lft forever preferred_lft forever
Depuis Debian 9 Stretch, le nom des interfaces a changé :
* pour la connexion Ethernet (filaire) : à la place de eth0, on a un nom de la forme **enp**0s3 ;
* pour la connexion WiFi (sans fil) : à la place de wlan0, on trouve un nom de la forme **wlp**5s0, **wlp**0s29f7u2 ou encore **wlx**0a1b2c3d4e5f, selon le type de carte WiFi (PCI ou USB).
Si "**wlp**xxx" ou "**wlx**xxx" apparaît, alors votre carte WiFi est très probablement correctement détectée, félicitations. :-)
Si "**wlp**xxx" ou "**wlx**xxx" n'apparaît pas alors que le module noyau est bien chargé, c'est qu'il faut installer un //firmware// manquant. La commande ci-dessous devrait vous aider à trouver celui qui manque pour faire fonctionner votre carte WiFi :
dmesg | grep firmware
À titre d'**exemple** extrayons la substantifique moelle d'un cas réel issu du forum en octobre 2018 (merci à fx) : \\ \\
dmesg | grep firmware
[ 22.089153] brcmsmac bcma0:1: firmware: failed to load brcm/bcm43xx-0.fw (-2)
[ 22.089382] brcmsmac bcma0:1: Direct firmware load for brcm/bcm43xx-0.fw failed with error -2
Le fameux //firmware// manquant a donc pour doux nom de fichier bcm43xx-0.fw, dont acte. Mais par quel paquet peut-il bien être fourni ? Attention, ces //firmwares// étant pour la plupart propriétaires, la suite nécessite un [[doc:systeme:apt:sources.list:sources.list-non-free|ajustement]] préalable de votre fichier [[doc:systeme:apt:sources.list|sources.list]].
apt-cache search bcm43xx-0.fw
firmware-brcm80211 - Binary firmware for Broadcom/Cypress 802.11 wireless cards
Et hop, vous n'avez plus qu'à installer le paquet firmware-brcm80211 via votre [[doc:systeme:apt:clients|gestionnaire de paquets]] favori (sur le forum, privilégiez les outils en ligne de commande).
Notez que l'on peut aussi s'y prendre autrement, mais qu'en l'occurrence, le résultat obtenu est des plus déroutants...
apt-cache search BCM4313[^0-9]
broadcom-sta-common - Common files for the Broadcom STA Wireless driver
broadcom-sta-dkms - dkms source for the Broadcom STA Wireless driver
broadcom-sta-source - Source for the Broadcom STA Wireless driver
Vous pourriez légitimement être pris d'une impérieuse envie d'installer le paquet (non libre lui aussi) broadcom-sta-dkms, qui installera un autre module pilote pour le noyau... La carte BCM4313 peut en effet être prise en charge, soit par le pilote libre brcmsmac, soit par le pilote propriétaire wl !
N'hésitez pas à créer un fil [[https://debian-facile.org/viewforum.php?id=16|sur le forum]] pour demander de l'aide afin d'installer le //firmware// manquant... N'oubliez pas de donner le retour des commandes de ce tuto, afin de fournir le maximum d'informations sur votre carte WiFi.
===== Étape 4 : Activer l'interface réseau =====
Une fois le fameux //firmware// manquant identifié et installé, plus rien ne s'oppose à ce que votre carte WiFi, tombe en marche... Il y a deux cas de figure : soit la carte est interne (PCI ou USB), soit la carte est externe (USB).
==== Carte interne (PCI/USB) ====
//Re//charger le pilote avec [[doc:systeme:modprobe|la commande modprobe]] n'étant pas la panacée, le plus efficace est de redémarrer le PC.
==== Carte externe (clé USB) ====
Le cas de l'adaptateur WiFi USB externe (//dongle// en anglais) est très simple, le __ré__insérer suffit à recharger le pilote.
==== Configuration du réseau ====
Une installation Debian standard, fournit un gestionnaire réseau par défaut ([[doc:reseau:network-manager|NetworkManager]], Wicd, ou encore ConnMan, selon l'[[doc:environnements:environnements|environnement de bureau]] choisi). Dans la majorité des cas, l'interface réseau sera automatiquement configurée par ce gestionnaire... et vous n'aurez plus qu'à saisir vos identifiants WiFi afin de vous connecter au réseau.
Sur le forum, des problèmes de connexion avec NetworkManager ont été rapportés sous Stretch, pour des cartes USB lorsque le nom de l'interface commence par **wlx**, comme par exemple wlx0a1b2c3d4e5f. Deux solutions sont indiquées sur [[https://debian-facile.org/viewtopic.php?id=21137|ce fil]] (merci à kyodev, naguam et black_sun_2012).
FIXME (redondances, incohérences, etc.) \\
On active l'interface avec la commande root :
ip link set dev nom-de-l-interface up
Pour les utilisateurs de Jessie et versions précédentes, les commandes sont :
/sbin/ifconfig
Ainsi, si ''wlan0'' n'apparaît pas, c'est qu'il faut installer le bon //firmware// en le déterminant selon ce qui suit.
* Si on lui donne l'argument ''-a'', cette commande affiche toutes les interfaces réseaux présentes sur la machine :
/sbin/ifconfig -a
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:552 errors:0 dropped:0 overruns:0 frame:0
TX packets:552 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:37827 (36.9 KiB) TX bytes:37827 (36.9 KiB)
wlan0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:638993 errors:0 dropped:0 overruns:0 frame:0
TX packets:412031 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:617235341 (588.6 MiB) TX bytes:42145548 (40.1 MiB)
Si ''wlan0'' n'apparaît pas alors que le module noyau est bien chargé, c'est que le //firmware// manque.
Vous activez ensuite la carte WiFi avec la commande suivante, en root :
ifconfig wlan0 up
Vous vérifiez si l'interface a effectivement été allumée avec la commande :
/sbin/ifconfig
Si ''wlan0'' apparaît, alors votre carte WiFi est très probablement correctement détectée, félicitations. :-)
Sinon, le //firmware// manque presque sûrement, et un ''dmesg | tail'' vous indiquera quels sont les fichiers de //firmware// manquants pour que la carte fonctionne correctement. Dans ce cas, voir la suite plus bas.
===== Utiliser le noyau expérimental =====
FIXME (commencer par l'noyau backports) \\
Tout n'étant pas toujours rose dans ce monde brutal de l'informatique et notamment concernant le matériel, il vous faudra peut-être utiliser un noyau venu de la branche //experimental// pour parvenir à trouver le //firmware// qui va bien.
Ce lien là vous dit ce qu'il en est alors...
* [[:utilisateurs:smolski:tutos:un-noyau-experimental-pour-le-support-wifi | Utiliser le noyau experimental de A à Z, c'est ici !]] (obsolète)
===== Configuration du WiFi =====
Configurer à la main sa connexion WiFi :
* [[doc:reseau:wifi#configuration-du-wifi|Configuration du WiFi]]