Un wifi déjà enregistré ne se connecte pas automatiquement après redémarrage

Tags: #<Tag:0x00007f50a2429fd8> #<Tag:0x00007f50a2429e48>

Bonjour :wave: ,

J’ai un problème similaire à ce qui est indiqué dans cette conversation, mais les solutions qui y sont proposées ne fonctionnement pas pour moi…

Contexte

Je viens d’acquérir un petit ordinateur de bureau équipé d’une clé USB WIFI. J’y ai installé Debian12 avec Gnome (mais le problème apparaît aussi avec XFCE).
Je me connecte sans problème à mon réseau WIFI, et je peux naviguer normalement sur le web.
Lorsque je redémarre le PC, le WIFI n’est plus connecté. Je dois le connecter à nouveau (entrer la clé WPA) pour recommencer à naviguer normalement.

Un peu de technique

Dans les paramètres du WIFI, mon réseau est déjà enregistré plusieurs fois, avec un numéro qui s’incrémente.

Lorsque je liste les interfaces disponibles, j’ai ça :

  • Avant de connecter le WIFI :
# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether 18:66:da:43:c6:d5 brd ff:ff:ff:ff:ff:ff
3: wlx2a0d154dffb6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether 2a:0d:15:4d:ff:b6 brd ff:ff:ff:ff:ff:ff
  • Après avoir connecté le WIFI :
# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether 18:66:da:43:c6:d5 brd ff:ff:ff:ff:ff:ff
3: wlx2a0d154dffb6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 2a:0d:15:4d:ff:b6 brd ff:ff:ff:ff:ff:ff
  • Après avoir rebooté, et avant de connecter le WIFI :
# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether 18:66:da:43:c6:d5 brd ff:ff:ff:ff:ff:ff
3: wlx72d5fa6c576c: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether 72:d5:fa:6c:57:6c brd ff:ff:ff:ff:ff:ff

Je constate que le nom de l’interface a changé après le reboot (wlx2a0d154dffb6->wlx72d5fa6c576c). J’imagine que le problème vient de là ?

Un appel à lsusb donne cela :

# lsusb
[...]
Bus 001 Device 003: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
[...]

Besoin

J’aimerais que mon ordinateur se connecte automatiquement à mon WIFI lorsque je démarre ma session, et ne pas avoir à entrer la clé WPA à chaque fois :tired_face:
J’imagine deux approches :

  • Faire en sorte que l’interface liée à ma clé USB WIFI conserve le même nom. Mais je ne sais pas comment faire cela.
  • Lancer un script au démarrage de la session pour reconnecter le WIFI.

Peut-être avec vous de meilleurs idées ? Je prend tous les conseils :heart_decoration:

Cordialement.
Julien :slight_smile:

Bonjour,
Le nom de ton interface est liée à ton adresse MAC (c’est souvent le cas avec les clef).
Comme ton adresser MAC change le nom change et donc la connexion aussi.

c’est le fonctionnement normal de udev qui se charge de nommer les interfaces:

  • USB DEVICES

    since they might get plugged into a different socket each time, these use ID_NET_NAME_MAC - automated via /lib/udev/rules.d/73-usb-net-by-mac.rules.

Je ne suis pas un expert de udev, mais il faut que tu change la policy udev pour que le nom ne soit plus dépendant de l’adresse MAC.

Ici tu trouvera peut être quelque chose

Si tu as un outil qui génère des adresses aléatoires de ton adresse MAC lors du montage du device alors tu risque de ne pas pouvoir avoir la connexion automatique.

1 J'aime

Merci pour ton message. Je vais regarder du coté de UDEV. Peut-être qu’en modifiant/créant la bonne règle qui va bien, je pourrais obtenir un nom fixe…

Je ne crois pas avoir installé quoi que ce soit qui fasse cela depuis que j’ai installé le système.

C’est inhérent à la clef alors.

Première chose à faire: distinguer l’interface wifi interne / externe.
wlx2a0d154dffb6
wlx72d5fa6c576c

→ débranche le wifi USB, et identifie le device wifi interne

Je ne crois pas une seconde au MAC qui change tout seul au reboot si tu n’as pas installé le paquet macchanger.
Par défaut, c’est le noyau qui décide des noms d’interface réseau, qui n’ont aucune raison de changer si les règles udev ne sont pas tripatouillées avant reboot, ou création d’un nom d’interface à /etc/systemd/network/xxxxxx.link

Donc d’abord faire ces tests avec un seul interface wifi.
Si le mot de passe wifi n’est pas sauvegardé pour un interface wifi clairement identifié, c’est qu’il n’est pas sauvegardé (enregistrer/sauvegarder la configuration réseau etc, selon l’outil de connection wifi).

Tout ça a bien clarifier avant d’espérer une connection wifi « automatique ».
De mémoire, pour des raisons de sécurité, il est aussi possible que la connection wifi automatique soit rendue plus difficile que par le passé.
Pour contourner, il restera toujours la possibilité de faire un script pout automatiser la connection.

Bonjour,

Je suis en voyage, je n’ai plus accès à la machine jusqu’à dimanche. Je vous ferai alors un compte rendu de mes tests (avec udev et systemd). Pour l’instant je n’ai toujours pas trouvé de solution.

Il n’y a qu’une seule interface wifi. Le PC n’est pas équipé d’une carte wifi interne. Les deux interfaces que j’ai donné là sont isues de deux démarrages différents de la machine. Ma cla WIFI a le droit à un nom d’interface différent à chaque démarrage.

Pourtant j’ai bien trouvé une option de systemd qui permet de faire cela…

Bref, à lundi.
Et merci pour vos conseils !!

Connectée sur le même port usb ? Le nom de l’interface est relatif à la position physique.

A condition que ce soit volontairement configuré pour le faire, mais ça m’étonnerait par défaut.

L’automatisme de la connection n’est envisageable qu’après clarification de ce cas étrange pour le moment.

Non comme je l’avais fait remarqué, dans son cas, le nom de l’interface est issue de l’adresse MAC.

wlx72d5fa6c576c =>72:d5:fa:6c:57:6c
wlx2a0d154dffb6 => 2a:0d:15:4d:ff:b6

Cependant, il est possible que si celle-ci n’est pas branchée sur le même port USB alors l’adresse MAC n’est pas la même.

C’est bien exactement mon hypothèse: Predictable Network Interface Names

Starting with v197 systemd/udev will automatically assign predictable, stable network interface names for all local Ethernet, WLAN and WWAN interfaces.

Exemple enp0s10:

en --> ethernet
  p0   --> bus number (0)
    s10 --> slot number (10)
1 J'aime

Bonjour,

Je suis de retours de déplacement, et je peux à nouveau me pencher sur mon problème…

Oui, la clé est toujours sur le même port. Je n’ai pas essayé de la mettre sur un autre port, je doute que le souci se trouve à ce niveau mais je testerai…

Voici les différentes choses que j’ai essayé, mais qui n’ont pas résolu mon problème :

Udev

J’ai créé le fichier /etc/udev/rules.d/10-local.rules dont voici le contenu :

SUBSYSTEM==« usb », ATTR{product}==« 802.11n NIC », SYMLINK+=« wifi »

Ça n’a rien changé.

Systemd

J’ai créé le fichier /etc/systemd/network/10-wifi-key.link dont voici le contenu :

[Match]
Property=ID_MODEL_ID=8179 ID_SERIAL=Realtek_802.11n_NIC

[Link]
MACAddressPolicy=none
MACAddress=42:39:40:6a:dd:85
NamePolicy=
Name=wifi0

Grace à cela, mon interface s’appelle bien wifi0, mais son adresse MAC reste aléatoire…

Pourtant, lorsque je fais la commande SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/wifi0, il me dit bien qu’il fixe l’adresse MAC :

SELinux enabled state cached to: disabled
Trying to open « /etc/systemd/hwdb/hwdb.bin »…
Trying to open « /etc/udev/hwdb.bin »…
Trying to open « /usr/lib/systemd/hwdb/hwdb.bin »…
Trying to open « /lib/systemd/hwdb/hwdb.bin »…
Trying to open « /lib/udev/hwdb.bin »…
=== trie on-disk ===
tool version: 252
file size: 12568600 bytes
header size 80 bytes
strings 2543704 bytes
nodes 10024816 bytes
Loading kernel module index.
Found cgroup2 on /sys/fs/cgroup/, full unified hierarchy
Found container virtualization none.
Using default interface naming scheme ‹ v252 ›.
Parsed configuration file « /usr/lib/systemd/network/99-default.link »
Parsed configuration file « /usr/lib/systemd/network/73-usb-net-by-mac.link »
Parsed configuration file « /etc/systemd/network/10-wifi-key.link »
Created link configuration context.
wifi0: Device has name_assign_type=4
wifi0: Device has addr_assign_type=3
ID_NET_DRIVER=r8188eu
wifi0: Config file /etc/systemd/network/10-wifi-key.link is applied
wifi0: Using static MAC address.
wifi0: Applying static MAC address: 42:39:40:6a:dd:85
wifi0: Policies didn’t yield a name, using specified Name=wifi0.
ID_NET_LINK_FILE=/etc/systemd/network/10-wifi-key.link
ID_NET_NAME=wifi0
Unload kernel module index.
Unloaded link configuration context.

NetworkManager

Un ami m’a conseillé de modifier le fichier /etc/NetworkManager/NetworkManager.conf. Dans la section « device », j’ai positionné l’entrée wifi.scan-rand-mac-address=no. Ça n’a rien changé. Mais de ce que je comprend, ce paramètre concerne la recherche des réseaux wifi disponibles, et non la connexion à un réseau.

D’où vient le fichier /etc/systemd/network/10-wifi-key.link.
Qu’y a-t-il dedans ?

Il s’agit d’un fichier que j’ai créé, en suivant des instructions glanées sur l’Internet. Son contenu est décrit dans mon message précédent.

Ok pas tout lu, ou trop vite.
He bien reglane sur internet pour vérifier à quoi il te sert et s’il ne serait pas une source possible de tes problèmes.
Si tu le supprimes, il se passe quoi ?

Je ne comprend pas pourquoi tu dis ça.

J’ai un problème (détaillé dans mon premier message). J’ai cherché des solutions sur l’Internet, et j’ai trouvé des sources qui parlaient de configurer des règles dans systemd. J’ai donc essayé de mettre en place ce fichier. Il ne résout par tout, mais au moins l’interface wifi n’a plus un nom aléatoire, c’est déjà un pas en avant. Du coup, pourquoi ce fichier serait la « source possible de mes problèmes » ?

Typiquement le genre de sujet ou après une longue absence, on retrouve une situation différente et incohérente relativement aux premières investigations, après conseil d’un ami ou glanage sur internet.
Je précisais bien:

Quand as-tu créé 10-wifi-key.link ?

ls -l /etc/systemd/network/*
-rw-r--r-- 1 root root 145 13 nov.  18:49 /etc/systemd/network/10-wifi-key.link

Enquête en cours…
Donc le 13 novembre, date de ton premier message, tu avais déjà ce fichier 10-wifi-key.link.
Le 13, tu avais le problème de nom aléatoire d’interface.

Le 20, après glanage sur internet, tu ne l’as plus.
« J’ai donc essayé de mettre en place ce fichier. Il ne résout par tout, mais au moins l’interface wifi n’a plus un nom aléatoire »

Quelle est la différence entre 10-wifi-key.link du 13 novembre et du 20 novembre ?
Ou peux-tu dire extrêmement clairement la diiférence de status du 13 , et du 20 après glanage ? (pour éviter de jouer au jeu des 7 erreurs).