Muy buenas, me llamo Luis y aquí les traigo este nuevo tutorial.
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).
La comunicación BLE en Android puede ser delicada por muchas razones, incluidas inconsistencias en hardware como adaptadores Bluetooth (radios), software como el firmware con el que está programado el adaptador Bluetooth e implementaciones de proveedores del sistema operativo Android.
¿Qué pasa si se le pide que solucione uno de estos dispositivos delicados? ¿No sería útil si pudieras ver lo que se transmite entre ellos? Bueno, afortunadamente existe la captura de paquetes, y Android proporciona una forma de hacerlo para la comunicación 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
- 1 Cómo funciona la captura de paquetes por Bluetooth en Android
- 1.1 Lo que necesitarás
- 1.2 Habilitar opciones de desarrollador
- 1.3 Habilitar el registro de búsqueda de Bluetooth HCI
- 1.4 Iniciar la comunicación BLE
- 1.5 Extraiga el registro de búsqueda de Bluetooth HCI
- 1.6 Deshabilitar el registro de inspección de HCI de Bluetooth
- 1.7 Analizar el registro de inspección de HCI de Bluetooth
- 2 Conclusión
Cómo funciona la captura de paquetes por Bluetooth en Android
Lo que necesitarás
- 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
Habilitar opciones de desarrollador
Como se mencionó anteriormente, las opciones de desarrollador deben estar habilitadas para interceptar y almacenar paquetes 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.
Habilitar el registro de búsqueda de Bluetooth HCI
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:
- 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, 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.
Iniciar la comunicación BLE
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.
Extraiga el registro de búsqueda de Bluetooth HCI
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.
Deshabilitar el registro de inspección de HCI de Bluetooth
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.
Analizar el registro de inspección de HCI de Bluetooth
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 de los 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, capture algunos paquetes y eche 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.
Añadir comentario