Pregunta de seguimiento de Stackoverflow
Estoy intentando escribir un valor característico repetidamente en un corto período de tiempo. Diferentes fuentes dicen que las tasas entre 200 y 305 kbit / s deberían ser posibles. Sin embargo, solo llego a ~ 36 kbit / s .
Estoy usando un iPhone 4S para escribir la característica repetidamente. Una placa de desarrollo con un chip BLE CSR1000 sirve como periférico que acepta las escrituras. Estoy utilizando escrituras sin respuesta para evitar reconocimientos en la capa de atributo. Consulte mi pregunta en Stackoverflow para obtener más detalles.
Una escritura en el valor característico de 20 bytes de longitud ocurre después de cada milisegundo. Por lo tanto, estoy enviando 160 kbit / s . Solo se reciben ~ 36 kbit / s . Lo extraño de esto es que, al comienzo de la sesión, todo funciona bien por una fracción de segundo. Entonces, los paquetes comienzan a caer. Sin embargo, la mayoría de las veces, los paquetes de cuatro solicitudes de escritura continuas funcionan bien antes de que una cantidad variable de paquetes se caiga nuevamente.
He encontrado una correlación significativa entre el rendimiento y el valor de Conn_Interval. Sin embargo, el iPhone 4S no aceptará ningún valor Conn_Interval inferior a 0x0f. Esto ya es inferior a lo que Apple propone dentro de sus pautas de hardware. Cuando cumplo con sus valores y uso un intervalo mínimo de 20 ms, y un intervalo máximo de 40 ms, el rendimiento disminuye a ~ 15 kbit / s.
Conn_Interval = 0x000f = 18.75 ms
Conn_Latency = 0x0000
Supervision_Timeout = 0x00fc
El documento "Modelando el rendimiento máximo de Bluetooth de baja energía en un enlace propenso a errores" de Gomez et al. describe la influencia de Conn_Interval y los errores de bits en el rendimiento. Sin embargo, según su análisis, habría una cantidad relativamente alta de errores de bits, si esta fuera la fuente limitante del problema. La placa de desarrollo se encuentra muy cerca del iPhone 4S. Por lo tanto, supongo que existen otros factores limitantes.
- ¿Qué otros parámetros podrían influir en el rendimiento en Bluetooth Low Energy?
- ¿Por qué el Conn_Interval es tan importante? Si el intervalo es mayor, ¿no deberían llenarse los eventos de conexión individuales con más paquetes, lo que lleva a un rendimiento similar?
- ¿Podría un Bluetooth Sniffer / Analyzer ayudar a detectar si realmente hay tantos errores de bit? En caso afirmativo, ¿qué analizadores recomendaría?