Files
viktorиClaude Opus 4.8 c10ab3c6f1 DMR-чип опознан по схеме: HF6853 = AUCTUS A6 (RDA8809), не SCT3258
Опознание БЕЗ разбора рации, по схеме RT4DDLT01 (Radtel v2.1):
DMR-модуль «FM100B» = один чип U700 HF6853 — одночиповый DMR-SoC
семейства Auctus A6 (внутри RDA8809): CPU + ВЧ-трансивер + DSP +
AMBE-вокодер + аудио-кодек в одном кристалле, прошивка во внешнем
SPI-flash, кварц 26 МГц. Прежняя версия «Sicomm SCT3258TD» неверна
(SCT3258 — baseband-only без ВЧ; и нативный протокол другой).

Скрытый ATE/CPS-интерфейс полностью реверснут (jhart99/a6tools,
вендорен в research/a6tools). Даёт КОНКРЕТНУЮ починку нашей
TX-проблемы: AT+GETFREQERR / AT+DMOFREQERR=N, offset=-2500+10*N,
±2500 Гц — наши ~1100 Гц внутри диапазона. Плюс DMR_ADJTXSYMDEV
(девиация), FGU_AFC, DMOSETPOWER, CPS chanInfo, дамп прошивки модуля.

- docs/hf6853-auctus-a6.md — идентификация + протокол + план TX-fix
- tools/a6_freqfix.py — заготовка тула (probe/read/write, не запускать вслепую)
- research/a6tools/ — вендоренный реверс (MIT), atcommands.md/cpecommands.md
- docs/dmr-tx-recovery.md, README — путь 0 (AT+DMOFREQERR) как лучший
- research/rt4ddlt01-dmr-module-sheet.png — рендер листа схемы DMR-модуля

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NikMGoqQWWk9wy2ww2vJAr
2026-07-24 03:10:24 +09:00

5.5 KiB

RT-4D: DMR не передаёт на хотспот — диагноз и восстановление

Симптом

DMR-приём работает (рация принимает из хотспота), DMR-передача не декодируется хотспотом (в логе MMDVMHost 0 «received RF», MMDVMCal рацию не видит). Аналог RX/TX работает. Модуль отвечает в мосте, версия V1.2.0.32. Проблема одинакова на стоке и REFV.

Корень (подтверждён реверсом + техподдержкой Radtel)

TX-частота рации смещена > ±0.2 кГц от номинала. По Q&A Radtel даже ±0.2 кГц не даёт хотспоту синхронизироваться с передачей. Приём работает, т.к. RX-смещение в допуске.

Причина смещения: заводская частотная калибровка была сброшена/затёрта, а Radio Tuning Software «Write» залил ДЕФОЛТНЫЕ значения смещения — неточные для конкретного экземпляра.

Где что лежит

  • Калибровка ОСНОВНОГО тракта рации — SPI region 0x40 (0x000000, 4 КБ). Восстановлена из radio-spi-dump.binприём заработал. Весь codeplug тоже восстановлен из дампа.
  • Частотная калибровка / DMR-девиация — в NVRAM модуля FM100B. Команды модуля: SPCali_FreqOpt, SPCali_DigMod (цифр. модуляция), SPCali_PowerOpt, ATC_RfDeviation_SetReq. Перепрошивка кода модуля их НЕ трогает; сток при старте их НЕ шлёт → сброшенное значение держится.

Radio Tuning Software — как устроена (reverse .NET)

  • Работает через прозрачный мост (режим МЕНЮ), маркер кадров 0xAAAA, команды CmdConnect / CmdOpenCal / CmdWriteAll / CmdEnd.
  • Калибровка = 15 частотных смещений nOffset_1..15 + num_U/V_DigFreq (DMR-частота UHF/VHF).
  • Кнопки: Read (с рации в UI), Write/WriteAll (в рацию), Save.updat файл.
  • ВАЖНО: по Q&A Radtel после калибровки жать «Finish» (сохранение). Возможно Write без этого не фиксирует. И для точной калибровки нужен прибор (SDR/частотомер) — крутить offset до ±0.2 кГц.

Пути восстановления (по приоритету)

  1. AT+DMOFREQERR (скрытый ATE-интерфейс чипа) — ЛУЧШИЙ. Опознано (24.07.2026): DMR-чип = HF6853 / AUCTUS A6 (RDA8809), не SCT3258 (см. docs/hf6853-auctus-a6.md). У него реверснутый ATE-интерфейс с частотной калибровкой TCXO: AT+GETFREQERR / AT+DMOFREQERR=<N>, где offset[Гц] = -2500 + 10*N, N=0..500, ±2500 Гц. Наше смещение ~1100 Гц — внутри диапазона, чинится одной записью. После записи сменить канал. Инструмент: tools/a6_freqfix.py (probe/read/write, требует SDR-измерения TX). Не требует Radtel .updat и Radio Tuning Software. Библиотека — research/a6tools.

  2. Компенсация на хотспоте (RXOffset) — БЕЗ прибора. Если TX рации смещена на постоянный X Гц, выставить на хотспоте RXOffset так, чтобы приёмник поймал смещённую передачу. Перебор RXOffset в MMDVM.ini (±1000 Гц шагом ~100), рестарт MMDVMHost, при передаче рации (PTT) искать «received RF» в логе. Требует, чтобы владелец жал PTT в момент перебора. Инструмент: tools/hotspot_rxoffset_sweep.py (готовится).

  3. Точная калибровка частоты по прибору — Radio Tuning Software + SDR/частотомер: Read → крутить num_U_DigFreq/nOffset до ±0.2 кГц по прибору → Finish/Save + WriteAll.

  4. Заводской .updat — запросить у Radtel техподдержки файл калибровки для серийника, либо debug-софт. Тогда Radio Tuning: Open .updat → WriteAll.

Что уже сделано

  • SPI-калибровка рации (region 0x40) восстановлена из эталона → приём работает.
  • Весь codeplug (каналы/зоны/контакты/группы/ключи/лог/SMS/FM) восстановлен из radio-spi-dump.bin.
  • Диагноз локализован: TX-частотное смещение модуля.
  • Осталось: вернуть точное TX-смещение (пути 1–3 выше).

Инструменты

  • tools/spi_read.py / tools/spi_wr.py — чтение/запись SPI через CPS (WSL powershell).
  • tools/fm100b.py — команды модулю через мост (режим МЕНЮ).
  • tools/agent.py — интерактивный агент (обычный режим).