Des modules MediaTek MT7922 WiFi 6 et Bluetooth 5.3 ont récemment été trouvés dans plusieurs mini-PC, mais Bluetooth ne fonctionnerait pas sous Linux en raison d’un manque de pilotes. Dans cet article, nous vous montrerons comment activer facilement Bluetooth dans les modules MediaTek MT7922 lors de l’exécution d’Ubuntu 24.04.
Nous avions déjà noté qu’Ian Morrisson avait soumis un patch ajoutant les identifiants du module MT7922 (Azurewave AW-XB591NF) utilisé dans les mini PC GEEKOM récents en mars dernier. En théorie, vous auriez pu reconstruire le noyau Linux, mais maintenant que Linux 6.10 est sorti, c’est beaucoup plus facile puisque Canonical a rendu le noyau Linux 6.10 disponible pour Ubuntu, il ne nous reste donc plus qu’à l’installer et le problème est résolu !

Ubuntu 24.04 est livré avec Linux 6.8, nous pouvons voir une erreur d’opcode Bluetooth dans le journal du noyau.
aey@AE7-Raspberryme:~$ uname -a Linux AE7-Raspberryme 6.8.0-38-generic #38-Ubuntu SMP PREEMPT_DYNAMIC Ven 7 juin 15:25:01 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux aey@AE7-Raspberryme:~$ dmesg | grep -i bluetooth
[ 7.341849] Bluetooth : version de base 2.22
[ 7.341877] NET : Famille de protocoles PF_BLUETOOTH enregistrée
[ 7.341879] Bluetooth : périphérique HCI et gestionnaire de connexion initialisés
[ 7.341884] Bluetooth : couche de socket HCI initialisée
[ 7.341888] Bluetooth : couche de socket L2CAP initialisée
[ 7.341894] Bluetooth : couche de socket SCO initialisée
[ 8.863982] Bluetooth : BNEP (émulation Ethernet) version 1.3
[ 8.863987] Bluetooth : filtres BNEP : protocole multicast
[ 8.863991] Bluetooth : couche de socket BNEP initialisée
[ 9.446360] Bluetooth : hci0 : échec du code d’opération 0x0c03 : -110
|
aey@AE7-Raspberryme:~$ uname -a Linux AE7-Raspberryme 6.8.0-38-generic #38-Ubuntu SMP PREEMPT_DYNAMIC ven. 7 juin 15:25:01 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux aey@AE7-Raspberryme:~$ dmesg | grep -i bluetooth [ 7.341849] Bluetooth : version de base 2.22 [ 7.341877] NET : Famille de protocoles PF_BLUETOOTH enregistrée [ 7.341879] Bluetooth : périphérique HCI et gestionnaire de connexion initialisés [ 7.341884] Bluetooth : couche de socket HCI initialisée [ 7.341888] Bluetooth : couche de socket L2CAP initialisée [ 7.341894] Bluetooth : couche de socket SCO initialisée [ 8.863982] Bluetooth : BNEP (émulation Ethernet) version 1.3 [ 8.863987] Bluetooth : filtres BNEP : protocole multicast [ 8.863991] Bluetooth : couche de socket BNEP initialisée [ 9.446360] Bluetooth : hci0 : échec du code d’opération 0x0c03 : -110 |
Si vous accédez aux paramètres pour activer Bluetooth, vous serez accueilli par une fenêtre « Bluetooth désactivé » et un bouton bascule grisé qui ne peut pas être glissé vers la droite pour activer Bluetooth.

Nous pouvons activer Bluetooth en téléchargeant Linux 6.10 ou une version supérieure à partir du serveur du noyau principal d’Ubuntu. Malheureusement, les images amd64 pour Linux 6.10 ne sont pas encore disponibles.

Pour les tests, j’ai téléchargé des images Linux 6.10-rc4 et les ai installées comme suit :
wget https://kernel.ubuntu.com/mainline/v6.10-rc4/amd64/linux-headers-6.10.0-061000rc4-generic_6.10.0-061000rc4.202406161734_amd64.deb wget https://kernel.ubuntu.com/mainline/v6.10-rc4/amd64/linux-headers-6.10.0-061000rc4_6.10.0-061000rc4.202406161734_all.deb https://kernel.ubuntu.com/mainline/v6.10-rc4/amd64/linux-image-unsigned-6.10.0-061000rc4-generic_6.10.0-061000rc4.202406161734_amd64.deb wget https://kernel.ubuntu.com/mainline/v6.10-rc4/amd64/linux-modules-6.10.0-061000rc4-generic_6.10.0-061000rc4.202406161734_amd64.deb sudo dpkg -i *.deb
|
wget https://kernel.ubuntu.com/mainline/v6.10-rc4/amd64/linux-headers-6.10.0-061000rc4-generic_6.10.0-061000rc4.202406161734_amd64.deb wget https://kernel.ubuntu.com/mainline/v6.10-rc4/amd64/linux-headers-6.10.0-061000rc4_6.10.0-061000rc4.202406161734_all.deb wget https://kernel.ubuntu.com/mainline/v6.10-rc4/amd64/linux-image-unsigned-6.10.0-061000rc4-generic_6.10.0-061000rc4.202406161734_amd64.deb wget https://kernel.ubuntu.com/mainline/v6.10-rc4/amd64/linux-modules-6.10.0-061000rc4-generic_6.10.0-061000rc4.202406161734_amd64.deb sudo dpkg -i *.deb |
Après un redémarrage, nous pouvons vérifier que Linux 6.10 est en cours d’exécution et que Bluetooth est bien activé.
aey@AE7-Raspberryme:~$ uname -a Linux AE7-Raspberryme 6.10.0-061000rc4-generic #202406161734 SMP PREEMPT_DYNAMIC Dim 16 juin 21:47:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux aey@AE7-Raspberryme:~$ dmesg | grep -i bluetooth
[ 1.544918] Bluetooth : version de base 2.22
[ 1.544956] NET : Famille de protocoles PF_BLUETOOTH enregistrée
[ 1.544958] Bluetooth : périphérique HCI et gestionnaire de connexion initialisés
[ 1.544964] Bluetooth : couche de socket HCI initialisée
[ 1.544968] Bluetooth : couche de socket L2CAP initialisée
[ 1.544974] Bluetooth : couche de socket SCO initialisée
[ 1.555268] Bluetooth : hci0 : version matérielle/logicielle : 0x008a008a, heure de création : 20240219103618
[ 3.807004] Bluetooth : hci0 : Configuration de l’appareil dans 2201591 usecs
[ 3.807017] Bluetooth : hci0 : la commande de connexion synchrone de configuration améliorée HCI est annoncée, mais n’est pas prise en charge.
[ 3.864865] Bluetooth : hci0 : version des extensions AOSP v1.00
[ 3.864875] Bluetooth : hci0 : le rapport de qualité AOSP est pris en charge
[ 4.853938] Bluetooth : BNEP (émulation Ethernet) version 1.3
[ 4.853944] Bluetooth : filtres BNEP : protocole multicast
[ 4.853951] Bluetooth : couche de socket BNEP initialisée
[ 4.855511] Bluetooth : MGMT version 1.22
[ 6.539271] Bluetooth : couche RFCOMM TTY initialisée
[ 6.539280] Bluetooth : couche de socket RFCOMM initialisée
[ 6.539285] Bluetooth : RFCOMM version 1.11
|
1 2 3 4 5 6 7 8 9 dix 11 12 13 14 15 16 17 18 19 20 21 |
aey@AE7-Raspberryme:~$ uname -a Linux AE7-Raspberryme 6.10.0-061000rc4-generic #202406161734 SMP PREEMPT_DYNAMIC dim. 16 juin 21:47:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux aey@AE7-Raspberryme:~$ dmesg | grep -i bluetooth [ 1.544918] Bluetooth : version de base 2.22 [ 1.544956] NET : Famille de protocoles PF_BLUETOOTH enregistrée [ 1.544958] Bluetooth : périphérique HCI et gestionnaire de connexion initialisés [ 1.544964] Bluetooth : couche de socket HCI initialisée [ 1.544968] Bluetooth : couche de socket L2CAP initialisée [ 1.544974] Bluetooth : couche de socket SCO initialisée [ 1.555268] Bluetooth : hci0 : version matérielle/logicielle : 0x008a008a, heure de création : 20240219103618 [ 3.807004] Bluetooth : hci0 : Configuration de l’appareil dans 2201591 usecs [ 3.807017] Bluetooth : hci0 : la commande de connexion synchrone de configuration améliorée HCI est annoncée, mais n’est pas prise en charge. [ 3.864865] Bluetooth : hci0 : version des extensions AOSP v1.00 [ 3.864875] Bluetooth : hci0 : le rapport de qualité AOSP est pris en charge [ 4.853938] Bluetooth : BNEP (émulation Ethernet) version 1.3 [ 4.853944] Bluetooth : filtres BNEP : protocole multicast [ 4.853951] Bluetooth : couche de socket BNEP initialisée [ 4.855511] Bluetooth : MGMT version 1.22 [ 6.539271] Bluetooth : couche RFCOMM TTY initialisée [ 6.539280] Bluetooth : couche de socket RFCOMM initialisée [ 6.539285] Bluetooth : RFCOMM version 1.11 |
Nous avons testé cela avec le mini PC GEEKOM AE7 et cela fonctionne avec le module Azurewave AW-XB591NF, mais d’autres marques de modules MT7922 peuvent avoir d’autres identifiants matériels et votre kilométrage peut varier. Vous devez éviter d’utiliser les versions RC sur les machines de production, et il peut être utile d’attendre que l’image Linux 6.10 soit disponible. Notez que Canonical publie des images Linux principales sans s’engager à ce qu’elles fonctionnent et ne fournit pas de support pour celles-ci. La sortie d’Ubuntu 24.04.1 est prévue pour le 15 août et pourrait inclure les modifications nécessaires pour activer Bluetooth sur ces modules MT7922 (à confirmer). D’autres distributions Linux devraient également fonctionner tant que vous pouvez installer Linux 6.10.
Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

