Files
rt-4d/docs/tuning-software-protocol.md
T
viktorиClaude Opus 4.8 dfae06acfc Реверс: RDA-debug в мосте недоступен; тюнер калибрует по 0x68 (cmd 0xB0-0xBD)
- tools/a6_probe.py: проверка достижимости RDA-debug через мост.
  РЕЗУЛЬТАТ: 0x68-мост жив, но RDA knock молчит на 115200/921600 (XON/XOFF и без) —
  прошивка модуля держит UART, ROM-debug недоступен. Значит a6tools/AT+DMOFREQERR
  напрямую не пробить; калибровку писать через 0x68.
- docs/tuning-software-protocol.md: декомпиляция Radio Tuning Software 241219.exe
  (dnfile). Сборка UV5118_4819_Tune. Калибровка идёт ТЕМ ЖЕ 0x68 (не 0xAAAA),
  команды 0xB0-0xBD извлечены из статических шаблонов: 0xBD connect, 0xB1 границы
  диапазонов (UHF 400/435/470, VHF 136/150/174 МГц), 0xB2/B4 девиация, 0xB6/B7/B8
  мощность/частотные точки, num_U_DigFreq = смещение DMR-частоты. Достижимо через
  наш мост -> путь к правильной калибровке TX без прибора (фидбек по MMDVM BER).

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

64 строки
4.6 KiB
Markdown
Исходник Ответственный История

Этот файл содержит неоднозначные символы Юникода
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Radio Tuning Software 241219 — реверс протокола калибровки
Декомпиляция `Radio Tuning Software 241219.exe` (dnfile). Сборка **`UV5118_4819_Tune`**
(«4819» = шина управления DMR-модулем `DIG-SCN/SDA/SCK4819` со схемы RT4DDLT01).
## Главное
Тюнер калибрует модуль **тем же 0x68-протоколом**, что и `tools/fm100b.py` (НЕ 0xAAAA, как
считалось раньше) — значит **достижимо через наш мост** (режим «Обновление DMR чипа»).
Формат кадра тот же: `68 cmd b sub CKhi CKlo lenHi lenLo <payload> 10`, CRC как в fm100b.py.
## Команды калибровки (0xB0–0xBD), извлечены из статических шаблонов (FieldRVA)
| cmd | назначение (по контексту UI/методов) | пример payload |
|------|--------------------------------------|----------------|
| 0xBD | Connect / вход в режим калибровки | `01` |
| 0xB0 | старт/стоп калибровки (on/off) | `01` / `00` |
| 0xB1 | таблица границ диапазонов (band, N, частоты ×N по 4Б BE, Гц) | UHF: 400.125/435.125/469.975 МГц; VHF: 136.125/150.125/174.125 МГц |
| 0xB2 | девиация/модуляция набор 1 (band, idx, val) | `01 01 80`; read: `00 02` |
| 0xB4 | девиация/модуляция набор 2 | `01 01 80`; read: `00 02` |
| 0xB6 | мощность/параметр (band, idx, val16?) | `01 01 01 96`; read: `00 01 00` |
| 0xB7 | частотные точки/оффсеты (band, idx, …) | `01 00 05 9a 01 08 75`; read: `00` |
| 0xB8 | мощность/параметр | `01 01 01 02 78`; read: `00 01 01 00` |
| 0xB3 | SQ/шум набор 1 | `01 01 02 02` |
| 0xB5 | SQ/шум набор 2 | `01 01 00 02` |
Первый байт payload = **band**: `01`=UHF, `02`=VHF (в 0xB1); в set-командах `01`=UHF-set,
`00`=read/VHF. Частоты в 0xB1 — 32-битные BE в Гц.
## Модель калибровки (из UI-методов и дефолтов)
- Панель делит диапазон на **15 частотных точек** (методы `cboxNN_1..15`, `nPowerH/L_1..15`,
`nSQN/W_1..15`, `nNoiseN/W_1..15`) — для каждой точки свои: мощность H/M/L, девиация (Mod1..3),
SQ, шумоподавление.
- Отдельно `num_U_DigFreq` / `num_V_DigFreq`**смещение ЦИФРОВОЙ (DMR) частоты** UHF/VHF
(наш параметр!), `num_U_AnaFreq` — аналоговой. Плюс `chbox_U_DigFreq` (вкл).
- Кнопки: `btnCal_U_Freq` (автокалибровка частоты по прибору), `btnRead_U_Freq`,
`btnStop_U_Freq`; `btnRead_U_Mod/PWR`, `btnCal_U_Mod/PWR`; `btnTouchuan` = 透传 (прозрачный
режим TX для замера). `ButtonRead`/`btnWriteAll`/`ButtonWrite`; `SaveTuneData`/`SaveDigTuneData`
= запись+сохранение (это и есть «Finish»).
- Приём/разбор ответов: `Port_DataReceived``RecvDataOperation` (≈74 обработчика по cmd),
`DataSum` = контрольная сумма.
## Заводские дефолты (из блоба)
```
mod: b9 b9 b9 b9 b9 b9 (6×) # девиация-дефолт
32 32 32 32 32 32
9b 9b 9b 9b 9b 9b
flags 00 ff 00
37 a0 38 6b 40 ab # ?
06 02 06 02 0a 00 05 00
15pt: 3a 3c 3f 41 44 47 4a 4b 4c 4d 4e 4f 50 51 52 # 15 частотных точек (растущие)
80 00 80
12 e2 34 40 2a 4f b3 (×2)
```
## Что осталось (для скриптования)
Точное соответствие «num_U_DigFreq → cmd+байт» — в IL методов `btnRead_U_Freq_Click` /
`ReadDigDataToUI` / `SaveDigTuneData`. Кандидат — `0xB7` (частотные точки/оффсет) или отдельный
freq-cmd. Для ручной калибровки штатным тулом это не нужно: `num_U_DigFreq` крутится в UI.
## План применения (см. dmr-tx-recovery.md, путь через 0x68)
Вариант A (штатный тул): пользователь открывает Tuning SW → Read → крутит `num_U_DigFreq`
WriteAll → Save → сменить канал → PTT → BER на MMDVM. Перебор до минимума BER (без прибора).
Вариант B (скрипт): дореверсить cmd DigFreq → `tools/` слать 0xB7/0xBx через мост, MMDVM-фидбек.