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).
Как пользоваться
- Снимите пропеллеры. Любые работы с регуляторами — только на столе.
- Подключите полётный контроллер по USB и нажмите «Подключить полётный контроллер» — инструмент прочитает вариант прошивки, версию и плату.
- (Опционально) «Прочитать RPM» — обороты моторов по данным esc-sensor полётного контроллера (INAV с настроенной телеметрией ESC). Если esc-sensor не настроен, инструмент честно скажет «телеметрия недоступна».
- Нажмите «Войти в passthrough» — полётный контроллер переключится в режим 4-way и покажет число выходов ESC.
- Подключите аккумулятор к борту. Регуляторы, включённые уже после входа в passthrough, остаются в загрузчике (мотор не крутится) и готовы к чтению.
- Нажмите «Прочитать ESC N» у нужного регулятора: инструмент подключится к его загрузчику и определит семейство прошивки. Для AM32, BLHeli_S и Bluejay читается полный блок настроек; для легаси BLHeli на Atmel и SiLabs C2 регулятор только опознаётся (сигнатура + режим интерфейса) — честное сообщение поясняет, что открытого описания их раскладки у нас нет.
- По окончании — «Выйти из 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 — не «пока», а требование безопасности: ошибка в разборе раскладки при ЧТЕНИИ означает неверную строчку на экране, а при ЗАПИСИ — испорченный регулятор. В коде нет даже функции, собирающей настройки обратно в байты. Запись появится отдельным решением и только после проверки чтения на реальном железе.