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.
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.
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!
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
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.