Рация в «кирпиче»: восстановление прошивки (DFU/bootloader) по моделям

Категория: РемонтСложность: ★★★~11 минут

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

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

Что такое «кирпич» и почему он лечится

Память современной DMR-рации условно делится на две части. Маленький загрузчик (bootloader) запускается первым при включении, проверяет нажатые кнопки и решает: грузить основную прошивку или встать в режим прошивки (DFU / recovery / update mode). Сама основная прошивка (firmware) лежит отдельно и занимает большую часть флеша. Когда говорят «окирпичилась рация», в 95% случаев имеют в виду именно повреждённую основную прошивку: загрузчик при этом цел и доступен.

Признаки «лечимого» кирпича:

Если хоть одно из двух последних условий выполняется — поздравляю, это рабочий загрузчик, и кирпич почти наверняка снимается перезаливом. А вот если ни одна комбинация не оживляет аппарат и компьютер его не видит вообще никак — тогда подозрение падает на сам загрузчик, и это уже другой разговор (последний раздел).

Золотое правило прошивки: не дёргать!Во время записи прошивки категорически нельзя выдёргивать USB-кабель, выключать рацию, вынимать аккумулятор или гасить компьютер. Прерванная запись — это та самая ситуация, которая из «полурабочей» рации делает кирпич, а из кирпича — глубокий кирпич с риском задеть загрузчик. Утилита часто выглядит зависшей (особенно к концу): это нормально, прошивка пишется дольше, чем кажется. Дайте процессу спокойно дойти до конца. Заряженный аккумулятор и стабильный USB-порт (лучше прямой, без хабов) — обязательны.

Сначала — бэкап, всегда

Прежде чем что-либо шить (хоть в первый раз, хоть при восстановлении), снимите дамп. Восстановить кирпич — полдела; обидно при этом потерять калибровку и каналы.

Когда бэкап спасает, а когда нетБэкап calibration/codeplug спасает, если повреждена основная прошивка: залили её заново, вернули калибровку — и рация как новая. Бэкап не поможет, если физически повреждён загрузчик: тогда сначала нужно аппаратно восстановить сам загрузчик (программатор/сервис), и только потом будет куда заливать дамп. Поэтому дамп снимаем, пока рация ещё жива и читается.

TYT MD-380 / MD-390 (и клоны RT3/RT8)

Однодиапазонная классика на процессоре STM32F405 (1 МБ флеша, 192 КБ ОЗУ) с DMR-баребендом HR-C5000. Отдельного вокодерного чипа в ней нет — AMBE-кодек эмулируется программно прямо на STM32F405, так что «мозг» и «голос» здесь один и тот же кристалл. У радио стандартный для STM32 загрузчик в режиме DFU — самый дружелюбный к восстановлению из всей нашей подборки.

Вход в DFU:

  1. Выключите рацию ручкой громкости. Снимите заглушку с разъёма наушник/микрофон, подключите программирующий кабель.
  2. Зажмите одновременно PTT и кнопку над PTT (верхнюю боковую, не ту, что с буквой «M»).
  3. Удерживая обе кнопки, включите рацию ручкой громкости и отпустите кнопки.
  4. Светодиод должен мигать поочерёдно красным и зелёным — вы в режиме прошивки (DFU).

Чем шить: фирменная Tytera Upgrade.exe («Open Update File» → выбрать .bin → «Download Update File»), либо кроссплатформенно через dfu-util / обёртку md380-dfu из комплекта md380tools. Заметьте: TYT использует слегка нестандартный вариант DFU (форк примера STMicro), поэтому проще всего работает именно их утилита или специально заточенный md380-dfu. Подробности про прошивки и твики — в статье md380tools.

Recovery-образ под рукойДержите заранее скачанный заведомо рабочий сток (официальную прошивку TYT под вашу модель) или проверенную сборку md380tools. Если эксперимент не задался — входите в DFU и заливаете этот «спасательный» образ. После перезалива стока вернёте калибровку из бэкапа и соберёте codeplug заново.

GD-77, DM-1801, RD-5R на OpenGD77

Совсем другое железо: NXP MK22 + AT1846S + HR-C6000. Прошивка OpenGD77 и её родной загрузчик. Сюда же по способу прошивки относятся двухдиапазонные TYT MD-UV380/UV390 и Retevis RT-3S — но учтите, что у них внутри STM32F405 (как у MD-380), а не MK22, поэтому и комбинация входа, и индикация у них другие (см. ниже и таблицу).

Вход в режим загрузчика (GD-77/DM-1801/RD-5R): зажмите SK1 + SK2 (на GD-77 это две кнопки под PTT: чёрная SK1 и синяя SK2) и, удерживая их, включите рацию. У MD-UV380/UV390/RT-3S комбинация иная — SK1 (верхняя боковая) + PTT при включении.

OpenGD77 ⇄ сток: дорога в обе стороныНа эти радио можно вернуть и официальную прошивку производителя — то есть «откатиться» с OpenGD77 обратно на сток штатно. Но codeplug у OpenGD77 свой: после возврата стока штатный codeplug не подойдёт, и наоборот. Поэтому при любых рокировках держите оба формата дампов и заведомо рабочие .bin и стока, и OpenGD77.

AnyTone (AT-D878UV и родня)

У AnyTone — собственный режим обновления и свой формат прошивки. На рынке две заметно разные аппаратные ревизии (V1 и V2/UVII), и прошивки между ними не взаимозаменяемы — это частая причина «окирпичивания»: залили файл не от той ревизии. Всегда сверяйте версию железа.

Вход в режим обновления (rescue): зажмите PTT и верхнюю кнопку PF3 (синяя, на торце, она же «тревога»/Alarm) и включите рацию. Красный светодиод начнёт мигать — вы в режиме прошивки.

Особенности формата: прошивка AnyTone — это комплект из нескольких файлов (.spi, .CDI, .CDD) с одинаковым базовым именем; все они должны лежать в одной папке. Шьётся фирменной утилитой обновления через выбранный COM-порт; существуют и сторонние flash-tools, принимающие .spi-файл и порт как аргументы.

Сверь комбинацию под свою модельКнопки и индикация у разных моделей и ревизий отличаются. Комбинации выше — ориентир, проверенный для распространённых версий, но прежде чем держать тангенту и щёлкать питанием, сверьтесь с официальной инструкцией к ВАШЕЙ модели и ревизии (Powerwerx/BridgeCom/производитель). Неверная комбинация в худшем случае ничего не сделает, но залить чужую прошивку — реальный способ усугубить кирпич.
МодельВход в режим прошивкиИндикацияЧем шить
TYT MD-380/390, RT3/RT8PTT + кнопка над PTT, затем питаниеLED мигает красный↔зелёныйTytera Upgrade / dfu-util / md380-dfu
GD-77, DM-1801, RD-5R (OpenGD77)SK1 + SK2, затем питаниеЗелёный горит ровноOpenGD77 CPS (firmware loader)
MD-UV380/390, RT-3S (OpenGD77, внутри STM32)SK1 (верхняя боковая) + PTT, затем питаниеLED мигает красный↔зелёныйOpenGD77 CPS
AnyTone AT-D878UV (V1/V2)PTT + PF3 (верхняя), затем питаниеКрасный мигаетФирменная утилита / flash-tools

Перезалив: пошагово

Универсальный порядок восстановления, когда загрузчик жив:

  1. Зарядите аккумулятор, возьмите надёжный USB-кабель напрямую в порт компьютера (не через хаб и не через «зарядный» шнур без линий данных).
  2. Подготовьте recovery-образ: заведомо рабочий сток под вашу модель/ревизию или проверенную альтернативную прошивку. Файл должен точно соответствовать железу.
  3. Введите рацию в режим прошивки нужной комбинацией, убедитесь по светодиоду и по тому, что ПК её видит.
  4. Запустите утилиту, выберите файл, начните запись — и не трогайте ничего до явного «Done/Success».
  5. Выключите рацию ручкой громкости, отсоедините кабель, включите штатно.
  6. Залейте калибровку из бэкапа (если требуется) и соберите/верните codeplug.

Пример вызова dfu-util для STM32-рации семейства MD-380 (имена устройства и адрес — для иллюстрации, сверяйте по своей утилите):

# посмотреть, видит ли система DFU-устройство
dfu-util --list

# залить прошивку (md380-dfu делает это с правильными смещениями)
md380-dfu upgrade firmware.bin
Закон и эфирВосстановление прошивки само по себе легально, но помните: рация после оживления должна передавать только в разрешённых вам диапазонах и мощностях. Альтернативные прошивки часто «расширяют» TX-диапазон — это не значит, что в нём можно работать. Право на передачу даёт ваша лицензия и распределение частот, а не firmware.

Когда загрузчик мёртв: программатор или сервис

Бывает редкий, но настоящий кирпич: рация не входит ни в один режим прошивки, светодиод не реагирует, компьютер устройство не видит ни как DFU, ни как COM-порт. Это значит, что повреждён сам загрузчик — простой неудачной прошивкой такое почти не получить, чаще виноваты ESD-разряд, скачок питания, неудачная попытка прошить чужой/битый загрузчик или аппаратный дефект.

Лечится это только аппаратно, через сервисные выводы процессора:

Если вы не паяете и не работаете с SWD/JTAG — это прямой повод нести аппарат в сервис или к опытному радиолюбителю с программатором. Восстановление загрузчика — операция тонкая, и порча процессора при ней реальна.

ESD и питание — на каждом шагеВскрытая плата беззащитна перед статикой: работайте на антистатическом коврике, с заземляющим браслетом, не в синтетике. Один разряд по выводам процессора превращает лечимый кирпич в труп. Для программатора берите стабильные 3.3V — превышение напряжения убивает MCU; не подавайте на отладочные линии больше, чем положено по даташиту. И снова: ни во время DFU-прошивки, ни тем более во время записи через SWD не выдёргивайте питание и кабель — прерывание здесь фатально.

Оживил — выходи в эфир

Снятый кирпич — повод залить свежую прошивку и наш codeplug, а потом зарегистрироваться в DMRhub: приватные вызовы по DMR ID, SMS и группы уже ждут. Нет покрытия рядом? Соберите хотспот и поднимайте свой узел сети там, где его нет.

Источники

  1. md380tools — прошивка и DFU-инструменты для TYT MD-380/390 (вход в DFU, dfu-util) — github.com/travisgoodspeed/md380tools
  2. Updating MD-380 Firmware — вход в DFU (PTT + верхняя кнопка), Tytera Upgrade — learn.adafruit.com
  3. HOWTO: Flash the OpenGD77 firmware — SK1+SK2, индикация загрузчика, сигнатура 0x7F800, patched bootloaders — opengd77.com
  4. Anytone AT-D878UV DMR Firmware Update (Powerwerx) — режим обновления, PTT+PF3, файлы .spi/.CDI/.CDD — powerwerx.com
  5. Corrupted STM32 Bootloader Recovery — восстановление загрузчика через ST-Link/SWD — lukeslab.info