hardware.json и firmware.bin: что можно редактировать
Интерактивный маршрут для ExpressLRS 4.x на ESP‑устройствах: исправить подтверждённую разводку DIY‑платы, проверить записанный layout или воспроизводимо пересобрать прошивку. Старые ветки вынесены отдельно.
Если для точной модели и ревизии есть штатный target, сначала используйте его. Изменение layout не превращает SX1280 в SX127x, ESP8285 в ESP32 и 100‑мВт тракт в 1 Вт. Ошибка в GPIO питания, PA/LNA или RF‑переключателе может не просто убрать связь, а повредить устройство.
К какому устройству относится инструкция
Развилка нужна здесь обязательно: одинаковое имя файла не означает одинаковую архитектуру.
LR1121: layout главного ESP‑контроллера и внутренняя прошивка самого RF‑чипа LR1121 — разные вещи. Ручная прошивка LR1121 в Web UI в этот гайд не входит.
Почему встречаются разные hardware.json
Не «скрещивайте» файлы только потому, что у них одинаковые ключи. В одной сборке layout проходит несколько слоёв:
layout_file из снимка официального репозитория Targets выбранного релиза.targets.json, если они заданы для target.firmware.bin при подготовке сборки./hardware.json, прочитанный с устройства после Save → Reboot.Эти файлы не обязаны совпадать побайтно. Порядок ключей может измениться, а итоговый runtime‑layout уже учитывает target. Для проверки сравнивайте разобранные значения одной версии и обязательно читайте файл обратно с устройства.
Что именно вы хотите изменить?
Выберите реальную задачу. В большинстве случаев готовый бинарник редактировать вообще не нужно.
hardware.json, параметры сборки и исходный код решают разные проблемы. Мастер покажет самый короткий безопасный путь.
Комплект возврата назад
Копия без подписи почти бесполезна. Сохраняйте модель, ревизию платы, версию ELRS и дату вместе с файлами.
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 выбранных файлов и соберёт одну карточку восстановления. Файлы обрабатываются только в этой вкладке.
Добавьте исходный и прочитанный обратно hardware.json, firmware‑artifact, Build Log или diff исходников. Файлы не загружаются на сервер.
Заполните обязательные поля и добавьте хотя бы один файл.
Исходник → кандидат → прочитано обратно
Сначала инструмент покажет намеренные изменения, затем сравнит кандидат с файлом, который устройство реально вернуло после Save → Reboot. Так видны отброшенные, нормализованные или неожиданно изменённые поля.
Не вставляйте options.json с Wi‑Fi‑данными.
Сначала сравните два файла, но не считайте это проверкой записи.
Без этого поля результат останется предварительным.
Какие группы полей вы затрагиваете
Имена меняются между MCU, RF‑семействами и версиями. Берите поля из layout того же релиза и той же аппаратной семьи, а не придумывайте новые.
Источник схемы: сверяйте ключи с официальным парсером hardware.json выбранного release tag. Ниже перечислены актуальные имена ветки ExpressLRS 4.x.
serial_rx serial_tx serial1_rx serial1_tx
Основной и дополнительный последовательные интерфейсы используют только эти имена; префикса «uart_» в текущей схеме нет.
стендовый рискradio_miso radio_mosi radio_sck radio_nss radio_dio1 radio_busy radio_rst
Неверный вывод обычно делает RF‑чип невидимым; на dual‑radio встречаются поля с суффиксом _2.
power_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. Значения мощности — калибровка реального тракта, а не способ «дорисовать» лишние ватты.
led led_rgb button misc_fan_en misc_fan_pwm misc_fan_tacho screen_sck screen_sda screen_cs screen_dc
Обычно легче восстановить, но совпадение GPIO с силовой функцией всё равно опасно.
проверить конфликт GPIOpwm_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 загружается без синтаксической ошибки.
Безопасное редактирование 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 синтаксически корректен.
Включите Wi‑Fi → откройте Web UI → Hardware Layout → загрузите JSON → Save → Reboot. Не прошивайте одновременно новый major‑релиз и новый layout: сначала одно изменение, затем проверка.
Повторно получите /hardware.json и вставьте его в третье поле. Если кандидат и прочитанный файл расходятся по значениям, остановитесь: неизвестное поле могло быть отброшено либо применился другой встроенный layout.
Пропеллеры сняты, TX только с антенной и охлаждением, начальная мощность минимальная. Проверьте загрузку, Wi‑Fi, UART/CRSF, телеметрию, температуру и только потом RF‑связь.
Что значит «редактировать firmware.bin»
У ExpressLRS штатный конфигуратор действительно настраивает готовый бинарник, но делает это по структуре прошивки и target. Это не ручная замена байтов.
Configurator / Web Flasher
Выберите официальный релиз, точный target и параметры. Инструмент сам подготовит бинарник. Это основной путь.
binary_configurator.py
Штатный скрипт ELRS прикрепляет options и layout к совместимой bare‑прошивке. Нужны файлы точно того же релиза и точный путь target из hardware/targets.json.
Исходники + PlatformIO
Если меняется алгоритм, драйвер или поддержка нового железа — собирайте из исходников выбранного release tag. Бинарный патч здесь не подходит.
Application‑image для поддерживаемого способа обновления. Не переносится между MCU/RF‑семействами и не является полным дампом flash.
Сжатый образ, типичный для Wi‑Fi‑обновления ESP8285 RX. Загружайте как есть; не распаковывайте для Web UI.
Формат/имя для поддерживаемого 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 исходников рядом с бинарником.
Проверка до установки пропеллеров
«Устройство включилось» — только первый из шести признаков. Проверяйте цепочку от загрузки до радиотракта.
Нет циклической перезагрузки; Wi‑Fi включается; Hardware name, MCU/RF и версия соответствуют ожиданию.
FC видит приёмник, каналы движутся правильно, RSSI/LQ и телеметрия обновляются.
LED, кнопка, вентилятор, OLED и backpack работают только на реально существующих выводах.
Антенна подключена. Связь стабильна на короткой дистанции, без странного нагрева PA/LNA и без обрыва телеметрии.
Меню и надпись mW ничего не доказывают. Нужны ваттметр/анализатор, нагрузка и контроль температуры.
Вы знаете, как загрузить сохранённый layout или рабочий firmware, если следующий тест даст сбой.
Первый полёт — не тест layout. После стенда выполните обычную проверку failsafe и дальности по инструкции производителя. Любой непонятный нагрев, нестабильный LQ или пропадающая телеметрия — повод остановиться.
Лестница восстановления
Сначала определите, где находится ошибка. Одинаковая кнопка Reset решает только один из двух сценариев.
Испорчен только runtime‑
/hardware.json. Reset Hardware Configuration возвращает встроенную конфигурацию firmware. После Reset выполните Reboot, снова скачайте файл и сравните его.Reset вернёт ту же неверную встроенную конфигурацию. Нужна известная рабочая сборка точного target и ревизии; если обычное обновление недоступно — официальный Unbricking.
Скачайте испорченный runtime‑layout, запишите сообщение ошибки, температуру/LED и Build Log. Не стирайте единственную улику.
Верните сохранённый runtime‑layout. Reset используйте только в сценарии A; затем Reboot и обязательное чтение обратно.
Загрузите известный рабочий application‑image точного target, релиза и ревизии. Reset здесь не исправляет источник ошибки.
Используйте официальный 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, затем одно подтверждённое изменение на минимальной мощности.
Куда перейти дальше
Эта статья начинается там, где обычная прошивка уже перестала быть обычной.
Официальные источники и границы материала
- ExpressLRS Web UI и Hardware Layout
- Firmware Options
- Официальный Unbricking
- Официальная сборка из исходников и PlatformIO
- Официальный репозиторий аппаратных targets
- binary_configurator.py в release 4.1.0
- Unified Configuration в release 4.1.0
- Web UI firmware‑download в release 4.1.0
- ExpressLRS 4.1.0 и совместимость ветки
Актуализировано 9 августа 2026 года для ExpressLRS 4.1.0. Названия полей, overlay и интерфейс могут меняться; всегда сверяйте их со снимком Targets и release tag, который реально прошиваете.