RPi4B > Bluetooth LE Interne et dongle supplémentaire

Bonjour @ tous,

Je suis confronté à un pb auquel je n’ai pas encore trouvé de solution. J’essaye de communiquer en BTLE avec une bonne dizaine de capteur. Pour ce faire, j’aimerai utiliser le BTLE interne de la RPI4 et un dongle externe.

Lorsque je démarre ma RPI4 tout fraîchement installée (sans dongle), hci0 apparaît. Avec hciconfig -a, j’obtiens la marque du composant utilisé: Cypress. Si j’ajoute le dongle (Broadcom), hci1 apparaît. Malheureusement, après Reboot, rien ne va plus. Seul le dongle (broadcom) apparaît en hci0.

Et ma question est: comment avoir les deux BTLE au démarrage ?

Je vous remercie par avance pour vos réponses.

slt

Vincent

As tu essayé avec BlueZ Manager ?

Si je ne me trompe pas, le HCITool est la « base base » pour un usage Spk/Mic en mode « phone », avec « bluetoothd », tu peux contrôler les agents et faire un peu plus. Dans mes projet, j’utilise l’application « Bluetoothd ». Avec l’agent tu peux définir quel dongle doit ce connecter a quel appareil, avec un petit script tu peux initialiser les commandes facilement.

Ce guide devrais t’aider avec BlueZ.


PS Il explique avec version GUI, j’ai un guide pour des speaker en ligne de commande, il peut t’aider pour certaines choses aussi.

https://levelkro.xyz/wiki/RPi-Bluetooth_Audio

Bonjour, merci beaucoup pour le partage du guide avec nous

Bonjour levelKro,
Tout d’abord, merci pour ta réponse. J’ai jeté un oeil sur Bluetoothctl également avant de poser ma question. bluetoothctl ne change rien au problème qui est qu’une fois que j’ai rebooté, seul le dongle Broadcom est reconnu.
Je code en python la connexion à au moins 10 capteurs. Il me faut au moins le BTLE interne de la RPi4 et un dongle pour m’appairer à un tel nombre de capteur. A savoir que le BTLE de la RPi4B ne peut pas s’appairer à plus de 7 appareils, d’où le besoin d’un dongle supplémentaire qui à lui même sa limite.
Vincent

hello,

en fait ce qui se passe (si j’ai bien compris :roll_eyes:) c’est que lors du démarrage de bluetooth le systeme n’a pas le temps de trouver le bluetooth en uart ( celui présent sur le rpi ) et il passe trop vite au suivant ( le dongle usb ) donc le truc c’est de le calmer !

pour se faire il suffit de rajouter dans le fichier : /lib/systemd/system/bthelper@.service la ligne :
ExecStartPre=/bin/sleep 2
pour obtenir au final :

[Unit]
Description=Raspberry Pi bluetooth helper
Requires=hciuart.service bluetooth.service
After=hciuart.service
Before=bluetooth.service

[Service]
Type=oneshot
ExecStartPre=/bin/sleep 2
ExecStart=/usr/bin/bthelper %I
RemainAfterExit=yes

ce qui est pas terrible c’est que j’ai trouvé l’info dans un « vieux » post de 2018 ! mais ça fonctionne sur mon pi 4 avec pi OS à jour.

source : regression from 0.8 to 0.9 -- BLE connection fails until bluetooth service is restarted · Issue #8 · RPi-Distro/pi-bluetooth · GitHub

Bonjour Bof,
Merci pour ta réponse. Je viens de tester ta solution sur Buster. Ca ne marche pas chez moi.
Vincent

oui pas clair …
j’ai supprimé la ligne avec le sleep et ça marche pareil… à croire que j’ai du faire un autre truc !
ce qui est bizarre c’est que sur le même rpi4 avec une autre installation (pi OS sur clé usb et une autre sur sd ) ça a fonctionné directement !
la seule différence c’est que j’ai branché la clé bluetooth, pour la première fois sur ces deux systèmes avant de démarrer le rp; comme si le fait de la brancher « à chaud » perturbait quelque chose dans le paramétrage de bluetoothd.

donc l’idée se serait de refaire un systeme « neuf », de brancher la clé bluetooth et de démarrer le rpi pour la premiere fois. au reboot on devrait trouver les deux devices bluetooth

Bonjour Bof,
Je te remercie beaucoup pour ta réponse. En effet, lorsque l’on branche un dongle BT, avant d’initialiser sa RASPBIAN BUSTER (recovery Noobs), hci0 et hci1 (UART & USB) sont présents.
Il faut absolument ne pas faire la mise à jour (UPGRADE / DIST_UPGRADE?) de RASPBIAN auquel cas, l’hci (UART) n’apparait plus.
Encore merci beaucoup.
Vincent