¿Hay alguna manera de boost la frecuencia de publicidad BLE en BlueZ?

Tengo una computadora linux que transmite un anuncio BLE usando 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 transmite su anuncio bluetooth una vez por segundo. Me gustaría boost esta frecuencia a 10 veces por segundo o más. ¿Hay alguna manera de boost la frecuencia publicitaria en BlueZ? ¿O es una vez por segundo el estándar e inmutable? Me complace hacer esto con C API si no es posible con las herramientas de línea de comandos.

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 “LE Establecer parámetros de publicidad. Los primeros dos bytes A0 00 son el” intervalo mínimo “. Los segundos dos bytes A0 00 son el” intervalo máximo “. En este ejemplo, establece el tiempo entre anuncios a 100ms. La granularidad de esta configuración es 0.625ms, por lo que establecer el intervalo a 01 00 establece el anuncio para ir cada 0.625ms. Al establecerlo en A0 00 establece el anuncio para cada 0xA0 * 0.625ms = 100ms. 40 06 establece el anuncio para cada 0x0640 * 0.625ms = 1000ms. El quinto byte, 03, establece el modo de publicidad en no conectable. Con un anuncio no conectable, lo más rápido que puede anunciar es 100ms, con un anuncio conectable ( 0x00) puede anunciar 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, porque “hciconfig hci0 leadv 3” establecerá automáticamente la velocidad de publicidad en el valor predeterminado más bajo de 1280ms.

Lo descubrí ejecutando hcidump al mismo tiempo que ejecutaba los comandos originales que publicaste en la pregunta. Esto le muestra un montón de comandos de hcitool sin procesar (muy bien anotados por lo que hacen) que son ejecutados por bluez. Me acabo de dar cuenta de 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 IOGear GBU521, por lo que es posible que esto no funcione con otros chipsets Bluetooth LE.