Sauf que la « clé Wifi adéquate » n'est pas aussi évidente que cela à trouver. J'ai longtemps (4 ou 5 ans, jusqu'à aujourd'hui) utilisé une clé à base d'une puce Realtek RTL88x2BU. Ça marchait, et ça marche toujours bien dès lors que l'on utilise le bon pilote - lequel n'est pas (ou pas encore) intégré au noyau Linux. Il faut donc récupérer ce pilote, le compiler et l'installer. Rien de bien problématique.

Sauf que les nouvelles versions du pilote (plus exactement toutes les versions au-delà de la 5.8) plantent totalement le noyau, quel que soit le noyau en question, au moins sur un RaspberryPi. Le pilote se charge, commence à s'initialiser, et tout s'arrête. Ennuyant, pour le moins. Je me suis donc vu contraint de rester avec une version un peu ancienne du pilote, et je ne peux pas mettre le noyau du RaspberryPi à jour non plus. C'est une petite machine interne, non directement connectée à Internet, mais accessible (justement) via le Wifi.

L'absence de possibilité de mise à jour a fini par me peser, et j'ai cherché une autre clé qui pourrait marcher en tant que point d'accès, de préférence avec un pilote inclus dans le noyau. Heureusement, il y a Morrownr qui tient à jour une excellente liste de puces Wifi plus ou moins bien reconnues par Linux. J'ai fait mon marché là-dedans, et opté pour une clé Edup AX1672 (parce que tri-bande, pas trop chère et disponible rapidement).

Sauf que tout n'est pas si simple. Quand je branche la clé (toujours sur un RaspberryPi disposant d'un noyau au minimum 5.19), elle est bien vue mais rien ne se passe au-delà de quelques messages désagréables :

kernel: [2783365.029451] usb 1-1.2: Manufacturer: MediaTek Inc.
kernel: [2783365.029462] usb 1-1.2: SerialNumber: 000000000
kernel: usb 1-1.2: New USB device found, idVendor=0e8d, idProduct=7961, bcdDevice= 1.00
kernel: usb 1-1.2: New USB device strings: Mfr=2, Product=3, SerialNumber=4
kernel: usb 1-1.2: Product: Wireless_Device
kernel: usb 1-1.2: Manufacturer: MediaTek Inc.
kernel: usb 1-1.2: SerialNumber: 000000000
kernel: mt7921u 1-1.2:1.0: Direct firmware load for mediatek/WIFI_RAM_CODE_MT7961_1.bin failed with error -2
kernel: [2783365.271379] mt7921u 1-1.2:1.0: Direct firmware load for mediatek/WIFI_RAM_CODE_MT7961_1.bin failed with error -2
kernel: [2783365.367580] usb 1-1.2: reset high-speed USB device number 14 using dwc_otg
kernel: usb 1-1.2: reset high-speed USB device number 14 using dwc_otg
kernel: usbcore: registered new interface driver mt7921u
kernel: mt7921u 1-1.2:1.0: Direct firmware load for mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin failed with error -2
kernel: [2783365.529665] usbcore: registered new interface driver mt7921u
kernel: [2783365.532135] mt7921u 1-1.2:1.0: Direct firmware load for mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin failed with error -2
kernel: mt7921u 1-1.2:1.0: Message 00000010 (seq 3) timeout
kernel: mt7921u 1-1.2:1.0: Failed to get patch semaphore

C'est un autre lien qui m'aide, toujours chez Morrownr. Les opérations à réaliser sont simples :

  1. aller sur https://git.kernel.org/pub/scm/linu... ;
  2. cliquer sur WIFI_MT7961_patch_mcu_1_2_hdr.bin puis, dans la fenêtre qui s'affiche, sur plain afin de télécharger le fichier ;
  3. faire de même pour le fichier WIFI_RAM_CODE_MT7961_1.bin ;
  4. installer ces deux fichiers dans le répertoire /lib/firmware/mediatek sur la machine sur laquelle la clé est ou sera branchée ;
  5. redémarrer la machine.

Après ça, la clé est complètement reconnue, l'interface wifi (joliment nommée wlu1u2) s'active, hostapd et dnsmasq font leur travail, et mon nouveau point d'accès fonctionne, avec un noyau tout neuf et à jour.