linux bluetooth bluetooth-lowenergy bluez

linux - ¿Hay una manera de aumentar la frecuencia de anuncios BLE en BlueZ?



bluetooth bluetooth-lowenergy (1)

Creo que lo descubrí.

En lugar de:

sudo hciconfig hci0 up sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00 sudo hciconfig hci0 leadv 3

Hacer esto:

sudo hciconfig hci0 up sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00 sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 03 00 00 00 00 00 00 00 00 07 00 sudo hcitool -i hci0 cmd 0x08 0x000a 01

El segundo comando hcitool (0x08 0x0006) es "Establecer parámetros de publicidad LE. Los dos primeros bytes A0 00 son el" intervalo mínimo ". Los dos segundos bytes A0 00 son el" intervalo máximo ". En este ejemplo, establece el tiempo entre anuncios a 100 ms. La granularidad de esta configuración es de 0.625 ms, por lo que establecer el intervalo en 01 00 establece que el anuncio vaya cada 0,625 ms. Al establecerlo en A0 00 se establece que el anuncio vaya cada 0xA0 * 0,625 ms = 100 ms. 40 06 configura el anuncio para cada 0x0640 * 0.625ms = 1000 ms. El quinto byte, 03, establece el modo de publicidad como no conectable. Con un anuncio no conectable, el más rápido que puede anunciar es 100 ms, con un anuncio conectable ( 0x00) puedes anunciarte mucho más rápido.

El tercer comando hcitool (0x08 0x000a) es "LE Set Advertise Enable". Es necesario emitir este comando con hcitool en lugar de hciconfig, ya que "hciconfig hci0 leadv 3" establecerá automáticamente la tasa de publicidad en el valor predeterminado más lento de 1280 ms.

Descubrí esto ejecutando hcidump al mismo tiempo que ejecutaba los comandos originales que publicaste en la pregunta. Esto te muestra un montón de comandos de hcitool en bruto (bien anotados por lo que hacen) que se ejecutan con bluez. Acabo de darme cuenta por la salida de hcidump que "hciconfig hci0 leadv 3" emite un comando de intervalo de publicidad de conjunto más lento.

Tenga en cuenta que todo esto se basa en el IOGear GBU521, por lo que puede que no funcione con otros conjuntos de chips Bluetooth LE.

Tengo una computadora Linux que emite un anuncio BLE utilizando los siguientes comandos:

sudo hciconfig hci0 up sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00 sudo hciconfig hci0 leadv 3

Esto funciona bien, pero la computadora solo emite su anuncio de bluetooth una vez por segundo. Me gustaría aumentar esta frecuencia a 10 veces por segundo o más. ¿Hay una manera de aumentar la frecuencia de publicidad en BlueZ? ¿O es una vez por segundo el estándar e inmutable? Estoy feliz de hacer esto con las API de C si no es posible con las herramientas de línea de comandos.