Wi-Fi ne fonctionne pas sous Linux ? Voici comment le réparer !

Une photographie d'une fenêtre avec un logo Wi-Fi dessus.

L’un des grands défis auxquels les utilisateurs de Linux sont confrontés est le Wi-Fi. Les pilotes Wi-Fi ne sont souvent pas inclus dans le noyau, et par conséquent, il y a de nombreux problèmes pour faire fonctionner les modules Wi-Fi non Intel sous Linux. Ici, nous couvrons ce qui se passe lorsque le Wi-Fi ne fonctionne pas sur Linux et comment le réparer.

Table des matières

  • Problèmes matériels vs. logiciels de Wi-Fi
  • Installer des pilotes à partir de l’ISO d’Ubuntu
  • Problème 1 : périphérique non détecté
  • Problème 2 : module de pilote manquant
  • Problème 3 : DNS
  • Problème 4 : pas de gestionnaire de réseau

Astuce : apprenez comment trouver les mots de passe Wi-Fi enregistrés sous Linux.

Problèmes matériels vs. logiciels de Wi-Fi

Un problème de connexion Wi-Fi peut être soit un problème matériel, soit un problème logiciel. Les problèmes matériels sont relativement faciles à diagnostiquer : il vous suffit d’ouvrir le terminal et d’entrer la commande suivante :

ping localhost

Un terminal montrant un test de boucle localhost.

C’est un moyen simple de vérifier si votre matériel physique fonctionne. localhost fonctionne comme une adresse pour vérifier le circuit de votre NIC. Si cela ne fonctionne pas, vous devrez peut-être faire des réparations sur le matériel, que ce soit par vous-même ou par quelqu’un d’autre.

Si ce ping revient propre, ou si vous ne voyez même pas votre carte Wi-Fi, vous avez probablement un problème logiciel.

En dehors de cela, vous pouvez également vérifier si votre système détecte une interface réseau active en exécutant ip addr. La plupart des distributions étiquettent les cartes sans fil actuellement actives comme “wl” suivi des numéros de bus et de slot sur la carte mère de l’ordinateur.

Par exemple, une étiquette de “wlp0s1” signifie qu’il s’agit d’une interface réseau sans fil sur le bus 0, slot 1.

Un terminal mettant en évidence le dispositif sans fil actuellement actif dans le système.

Remarque : Si vous ne pouvez pas naviguer sur le web, vous devrez peut-être désactiver IPv6 sur votre machine Linux.

Installer des pilotes à partir de l’ISO d’Ubuntu

Si votre distribution ne détecte pas du tout votre réseau Wi-Fi, ou si vous obtenez des erreurs, vous pouvez essayer d’installer ou de réinstaller les pilotes Wi-Fi à partir du fichier ISO d’Ubuntu. Tout d’abord, vous devez télécharger l’ISO d’Ubuntu correspondant à votre version d’Ubuntu. (On suppose que vous devez le télécharger sur un autre appareil ou le télécharger en utilisant votre connexion Ethernet sur Ubuntu.)

Ouvrez un terminal, puis entrez la séquence de commandes suivante pour monter l’ISO d’Ubuntu sur un lecteur virtuel :

sudomkdir/media/cdrom  
sudomount-o loop ~/Downloads/ubuntu-*.iso /media/cdrom

Allez dans “Mise à jour des logiciels” depuis le tableau de bord, puis cliquez sur le bouton Paramètres en bas à gauche de la fenêtre.

Une capture d'écran mettant en évidence le bouton

Cliquez sur l’onglet Pilotes supplémentaires, puis sélectionnez l’option Adaptateur réseau sans fil et cliquez sur Appliquer les modifications.

Problème 1 : périphérique non détecté

Si le périphérique sans fil n’est pas détecté par Ubuntu (ou n’importe quelle distribution pour cette affaire), ouvrez une session terminal et tapez la commande suivante :

sudo lsusb

Cette commande affichera tous les appareils USB actuellement branchés à votre machine. Recherchez toute ligne contenant soit “Adaptateur sans fil”, soit “RTL”.

sudo lsusb |grep"RTL"

Un terminal montrant le périphérique USB Wi-Fi actif actuellement dans Linux.

En plus de lister tous les adaptateurs USB, vous pouvez également sonder votre système pour tout appareil sans fil PCI. Pour cela, exécutez la commande suivante :

sudolspci

Tout comme avec la commande lsusb, recherchez des lignes dans la sortie de lspci contenant soit “Contrôleur de réseau”, soit “Contrôleur Ethernet”.

Un terminal mettant en évidence le périphérique Wi-Fi basé sur PCI dans Ubuntu Linux.

Trouvez le module de pilote exact que votre périphérique sans fil utilise actuellement en exécutant la commande suivante :

sudo lshw -C network |grep"driver"

Mettez en évidence la valeur de la variable “driver” et copiez-la dans votre presse-papiers.

Un terminal mettant en évidence le pilote actuellement actif pour le périphérique Wi-Fi.

Problème 2 : module de pilote manquant

Suite aux commandes lsusb et lspci réussies, confirmant que votre distribution Linux peut voir la carte sans fil, vous pouvez supposer que le firmware fonctionne, juste que le système n’a aucune idée de ce qu’il doit faire avec le périphérique. C’est ici que les pilotes ou modules sont nécessaires.

Tapez la commande suivante, puis remplacez “modulename” par le contenu de votre presse-papiers :

sudo modprobe modulename

Par exemple, si votre pilote sans fil est “iwlwifi”, ce serait comme suit :

sudo modprobe iwlwifi

Après cela, exécutez sudo lsmod | grep "modulename" pour voir si le noyau Linux a chargé correctement votre périphérique Wi-Fi.

Un terminal montrant le module Wi-Fi étant chargé dans le noyau actuel.

Charger le module de pilote automatiquement au démarrage

C’est une occasion rare, mais parfois le module ne persistera pas après le démarrage. Dans ce cas, vous pouvez le forcer à se charger de manière permanente. Entrez la commande suivante dans le terminal :

sudonano/etc/modules

Ajoutez le nom de votre module en bas et sauvegardez le fichier.

Un terminal montrant le fichier de configuration qui peut charger des modules du noyau au démarrage.

Redémarrez la machine pour vérifier si le noyau Linux a correctement chargé le périphérique sans fil.

Bon à savoir : apprenez comment votre ordinateur gère son matériel en installant votre propre noyau Linux personnalisé sur Ubuntu aujourd’hui.

Problème 3 : DNS

Il est rare que le DNS soit un problème ; cependant, cela vaut la peine d’enquêter si vous avez encore des problèmes de connexion. Depuis le terminal, tapez la commande suivante pour vérifier le résolveur DNS par défaut du système :

nmcli device show INTERFACE-NAME |grep IP4.DNS

Par défaut, cela sera réglé sur l’adresse IP de votre routeur. Si cela ne fonctionne pas, vous devrez peut-être changer “wlp0s1” par ce que votre sans fil utilise. La commande suivante peut également être utilisée pour saisir la désignation :

ip addr|grep": "

Une fois que vous avez cette information, pinguez l’adresse de votre résolveur DNS. Si cela fonctionne, vous pouvez également envoyer un ping à un réseau externe comme les résolveurs DNS de Google :

ping 8.8.8.8

Si tous les appareils de votre réseau donnent des erreurs de chargement de page, changez les résolveurs DNS sur votre routeur pour ceux de Google ou d’OpenNIC. Vous devrez consulter le fabricant de votre routeur pour savoir comment faire cela, mais c’est généralement fait en accédant à la console d’administration de l’appareil. Vous pouvez trouver cela sur la plupart des routeurs en allant soit à “192.168.0.1”, soit à “192.168.254.254” dans un navigateur web.

Ajouter un serveur DNS personnalisé dans NetworkManager

Cela dit, vous pouvez également changer le résolveur DNS sur une base par appareil. Pour ce faire sous Ubuntu, cliquez sur le Bouton du menu de contrôle dans le coin supérieur droit du bureau, puis sélectionnez l’icône des paramètres.

Une capture d'écran mettant en évidence le bouton Paramètres dans Gnome.

Cliquez sur la catégorie Wi-Fi, puis recherchez la catégorie Réseaux visibles.

Une capture d'écran mettant en évidence la section des réseaux visibles de la catégorie Wi-Fi.

Sélectionnez l’icône des paramètres sur la ligne contenant le nom de votre point d’accès sans fil.

Cliquez sur l’onglet IPv4 dans la barre supérieure de la petite fenêtre.

Une capture d'écran mettant en évidence l'onglet IPv4 dans le menu des paramètres du point d'accès.

Allez dans la section DNS, puis désactivez l’interrupteur Automatique.

Une capture d'écran mettant en évidence l'interrupteur DNS

Tapez “8.8.8.8,8.8.4.4” dans la zone de texte DNS, puis cliquez sur Appliquer pour valider les paramètres.

Une capture d'écran mettant en évidence les résolveurs DNS personnalisés pour la connexion Wi-Fi actuelle.

Ouvrez un nouveau terminal, puis exécutez la commande suivante pour supprimer toute précédente donnée de résolveur DNS :

resolvectl flush-caches

Testez si votre système utilise maintenant ses nouveaux paramètres de résolveur DNS en exécutant le suivant :

resolvectl status |grep"Current DNS Server"

Vérifiez si les paramètres DNS actuels ont résolu votre problème réseau en chargeant une page web dans un navigateur.

Une capture d'écran du site MakeTechEasier sur une machine Ubuntu avec un résolveur DNS personnalisé.

Bon à savoir : apprenez-en plus sur les serveurs de nom et les résolveurs DNS en utilisant dig sous Linux.

Problème 4 : pas de gestionnaire de réseau

Disons que vous avez supprimé le gestionnaire de réseau ou l’avez désinstallé par accident. C’est une situation vraiment problématique : vous n’avez pas Internet et pas de gestionnaire de réseau, mais il y a des choses que vous pouvez faire.

En supposant que le paquet soit encore dans votre cache, vous pouvez aller au terminal et entrer :

# Debian/Ubuntu  
sudo apt install network-manager  
  
# Fedora  
sudo dnf install NetworkManager  
  
# Arch Linux  
sudo pacman -Syu networkmanager

Si cela ne fonctionne pas, vous pouvez forcer votre système à se connecter à un point d’accès sans fil en utilisant wpa_supplicant. C’est un outil en ligne de commande qui utilise le pilote de votre périphérique sans fil pour se connecter à un point d’accès sans utiliser le gestionnaire de réseau.

Pour commencer, créez un fichier de configuration pour wpa_supplicant en utilisant votre éditeur de texte préféré :

sudonano/etc/wpa_supplicant.conf

Collez le bloc de code suivant dans le fichier de configuration, puis remplacez “SSID” et “PASSWORD” par le nom du point d’accès et le mot de passe de votre routeur :

network={  
ssid="SSID"  
password="PASSWORD"  
}

Enregistrez le fichier de configuration, puis collez la ligne de code suivante dans votre session terminal :

sudo wpa_supplicant -B-i INTERFACE-NAME -c/etc/wpa_supplicant.conf -D nl80211

Remplacez la valeur du flag “-i” par le nom de votre interface sans fil.

Remarque : cette commande ne fonctionnera que sur des cartes sans fil plus récentes. Si vous essayez de connecter une carte Wi-Fi plus ancienne, remplacez la valeur du flag “-D” par “wext.”

Demandez une nouvelle adresse IP à votre routeur en rechargant le daemon DHCP :

sudo dhclient INTERFACE-NAME

Testez si votre connexion Wi-Fi fonctionne maintenant en pingant un site externe :

ping-c5 maketecheasier.com

Réinstallez le gestionnaire de réseau pour restaurer la pleine capacité Wi-Fi de votre système Linux :

sudo apt install network-manager

Redémarrez votre machine pour charger la nouvelle installation du gestionnaire de réseau.

Comprendre comment fonctionnent les modules Wi-Fi et les pilotes du noyau est juste la première étape pour apprendre comment Linux fonctionne sous le capot. Explorez davantage le côté technique de ce système d’exploitation en créant un système de fichiers caché avec Shufflecake.