GNU/Linux >> Tutoriales Linux >  >> Linux

Bluetooth Low Energy:escuchar notificaciones/indicaciones en linux

Parece que la versión anterior de Bluez (hcitool y gatttool) no le permite escribir en dispositivos Bluetooth Low Energy. Terminé instalando una versión más nueva (5.17 a partir de este escrito) para habilitar las notificaciones, etc.

Para obtener una lista de todos sus identificadores, puede ejecutar lo siguiente:

char-desc

A continuación, puede leer desde un identificador:

char-read-hnd 0x000e

(el identificador anterior es para mi nivel de batería nrf51822)

Donde el identificador es uno de la lista que obtuviste de char-desc.

Tal como Tim dijo anteriormente, puede escribir en el identificador relacionado con la notificación para obtener indicaciones o notificaciones. (en mi caso mi dispositivo solo tenia notificaciones)

char-write-req 0x000f 0100

(el identificador 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 configurar Bluez. Puede encontrarlo aquí:Comenzar con Bluetooth Low Energy ¡No dude en comprobarlo!


Prueba esto...

Ejecutar gatttool -b <MAC Address> --interactive como lo hiciste antes. Recibirá un aviso y luego escriba connect . Debería ver un CON en el mensaje que indica 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 configurarlos todos en 0100 para recibir notificaciones, 0200 para indicaciones, 0300 para ambos o 0000 para todo apagado. Escribe help para ver todos los comandos y sus argumentos.

EDITAR:

El uso del --listen El argumento requiere que lo combine 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 identificador al identificador del CCC para el que desea activar las notificaciones. Sin embargo, todavía encuentro 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 conservar el valor de CCC, debe emparejar los dos dispositivos. una vez emparejados, no es necesario volver a configurar el CCC. en la próxima reconexión encontrará la configuración, que se guardará en el FLASH del llavero. intente configurar después del emparejamiento a través de SMP.


Linux
  1. Linux:¿el volumen de los auriculares Bluetooth es demasiado bajo (solo en Arch)?

  2. Solución de problemas de poco espacio en disco para un servidor en la nube de Linux

  3. Línea de comando de Linux cómo aceptar emparejamiento para dispositivo bluetooth sin pin

  4. ¿Dónde se encuentra bluetooth/bluetooth.h en Linux?

  5. Java (J2SE) Bluetooth de baja energía (BLE)

Cómo comprobar los puertos de escucha en Linux (Puertos en uso)

Las mejores distribuciones para juegos en Linux

25 libros gratuitos para aprender Linux gratis

Convierta su PC con Linux en parlantes Bluetooth para su teléfono

Zorin OS para principiantes de Linux

Las 10 mejores herramientas de notificación de correo para el sistema Linux