Files
viktorиClaude Opus 4.8 d1055218ae Справочник калибровки модуля (B-команды <-> SPCali NV, живые значения)
docs/module-cal-reference.md: карта 0xB0-0xBD, форматы read/write, band-адресация,
живой снимок cal. Ключевое: девиация не сбита (0x96), DMR VCXO-трим=0x40 vs аналог=0x80.

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

3.8 KiB

RT-4D DMR-модуль (HF6853) — справочник калибровки (0x68 B-команды)

Консолидация реверса тюнера (docs/tuning-software-protocol.md) + живых чтений через мост (tools/tuning_read.py, режим «Обновление DMR чипа»). Все кадры — 0x68, CK не проверяется, baud 115200. Прочитано и подтверждено на реальной рации 24.07.2026.

Формат

Кадр:      68 <cmd> 01 01 00 00 <lenHi> <lenLo> <payload...> 10
Read-req:  payload = 00 <band>              (band: 01 или 02; 00/03 -> status 0x01 = ошибка)
Read-resp: payload = 00 <band> <val...>
Write:     payload = 01 <band> <val...>     (op=01)
Ответ OK:  status(байт[3]) = 0x00;  ошибка = 0x01

band: 01 и 02 — два поддиапазона (вероятно нижний/верхний участок UHF; VHF-вариант в SetCalFreq_V).

Команды

cmd имя (тюнер) NV-элемент (прошивка) что формат value живое значение (UHF)
0xB0 CmdOpenCal/ColseCal вход/выход cal (payload 01/00) OK
0xB1 SetCalFreq_U/_V SPCaliic_FreqOpt опорные частоты диапазона (3×4Б BE Гц) band,N,freqs UHF 400.125/435.125/469.975 МГц
0xB2 Set/ReadAnaVCCN SPCali_AnaVccnOpt аналоговый частотный трим (VCXO) band,val8 band1=0x80, band2=0x80
0xB4 Set/ReadDigVCCN (Dig VCCN) DMR частотный трим (VCXO) band,val8 band1=0x3f, band2=0x40
0xB3 SetAnaTX аналог TX параметр band,i,v
0xB5 SetDigTX SPCali_DigMod1Opt? DMR TX (несёт DetectDevice) band,i,dev
0xB6 Set/ReadMod (Cal) (девиация Mod1..3) девиация band,idx(1..3),val8 все = 0x96 (дефолт, НЕ сбита)
0xB7 Set/ReadSlot (Cal) тайминг/слот band,... 00 03 42 01 08 d9
0xB8 Set/ReadPWR (Cal) SPCali_PowerOpt мощность band,idx,val 00 01 01 00 05
0xBD CmdWriteAll сохранить cal в NV (payload 01, БЕЗ данных)

Пример записи DMR-трима band2: 68 b4 01 01 00 00 00 03 01 02 <val> 10 (проверено, обратимо живьём без CmdWriteAll — откатывается при перезагрузке).

Ключевые наблюдения по «сдвигу TX»

  • Девиация (Mod, 0xB6) = 0x96 по всем band/idx — дефолт, не повреждена (мои старые 0x66-эксперименты следа не оставили).
  • DMR VCXO-трим (0xB4) = 0x40, аналоговый (0xB2) = 0x80. Аналог работает → его трим верен. DMR-трим — кандидат №1 на источник частотного сдвига DMR, но требует измерения (BER на MMDVM или частотомер), т.к. направление/цена деления неизвестны. Слепо не писать (см. docs/dmr-tx-recovery.md).
  • Частотная калибровка штатно — ЗАМКНУТЫЙ цикл под прибор (CmdOpenCal → модуль TX несущую → крутить трим → CmdWriteAll). Один AT+DMOFREQERR-стиль «одной командой» тут не применим.

Живой снимок (research/tuning-re/module-cal-baseline.txt)

DigVCCN b1=0x3f b2=0x40 | AnaVCCN b1=b2=0x80 | Mod all=0x96 | PWR 00 01 01 00 05 | Slot 00 00 03 42 01 08 d9. Baseline для отката DMR-трима = 0x40 (band2), 0x3f (band1).