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ón | Campos del registro | Frecuencia | Qué volar |
|---|---|---|---|
| Vibración por motor: qué motor o hélice vibra | giroscopio sin filtrar + eRPM | ~250 Hz o más; funciona incluso por encima de Nyquist | medio minuto de vuelo estable con distintos niveles de gas |
| Ruido y filtros, resonancias del frame | giroscopio sin filtrar y filtrado | 500 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 contiene | motor, axisP, axisD, axisF | 500 Hz o más | cualquier vuelo |
| Respuesta escalón y latencia | setpoint + giroscopio | 200 Hz o más | Acro; 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» |
| Propwash | setpoint, gas | 200 Hz o más | al menos 3 cortes limpios, 5 para un veredicto fiable |
| Rebote después de flips | setpoint, axisP/I/D/F | 200 Hz o más | más de 6 paradas bruscas del stick por eje |
| Caída en punch-out (anti-gravity) | setpoint, gas, axisI | 100 Hz o más | más de 6 punch-outs con los demás sticks centrados |
| Caída de tensión y resistencia de la batería | vbat; también un sensor de corriente para calcular la resistencia | cualquiera | para 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 crashes | acelerómetro, giroscopio, RSSI/failsafe, eRPM, vbat | cualquiera | — |
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.

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 PID | Predeterminado (1/4) | Configura | Resultado |
|---|---|---|---|
| 8 kHz | 2 kHz | 1/4 | 2 kHz |
| 4 kHz | 1 kHz | 1/2 | 2 kHz |
| 3.2 kHz (BMI270) | 800 Hz | 1/1 | 3.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
- Se omite
blackbox_devicepara que el bloque no interfiera con el registro en SD. Comprueba tú ese ajuste:SPIFLASHpara la flash integrada,SDCARDpara una ranura microSD yNONEpara no registrar nada. blackbox_mode = NORMALregistra desde que armas hasta que desarmas; si asignas un modo BLACKBOX en la pestaña Modes, solo registra mientras ese interruptor está activado.- El giroscopio raw y las RPM tienen campos propios, así que no hace falta un modo de depuración; con
debug_mode = NONEno se escriben esos campos. - El campo de RPM solo existe si activas DShot bidireccional (ver abajo).
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.
- Conserva gyro y motors: no se acepta un registro sin el giroscopio o los comandos de motor.
- Conserva setpoint y pids: hacen falta para calcular una respuesta escalón precisa y separar el rebote en P, I, D y FF.
- Conserva rc: permite medir el retardo del suavizado de sticks (rcCommand → setpoint) y reconstruye el setpoint si ese campo está desactivado.
- Conserva acc: sirve para detectar impactos en el análisis de crashes.
- Conserva bat: permite analizar la caída de tensión, la resistencia de la batería y la pérdida de potencia como posible causa del crash.
- Conserva rssi, si configuraste RSSI: ayuda a detectar la pérdida de enlace antes de un crash.
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.
blackbox GYRO_RAWañade el giroscopio raw yblackbox MOTORS, los comandos de motor. Se rechazaron dos registros de INAV 7 que tenían MOTORS desactivado.- INAV no registra las RPM de cada motor, así que no se puede evaluar la vibración por motor.
- Un registro de INAV 8.0 volado un 78% del tiempo en Angle/Horizon no obtuvo un veredicto PID.
- Un registro de INAV 6.1 tenía un 27% de frames corruptos. bbdoctor los descarta y marca como poco fiables sus hallazgos de PID y ruido; vuelve a volar si obtienes un registro así.
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:
- Antes de despegar. Hélices nuevas, batería cargada, flash borrada e interruptor BLACKBOX activado si usas uno.
- Modo Acro. Angle y Horizon impiden evaluar la respuesta escalón y el rebote.
- 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.
- 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.
- 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.
- 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.
- 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.

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íntoma | Causa | Solución |
|---|---|---|
| Registro vacío o sin ningún vuelo | Interruptor BLACKBOX apagado, blackbox_device = NONE o flash llena | Revisa Modes y Blackbox y borra la flash |
| El registro se detiene a mitad del vuelo | Flash llena: el archivo mide exactamente 8 o 16 MB | Borra la flash antes de volar y haz vuelos de 1 a 2 minutos |
| «Huecos en la grabación» | Tarjeta SD lenta o frecuencia demasiado alta | Usa una tarjeta fiable; si no basta, baja un paso el divisor |
| «El setpoint no se registra» | blackbox_disable_setpoint = ON | set blackbox_disable_setpoint = OFF |
| No hay veredicto PID | Más de la mitad del vuelo en Angle/Horizon | Haz un vuelo de prueba en Acro |
| Registro de INAV a 60 Hz | blackbox_rate_denom demasiado alto | Usa 1/2 para el vuelo de prueba |
| INAV: «faltan los comandos de motor» | Campo MOTORS desactivado | blackbox MOTORS |
| No hay RPM | DShot bidireccional desactivado, Betaflight anterior a 4.5 o blackbox_disable_rpm = ON | Activa DShot bidireccional, actualiza y vuelve a activar el campo |
| Un cambio de filtro «corrige» los picos del espectro | Motores por encima de ~475 Hz en un registro a 1 kHz: frecuencias reflejadas | Usa 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: