FPV CLUB
Продвинутая практика ExpressLRS

hardware.json и firmware.bin: что можно редактировать

Интерактивный маршрут для ExpressLRS 4.x на ESP‑устройствах: исправить подтверждённую разводку DIY‑платы, проверить записанный layout или воспроизводимо пересобрать прошивку. Старые ветки вынесены отдельно.

ELRS 4.x · ESP ELRS 3.x · legacy‑ветка не инструкция по hex‑правке

Если для точной модели и ревизии есть штатный target, сначала используйте его. Изменение layout не превращает SX1280 в SX127x, ESP8285 в ESP32 и 100‑мВт тракт в 1 Вт. Ошибка в GPIO питания, PA/LNA или RF‑переключателе может не просто убрать связь, а повредить устройство.

Сначала определяем ветку

К какому устройству относится инструкция

Развилка нужна здесь обязательно: одинаковое имя файла не означает одинаковую архитектуру.

ESP8285 / ESP8266Основная ветка этого материала: Hardware Layout Web UI 4.x и подготовленный для способа обновления firmware.
ESP32 / C3 / S3Основная ветка этого материала: точный layout зависит от MCU, RF‑чипа и target.
STM32Отдельная legacy‑ветка ELRS 3.x. Разводка target‑специфична; ELRS 4.x STM32 не поддерживает.
SPI RX в FC/AIOОтдельный firmware приёмника не прошивается: ELRS обновляется вместе с прошивкой FC.

LR1121: layout главного ESP‑контроллера и внутренняя прошивка самого RF‑чипа LR1121 — разные вещи. Ручная прошивка LR1121 в Web UI в этот гайд не входит.

Почему встречаются разные hardware.json

Не «скрещивайте» файлы только потому, что у них одинаковые ключи. В одной сборке layout проходит несколько слоёв:

Базовый layoutlayout_file из снимка официального репозитория Targets выбранного релиза.
Target‑overlayДобавления или переопределения записи устройства в targets.json, если они заданы для target.
Встроенный layoutИтоговая конфигурация, вложенная в конкретный firmware.bin при подготовке сборки.
Runtime‑файлФактический /hardware.json, прочитанный с устройства после Save → Reboot.

Эти файлы не обязаны совпадать побайтно. Порядок ключей может измениться, а итоговый runtime‑layout уже учитывает target. Для проверки сравнивайте разобранные значения одной версии и обязательно читайте файл обратно с устройства.

Интерактивный выбор

Что именно вы хотите изменить?

Выберите реальную задачу. В большинстве случаев готовый бинарник редактировать вообще не нужно.

работает в браузере
Жду выбор Начните с задачи, а не с файла

hardware.json, параметры сборки и исходный код решают разные проблемы. Мастер покажет самый короткий безопасный путь.

До первого изменения

Комплект возврата назад

Копия без подписи почти бесполезна. Сохраняйте модель, ревизию платы, версию ELRS и дату вместе с файлами.

Минимум перед редактированием
0 из 7
Где взять фактический layout
ELRS 4.x: Web UI → Hardware Layout → Download. Если кнопка недоступна, откройте адрес устройства с окончанием /hardware.json. После изменения скачайте файл ещё раз уже после Reboot.
firmware.bin — не полный backup flash.
Скачанный application‑image не заменяет bootloader, partitions и файловую систему; актуальные /hardware.json и /options.json могут храниться отдельно. Бинарник способен содержать UID и Wi‑Fi‑данные — не публикуйте его.
Комплект воспроизводимости

Собрать recovery‑manifest

Страница посчитает размер и SHA‑256 выбранных файлов и соберёт одну карточку восстановления. Файлы обрабатываются только в этой вкладке.

локальный SHA‑256
Файлы комплекта *

Добавьте исходный и прочитанный обратно hardware.json, firmware‑artifact, Build Log или diff исходников. Файлы не загружаются на сервер.

Заполните обязательные поля и добавьте хотя бы один файл.

До и после записи

Исходник → кандидат → прочитано обратно

Сначала инструмент покажет намеренные изменения, затем сравнит кандидат с файлом, который устройство реально вернуло после Save → Reboot. Так видны отброшенные, нормализованные или неожиданно изменённые поля.

данные не отправляются

Не вставляйте options.json с Wi‑Fi‑данными.

Сначала сравните два файла, но не считайте это проверкой записи.

Без этого поля результат останется предварительным.

Карта layout

Какие группы полей вы затрагиваете

Имена меняются между MCU, RF‑семействами и версиями. Берите поля из layout того же релиза и той же аппаратной семьи, а не придумывайте новые.

Источник схемы: сверяйте ключи с официальным парсером hardware.json выбранного release tag. Ниже перечислены актуальные имена ветки ExpressLRS 4.x.

Связь с FC или пультомserial_rx serial_tx serial1_rx serial1_tx

Основной и дополнительный последовательные интерфейсы используют только эти имена; префикса «uart_» в текущей схеме нет.

стендовый риск
SPI радиочипаradio_miso radio_mosi radio_sck radio_nss radio_dio1 radio_busy radio_rst

Неверный вывод обычно делает RF‑чип невидимым; на dual‑radio встречаются поля с суффиксом _2.

критично
PA, LNA и RF switchpower_rxen power_txen power_rxen_2 power_txen_2 radio_rfsw_ctrl ant_ctrl

Ошибочная логика может включить тракт в неправильном состоянии или оставить его без коммутации.

риск повреждения
Мощностьpower_min power_max power_default power_control power_values power_values2 power_values_dual

power_high удалён из актуального парсера как неиспользуемый параметр, хотя ещё встречается в старых layout. Значения мощности — калибровка реального тракта, а не способ «дорисовать» лишние ватты.

нужны измерения RF
Индикация и управлениеled led_rgb button misc_fan_en misc_fan_pwm misc_fan_tacho screen_sck screen_sda screen_cs screen_dc

Обычно легче восстановить, но совпадение GPIO с силовой функцией всё равно опасно.

проверить конфликт GPIO
PWM и телеметрия питанияpwm_outputs vbat vbat_offset vbat_scale

pwm_outputs — массив GPIO, а в группе VBAT только vbat задаёт ADC‑пин; offset и scale являются параметрами пересчёта.

электрический риск
Почему нельзя копировать layout «похожего» приёмника

Одинаковые ESP и SX1280 ещё не означают одинаковые GPIO. Производитель может поменять LED, UART, PA/LNA, RF‑switch, инвертор, кнопку или делитель напряжения между ревизиями. Внешне платы иногда неразличимы, а неправильный layout загружается без синтаксической ошибки.

Маршрут A

Безопасное редактирование hardware.json

Меняйте одну логическую группу за раз. Иначе после отказа вы не узнаете, какое из пяти исправлений оказалось ошибкой.

Подтвердите аппаратную семью

Модель, ревизия, ESP8285/ESP32/C3/S3, SX127x/SX1280/LR1121, одна или две радиочасти. Если хотя бы один пункт неизвестен — сначала вернитесь к мастеру выбора target.

Зафиксируйте все слои

Сохраните runtime‑hardware.json, базовый layout, target/overlay из снимка того же релиза и рабочий firmware/рецепт сборки. Название: модель + ревизия + версия ELRS + дата.

Измените только подтверждённые ключи

Используйте обычный текстовый редактор в UTF‑8. JSON не допускает комментарии, «умные» кавычки и запятую после последнего элемента. Не переименовывайте незнакомые поля.

Сравните исходник и кандидат

Проверьте намеренные изменения инструментом выше. Любое изменение radio_*, power_*, PA/LNA или RF‑switch считайте критическим, даже если JSON синтаксически корректен.

Загрузите через Hardware Layout

Включите Wi‑Fi → откройте Web UI → Hardware Layout → загрузите JSON → Save → Reboot. Не прошивайте одновременно новый major‑релиз и новый layout: сначала одно изменение, затем проверка.

Скачайте layout после Reboot

Повторно получите /hardware.json и вставьте его в третье поле. Если кандидат и прочитанный файл расходятся по значениям, остановитесь: неизвестное поле могло быть отброшено либо применился другой встроенный layout.

Проверьте на стенде

Пропеллеры сняты, TX только с антенной и охлаждением, начальная мощность минимальная. Проверьте загрузку, Wi‑Fi, UART/CRSF, телеметрию, температуру и только потом RF‑связь.

Маршрут B

Что значит «редактировать firmware.bin»

У ExpressLRS штатный конфигуратор действительно настраивает готовый бинарник, но делает это по структуре прошивки и target. Это не ручная замена байтов.

Обычная настройка

Configurator / Web Flasher

Выберите официальный релиз, точный target и параметры. Инструмент сам подготовит бинарник. Это основной путь.

Продвинутый путь

binary_configurator.py

Штатный скрипт ELRS прикрепляет options и layout к совместимой bare‑прошивке. Нужны файлы точно того же релиза и точный путь target из hardware/targets.json.

Изменение программы

Исходники + PlatformIO

Если меняется алгоритм, драйвер или поддержка нового железа — собирайте из исходников выбранного release tag. Бинарный патч здесь не подходит.

Hex‑редактор — не штатный метод. Текущая unified‑прошивка содержит приложение и добавляемый конфигурационный блок: имя продукта, имя устройства, options JSON, hardware layout и служебные признаки. Случайное изменение длины, структуры или сжатого файла может дать неработающий образ без понятной ошибки.
firmware.bin

Application‑image для поддерживаемого способа обновления. Не переносится между MCU/RF‑семействами и не является полным дампом flash.

firmware.bin.gz

Сжатый образ, типичный для Wi‑Fi‑обновления ESP8285 RX. Загружайте как есть; не распаковывайте для Web UI.

firmware.elrs

Формат/имя для поддерживаемого stock‑обновления через аппаратуру. Это не универсальный контейнер и не основание менять расширение вручную.

Когда уместен официальный binary configurator

Когда есть bare‑бинарник соответствующей аппаратной платформы, hardware definitions и firmware artifacts того же релиза, а target уже подтверждён. Configurator использует этот механизм автоматически — большинству пользователей запускать скрипт вручную не нужно.

Не копируйте универсальную CLI‑команду из статьи. После Build/Flash сохраните точный вызов из Build Log именно вашей версии Configurator: каталоги hardware definitions и firmware artifacts могут передаваться раздельно через параметры вроде --dir и --fdir, а набор флагов зависит от релиза.

<точная команда из Build Log этой сборки>
<phrase / SSID / password заменить на REDACTED>

В recovery‑manifest выше команда с распознанным secret‑параметром исключается целиком. Не полагайтесь на автоматическое распознавание: перед передачей manifest всё равно проверьте его вручную.

Почему скачанный firmware.bin нельзя называть полным бэкапом

Это рабочий образ приложения, подготовленный для обновления, а не гарантированный побайтовый дамп всей flash. Для полного восстановления ESP32 могут потребоваться подходящие bootloader, partition table, файловая система и правильные offset. Runtime‑файлы /hardware.json и /options.json сохраняются отдельно.

В конфигурированном бинарнике могут присутствовать UID/binding‑данные и параметры домашнего Wi‑Fi. Храните его как приватный артефакт и не прикладывайте к открытому сообщению поддержки.

Что менять через Web UI, а не через бинарник

Binding phrase/UID, Wi‑Fi, некоторые runtime‑параметры, serial/PWM‑настройки и доступные опции устройства в ELRS 4.x удобнее менять в соответствующих вкладках Web UI. Учтите: параметры, записанные при следующей прошивке, могут снова переопределить runtime‑значения.

Когда обязательна пересборка из исходников

Новый драйвер, иной алгоритм, новая аппаратная платформа, изменение протокола или поля, которого прошивка не понимает. Выберите конкретный release tag, настройте toolchain, внесите изменение, соберите точный target и сохраните diff исходников рядом с бинарником.

После Save / Flash

Проверка до установки пропеллеров

«Устройство включилось» — только первый из шести признаков. Проверяйте цепочку от загрузки до радиотракта.

Загрузка и Web UI

Нет циклической перезагрузки; Wi‑Fi включается; Hardware name, MCU/RF и версия соответствуют ожиданию.

UART / CRSF

FC видит приёмник, каналы движутся правильно, RSSI/LQ и телеметрия обновляются.

Индикация и органы управления

LED, кнопка, вентилятор, OLED и backpack работают только на реально существующих выводах.

RF на минимальной мощности

Антенна подключена. Связь стабильна на короткой дистанции, без странного нагрева PA/LNA и без обрыва телеметрии.

Измерение, если менялась мощность

Меню и надпись mW ничего не доказывают. Нужны ваттметр/анализатор, нагрузка и контроль температуры.

Возврат исходника проверен

Вы знаете, как загрузить сохранённый layout или рабочий firmware, если следующий тест даст сбой.

Первый полёт — не тест layout. После стенда выполните обычную проверку failsafe и дальности по инструкции производителя. Любой непонятный нагрев, нестабильный LQ или пропадающая телеметрия — повод остановиться.

Если что-то пошло не так

Лестница восстановления

Сначала определите, где находится ошибка. Одинаковая кнопка Reset решает только один из двух сценариев.

Сценарий A: target и встроенный layout правильные
Испорчен только runtime‑/hardware.json. Reset Hardware Configuration возвращает встроенную конфигурацию firmware. После Reset выполните Reboot, снова скачайте файл и сравните его.
Сценарий B: в firmware встроен неверный target/layout
Reset вернёт ту же неверную встроенную конфигурацию. Нужна известная рабочая сборка точного target и ревизии; если обычное обновление недоступно — официальный Unbricking.
1Сначала сохранить отказ

Скачайте испорченный runtime‑layout, запишите сообщение ошибки, температуру/LED и Build Log. Не стирайте единственную улику.

2Web UI доступен

Верните сохранённый runtime‑layout. Reset используйте только в сценарии A; затем Reboot и обязательное чтение обратно.

3Встроенный layout неверный

Загрузите известный рабочий application‑image точного target, релиза и ревизии. Reset здесь не исправляет источник ошибки.

4Wi‑Fi не запускается

Используйте официальный UART/boot‑pad Unbricking для платформы. Полный ESP32‑образ и offset берите только из подтверждённой процедуры.

STM32 — отдельная legacy‑ветка: только поддерживаемая ELRS 3.x, target‑специфичный способ и при необходимости ST‑Link. hardware.json этот аппарат не восстановит.

Не нажимайте «Flash Anyway» только потому, что другого выхода не видно. Сначала ещё раз подтвердите MCU, RF‑чип, RX/TX‑тип, диапазон и ревизию платы.

Частые ошибки

Короткие ответы

Можно ли увеличить мощность, изменив power_max?

Нет. Поля описывают существующие ступени и калибровку реального PA. Без подходящего усилителя, питания, согласования, охлаждения и измерений вы получите ложную надпись, перегрев или повреждение, а не заявленную мощность.

Можно ли заменить SX1280 на LR1121 только через JSON?

Нет. RF‑семейство определяет базовый firmware target и драйвер. Layout задаёт разводку поддерживаемого железа, но не добавляет в бинарник отсутствующий драйвер.

Можно ли переименовать .bin в .elrs или сжать в .gz?

Расширение само по себе совместимость не создаёт. Используйте файл, который Configurator/Web Flasher подготовил для выбранного метода и target. Для ESP8285 Web UI ожидает штатно подготовленный firmware.bin.gz.

Почему после новой прошивки вернулись старые или другие настройки?

Базовый layout, target‑overlay, встроенная конфигурация firmware и runtime‑файлы — разные слои. Новая прошивка может переопределить options или встроенный layout; major‑обновление может изменить внутреннюю файловую систему. Поэтому сохраняются все слои и сведения о сборке, а после обновления файл читается обратно.

Когда помогает Reset Hardware Configuration?

Только когда target и layout внутри текущего firmware правильные, а ошибка находится в runtime‑/hardware.json. Если неверная конфигурация уже встроена в бинарник, Reset восстановит именно её — потребуется рабочая сборка точного target.

Можно ли загрузить hardware.json от другой ревизии, чтобы попробовать?

Нет. Даже «проба» может включить силовой GPIO или RF‑переключатель в неправильном состоянии. Сначала схема/прозвонка и сравнение layouts, затем одно подтверждённое изменение на минимальной мощности.

Учебный маршрут

Куда перейти дальше

Эта статья начинается там, где обычная прошивка уже перестала быть обычной.

Официальные источники и границы материала

Актуализировано 9 августа 2026 года для ExpressLRS 4.1.0. Названия полей, overlay и интерфейс могут меняться; всегда сверяйте их со снимком Targets и release tag, который реально прошиваете.

 

Прокрутить вверх
Напишите нам