Налаштуй Blackbox у Betaflight: запиши лог, який можна діагностувати
Blackbox записує гіроскоп, стіки й setpoint, складові PID, мотори, RPM, напругу та струм. Але лог із заводськими налаштуваннями часто показує дуже мало. Приклади з проаналізованих нами логів: 3,5-дюймовий дрон на Betaflight 4.5.2 записував 1 кГц, а мотори розкручувалися до 644 Гц; лог Betaflight 2026.6 мав частоту 247 Гц без сирого гіроскопа й RPM; 7-дюймовий дрон на 4.6 записував 2 кГц на SD-карту з 182 пропусками; лог INAV 7.1 на 58 Гц нічого не говорить про вібрації.
Що потрібно для кожної перевірки
Порогові значення взято безпосередньо з коду аналізатора; нижче них перевірка нічого не повідомляє або позначає недостатню кількість даних.
| Перевірка | Поля логу | Частота запису | Що виконати в польоті |
|---|---|---|---|
| Вібрація кожного мотора: який мотор або пропелер тремтить | нефільтрований гіроскоп + eRPM | ~250 Гц і вище; працює навіть за межами Найквіста | пів хвилини рівного польоту з різним газом |
| Шум, фільтри, резонанси рами | нефільтрований і фільтрований гіроскоп | 500 Гц і вище; точна частота резонансу при 1/1 (або від 2 кГц для резонансів нижче 500 Гц) | висіння та повільне збільшення газу до 100% |
| Шум моторів і складова PID, у якій він з'являється | motor, axisP, axisD, axisF | 500 Гц і вище | будь-який політ |
| Перехідна характеристика (step response) і затримка | setpoint + гіроскоп | 200 Гц і вище | Acro; понад 10 придатних вікон тривалістю секунду зі стіком від 20 град/с, 50 для вердикту «критично» |
| Пропвош | setpoint, газ | 200 Гц і вище | щонайменше 3 чистих скидання газу, 5 для впевненого висновку |
| Відскок після фліпів | setpoint, axisP/I/D/F | 200 Гц і вище | понад 6 різких зупинок стіком на кожній осі |
| Просідання під час панчу (anti-gravity) | setpoint, газ, axisI | 100 Гц і вище | понад 6 панчів з іншими стіками по центру |
| Просідання напруги й опір акумулятора | vbat; для опору також датчик струму | будь-яка | для опору — понад 5 вікон по секунді зі зміною струму від 8 А |
| Аналіз крашу | акселерометр, гіроскоп, RSSI/failsafe, eRPM, vbat | будь-яка | — |
Якщо політ тривав менше 10 секунд, усі висновки щодо тюнінгу знижуються до рівня «інформація» й команди CLI прибираються; відскок і панчі не вимірюються. Якщо понад половину польоту ти був у режимі Angle або Horizon, перевірки step response і відскоку пропускаються: у цих режимах стік задає кут, а не швидкість обертання.
Частота запису й аліасинг
Чому 1 кГц вводить в оману на малих дронах
Лог, записаний із частотою N Гц, показує вібрації лише до частоти Найквіста N/2. Швидші коливання не зникають, а віддзеркалюються нижче цієї межі. Мотор на 644 Гц у лозі 1000 Гц з'являється на частоті 1000 − 644 = 356 Гц. У спектрі виникає виразний пік там, де нічого не відбувається: його легко сплутати з причиною для неправильно підібраного notch або фільтра.
У трьох логах VX3.5 на Betaflight 4.5.2 (цикл PID 4 кГц, 1/4, тобто 1 кГц) пікові частоти моторів становили 583, 605 і 644 Гц — щоразу вище 500 Гц. На рисунку той самий ефект для іншого дрона: лог 2 кГц, у якому залишено кожен четвертий кадр, саме так працює blackbox_sample_rate, без попередньої фільтрації.

bbdoctor вимірює вібрацію кожного мотора за фазою його обертання (eRPM), тому визначає, куди потрапляє віддзеркалена копія, і ця перевірка працює навіть при 1 кГц; спектр шуму й резонанси відновити не вдасться. Коли пікові RPM у лозі Betaflight перевищують 95% частоти Найквіста, звіт додає «Частота запису нижча за частоту моторів» і вказує правильний дільник як команду.
Вибір blackbox_sample_rate
Починаючи з 4.3, частота є дільником циклу PID: 1/1, 1/2, 1/4, 1/8 або 1/16; типове значення — 1/4. bbdoctor обирає найбільший дільник, за якого лишається щонайменше 2 кГц:
| Цикл PID | Типове значення (1/4) | Встановити | Результат |
|---|---|---|---|
| 8 кГц | 2 кГц | 1/4 | 2 кГц |
| 4 кГц | 1 кГц | 1/2 | 2 кГц |
| 3,2 кГц (BMI270) | 800 Гц | 1/1 | 3,2 кГц |
Частоту циклу знайдеш на вкладці Configuration. Не кожній збірці потрібно 2 кГц: bbdoctor просить підвищити частоту лише тоді, коли мотори обертаються швидше за частоту запису. У наших даних 7-дюймовий дрон 6S жодного разу не перевищив 315 Гц, тож йому вистачило б 1 кГц. 3–3,5-дюймовий дрон 4S зазвичай перевищує цю межу навіть при 1 кГц, та й не лише він: у чотирьох логах 1 кГц із дрона 6S на 4.5.1 мотори досягали 529–554 Гц. На BMI270 режим 1/1 найшвидше заповнює flash; якщо місця мало, 1/2 (1,6 кГц) покриває мотори приблизно до 760 Гц. 1/8 і 1/16 непридатні для аналізу (500 і 250 Гц для циклу 4 кГц), і перевірка конфігурації позначить їх.
Місце у flash
Розміри файлів у наших даних: при 1 кГц з усіма полями — приблизно 34 КБ/с без debug-полів і 41–43 КБ/с із увімкненим режимом debug; при 2 кГц — 58–70 КБ/с. Flash на 8 МБ вистачає приблизно на 3–4 хвилини при 1 кГц і на 2 хвилини при 2 кГц. На тому VX3.5 (debug_mode = GYRO_SCALED) flash на 8 МБ заповнилася до останнього байта за 195 секунд при 1 кГц, і запис зупинився посеред польоту. bbdoctor виявляє це (обірваний кінець або файл рівно 2, 4, 8 чи 16 МБ) і разом із порадою щодо частоти попереджає, що час запису скоротиться вдвічі.
Тож перед тестом очисть flash (Erase flash на вкладці Blackbox або flash_erase у CLI), виконай тестові польоти по 1–2 хвилини й вимкни непотрібні поля. На SD-карті місця достатньо, але повільна карта пропускає кадри: на 7-дюймовому дроні з Betaflight 4.6 при записі 2 кГц на SD було 182 пропуски. Використовуй якісну, щойно відформатовану карту; якщо пропуски не зникають, знизь частоту на один крок.
Налаштування Betaflight за версіями
4.5 і 2025.12+
Для циклу PID 4 кГц (для 8 кГц використовуй 1/4, для 3,2 кГц — 1/1):
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
blackbox_deviceне вказано, щоб вставлений блок команд не зламав запис на SD. Перевір сам:SPIFLASHдля вбудованої flash,SDCARDдля слота microSD,NONE— нічого не записується.blackbox_mode = NORMALзаписує від армінгу до дізармінгу; якщо на вкладці Modes призначено режим BLACKBOX — лише коли перемикач увімкнено.- Сирий гіроскоп і RPM мають окремі поля, тож режим debug не потрібен; із
debug_mode = NONEdebug-поля не записуються. - Поле RPM доступне лише з увімкненим двонаправленим DShot (див. нижче).
Лог Betaflight 2026.6.1 записувався з дільником 1/16 (247 Гц при циклі 4 кГц), сирий гіроскоп і RPM були вимкнені, хоча двонаправлений DShot працював. У звіті наведено обидві команди, щоб їх знову ввімкнути. У лозі 4.5.1 було вимкнено setpoint: bbdoctor відновлює його зі стіків і rates, оцінка PID виходить менш точною, і звіт про це повідомляє.
4.3–4.4
set blackbox_sample_rate = 1/2
set debug_mode = GYRO_SCALED
save
Обери дільник із таблиці вище. Полів нефільтрованого гіроскопа й RPM ще немає. Дані гіроскопа записуються через debug, а одночасно працює лише один режим debug, тож DSHOT_RPM_TELEMETRY використовувати не можна (bbdoctor усе одно не читає RPM із debug). Навіть якщо двонаправлений DShot працює, рекомендується перейти на 4.5: без RPM не можна визначити незбалансований мотор. Налаштування blackbox_disable_… доступні з 4.3 (rpm і gyrounfilt — з 4.5): перевір, що setpoint не вимкнено.
4.0–4.2
set blackbox_p_ratio = 64
set debug_mode = GYRO_SCALED
save
У цих версіях використовується blackbox_p_ratio. Частота приблизно дорівнює p_ratio × 31,25 Гц: значення 32 дає близько 1 кГц, 64 — близько 2 кГц, але не вище частоти циклу PID. Один лог 4.2.11 у наших даних записувався лише на 534 Гц і до того ж мав 36 пропусків.
Які поля можна вимкнути, а які — ні
blackbox_disable_gps, blackbox_disable_mag і blackbox_disable_alt (барометр) можна безпечно ввімкнути, якщо ти не аналізуєш навігацію. Залиш увімкненими:
- gyro і motors: лог без гіроскопа або команд моторів не приймається;
- setpoint і pids: потрібні для точного step response і розділення відскоку на P, I, D та FF;
- rc: показує затримку згладжування стіків (rcCommand → setpoint) і відновлює setpoint, якщо це поле вимкнене;
- acc: удари для аналізу крашу;
- bat: просідання напруги, опір акумулятора, втрата потужності як причина крашу;
- rssi, якщо RSSI налаштовано: втрата зв'язку перед крашем.
RPM у лозі
RPM надходить через двонаправлений DShot: виконай set dshot_bidir = ON, save, якщо протокол DShot, а на ESC встановлено Bluejay, AM32 або BLHeli_32. Потім зніми пропелери, розкрути мотори повзунками на вкладці Motors і перевір, що RPM відображається, а кількість помилок близька до нуля. Перевір також motor_poles: частота мотора обчислюється з eRPM з урахуванням кількості полюсів. У більшості 5-дюймових моторів 14 полюсів, у деяких малих — 12; якщо вказати неправильно, частота кожного мотора в лозі буде неточною. Докладніше — у посібнику з RPM-фільтра й двонаправленого DShot.
INAV
set blackbox_rate_num = 1
set blackbox_rate_denom = 2
blackbox GYRO_RAW
blackbox MOTORS
save
В INAV частота запису дорівнює частці циклів blackbox_rate_num/blackbox_rate_denom. У INAV 8 і новіших типова частота циклу — 2 кГц (looptime = 500), тож 1/2 дає 1 кГц; у INAV 7 і старіших типова частота — 1 кГц (looptime = 1000), тож 1/2 дає 500 Гц. Для перевірки вібрацій і фільтрів потрібно від 500 Гц. Три логи INAV 7.1.2 з наших даних — 7- і 5-дюймові дрони — записувалися з частотою 1/32, або 58–60 Гц: вони показують лише баланс моторів та акумулятор. Лог INAV 8.0 з частотою 1/2 мав 995 Гц, на ньому добре видно шум і роботу фільтрів.
blackbox GYRO_RAWдодає сирий гіроскоп,blackbox MOTORS— команди моторів. Два логи INAV 7 без MOTORS були відхилені.- INAV не записує RPM окремо для кожного мотора, тому аналіз вібрації кожного мотора недоступний.
- У польоті на INAV 8.0, проведеному на 78% у режимі Angle/Horizon, не вдалося оцінити PID.
- У лозі INAV 6.1 було 27% пошкоджених кадрів. bbdoctor відкидає їх і позначає висновки щодо PID і шуму як ненадійні; повтори такий політ.
Докладніше — у посібнику з Blackbox в INAV.
Коротко про ArduPilot і PX4
ArduPilot. Без швидких полів у LOG_BITMASK (типово жодне не ввімкнено) ArduCopter записує гіроскоп на 25 Гц — так було в усіх десяти логах ArduCopter з наших даних, версії від 4.1 до 4.8-dev. Для аналізу встанови біти 0 (ATTITUDE_FAST) і 19 (IMU_RAW) у LOG_BITMASK, а на версії 4.5+ також INS_RAW_LOG_OPT = 9, щоб отримати гіроскоп до й після фільтрації. RPM надходить із телеметрії ESC або двонаправленого DShot (SERVO_BLH_BDMASK). Використовуй файл .bin із SD-карти (APM/LOGS), а не .tlog. Для PID ArduCopter надійніше використовувати вбудований AUTOTUNE; лог потрібен для аналізу вібрацій і фільтрів. Див. посібник з аналізу логів ArduPilot.
PX4. Додай біти 4 (High rate) і 8 (Raw FIFO gyro) до SDLOG_PROFILE: якщо типове значення 1, встанови 273 через param set SDLOG_PROFILE 273 у MAVLink Console в QGroundControl, а потім перезавантаж контролер: профіль зчитується під час запуску. Файл .ulg знайдеш у Analyze Tools → Log Download. Див. посібник із PX4 ULog.
Тестовий політ
Під час фрістайлу потрібні події трапляються випадково; тестовий політ на 1,5–2 хвилини допоможе цілеспрямовано зібрати по 6–8 кожної:
- Перед зльотом. Нові пропелери, заряджений акумулятор, очищена flash, перемикач BLACKBOX увімкнено, якщо використовуєш його.
- Режим Acro. Angle і Horizon не дадуть перевірити step response і відскок.
- 30 секунд висіння й плавного польоту, а потім, якщо є місце, повільно збільшуй газ від висіння до 100% протягом 5 секунд, щоб побудувати карту шуму залежно від газу.
- 6–8 фліпів або ролів на кожній осі, а також обертання по yaw. Поверни стік у центр менш ніж за 0,2 с і тримай його там пів секунди. Зараховуються рухи від 150 град/с по roll і pitch та від 120 град/с по yaw; повільне повернення в центр не враховується.
- 6–8 панчів із висіння (приблизно 30% газу, завжди нижче 70%): переміщуй газ більш ніж на чверть ходу за 0,2 с. Не чіпай roll і pitch; якщо setpoint перевищує 80 град/с, панч не зараховується.
- 6–8 прямих скидань газу: набери висоту, скинь газ до нуля й тримай стіки по центру приблизно секунду. Скидання зараховується, якщо газ був вище 35% і впав більш ніж на 25% за 0,15 с. Одразу після нього не роби фліпів: в одному лозі 2 кГц 12 із 15 скидань одразу переходили у фліп або рол, тож для аналізу пропвошу залишилося лише 3.
- Посадка. Сідай м'яко, не скидай газ безпосередньо над землею: скидання, що завершилося ударом, не враховується для перевірки пропвошу.
На великому дроні фліпи не потрібні: достатньо коротких і різких нахилів стіком на безпечній висоті. Самої тривалості польоту недостатньо: за п'ять хвилин звичайного польоту на 7-дюймовому дроні було лише 5 скидань газу (одне чисте), 1 панч і 1 різка зупинка roll.

Як перенести лог
У Betaflight та INAV скористайся Save flash to file на вкладці Blackbox або режимом Mass Storage, щоб контролер підключився як диск. Якщо записано на SD-карту, скопіюй файл. Файли INAV часто мають розширення .TXT, ArduPilot — .bin, PX4 — .ulg.
Один файл може містити багато польотів — по одному на кожен армінг; серед наших є файл Betaflight 2026.6 із 66 польотами. Типово bbdoctor аналізує найдовший (у цьому файлі — номер 58), але у звіті можна вибрати будь-який інший.
Поширені помилки
| Симптом | Причина | Виправлення |
|---|---|---|
| Порожній лог або в ньому немає польоту | перемикач BLACKBOX вимкнений, blackbox_device = NONE, flash уже заповнена | перевір Modes і Blackbox, очисть flash |
| Лог зупиняється посеред польоту | flash заповнена: розмір файла рівно 8 або 16 МБ | очищай перед польотом, літай по 1–2 хвилини |
| «Пропуски в записі» | повільна SD-карта або зависока частота | якісна карта, інакше знизь частоту на один крок |
| «Setpoint не записано в лог» | blackbox_disable_setpoint = ON | set blackbox_disable_setpoint = OFF |
| Немає висновку щодо PID | понад половину польоту проведено в Angle/Horizon | тестовий політ у Acro |
| Лог INAV на 60 Гц | завелике значення blackbox_rate_denom | 1/2 для тестового польоту |
| INAV: «немає команд моторів» | поле MOTORS вимкнене | blackbox MOTORS |
| Немає RPM | двонаправлений DShot вимкнений, Betaflight старіший за 4.5 або blackbox_disable_rpm = ON | увімкни двонаправлений DShot, онови прошивку, знову ввімкни поле |
| Піки спектра, які «виправляються» зміною фільтра | мотори швидші за ~475 Гц у лозі 1 кГц: віддзеркалені частоти | встанови дільник для ~2 кГц (1/2 при циклі 4 кГц) і запиши новий лог |
Автоматично перевір лог
Завантаж файл у bbdoctor — це безкоштовно й без реєстрації. Спершу сервіс перевіряє сам лог: тривалість польоту, пропуски й втрачені кадри, обірваний кінець, сирий гіроскоп, RPM і setpoint, частоту запису щодо пікової частоти моторів і час у режимі стабілізації. Про всі проблеми буде повідомлено з командами для твоєї версії прошивки. Див. приклад звіту.
Налаштування можна перевірити до польоту: встав свій diff all у перевірку конфігурації. Вона позначить вимкнений Blackbox, дільник 1/8 або 1/16, вимкнені поля, відсутній GYRO_SCALED у версіях 4.0–4.4, а в INAV — низьку частоту або відсутній GYRO_RAW. Про готовий лог читай у посібнику як читати лог Blackbox.
Часті запитання
Яку частоту запису Blackbox обрати?
Приблизно 2 кГц: blackbox_sample_rate = 1/4 для циклу PID 8 кГц, 1/2 для 4 кГц і 1/1 для 3,2 кГц (гіроскоп BMI270). Для великих квадрокоптерів, у яких мотори не розкручуються вище приблизно 450 Гц, достатньо 1 кГц. Але на 3–3,5-дюймовому дроні 4S і багатьох збірках 6S спектр уже на лозі 1 кГц показує хибні піки.
Чому мій лог Blackbox порожній?
Зазвичай режим BLACKBOX призначено на вимкнений перемикач, пам'ять flash уже заповнена або blackbox_device має значення NONE. Перевір вкладки Modes і Blackbox, перед польотом очисть flash і літай щонайменше 30–60 секунд.
Чи потрібен debug_mode у Betaflight 4.5 або 2025.12?
Ні. Починаючи з 4.5, нефільтрований гіроскоп і RPM моторів мають окремі поля логу, а з debug_mode = NONE поля debug взагалі не записуються. GYRO_SCALED потрібен лише у версіях 4.0–4.4.
На скільки вистачає вбудованої flash-пам'яті за 2 кГц?
У наших логах 1 кГц з усіма полями займає 34 КБ/с без debug-полів і 41–43 КБ/с із ними, а 2 кГц — 58–70 КБ/с. Пам'ять на 8 МБ заповнюється приблизно за 3–4 хвилини при 1 кГц і за 2 хвилини при 2 кГц; 16 МБ вистачає вдвічі довше.
Оновлено: