Le but de cet article est de vous faire découvrir la fonctionnalité Bluetooth de Pegasus (inclus dans pixL).

Dans sa première version, le but est donc de pouvoir connecter les contrôleurs Bluetooth mais on pourra aussi connecter des enceintes connectées ou autres casques Bluetooth (ceux qui ne demande pas de saisir un code ou si celui-ci est égale à 0000)

Mais attention, c’est accessible à partir du menu « Controllers ».

  • Faites « Start« 
  • Cliquer sur « Controllers« 
  • Allez sur « Controllers« 
  • Puis cliquer sur « Devices Bluetooth« 

Les paramètres de cette fonctionnalité

Dans la partie « configuration avancée des contrôleurs »..

on peut géré différents paramètres : (vue en version Beta et pas encore traduite 😉

Enable bluetooth: permet d’activer ou pas le bluetooth et d’afficher ou pas les menus.

Scanning Method: permet de choisir entre 4 méthodes de scan pour l’instant (dans le cadre des premières betas et par la suite pour les devices audio):

  • Legacy (script) « option par défaut » (attention dans la beta, pour l’instant, il faut changer avec la conf conseillé): en utilisant les scripts historiques de Recalbox. Permet de gérer les cas complexes (?! mais pas sur) et doit être relancé pour chaque scan, bloque l’interface graphique, demande confirmation du scan toutes les 90 seconds.
  • Minimal Service Discovery (slow): permet d’afficher comme les autres modes mais aussi le nom de service, plus rapide que le mode « Full Service Discovery »
  • Full Service Discovery (slow): permet d’afficher comme les autres modes mais aussi le nom de service, plus lent mais plus complet que le « Minimal Service Discovery »
  • Device Discovery (quicker) « option conseillé pour la beta »: ceci est l’option conseillé parce qu’elle ne bloque pas l’interface et la détection est vraiment rapide voir instantanée, elle est suffisante pour détecter un contrôleur et rapidement.

Pairing Device Method: permet de sélectionner la méthode qui va permettre d’appairer un appareil.

  • Legacy (full script) « option par défaut » (attention dans la beta, pour l’instant, il faut changer avec la conf conseillé): utilise les scripts historiques de Recalbox et qui permet de gérer des cas particulier (8BitDo, …).
  • Simple one (partial script) « option conseillé pour la beta »: utilise seulement le script de pairing de base qui est plus simple et plus rapide.

Forget Device Method: permet de sélectionner la méthode qui va permettre d’oublier un appareil et donc pour pouvoir refaire l’appairage si besoin.

Autres paramètres généraux du bluetooth:

Les paramètres particuliers

Il y a aussi le cas des pads Sony que l’on peut activer et on peut sélectionner le driver (nécessite un reboot)

Et pour les joycons de Big N (nécessite un reboot) :

Le menu « Bluetooth devices »

Pleins d’information disponibles, on y trouve :

My Devices: ce sont les appareils déjà appairés donc associé et connu par le système.

Discovered Devices: ce sont les appareils qui sont détectés pendant le scan des appareils bluetooth.

Ignored Devices: ce sont les appareils que l’on a pu ignorer.

On y retrouve dans chaques catégories les données suivantes:

Adresse mac:

Nom:

Vendor/Fabricant (qui sera récupérer dynamiquement via API (https://api.macvendors.com/) si vous avez une connection internet sur votre pixL):

Et pour les modes de scan « Full/Minimal Service Discovery », on peut aussi avoir le service:

Appairage et autres fonctions

On pourra appairer ou ignorer les appareils découverts lors du scan bluetooth :

En validant (Bouton A/X) on lance le choix entre l’appairage ou l’ignorance 😉

POUR APPAIRER :

Si OK, l’appareil ira se mettre dans « mes appareils »/ »MY DEVICES » avec le logo comme quoi il est bien appairé:

puis il se connectera:

Sinon, il va rester dans les « DISCOVERED DEVICES » avec le logo d’appairage en rouge:

OU POUR IGNORER :

ET POUR OUBLIER : et donc annuler l’appairage…

POUR DECONNECTER:

Gestion des batteries

Malheureusement, ce n’est pas disponibles pour tous :-(…

Mais voici ce que l’on peut avoir dans l’interface:

La signalitique est la suivante:

Etat de la batterie Description de l’étatIcone correspondante
« Critical »Batterie à moins de 5% de sa capacité
« Low » Batterie à moins de 34% de sa capacité
« Normal » Batterie à moins de 64% de sa capacité
« High » Batterie à moins de 96% de sa capacité
« Full » Batterie à plus de 99% de sa capacité L’attribut alt de cette image est vide, son nom de fichier est image-21.png.
« Unknown »Batterie dans un état non connue ou non interprétableL’attribut alt de cette image est vide, son nom de fichier est image-19.png.
« Charging »Batterie en charge (sur la box ou sur un chargeur indépendant)L’attribut alt de cette image est vide, son nom de fichier est image-22.png.

Appareils compatibles (au 30/03/2024) :

Fabricant
(de la puce bluetooth 😉
NomDescription / PhotoOK ?Gestion Batterie ?
Nintendo Co.,LtdPro ControllerSwitch Pro Controller

*: appuyez sur L & R pour se connecter/reconnecter
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
Microsoft Corporation Xbox Wireless ControllerXbox One ‘S’ bluetooth Controller
L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
les modelés xbox one S ont besoin habituellement du dongle de microsoft
Peut marcher dans pegasus mais comporte des problèmes dans certains emulateurs comme libretro fbneo
L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
WEIFANG GOERTEK ELECTRONICS CO.,LTDWireless ControllerSony PS4 controller
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
Hon Hai Precision IND.CO.,LTDWireless ControllerSony PS5 controller
L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Peut marcher dans pegasus mais comporte des problèmes dans certains emulateurs.
L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Nintendo Co.,LtdSNES ControllerSwitch online SNES controller
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
Microsoft Corporation Xbox Wireless Controller 441622B48B0B Xbox Series Controller
L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
les modelés xbox Series ont besoin habituellement du dongle de microsoft (mapping change subitement ?!)
L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Nintendo Co.,Ltd Joy-Con (L)Switch Joy-Con Left
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
Nintendo Co.,Ltd Joy-Con (R) Switch Joy-Con Right
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
N/AN/A Joy-Con combined (need to do pairing of each joycon independently before)

*: appuyez sur L & R pour faire un appairage commun
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
ATTENTION
il faudra activer « Joycon support » pour activer « Joycond » nécessaire absolument pour bien appairer dans ce mode
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
Pour chaque joycon indépendament
NYXIWizard*



*attention vu comme des joycons
Joy-Con combined (need to do pairing of each joycon independently before)

*: appuyez sur L & R pour faire un appairage commun
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
ATTENTION
il faudra activer « Joycon support » pour activer « Joycond » nécessaire absolument pour bien appairer dans ce mode
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
Pour chaque joycon indépendament
Nintendo Co.,Ltd NES Controller (L) ou (R) Switch online NES controllers
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
ATTENTION
il faudra désactiver « Joycond » absolument pour bien appairé ces « types » de joycon spécifique
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
Nintendo Co.,Ltd A confirmerSwitch online Famicom controllers
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. (A confirmer)
ATTENTION
il faudra désactiver « Joycond » absolument pour bien appairé ces « types » de joycon spécifique
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. (A confirmer)
8BITDO TECHNOLOGY HK LIMITED8BitDo SN30 Pro+ L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
ATTENTION
problème
pour bien lire le statut de la batterie avec les drivers HID existants
N/AWireless ControllerAction – Battleron
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
Xiaomi Communications Co Ltdxiaomi wifi* speaker
*: oui, elle marche aussi en bluetooth 😉
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
PLANTRONICS, INCPLT focus L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
DONGGUAN HELE ELECTRONICS CO., LTDQCY50 L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
« Unknown Vendor »X7 L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Détecté mais appairage impossible
L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
PLANTRONICS, INC Calisto 620* L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Testé sans la clé fournie… avec la clé usb cela doit marcher surement mais on ne passe plus par le Bluetooth du PC
L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Shenzen Jingxun Software Telecomunication technology Co.,LtdJBL GO L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
SHENZEN BOOMTECH INDUSTRY CO.,LTDMi Bluetooth Speaker L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Bose CorporationBose AE2 SoundLink L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Nintendo Co.,LtdN64 ControllerL’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
8BITDO TECHNOLOGY HK LIMITED8Bitdo N64 GamepadL’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Nintendo Co.,LtdMD/Gen Control Pad (modèle 3 buttons)L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.
Nintendo Co.,LtdMD/Gen Control Pad (modèle 6 buttons)L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png...
Snakebyte (mais pas identifié par l’adresse mac)idroid:conL’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. (mais besoin de faire un reset du bluetooth au démarrage de pegasus actuellement)L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. (A tester)
8BITDO TECHNOLOGY HK LIMITED8BitDo GBros AdapterL’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Hosiden Corporation
(POWER A)
Wireless Controller (Lic Pro Controller)L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. (mais la led continue de scroller après connection – besoin mise à jour driver hid surement 😉L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
8BITDO TECHNOLOGY HK LIMITED8BitDo Arcade StickL’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. testé avec firmware 8BitDo 1.03 V3
« Mettre en mode XINPUT + position BT« … le mode switch est detecté mais ne monte pas en tant que contrôleur !!!
L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
N/AGoogle Stadia ControllerL’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
8BITDO TECHNOLOGY HK LIMITED8Bitdo SFC30L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png.L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
Certains contrôleurs pourront être compatibles par la suite, patience … 😉

Dongles/Carte Bluetooth/Chipset testés (18/09/2023)

Fabricant
(de la puce bluetooth 😉
NomDescription / PhotoCompatibilité avec pixL
Plantronics, Inc.BT300M-CL’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
semble pas détecté par le kernel
comme une clé bluetooth
Plantronics, Inc. Poly BT600L’attribut alt de cette image est vide, son nom de fichier est vcsconflicting_93497.png.
semble pas détecté par le kernel
comme une clé bluetooth
Dellbluetooth Integrated in Optiflex 7840Bluetooth 4.0L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. marche avec le plus grand nombre, reste des problèmes avec certaines manettes comme la xbox serices controller qui demande du bluetooth 5.X.
TP-LINKBU500

Bluetooth 5.0/USB 2.0
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. marche avec le plus grand nombre, reste des problèmes avec certaines manettes comme la xbox serices controller qui demande du bluetooth 5.X.
ValveSteam deck (LCD)
Bluetooth 5.0
L’attribut alt de cette image est vide, son nom de fichier est emblemok_103757.png. marche avec le plus grand nombre

Still under construction/testing 😉

Appairage manuel en SSH et avec le script « recalpair »

En cas de problème, on peut aussi se connecter en SSH et effectuer les commandes suivantes:

  1. On peut faire un disconnect/remove pour ne pas avoir d’appareil fantôme et donc mal appairé : (il faudra connaitre l’adresse mac Bluetooth de son device)
# bluetoothctl disconnect AB:CD:EF:01:02:03
Attempting to disconnect from AB:CD:EF:01:02:03
Successful disconnected
# bluetoothctl remove AB:CD:EF:01:02:03
[DEL] Device AB:CD:EF:01:02:03 NameOfDevice
Device has been removed

2. Et ensuite lancer le script d’appairage mais il faudra bien préciser l’adresse mac et le nom que l’on cherche. La commande peut prendre plusieurs dizaines de secondes pour connecter l’appareil qui devra être mis en mode « appairage » au préalable.

# /recalbox/scripts/bluetooth/recalpair AB:CD:EF:01:02:03 'NameOfDevice'

3. on pourra pour finir vérifier l’appairage et avoir des infos avec les commandes suivantes:

# bluetoothctl paired-devices
Device AB:CD:EF:01:02:03 NameOfDevice
# bluetoothctl info AB:CD:EF:01:02:03
Device AB:CD:EF:01:02:03 (public)
        Name: NameOfDevice
        Alias: NameOfDevice
        Class: 0x00002501
        Icon: input-gaming
 
        Paired: yes
        Trusted: yes
        Blocked: no
        Connected: yes
        LegacyPairing: yes

Appairage manuel en SSH et avec la commande « bluetoothctl »

Dans ce cas l’appairage peut se faire sans le script et encore plus manuellement en lancant la commande « bluetoothctl »

(voir aussi commandes ci-après en gras qu’il faudra taper et lancer une à une et avec la bonne adresse mac bluetooth de votre appareil)

# bluetoothctl
Agent registered
[CHG] Controller A1:A2:B5:66:C7:48 Pairable: yes
[bluetooth]# scan on
Discovery started
[CHG] Controller A1:A2:B5:66:C7:48 Discovering: yes
[NEW] Device 21:71:A1:01:11:31 idroid:con
[bluetooth]# scan off
Discovery stopped
[bluetooth]# pair 21:71:A1:01:11:31
Attempting to pair with 21:71:A1:01:11:31
[CHG] Device 21:71:A1:01:11:31 Connected: yes
[CHG] Device 21:71:A1:01:11:31 UUIDs: 00001124-0000-1000-8000-00805f9b34fb
[CHG] Device 21:71:A1:01:11:31 UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device 21:71:A1:01:11:31 ServicesResolved: yes
[CHG] Device 21:71:A1:01:11:31 Paired: yes
Pairing successful
[CHG] Device 21:71:A1:01:11:31 Connected: yes
[idroid:con]# trust 21:71:A1:01:11:31
[CHG] Device 21:71:A1:01:11:31 Trusted: yes
Changing 21:71:A1:01:11:31 trust succeeded
[idroid:con]# connect 21:71:A1:01:11:31
Attempting to connect to 21:71:A1:01:11:31pair 
[idroid:con]# quit
#

Attention, la partie en rouge n’est pas toujours présente cela voudra dire que les drivers ne sont pas capable d’appairé l’appareil mais cela pourra marcher mais dans ce cas, le device ne pourra jamais être considéré dans « My Device » de Pegasus dans ce cas 🙁

Pour vérifier l’appairage, vous pouvez lancer la commande suivante :

# bluetoothctl paired-devices
Device 21:71:A1:01:11:31 Wireless Controller

Mettre en mode debug

Il faudra d’abord réinitialiser le daemon bluetooth:

# killall bluetoothd
#

Il faudra ensuite le relancer dans une session en debug pour voir les logs:

# /usr/libexec/bluetooth/bluetoothd -n -d
bluetoothd[14277]: Bluetooth daemon 5.58
bluetoothd[14277]: src/main.c:parse_config() parsing /etc/bluetooth/main.conf
bluetoothd[14277]: src/main.c:parse_config() Key file does not have key “DiscoverableTimeout” in group “General”
bluetoothd[14277]: src/main.c:parse_config() Key file does not have key “AlwaysPairable” in group “General”
bluetoothd[14277]: src/main.c:parse_config() Key file does not have key “PairableTimeout” in group “General”
bluetoothd[14277]: src/main.c:parse_config() Key file does not have key “Privacy” in group “General”
bluetoothd[14277]: src/main.c:parse_config() Key file does not have key “JustWorksRepairing” in group “General”
bluetoothd[14277]: src/main.c:parse_config() Key file does not have key “TemporaryTimeout” in group “General”
.....

Il faudra peut être faire un « power on » avant le scan :

# bluetoothctl
Agent registered
[CHG] Controller F0:D5:BF:86:24:F4 Pairable: yes
[bluetooth]# scan on
Failed to start discovery: org.bluez.Error.NotReady
[bluetooth]# power on
[CHG] Controller F0:D5:BF:86:24:F4 Class: 0x002c0104
Changing power on succeeded
[CHG] Controller F0:D5:BF:86:24:F4 Powered: yes

Pour résoudre certains problèmes : redémarrer le Bluetooth

# /etc/init.d/S40bluetooth restart
Stopping bluetoothd: OK
Starting bluetoothd: OK
# bluetoothctl remove 21:F7:EE:0C:9B:01
Failed to remove device: org.bluez.Error.NotReady
# bluetoothctl power on
[CHG] Controller F0:D5:BF:86:24:F4 Class: 0x002c0104
Changing power on succeeded

Il faudra faire un restart d’un des services puis un power on, sinon on voit en rouge que ce n’est pas allumé 🙁

Pour connecter « manuellement » un clavier

(voir aussi commandes ci-après en gras qu’il faudra taper et lancer une à une et avec la bonne adresse mac bluetooth de votre appareil)

# bluetoothctl
Agent registered
[CHG] Controller F0:D5:BF:86:24:F4 Pairable: yes
[DEL] Device 4A:EE:3C:C9:C0:05 4A-EE-3C-C9-C0-05
[bluetooth]# scan on
Discovery started
[CHG] Controller F0:D5:BF:86:24:F4 Discovering: yes
[NEW] Device 78:CA:39:49:94:71 Clavier de lesv2 <- le clavier en question (bien noter son adresse mac)
[bluetooth]# scan off
[CHG] Device 78:CA:39:49:94:71 RSSI is nil
[CHG] Controller F0:D5:BF:86:24:F4 Discovering: no
Discovery stopped
[bluetooth]# pair 78:CA:39:49:94:71
Attempting to pair with 78:CA:39:49:94:71
[CHG] Device 78:CA:39:49:94:71 Connected: yes
[agent] PIN code: 839263 <- ici s'affiche le pin code à saisir sur le clavier et faire entrer
[DEL] Device 10:F0:05:15:56:43 MOBIBOZO-LESV2
[CHG] Controller F0:D5:BF:86:24:F4 Discovering: yes
[DEL] Device 4A:EE:3C:C9:C0:05 4A-EE-3C-C9-C0-05
[CHG] Device 78:CA:39:49:94:71 Modalias: usb:v05ACp023Ad0050
[CHG] Device 78:CA:39:49:94:71 UUIDs: 00001124-0000-1000-8000-00805f9b34fb
[CHG] Device 78:CA:39:49:94:71 UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device 78:CA:39:49:94:71 ServicesResolved: yes
[CHG] Device 78:CA:39:49:94:71 Paired: yes <- après saisi du mot de passe
Pairing successful
[CHG] Controller F0:D5:BF:86:24:F4 Discovering: no
[bluetooth]# trust 78:CA:39:49:94:71
[CHG] Device 78:CA:39:49:94:71 Trusted: yes
Changing 78:CA:39:49:94:71 trust succeeded <- clavier "trusté"
[bluetooth]# connect 78:CA:39:49:94:71
Attempting to connect to 78:CA:39:49:94:71
[CHG] Device 78:CA:39:49:94:71 Connected: yes
Connection successful <- clavier "connecté"
[CHG] Device 78:CA:39:49:94:71 ServicesResolved: yes
[Clavier de lesv2]# quit

Enjoy !!!

2 commentaires

  1. Manette sans fils
    Fabricant : Microsoft Corporation
    Nom : Wireless controller for xbox one
    Model : 1697
    Dongle Microsoft : 1713 uniquement 1 manette et 1790 avec 2 manettes
    OK : B21
    Batterie : KO

Laisser un commentaire