Bluetooth basse énergie: à l'écoute des notifications/indications sous linux

j'essaie de communiquer avec un module BLE via une machine Linux (le module exécute un profil de fréquence cardiaque). Jusqu'à présent, j'ai été capable de faire tout ce dont j'ai besoin sauf écouter les Notifications et les indications (par exemple, écouter la Notification de mesure de la fréquence cardiaque). J'utilise la version 3.5 du noyau et bluez-5.3.

commandes réussies utilisées jusqu'à présent:

hcitool lescan
hcitool lecc
gatttool -b <Mac Address> --primary
gatttool -b <MAC Address> --characteristics
gatttool -b <MAC Address> --char-read
gatttool -b <MAC Address> --char-desc
gatttool -b <MAC Address> --interactive

Échec de commandes:

gatttool -b <MAC Address> --listen

toute l'aide est grandement appréciée.

39
demandé sur yousif saeed 2013-03-27 14:47:55

4 réponses

essayez ceci...

Exécuter gatttool -b <MAC Address> --interactive comme vous l'avez fait avant. Vous obtiendrez une invite, puis vous taperez connect . Vous devriez voir un CON dans l'invite indiquant que vous avez connecté à l'appareil. Puis tapez 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 mettre tous à 0100 pour obtenir des notifications, 0200 pour les indications, 0300 pour les deux, ou 0000 pour tout hors. Tapez help pour voir toutes les commandes et leurs arguments.

EDIT:

L'utilisation de l'argument --listen vous oblige à le coupler avec d'autres commandes pour activer les notifications et/ou les indications. Donc voici un exemple qui fonctionne dans Bluez 4.101:

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

évidemment, vous devez changer la poignée à la poignée du CCC que vous voulez allumer les notifications pour. Cependant, j'ai encore trouvez plus facile d'utiliser simplement le mode interactif.

43
répondu Tim Tisdall 2015-04-16 13:44:49

ressemble à L'ancienne version de Bluez (hcitool & gatttool) ne vous permettent pas d'écrire à des appareils de basse énergie Bluetooth. J'ai fini par installer une nouvelle version (5.17 à partir de cet écrit) 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'une poignée:

char-read-hnd 0x000e

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

où la poignée est une de la liste que vous avez obtenu de char-desc.

comme Tim l'a dit ci-dessus, vous pouvez écrire à la poignée relative à la 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 nrf51822 niveau de batterie)

dans mon cas, la notification de batterie ne devrait rien envoyer jusqu'à ce que le niveau de batterie a modifié.

j'ai écrit un billet de blog assez long sur se mettre en place avec Bluez. Vous pouvez le trouver ici: Get a Commencé avec Bluetooth Low Energy se Sentir libre de le vérifier!

10
répondu jaredwolff 2014-04-15 00:01:35

réponse finale pour la lecture de 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
5
répondu Fred.Taiwan 2014-01-16 14:42:22

pour conserver la valeur CCC, vous devez jumeler les deux appareils. une fois qu'ils sont jumelés vous n'avez pas besoin de mettre le CCC à nouveau. lors de la prochaine reconnexion , il trouvera le paramètre, qui sera sauvegardé dans le FLASH de la Clé fob. essayez de configurer après l'appariement via SMP.

2
répondu RobinSingh 2013-06-01 06:20:36