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 :
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’état | Icone 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é | |
« Unknown » | Batterie dans un état non connue ou non interprétable | |
« Charging » | Batterie en charge (sur la box ou sur un chargeur indépendant) |
Appareils compatibles (au 30/03/2024) :
Fabricant (de la puce bluetooth 😉 | Nom | Description / Photo | OK ? | Gestion Batterie ? |
Nintendo Co.,Ltd | Pro Controller | Switch Pro Controller *: appuyez sur L & R pour se connecter/reconnecter | ||
Microsoft Corporation | Xbox Wireless Controller | Xbox One ‘S’ bluetooth Controller | 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 | |
WEIFANG GOERTEK ELECTRONICS CO.,LTD | Wireless Controller | Sony PS4 controller | ||
Hon Hai Precision IND.CO.,LTD | Wireless Controller | Sony PS5 controller | Peut marcher dans pegasus mais comporte des problèmes dans certains emulateurs. | |
Nintendo Co.,Ltd | SNES Controller | Switch online SNES controller | ||
Microsoft Corporation | Xbox Wireless Controller 441622B48B0B | Xbox Series Controller | les modelés xbox Series ont besoin habituellement du dongle de microsoft (mapping change subitement ?!) | |
Nintendo Co.,Ltd | Joy-Con (L) | Switch Joy-Con Left | ||
Nintendo Co.,Ltd | Joy-Con (R) | Switch Joy-Con Right | ||
N/A | N/A | Joy-Con combined (need to do pairing of each joycon independently before) *: appuyez sur L & R pour faire un appairage commun | ATTENTION il faudra activer « Joycon support » pour activer « Joycond » nécessaire absolument pour bien appairer dans ce mode | Pour chaque joycon indépendament |
NYXI | Wizard* *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 | ATTENTION il faudra activer « Joycon support » pour activer « Joycond » nécessaire absolument pour bien appairer dans ce mode | Pour chaque joycon indépendament |
Nintendo Co.,Ltd | NES Controller (L) ou (R) | Switch online NES controllers | ATTENTION il faudra désactiver « Joycond » absolument pour bien appairé ces « types » de joycon spécifique | |
Nintendo Co.,Ltd | A confirmer | Switch online Famicom controllers | (A confirmer) ATTENTION il faudra désactiver « Joycond » absolument pour bien appairé ces « types » de joycon spécifique | (A confirmer) |
8BITDO TECHNOLOGY HK LIMITED | 8BitDo SN30 Pro+ | ATTENTION problème pour bien lire le statut de la batterie avec les drivers HID existants | ||
N/A | Wireless Controller | Action – Battleron | ||
Xiaomi Communications Co Ltd | xiaomi wifi* speaker | *: oui, elle marche aussi en bluetooth 😉 | | |
PLANTRONICS, INC | PLT focus | |||
DONGGUAN HELE ELECTRONICS CO., LTD | QCY50 | |||
« Unknown Vendor » | X7 | Détecté mais appairage impossible | ||
PLANTRONICS, INC | Calisto 620* | Testé sans la clé fournie… avec la clé usb cela doit marcher surement mais on ne passe plus par le Bluetooth du PC | ||
Shenzen Jingxun Software Telecomunication technology Co.,Ltd | JBL GO | |||
SHENZEN BOOMTECH INDUSTRY CO.,LTD | Mi Bluetooth Speaker | |||
Bose Corporation | Bose AE2 SoundLink | |||
Nintendo Co.,Ltd | N64 Controller | |||
8BITDO TECHNOLOGY HK LIMITED | 8Bitdo N64 Gamepad | |||
Nintendo Co.,Ltd | MD/Gen Control Pad (modèle 3 buttons) | |||
Nintendo Co.,Ltd | MD/Gen Control Pad (modèle 6 buttons) | .. | ||
Snakebyte (mais pas identifié par l’adresse mac) | idroid:con | (mais besoin de faire un reset du bluetooth au démarrage de pegasus actuellement) | (A tester) | |
8BITDO TECHNOLOGY HK LIMITED | 8BitDo GBros Adapter | |||
Hosiden Corporation (POWER A) | Wireless Controller (Lic Pro Controller) | (mais la led continue de scroller après connection – besoin mise à jour driver hid surement 😉 | ||
8BITDO TECHNOLOGY HK LIMITED | 8BitDo Arcade Stick | 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 !!! | ||
N/A | Google Stadia Controller | |||
8BITDO TECHNOLOGY HK LIMITED | 8Bitdo SFC30 |
Dongles/Carte Bluetooth/Chipset testés (18/09/2023)
Fabricant (de la puce bluetooth 😉 | Nom | Description / Photo | Compatibilité avec pixL |
---|---|---|---|
Plantronics, Inc. | BT300M-C | semble pas détecté par le kernel comme une clé bluetooth | |
Plantronics, Inc. | Poly BT600 | semble pas détecté par le kernel comme une clé bluetooth | |
Dell | bluetooth Integrated in Optiflex 7840 | Bluetooth 4.0 | 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-LINK | BU500 | Bluetooth 5.0/USB 2.0 | marche avec le plus grand nombre, reste des problèmes avec certaines manettes comme la xbox serices controller qui demande du bluetooth 5.X. |
Valve | Steam deck (LCD) | Bluetooth 5.0 | 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:
- 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
Casque Sans fils
Fabriquant : Steelseries
Model : Artics Pro Wireless
Ok : version B21
Batterie : KO
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