bbdoctor
Diagnóstico de drones por el log: Betaflight, INAV, ArduPilot, PX4
RUENESPTUA

Configura Blackbox en Betaflight: registra datos que puedas diagnosticar

Blackbox registra el giroscopio, los sticks y el setpoint, los términos PID, los motores, las RPM, el voltaje y la corriente. Sin embargo, un registro con la configuración de fábrica suele mostrar muy poco. Algunos ejemplos reales de los registros que analizamos: un dron de 3.5 pulgadas con Betaflight 4.5.2 que registraba a 1 kHz mientras sus motores llegaban a 644 Hz; un registro de Betaflight 2026.6 a 247 Hz sin giroscopio sin filtrar ni RPM; un dron de 7 pulgadas con 4.6 que registraba a 2 kHz en una tarjeta SD y tenía 182 huecos; y un registro de INAV 7.1 a 58 Hz que no permite evaluar las vibraciones.

Qué necesita cada comprobación

Los umbrales salen directamente del código del analizador; por debajo de ellos, una comprobación no muestra resultados o indica que hay pocos datos.

ComprobaciónCampos del registroFrecuenciaQué volar
Vibración por motor: qué motor o hélice vibragiroscopio sin filtrar + eRPM~250 Hz o más; funciona incluso por encima de Nyquistmedio minuto de vuelo estable con distintos niveles de gas
Ruido y filtros, resonancias del framegiroscopio sin filtrar y filtrado500 Hz o más; frecuencia exacta de resonancia a 1/1 (o 2 kHz o más para resonancias por debajo de 500 Hz)vuelo estacionario y una subida lenta del gas hasta el 100%
Ruido de los motores y qué término PID lo contienemotor, axisP, axisD, axisF500 Hz o máscualquier vuelo
Respuesta escalón y latenciasetpoint + giroscopio200 Hz o másAcro; más de 10 ventanas útiles de un segundo con el stick a 20 deg/s o más, 50 para un veredicto «crítico»
Propwashsetpoint, gas200 Hz o másal menos 3 cortes limpios, 5 para un veredicto fiable
Rebote después de flipssetpoint, axisP/I/D/F200 Hz o másmás de 6 paradas bruscas del stick por eje
Caída en punch-out (anti-gravity)setpoint, gas, axisI100 Hz o másmás de 6 punch-outs con los demás sticks centrados
Caída de tensión y resistencia de la bateríavbat; también un sensor de corriente para calcular la resistenciacualquierapara calcular la resistencia, más de 5 ventanas de un segundo con una variación de corriente de 8 A o más
Análisis de crashesacelerómetro, giroscopio, RSSI/failsafe, eRPM, vbatcualquiera—

Si el vuelo dura menos de 10 segundos, todos los hallazgos de ajuste bajan a «info» y pierden sus comandos CLI; tampoco se miden el rebote ni los punch-outs. Si pasaste más de la mitad del vuelo en Angle o Horizon, se omiten la respuesta escalón y el rebote: en esos modos, el stick controla un ángulo, no una velocidad de rotación.

Frecuencia de registro y aliasing

Por qué 1 kHz da una impresión equivocada en quads pequeños

Un registro a N Hz solo muestra vibraciones hasta N/2, la frecuencia de Nyquist. Las frecuencias más altas no desaparecen: se reflejan por debajo de ese límite. Un motor a 644 Hz en un registro a 1000 Hz aparece a 1000 − 644 = 356 Hz. Así queda un pico espectral nítido donde no ocurre nada: un blanco fácil para colocar mal un notch o un filtro.

Tres registros de un VX3.5 con Betaflight 4.5.2 (ciclo PID de 4 kHz, 1/4, es decir, 1 kHz) tenían picos de motor de 583, 605 y 644 Hz, siempre por encima de 500 Hz. La figura muestra el mismo efecto en otro quad: un registro a 2 kHz al que se le conserva cada cuarto frame, justo lo que hace blackbox_sample_rate, al omitir frames sin filtrar antes.

Ruido del giroscopio sin filtrar frente al gas a 2000 Hz y el mismo vuelo a 500 Hz, donde la línea del motor se refleja desde 250 Hz
Giroscopio raw de roll frente al gas. A: registro original a 2000 Hz (Betaflight 4.2.5, 4S, GYRO_SCALED). B: el mismo vuelo conservando cada cuarto frame, es decir, a 500 Hz. En A, la línea del motor se desplaza a la derecha al aumentar el gas: 289 Hz al 30%, 398 Hz al 50% y 609 Hz al 90%. En B, todo lo que supera 250 Hz se refleja: 289 → 211 Hz, 398 → 102 Hz, 609 → unos 109 Hz. Un «ruido» cuya frecuencia baja al subir el gas es una señal clara de aliasing.

bbdoctor mide la vibración de cada motor a partir de su fase de giro (eRPM), así que sabe dónde aparece la copia reflejada y esa comprobación sigue funcionando a 1 kHz; el espectro de ruido y las resonancias no se pueden recuperar. Cuando las RPM máximas de un registro de Betaflight superan el 95% de la frecuencia de Nyquist, el informe añade «La frecuencia de registro es inferior a la frecuencia del motor» e incluye el divisor correcto como comando.

Cómo elegir blackbox_sample_rate

A partir de la versión 4.3, la frecuencia es un divisor del ciclo PID: 1/1, 1/2, 1/4, 1/8 o 1/16; el valor predeterminado es 1/4. bbdoctor elige el divisor más alto que aún permite registrar a 2 kHz como mínimo:

Ciclo PIDPredeterminado (1/4)ConfiguraResultado
8 kHz2 kHz1/42 kHz
4 kHz1 kHz1/22 kHz
3.2 kHz (BMI270)800 Hz1/13.2 kHz

Puedes ver la frecuencia del ciclo en la pestaña Configuration. No todas las configuraciones necesitan 2 kHz: bbdoctor solo lo recomienda cuando los motores giran más rápido que la frecuencia de registro. Un dron de 7 pulgadas con 6S de nuestro conjunto no superó 315 Hz, así que 1 kHz habría bastado. Un dron de 3 a 3.5 pulgadas con 4S suele superar ese valor a 1 kHz, y no es el único caso: en cuatro registros a 1 kHz de un quad con 6S y 4.5.1, los motores llegaron a 529–554 Hz. En un BMI270, 1/1 llena la flash más rápido; si el espacio es limitado, 1/2 (1.6 kHz) sigue cubriendo motores de hasta unos 760 Hz. 1/8 y 1/16 no sirven para el análisis (500 y 250 Hz en un ciclo de 4 kHz), y la comprobación de configuración los marca.

Capacidad de la flash

Tamaños de archivo de nuestro conjunto: a 1 kHz y con todos los campos, unos 34 KB/s sin campos de depuración y 41–43 KB/s con un modo de depuración activado; a 2 kHz, entre 58 y 70 KB/s. Una flash de 8 MB dura unos 3 o 4 minutos a 1 kHz y 2 minutos a 2 kHz. El VX3.5 (debug_mode = GYRO_SCALED) llenó sus 8 MB hasta el último byte en 195 segundos a 1 kHz y dejó de registrar a mitad del vuelo. bbdoctor detecta esto (un final cortado o un archivo de exactamente 2, 4, 8 o 16 MB) y advierte, junto con la recomendación de frecuencia, que el tiempo de grabación se reducirá a la mitad.

Borra la flash antes de hacer pruebas (Erase flash en la pestaña Blackbox o flash_erase en CLI), haz vuelos de prueba de 1 a 2 minutos y desactiva los campos que no necesites. Una tarjeta SD tiene espacio, pero una tarjeta lenta pierde frames: el dron de 7 pulgadas con 4.6 que registraba a 2 kHz en SD tuvo 182 huecos. Usa una tarjeta fiable recién formateada; si siguen apareciendo huecos, baja un paso la frecuencia.

Ajustes de Betaflight según la versión

4.5 y 2025.12+

Para un ciclo PID de 4 kHz (usa 1/4 con 8 kHz y 1/1 con 3.2 kHz):

set blackbox_mode = NORMAL
set blackbox_sample_rate = 1/2
set blackbox_disable_gyrounfilt = OFF
set blackbox_disable_rpm = OFF
set blackbox_disable_setpoint = OFF
set blackbox_disable_pids = OFF
set blackbox_disable_motors = OFF
set debug_mode = NONE
save

Un registro de Betaflight 2026.6.1 se grabó a 1/16 (247 Hz con un ciclo de 4 kHz) con el giroscopio raw y las RPM desactivados, aunque DShot bidireccional estaba activo. El informe indicó ambos comandos para volver a activarlos. En un registro de 4.5.1, el setpoint estaba desactivado: bbdoctor lo reconstruye a partir de los sticks y los rates, con una estimación PID menos precisa, y lo indica.

4.3–4.4

set blackbox_sample_rate = 1/2
set debug_mode = GYRO_SCALED
save

Elige el divisor de la tabla anterior. Estas versiones aún no tienen campos para el giroscopio sin filtrar ni para RPM. El giroscopio se registra mediante debug, y solo puede funcionar un modo de depuración a la vez, así que no puedes usar DSHOT_RPM_TELEMETRY (bbdoctor tampoco lee las RPM desde debug). Aunque DShot bidireccional funcione, se recomienda actualizar a 4.5, porque sin RPM no se puede identificar el motor desequilibrado. Los ajustes blackbox_disable_… existen desde 4.3 (rpm y gyrounfilt, desde 4.5): comprueba que el setpoint no esté desactivado.

4.0–4.2

set blackbox_p_ratio = 64
set debug_mode = GYRO_SCALED
save

Estas versiones usan blackbox_p_ratio. La frecuencia es aproximadamente p_ratio × 31.25 Hz: 32 da unos 1 kHz y 64, unos 2 kHz, con un límite igual a la frecuencia del ciclo PID. Un registro de 4.2.11 de nuestro conjunto se grabó a solo 534 Hz y además tenía 36 huecos.

Campos que puedes desactivar y campos que debes conservar

Puedes activar blackbox_disable_gps, blackbox_disable_mag y blackbox_disable_alt (barómetro) si no analizas la navegación.

RPM en el registro

Las RPM vienen de DShot bidireccional: ejecuta set dshot_bidir = ON y save, y usa un protocolo DShot con ESC compatibles con Bluejay, AM32 o BLHeli_32. Después, quita las hélices, haz girar los motores con los sliders de la pestaña Motors y comprueba que aparezcan las RPM y que los errores sean casi cero. Comprueba también motor_poles: la frecuencia del motor se calcula a partir de eRPM y del número de polos. La mayoría de los motores de 5 pulgadas tienen 14 polos; algunos pequeños tienen 12. Si el valor es incorrecto, todas las frecuencias de motor del registro serán erróneas. Consulta la guía del filtro RPM y DShot bidireccional.

INAV

set blackbox_rate_num = 1
set blackbox_rate_denom = 2
blackbox GYRO_RAW
blackbox MOTORS
save

En INAV, la frecuencia de registro es la fracción blackbox_rate_num/blackbox_rate_denom de los ciclos del loop. INAV 8 y versiones posteriores usan por defecto un loop de 2 kHz (looptime = 500), donde 1/2 da 1 kHz; INAV 7 y anteriores usan por defecto 1 kHz (looptime = 1000), donde 1/2 da 500 Hz. Las comprobaciones de vibración y filtros necesitan al menos 500 Hz. Tres registros de INAV 7.1.2 de nuestro conjunto, de drones de 7 y 5 pulgadas, se grabaron a 1/32, es decir, a 58–60 Hz: solo permiten evaluar el equilibrio de los motores y la batería. Un registro de INAV 8.0 a 1/2 llegó a 995 Hz, con el ruido y los filtros claramente visibles.

Consulta los detalles en la guía de Blackbox para INAV.

ArduPilot y PX4 en pocas palabras

ArduPilot. Sin los datos rápidos de LOG_BITMASK (el valor predeterminado no incluye ninguno), ArduCopter registra el giroscopio a 25 Hz, como ocurrió en los diez registros de ArduCopter de nuestro conjunto, desde 4.1 hasta 4.8-dev. Para analizarlo, activa el bit 0 (ATTITUDE_FAST) y el bit 19 (IMU_RAW) en LOG_BITMASK, además de INS_RAW_LOG_OPT = 9 en 4.5 o posterior para registrar el giroscopio antes y después del filtrado. Las RPM vienen de la telemetría ESC o de DShot bidireccional (SERVO_BLH_BDMASK). Usa el archivo .bin de la tarjeta SD (APM/LOGS), no un .tlog. Para los PID de ArduCopter, la función AUTOTUNE integrada es más fiable; usa el registro para analizar vibraciones y filtros. Consulta la guía de análisis de registros de ArduPilot.

PX4. Añade los bits 4 (High rate) y 8 (Raw FIFO gyro) a SDLOG_PROFILE: desde el valor predeterminado 1, el resultado es 273. También puedes ejecutar param set SDLOG_PROFILE 273 en la MAVLink Console de QGroundControl y reiniciar: el perfil se lee al arrancar. El archivo .ulg está en Analyze Tools → Log Download. Consulta la guía de PX4 ULog.

El vuelo de prueba

En freestyle estas maniobras salen por casualidad; un vuelo de prueba de 1.5 a 2 minutos te permite hacer deliberadamente entre 6 y 8 de cada una:

  1. Antes de despegar. Hélices nuevas, batería cargada, flash borrada e interruptor BLACKBOX activado si usas uno.
  2. Modo Acro. Angle y Horizon impiden evaluar la respuesta escalón y el rebote.
  3. 30 segundos en estacionario y de crucero suave; luego, si tienes espacio, sube lentamente el gas durante 5 segundos, desde estacionario hasta el 100%, para obtener el mapa de ruido frente al gas.
  4. Entre 6 y 8 flips o rolls por eje, además de giros de yaw. Devuelve el stick al centro de golpe, en menos de 0.2 s, y mantenlo ahí medio segundo. Se cuentan maniobras desde 150 deg/s en roll y pitch y 120 deg/s en yaw; se descarta una vuelta lenta al centro.
  5. Entre 6 y 8 punch-outs desde estacionario (aproximadamente 30% de gas y siempre por debajo del 70%): recorre más de una cuarta parte del gas en 0.2 s. No muevas roll ni pitch; el punch-out no cuenta si el setpoint supera 80 deg/s.
  6. Entre 6 y 8 cortes de gas en línea recta: sube, corta el gas a cero y deja los sticks centrados durante alrededor de un segundo. El corte cuenta si el gas estaba por encima del 35% y cayó más del 25% en 0.15 s. No hagas un flip justo después: en un registro a 2 kHz, 12 de 15 cortes pasaron directamente a un flip o roll, y solo quedaron 3 útiles para analizar propwash.
  7. Aterrizaje. Aterriza con suavidad, sin cortar el gas justo por encima del suelo: se excluye del análisis de propwash todo corte que termine en un impacto.

Un dron grande no necesita flips; bastan inclinaciones breves y bruscas de los sticks a una altura segura. La duración por sí sola no garantiza nada: cinco minutos de vuelo normal en un dron de 7 pulgadas dieron 5 cortes de gas (uno limpio), 1 punch-out y 1 parada brusca de roll.

Setpoint y gas durante todo un vuelo con marcas en los cortes de gas, los punch-outs y las paradas bruscas de los sticks detectados
Un vuelo de 195 segundos en un dron de 3.5 pulgadas (Betaflight 4.5.2), tal como lo ve bbdoctor. Arriba: setpoint de roll (azul) y pitch (naranja); las marcas superiores indican las paradas del stick contabilizadas para el rebote: 12 en roll, 6 en pitch y 26 en yaw (verde). Abajo: gas. Triángulos rojos: 63 cortes, 38 limpios, 24 seguidos de un flip o roll y uno descartado por impacto o aterrizaje. Triángulos verdes: 15 punch-outs contabilizados de 48 subidas bruscas del gas; en los demás se estaban moviendo los sticks. Los primeros ~28 s son de estacionario estable.

Cómo descargar el registro

En Betaflight e INAV, usa Save flash to file en la pestaña Blackbox o el modo Mass Storage para que la controladora aparezca como una unidad. Si usas una tarjeta SD, copia el archivo. Los archivos de INAV suelen terminar en .TXT; ArduPilot usa .bin y PX4, .ulg.

Un archivo puede contener varios vuelos, uno por cada armado; nuestro conjunto incluye un archivo de Betaflight 2026.6 con 66 vuelos. Por defecto, bbdoctor toma el vuelo más largo (el número 58 en ese archivo), y el informe te permite elegir cualquier otro.

Errores frecuentes

SíntomaCausaSolución
Registro vacío o sin ningún vueloInterruptor BLACKBOX apagado, blackbox_device = NONE o flash llenaRevisa Modes y Blackbox y borra la flash
El registro se detiene a mitad del vueloFlash llena: el archivo mide exactamente 8 o 16 MBBorra la flash antes de volar y haz vuelos de 1 a 2 minutos
«Huecos en la grabación»Tarjeta SD lenta o frecuencia demasiado altaUsa una tarjeta fiable; si no basta, baja un paso el divisor
«El setpoint no se registra»blackbox_disable_setpoint = ONset blackbox_disable_setpoint = OFF
No hay veredicto PIDMás de la mitad del vuelo en Angle/HorizonHaz un vuelo de prueba en Acro
Registro de INAV a 60 Hzblackbox_rate_denom demasiado altoUsa 1/2 para el vuelo de prueba
INAV: «faltan los comandos de motor»Campo MOTORS desactivadoblackbox MOTORS
No hay RPMDShot bidireccional desactivado, Betaflight anterior a 4.5 o blackbox_disable_rpm = ONActiva DShot bidireccional, actualiza y vuelve a activar el campo
Un cambio de filtro «corrige» los picos del espectroMotores por encima de ~475 Hz en un registro a 1 kHz: frecuencias reflejadasUsa un divisor para obtener ~2 kHz (1/2 con un ciclo de 4 kHz) y crea un registro nuevo

Comprueba el registro automáticamente

Sube el archivo a bbdoctor; es gratis y no necesitas una cuenta. Primero comprueba el registro: tiempo de vuelo, huecos y frames perdidos, final cortado, giroscopio raw, RPM y setpoint, frecuencia de registro frente a la frecuencia máxima del motor y tiempo en modos de autoestabilización. El informe indica qué falta e incluye comandos para tu versión del firmware. Consulta el informe de ejemplo.

También puedes comprobar los ajustes antes de volar: pega tu diff all en la comprobación de configuración. Esta detecta si Blackbox está desactivado, si el divisor es 1/8 o 1/16, si hay campos desactivados, si falta GYRO_SCALED en las versiones 4.0–4.4 y si INAV tiene una frecuencia baja o no registra GYRO_RAW. Para interpretar el registro final, consulta cómo leer un registro de Blackbox.

Preguntas frecuentes

¿Qué frecuencia de registro de Blackbox debo usar?

Aproximadamente 2 kHz: blackbox_sample_rate = 1/4 con un ciclo PID de 8 kHz, 1/2 con 4 kHz y 1/1 con 3.2 kHz (giroscopio BMI270). Los quads grandes cuyos motores no superan unos 450 Hz funcionan bien a 1 kHz, pero en un quad de 3 a 3.5 pulgadas con 4S y en muchas configuraciones con 6S, un registro a 1 kHz ya muestra picos falsos en el espectro.

¿Por qué mi registro de Blackbox está vacío?

Lo más habitual es que el modo BLACKBOX esté asignado a un interruptor que estaba apagado, que la memoria flash estuviera llena o que blackbox_device esté en NONE. Revisa las pestañas Modes y Blackbox, borra la flash antes del vuelo y vuela al menos entre 30 y 60 segundos.

¿Necesito debug_mode en Betaflight 4.5 o 2025.12?

No. Desde la versión 4.5, el giroscopio sin filtrar y las RPM de los motores tienen sus propios campos de registro, y con debug_mode = NONE no se escriben campos de depuración. GYRO_SCALED solo hace falta en las versiones 4.0 a 4.4.

¿Cuánto dura la flash integrada a 2 kHz?

En nuestros registros, a 1 kHz y con todos los campos se ocupan 34 KB/s sin campos de depuración y 41–43 KB/s con ellos; a 2 kHz, entre 58 y 70 KB/s. Una flash de 8 MB se llena en unos 3 o 4 minutos a 1 kHz y en unos 2 minutos a 2 kHz; una de 16 MB dura el doble.

Actualizado:

Más guías