GNU/Linux >> Tutoriels Linux >  >> Linux

Bluetooth Low Energy :écoute des notifications/indications sous Linux

On dirait que l'ancienne version de Bluez (hcitool &gatttool) ne vous permet pas d'écrire sur des appareils Bluetooth Low Energy. J'ai fini par installer une version plus récente (5.17 à ce jour) afin d'activer les notifications, etc.

Pour obtenir une liste de toutes vos poignées, vous pouvez exécuter ce qui suit :

char-desc

Vous pouvez alors lire à partir d'un handle :

char-read-hnd 0x000e

(la poignée ci-dessus est pour mon niveau de batterie nrf51822)

Où le handle est l'un de la liste que vous avez obtenue de char-desc.

Tout comme Tim l'a dit ci-dessus, vous pouvez écrire dans la poignée de notification pour obtenir des indications ou des notifications. (dans mon cas, mon appareil n'avait que des notifications)

char-write-req 0x000f 0100

(la poignée ci-dessus est pour ma notification de niveau de batterie nrf51822)

Dans mon cas, la notification de la batterie ne devrait rien envoyer tant que le niveau de la batterie n'a pas changé.

J'ai écrit un article de blog assez long sur la configuration avec Bluez. Vous pouvez le trouver ici :Premiers pas avec Bluetooth Low Energy N'hésitez pas à le consulter !


Essayez ceci...

Exécutez gatttool -b <MAC Address> --interactive comme tu l'as fait avant. Vous obtiendrez une invite, puis vous tapez connect . Vous devriez voir un CON dans l'invite indiquant que vous êtes connecté à l'appareil. Tapez ensuite char-read-uuid 2902 . Vous devriez obtenir une liste de tous les attributs CCC (Client Characteristic Configuration) sur l'appareil. Vous pouvez essayer de les régler tous sur 0100 pour recevoir des notifications, 0200 pour les indications, 0300 pour les deux ou 0000 pour tout désactiver. Tapez help pour voir toutes les commandes et leurs arguments.

MODIFIER :

L'utilisation du --listen L'argument nécessite que vous le coupliez avec d'autres commandes pour activer les notifications et/ou les indications. Voici donc un exemple qui fonctionne dans Bluez 4.101 :

gatttool -b <MAC Address> --char-write-req --handle=0x0031 --value=0100 --listen

Évidemment, vous devez remplacer le handle par le handle du CCC pour lequel vous souhaitez activer les notifications. Cependant, je trouve toujours plus facile d'utiliser simplement le mode interactif.


Réponse finale pour lire la fréquence cardiaque sur Mio Alpha :

gatttool -b xx:xx:xx:xx:xx:xx -t random --char-write-req -a 0x0025 -n 0100 --listen

Characteristic value was written successfully
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4a 3e 03 
Notification handle = 0x0024 value: 10 4c 28 03 28 03 
Notification handle = 0x0024 value: 10 4c 28 03 
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4a 3e 03 3e 03

pour conserver la valeur CCC, vous devez coupler les deux appareils. une fois qu'ils sont jumelés, vous n'avez pas besoin de régler à nouveau le CCC. lors de la prochaine reconnexion, il trouvera le réglage, qui sera enregistré dans le FLASH du porte-clés. essayez de configurer après l'appairage via SMP.


Linux
  1. Ligne de commande Linux comment accepter le couplage pour un périphérique Bluetooth sans code PIN

  2. Où se trouve le bluetooth/bluetooth.h sous Linux ?

  3. Java (J2SE) Bluetooth basse consommation (BLE)

  4. Bluetooth Low Energy en C - utilisation de Bluez pour créer un serveur GATT

  5. Nagios :Désactiver les notifications depuis la ligne de commande sous Windows/Linux

Comment vérifier les ports d'écoute sous Linux (ports utilisés)

Meilleures distributions pour les jeux sur Linux

25 livres gratuits pour apprendre Linux gratuitement

Transformez votre PC Linux en haut-parleurs Bluetooth pour votre téléphone

Zorin OS pour les débutants Linux

Les 10 meilleurs outils de notification de courrier pour le système Linux