En Propeller Health desarrollamos productos que ayudan a las personas con asma o EPOC a controlar su afección.
Un componente de nuestra plataforma es un sensor que se conecta a la medicación inhalada de una persona y envía los datos de uso de la medicación a un dispositivo conectado a través de Bluetooth Low Energy (BLE).
Realizar una captura de paquetes BLE es una buena manera de inspeccionar los datos que se transfieren entre dispositivos centrales (por ejemplo, un teléfono Android) y periféricos (por ejemplo, un sensor Propeller).
Esto puede ser útil para verificar que los datos transmitidos entre los dispositivos sean los esperados.
Índice
Cómo funciona la captura de paquetes por Bluetooth en Android
- Un dispositivo Android con Android 4.4 (KitKat) o superior para usar como dispositivo central.
- Un dispositivo BLE para usar como dispositivo periférico.
- Una estación de trabajo Windows, Linux o Mac con las herramientas SDK de Android instaladas.
Como se mencionó anteriormente, las opciones de desarrollador deben estar habilitadas para interceptar y almacenar paquetes de datos a medida que se envían y reciben.
Para habilitar las opciones de desarrollador, realice lo siguiente:
- En Android, abra Configuración> Acerca del teléfono> Número de compilación.
- Toque Número de compilación siete veces. Después de los primeros toques, debería ver la cuenta regresiva de los pasos hasta que desbloquee las opciones de desarrollador. Una vez activado, verá un mensaje que dice ¡Ahora eres desarrollador!
- Vuelva a Configuración> Sistema> Avanzado donde ahora encontrará una entrada de Opciones de desarrollador o use la función de búsqueda para buscar «Opciones de desarrollador» .
Tenga en cuenta que no se recomienda dejar habilitadas las opciones de desarrollador más tiempo del necesario, ya que se reduce la seguridad del dispositivo.
Después de todo, estamos capturando y almacenando datos destinados a ser transferidos entre los dispositivos centrales y periféricos y eso expone cierto riesgo.
Ahora que tenemos habilitadas las opciones de desarrollador, podemos habilitar el registro de inspección de HCI de Bluetooth.
Cuando el registro de búsqueda de HCI de Bluetooth está habilitado, el marco de Android capturará los paquetes de Bluetooth enviados y recibidos entre los dispositivos centrales y periféricos y los almacenará como parte de un informe de error.
Para habilitar el registro de búsqueda de HCI de Bluetooth de Android:
- En Android, abra Configuración> Sistema> Avanzado> Opciones de desarrollador.
- Toque Habilitar registro de inspección de HCI de Bluetooth.
- Toque la opción Habilitar en el cuadro de diálogo que se muestra.
Después de que se haya habilitado el registro de búsqueda de HCI de Bluetooth, deberá reiniciar el adaptador de Bluetooth de Android, lo que puede hacer apagando y volviendo a encender Bluetooth.
Todos los paquetes Bluetooth enviados y recibidos por el adaptador Bluetooth ahora se guardarán en el registro de búsqueda de HCI de Bluetooth.
Ahora que tenemos nuestro dispositivo central configurado para capturar el tráfico de Bluetooth que se transmite, podemos iniciar la comunicación entre los dispositivos centrales y periféricos.
Una forma de iniciar la comunicación para los sensores Propeller es realizar una sincronización manual presionando el botón auxiliar en un sensor.
Cuando se presiona el botón auxiliar, los sensores de hélice enviarán paquetes publicitarios a una velocidad mucho mayor durante un período corto de tiempo.
Cuando el escáner central recibe los paquetes publicitarios, los datos se registrarán en el registro de búsqueda de HCI de Bluetooth.
Para extraer el registro de inspección de HCI de Bluetooth del dispositivo Android, debe conectar el dispositivo Android a su estación de trabajo y usar el comando adb para generar un informe de error:
adb bugreport informe de error
Esto extraerá el informe de error a un archivo zip llamado bugreport.zip en su estación de trabajo. Descomprime el informe de errores:
descomprimir bugreport.zip
Localice el archivo llamado btsnoop_hci.log en los archivos extraídos, este es el archivo que contiene la captura del paquete.
Una vez que haya capturado el tráfico que le interesa, el registro de inspección de HCI de Bluetooth puede desactivarse. Puede deshabilitar el registro de snoop de Bluetooth HCI de la misma manera que se habilitó:
- En Android, abra Configuración> Sistema> Avanzado> Opciones de desarrollador.
- Toque Habilitar registro de inspección de HCI de Bluetooth.
- Toque la opción Desactivar en el cuadro de diálogo que aparece.
Nuevamente, también debe alternar los servicios de Bluetooth para reiniciar el adaptador de Bluetooth.
Además, ahora también puede ser un buen momento para deshabilitar las opciones de desarrollador si ha terminado con la resolución de problemas.
Ahora que tiene una captura de paquetes, puede cargarla en su analizador de protocolos de red favorito. Un analizador de protocolo de red popular y conocido es Wireshark.
Comprender cómo configurar los filtros de pantalla de Wireshark está fuera del alcance de esta publicación de blog; sin embargo, si conoce la dirección mac del dispositivo periférico, encontrará útil el siguiente filtro de pantalla:
bthci_evt.bd_addr == xx: xx: xx: xx: xx: xx || bthci_cmd.bd_addr == xx: xx: xx: xx: xx: xx || bluetooth.addr == xx: xx: xx: xx: xx: xx
Conclusión
La resolución de problemas de comunicación BLE en un dispositivo Android puede sentirse como trabajar con una caja negra.
Ahora tiene otra herramienta en su arsenal para desarrollar una comprensión más profunda para el análisis de paquetes enviados y recibidos por los dispositivos periféricos.
La próxima vez que se pregunte por qué su dispositivo BLE no se comunica correctamente, active el registro de búsqueda de HCI de Bluetooth, puede capturar paquetes y echar un vistazo a lo que sus dispositivos centrales y periféricos se están diciendo entre sí, es posible que se sorprenda en lo que encuentras.
Espero que te haya sido útil este artículo.
Añadir comentario