Configurer le wifi sous Linux Debian

mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 - 30 mai 2022 à 02:07

WiFi sous Linux


Notre vidéo

"FAQ : Configurer le wifi sous Linux"

Introduction

Ce tutoriel s'adresse aux personnes sous Debian et les distributions qui se basent dessus (Ubuntu et ses variantes, Linux Mint, ...).

Afin de s'affranchir de votre interface graphique :
  • Le tutoriel s'appuie notamment sur les commandes apt. Vous pouvez toutefois utiliser votre logithèque si vous préférez.
  • Le tutoriel propose de modifier les fichiers de configuration via nano. Vous pouvez si vous le souhaitez utiliser un éditeur graphique, par exemple gedit. Dans ce cas, remplacez dans les commandes qui suivent
    sudo nano
    par
    pkexec gedit
    .

Les commandes sont à taper dans un terminal.

Sous Debian et les distributions qui en dérivent (Ubuntu, Mint) une installation logicielle se fait généralement (et devrait idéalement toujours se faire) par
apt
.
apt
permet de récupérer sur Internet les logiciels en question, leur dépendances, et les installe dans le bon ordre, mais cela nécessite évidemment une connexion Internet fonctionnelle. Chaque composant logiciel est contenu dans un paquet (fichier
.deb
), téléchargé dans
/var/cache/apt/archives
, puis est installé.
  • Méthode 1 (recommandée) : on accède à Internet via une autre interface réseau (par exemple, via sa carte ethernet).
  • Méthode 2 : Les commandes
    apt install
    indique l'adresse des fichiers
    .deb
    que l'on tente de télécharger, il suffit de copier ces adresses et de télécharger depuis un système capable de se connecter à Internet. Les paquets
    .deb
    doivent ensuite être copiés dans
    /var/cache/apt/archives
    pour les injecter dans le cache d'
    apt
    et faire "comme si" ils avaient déjà été téléchargé. Comme les paquets sont dans le cache,
    apt
    ne tentera pas de les télécharger.

Installer sudo (optionnel)

Afin s'affranchir des nuances entre Debian et Ubuntu, le tutoriel suppose que
sudo
est installé. C'est le cas sous Ubuntu et Mint, mais pas sous Debian. Pour installer
sudo
sous Debian, il suffit de lancer en root :

apt update
apt install sudo


Si vous ne souhaitez pas installer
sudo
, il suffit de lancer toutes les commandes précédées de
sudo
depuis un terminal root. Pour passer root, taper
su -
sous Debian et
sudo su -
sous Ubuntu.

Vérifier si la carte est détectée

Un pilote wifi repose généralement sur un bout de code propriétaire.
  • Les distributions grand public (Ubuntu, Mint) pré-installent les pilotes en question.
  • La politique de Debian interdit d'installer le système avec des logiciels propriétaire (ce qui inclue donc les cartes wifi). En conséquence, la carte wifi n'est jamais directement prise en charge et il faut l'installer soi-même.


1) Installer
wireless-tools
:

sudo apt install wireless-tools


2) La commande
/sbin/iwconfig
permet de voir quelles sont les interfaces réseaux correspondant à une carte wifi.

Exemple :
lo        no wireless extensions.    

eth0 no wireless extensions.

wmaster0 no wireless extensions.

eth1 IEEE 802.11g ESSID:"xxxxx" Nickname:""
Mode:Managed Frequency:2.412 GHz Access Point: xx:xx:xx:xx:xx:xx
Bit Rate=48 Mb/s Tx-Power=27 dBm
Retry min limit:7 RTS thr:off Fragment thr=2346 B
Power Management:off
Link Quality=57/100 Signal level=-74 dBm Noise level=-96 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0


Ici, l'interface wifi se nomme
eth1
. Les autres interfaces (
lo
,
eth0
, etc...) ne sont pas des interfaces wifi. Le nom assigné à une carte wifi peut varier selon le constructeur et la version de linux (
eth2
,
wlan0
,
ra0
, ...), il faut donc adapter ce qui suit en conséquence.

Si la carte n'est pas détectée : installer le pilote

Déterminer le modèle de la carte wifi

  • Pour une carte wifi "interne" :

lspci | grep -i wireless
  • Pour un dongle USB :

lsusb

Installation du pilote

Si vous êtes sous Ubuntu ou Linux Mint, consultez documentation ubuntu et suivez le tutoriel correspondant à votre carte.

Sinon, tentez les approches suivantes (de la meilleure à la moins bonne) :
  • Méthode 1 : Installer le firmware adéquat (Debian uniquement) ;
  • Méthode 2 : Si un tel firmware n'existe pas, chercher et installer les sources du pilote linux ;
  • Méthode 3 : En dernier recours, installer et utiliser
    nsdiswrapper
    .

Méthode 1 (recommandée) : avec un firmware

Il faut au préalable activer les dépôts
contrib
et
non-free
, qui mettent à disposition les paquets fournissant des logiciels propriétaires.

1) Éditer le fichier
/etc/apt/sources.list
avec des droits root, par exemple avec l'éditeur texte
nano
:

sudo nano /etc/apt/sources.list


2) Ajouter les mots clés
non-free
et
contrib
à la suite de
free
.

Exemple :
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
deb https://www.debian.org/security/ stable/updates main contrib non-free
deb http://ftp.fr.debian.org/debian/ stable-updates main contrib non-free


Sauver et quitter (ctrl x, o, entrée, entrée) de sorte à revenir à l'invite de commande.

3) Réindexer les dépôts.

apt update


3) Chercher avec
apt-cache search
le modèle de la carte wifi. Les paquets mettant des firmwares à disposition sont préfixés
firmware-
, donc il suffit de lancer la commande suivante pour voir l'ensemble des firmwares disponibles :

apt cache search firmware | grep ^firmware


Si la carte est de type intel, on peut même directement chercher :
apt cache search intel | grep ^firmware


Typiquement, les cartes intel sont gérées grâce au paquet
firmware-iwlwifi
.

4) Contrôler avec
apt show
que le paquet supporte bien la carte wifi :
apt show firmware-iwlwifi


5) Si c'est le cas l'installer :
apt install firmware-iwlwifi

Méthode 2 : à partir d'un pilote

Atheros

En général, il suffit d'installer le paquet
madwifi
.

sudo apt install madwifi


Intel

Voir méthode 1.

Realtek

Sous Debian, installer le firmware adéquat (voir section précédente) et redémarrer.

Ralink

1) Chercher le nom du paquet :

Exemple :
(mando@cenedra) (~) $ apt-cache search ralink    
rt2400-source - source for rt2400 wireless network driver
rt2500-source - source for rt2500 wireless network driver
rt2570-source - source for rt2570 wireless network driver


2) Contrôler les modèles de carte supportées avec
apt show
:

apt show rt2570-source


3) Installer le paquet :

sudo apt install rt2570-source


Autres
  • Si vous êtes sous Debian, assurez-vous qu'un firmware ne supporte pas votre carte.

apt-cache search firmware | grep ^firmware
.

Méthode 3 (déconseillée) : ndiswrapper

Cette méthode ne marche pas toujours bien et donc ne doit être considérée qu'en dernier recours.
ndiswrapper
est un outil qui tente de convertir un pilote windows pour construire un pilote linux.

1) Installer
ndiswrapper
:

apt install ndiswrapper


2) Suivre l'un de ces tutoriels :

Configuration du wifi

On suppose à ce stade que la carte wifi est bien détectée (voir résultat de
/sbin/iwconfig
).

La plupart des points d'accès wifi (livebox, freebox, hotspots etc.) configurent automatiquement la connexion Internet par DHCP (c'est à dire la configuration d'une IP locale, des routes, et du DNS) et on se place donc dans ce contexte.

De nos jours, une connexion wifi se configure via Network Manager. On omet donc les logiciels concurrents (wicd) ou les d'autres approches obsolètes (e.g. via les fichiers de configuration
/etc/network/interfaces
ou
/etc/wpa_supplicant
).

Installation de NetworkManager

  • Avec une interface graphique :
    • Avec KDE : Installez le paquet
      plasma-nm
      et relancez KDE.
    • Avec les autres environnements graphique (gnome, XFCE, ...) : Installez le paquet
      network-manager-gnome
  • En lignes de commande : Installez le paquet
    network-manager
    puis utilisez la commande
    nmcli
    .

Utilisation

  • Avec l'interface graphique de NetworkManager :
    • Sélectionner le réseau wifi
    • Saisir l'éventuelle clé wifi demandée
  • En ligne de commandes, en admettant que le nom du réseau wifi (ESSID) soit
    Toto
    :

sudo nmcli c up Gunther --ask


Si la connexion est rejetée :
  • Freebox : s'assurer que la freebox est en mode router
  • Livebox, SFR box : si le filtrage MAC est activé, s'assurer que la box est en mode association en appuyant sur le bouton adéquat (puis se connecter pendant que la diode wifi clignote). Cette opération n'est nécessaire que la première fois qu'on se connecte à cette box avec cette carte wifi.

Tester la connexion

1) Vérifier l'adressage (l'interface wifi devrait avoir une adresse en 192.168.*.*)
ip addr


Exemple : Dans l'exemple ci-dessous, la carte wifi s'appelle
wlo1
et son IP est
192.168.0.134
:

(mando@aldur) (~) $ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether xxxxxxxxxxxxxxxx brd ff:ff:ff:ff:ff:ff
altname wlp0s20f3
inet 192.168.0.134/24 brd 192.168.0.255 scope global dynamic noprefixroute wlo1
valid_lft 37868sec preferred_lft 37868sec
...


2) Contrôler le routage :
ip route


3) Tester la connexion :
ping -c2 www.google.fr


Exemple : ici la connexion fonctionne, car les deux pings ont été reçus.

(mando@aldur) (~) $ ping -c2 www.google.fr
PING www.google.fr(par21s19-in-x03.1e100.net (2a00:1450:4007:813::2003)) 56 data bytes
64 bytes from par21s06-in-x03.1e100.net (2a00:1450:4007:813::2003): icmp_seq=1 ttl=115 time=3.54 ms
64 bytes from par21s06-in-x03.1e100.net (2a00:1450:4007:813::2003): icmp_seq=2 ttl=115 time=5.93 ms

--- www.google.fr ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 3.540/4.737/5.934/1.197 ms


4) Tester les DNS
host www.google.fr


Exemple :

(mando@aldur) (~) $ host www.google.fr
www.google.fr has address 216.58.214.163
www.google.fr has IPv6 address 2a00:1450:4007:813::2003

Toujours en difficulté ?

Il suffit d'ouvrir un message sur le forum linux en précisant :
  • votre distribution Linux
  • votre type de routeur (Livebox, Freebox, etc)
  • le modèle de votre carte wifi :

lscpi | grep -i wireless # S'il s'agit carte wifi interne
lsusb # S'il s'agit d'un dongle
  • le résultat des commandes de diagnostic suivantes

/sbin/iwconfig
ip route
cat /etc/resolv.conf    
host www.google.fr    
ping -c2 www.google.fr