ESC-конфигуратор: AM32, BLHeli_S и Bluejay через полётный контроллер (только чтение)

Обновлено: 2026-11-12
На этой странице

ESC-конфигуратор: AM32, BLHeli_S и Bluejay через полётный контроллер

Инструмент /tools/esc-connect подключается к полётному контроллеру по USB (Web Serial), переводит его в passthrough к регуляторам (протокол «4-way interface» — тот же механизм, которым пользуются BLHeliSuite и esc-configurator) и определяет семейство прошивки каждого ESC (единый конфигуратор вместо отдельной тулы на вендора). Настройки AM32, BLHeli_S и Bluejay читаются в полном объёме, плюс RPM-телеметрия. Ничего не устанавливается, данные не покидают ваш компьютер: весь обмен идёт локально между браузером и платой.

⚗️ Экспериментально · предальфа. Нужен десктопный Chrome или Edge, открытый по HTTPS (Firefox, Safari и мобильные Web Serial не поддерживают). Перед подключением закройте INAV/Betaflight Configurator и другие ESC-тулы — они держат COM-порт. Инструмент скрыт за фича-флагом esc_tools (включён по умолчанию; администратор может выключить конкретное окружение в /admin/flags).

v1 — только чтение

По решению основателя первая версия — строго read-only:

  • никакой записи настроек, никакого стирания, никакой прошивки — ни для AM32, ни для BLHeli_S/Bluejay;
  • в протокольном кодеке команды записи не реализованы вообще — испортить («окирпичить») регулятор этим инструментом технически нельзя;
  • единственные «активные» команды — перезапуск регулятора из загрузчика обратно в рабочую прошивку и выход полётного контроллера из passthrough (уборка после чтения, настроек они не меняют).

Что читается по семействам:

Семейство Опознаётся Настройки читаются
AM32 (ARM) да да, полная раскладка EEPROM
BLHeli_S / Bluejay (SiLabs) да да, каждая по своей раскладке
BLHeli на Atmel (легаси 8-бит) да нет — открытого описания раскладки нет
SiLabs C2 (отладочный интерфейс) да нет

Запись настроек и прошивка — кандидаты на следующие версии. BLHeli_32 поддерживаться не будет: протокол закрыт, программа лицензирования остановлена производителем (EOL).

Как пользоваться

  1. Снимите пропеллеры. Любые работы с регуляторами — только на столе.
  2. Подключите полётный контроллер по USB и нажмите «Подключить полётный контроллер» — инструмент прочитает вариант прошивки, версию и плату.
  3. (Опционально) «Прочитать RPM» — обороты моторов по данным esc-sensor полётного контроллера (INAV с настроенной телеметрией ESC). Если esc-sensor не настроен, инструмент честно скажет «телеметрия недоступна».
  4. Нажмите «Войти в passthrough» — полётный контроллер переключится в режим 4-way и покажет число выходов ESC.
  5. Подключите аккумулятор к борту. Регуляторы, включённые уже после входа в passthrough, остаются в загрузчике (мотор не крутится) и готовы к чтению.
  6. Нажмите «Прочитать ESC N» у нужного регулятора: инструмент подключится к его загрузчику и определит семейство прошивки. Для AM32, BLHeli_S и Bluejay читается полный блок настроек; для легаси BLHeli на Atmel и SiLabs C2 регулятор только опознаётся (сигнатура + режим интерфейса) — честное сообщение поясняет, что открытого описания их раскладки у нас нет.
  7. По окончании — «Выйти из passthrough»: регуляторы перезапустятся в рабочую прошивку, полётный контроллер вернётся в обычный режим MSP.

Что показывается

  • Регулятор: сигнатура микроконтроллера, режим интерфейса (ARM BLB — AM32; SiLabs BLB — BLHeli_S/Bluejay; Atmel BLB/SK — легаси BLHeli; SiLabs C2 — отладочный интерфейс) и сырые байты ответа.
  • Настройки AM32: версия прошивки, версия EEPROM-раскладки, имя таргета и таблица настроек (направление вращения, 3D-режим, timing advance, частота PWM, KV и полюса мотора, тормоз, пороги отсечки по напряжению, лимиты тока и температуры и др.). Для каждого поля показан сырой байт, производная величина — только там, где формула описана в открытой документации AM32.
  • Настройки BLHeli_S/Bluejay: версия прошивки, ревизия EEPROM-раскладки, имя регулятора и таблица настроек (направление вращения, опережение коммутации, компенсация размагничивания, пороги газа, защита по температуре, тормоз на нуле газа и др.; у Bluejay — свои поля: минимальная и максимальная стартовая мощность, частота PWM, сила торможения, класс питания). У каждого поля показан сырой байт; расшифровка — только там, где значение описано в исходниках прошивки. Значение, которого в описании нет, показывается числом, а не «похожим» вариантом. BLHeli_S и Bluejay разбираются по РАЗНЫМ таблицам: Bluejay использует часть тех же байт под другой смысл, и общая таблица показала бы неправду. Если регулятор сообщает незнакомую ревизию раскладки (например, старая версия прошивки), настройки не расшифровываются вовсе — вы увидите номер ревизии и сырой дамп. Это сделано намеренно: неверно расшифрованная настройка выглядит достовернее, чем её отсутствие.
  • Сырой дамп: полный HEX-дамп прочитанного блока — инструмент ничего не выдумывает: байты, не описанные в источнике, видны только здесь. Если структура блока не распознана, показывается только дамп с честной пометкой.
  • Легаси BLHeli на Atmel и SiLabs C2: только идентификация (сигнатура + режим интерфейса) — без таблицы настроек: открытого описания их раскладки у нас нет.

Привязка прочитанного к записи регулятора

Когда настройки разобраны, под таблицей появляется блок «Привязать настройки к записи регулятора»: выберите запись из реестра «Регуляторы» и нажмите Привязать — снимок (семейство прошивки, её версия, версия раскладки настроек и сама таблица) сохранится в этой записи и будет виден на её карточке.

  • Снимок замещает предыдущий: запись хранит последнее прочитанное состояние, а не историю чтений.
  • Заодно он дозаполняет пустые поля записи — семейство прошивки, версию и номер мотора (из номера регулятора в этой сессии). То, что вы ввели руками, чтение не перетирает; номер, уже занятый другим регулятором того же борта, не подставляется.
  • В регулятор при этом по-прежнему не пишется ничего — сохраняется только запись у вас в Ангаре.
  • Записей в реестре ещё нет — блок так и скажет; завести запись можно на странице «Регуляторы».

Приватность и лицензии

Обмен с полётным контроллером и регуляторами идёт локально в браузере. Сам по себе инструмент на сервер ничего не отправляет — единственное исключение вы запускаете сами: кнопка «Привязать» сохраняет снимок настроек в ВАШУ запись Ангара (см. раздел выше). Ни автоматической отправки, ни отправки куда-либо наружу нет. Протоколы (MSP passthrough, 4-way interface, раскладка EEPROM AM32, классификация семейства прошивки) реализованы clean-room по открытым описаниям, без заимствования кода из GPL/AGPL-проектов — подробности в ADR docs/adr/ad-856-esc-clean-room.md.

Откуда взята раскладка BLHeli_S/Bluejay: из опубликованных исходников самих прошивок — они и есть первоисточник этого формата данных. Конкретные файлы названы прямо в исходном коде инструмента (web/static/js/tools/esc_blheli.js) и сведены в таблицу в docs/research/esc-protocols-am32.md § 5.1. Код при этом написан с нуля: из GPL/AGPL-проектов (BLHeliSuite, esc-configurator.com) не заимствовано ни строки, и как источник раскладки они не использовались.

Почему инструмент не пишет в регулятор и не будет этого делать в этой версии. Read-only — не «пока», а требование безопасности: ошибка в разборе раскладки при ЧТЕНИИ означает неверную строчку на экране, а при ЗАПИСИ — испорченный регулятор. В коде нет даже функции, собирающей настройки обратно в байты. Запись появится отдельным решением и только после проверки чтения на реальном железе.