studio - Bluetooth Low Energy: escuchar notificaciones/indicaciones en Linux
low power bluetooth (4)
Parece que la versión anterior de Bluez (hcitool y gatttool) no le permite escribir en dispositivos Bluetooth de baja energía. Terminé instalando una versión más nueva (5.17 al momento de escribir esto) para habilitar las notificaciones, etc.
Para obtener una lista de todos sus identificadores, puede ejecutar lo siguiente:
char-desc
Luego puede leer desde un mango:
char-read-hnd 0x000e
(el mango anterior es para mi nivel de batería nrf51822)
Donde el identificador es uno de la lista que obtuvo de char-desc.
Al igual que Tim dijo anteriormente, puede escribir en el identificador relacionado con la notificación para obtener indicaciones o notificaciones. (en mi caso, mi dispositivo solo tenía notificaciones)
char-write-req 0x000f 0100
(el controlador anterior es para mi notificación de nivel de batería nrf51822)
En mi caso, la notificación de la batería no debería enviar nada hasta que el nivel de la batería haya cambiado.
Escribí una publicación de blog bastante larga sobre cómo configurarlo con Bluez. Puede encontrarlo aquí: Comience con Bluetooth Low Energy ¡ Siéntase libre de echarle un vistazo!
Intento comunicarme con un módulo BLE a través de una máquina Linux (el módulo ejecuta un perfil de frecuencia cardíaca). Hasta ahora, he podido hacer todo lo que necesito excepto escuchar notificaciones e indicaciones (por ejemplo, escuchar la Notificación de medición de la frecuencia cardíaca). Estoy usando kernel versión 3.5 y bluez-5.3.
Mandatos exitosos utilizados hasta ahora:
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
Comandos fallidos:
gatttool -b <MAC Address> --listen
Cualquier ayuda es muy apreciada.
Prueba esto...
Ejecute gatttool -b <MAC Address> --interactive
como lo hizo antes. Recibirás un mensaje y luego escribirás connect
. Debería ver una CON
en el indicador que indique que se ha conectado al dispositivo. Luego escribe char-read-uuid 2902
. Debería obtener una lista de todos los atributos CCC (configuración de características del cliente) en el dispositivo. Puede intentar configurarlas todas en 0100 para recibir notificaciones, 0200 para las indicaciones, 0300 para ambas, o 0000 para todo desactivado. Escriba help
para ver todos los comandos y sus argumentos.
EDITAR:
El uso del argumento --listen
requiere que lo --listen
con otros comandos para activar las notificaciones y / o indicaciones. Así que aquí hay un ejemplo que funciona en Bluez 4.101:
gatttool -b <MAC Address> --char-write-req --handle=0x0031 --value=0100 --listen
Obviamente, debe cambiar el controlador al identificador del CCC para el que desea activar las notificaciones. Sin embargo, todavía me resulta mucho más fácil usar el modo interactivo.
Respuesta final para leer la frecuencia cardíaca en 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
para retener el valor CCC, necesita emparejar los dos dispositivos. una vez que están emparejados, no es necesario configurar el CCC nuevamente. en la próxima reconexión encontrará la configuración, que se guardará en el flash FLASH de la llave. intente configurar después del emparejamiento a través de SMP.