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
Этот коммит содержится в:
@@ -30,6 +30,14 @@ Software «Write» залил ДЕФОЛТНЫЕ** значения смещен
|
||||
|
||||
## Пути восстановления (по приоритету)
|
||||
|
||||
0. **⭐ 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`.
|
||||
|
||||
1. **Компенсация на хотспоте (RXOffset)** — БЕЗ прибора. Если TX рации смещена на постоянный
|
||||
X Гц, выставить на хотспоте `RXOffset` так, чтобы приёмник поймал смещённую передачу.
|
||||
Перебор RXOffset в MMDVM.ini (±1000 Гц шагом ~100), рестарт MMDVMHost, при передаче рации
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
# RT-4D DMR-модуль «FM100B» = чип **HF6853** (семейство AUCTUS A6 / RDA8809)
|
||||
|
||||
**Дата: 24.07.2026. Опознание БЕЗ разбора рации — по схеме `RT4DDLT01` (Radtel, v2.1, 2024-06-04).**
|
||||
|
||||
## Что на схеме
|
||||
|
||||
Лист `RT4DDLT01` («DMR daughterboard») содержит РОВНО ОДИН основной чип:
|
||||
|
||||
- **U700 — маркировка `HF6853`**, 41-выводный корпус.
|
||||
- Обвязка: кварц **X700 = 26 МГц (2520)**, LDO **U702 = XC6204E332MR (3.3 В)**,
|
||||
аудио-ОУ **U701**, аналоговый ключ **Q700** (DIG/ANA AF-SW), пассив.
|
||||
- Внешний **SPI-flash** к чипу (выводы `F_SO / F_SI / F_SCK / F_CSN`, они же
|
||||
`MCLK/IO2`, `TCK/IO3`, `IO0`, `IO1`) — там лежит прошивка модуля (`FM100B_V1.2.0.13`).
|
||||
- UART к хосту (AT32): `P28/RX_EN` / `P25/TX_EN` → **DIG-TXD / DIG-RXD** на разъёме.
|
||||
|
||||
### HF6853 — это ВСЁ-в-одном (не только baseband!)
|
||||
|
||||
Выводы U700 однозначно показывают интеграцию всего радиотракта в один кристалл:
|
||||
|
||||
| Группа выводов | Назначение |
|
||||
|---|---|
|
||||
| `VCCRXFE, ANT, VCCPA, VCCPAD, VCCIF, VSYS` | ВЧ-приёмник (RX front-end), PA, ПЧ — **интегрированный трансивер** |
|
||||
| `MICBIAS, MICLP, MICLN, LINEL, LINER` | вход микрофона/линии — **аудио-кодек** |
|
||||
| `AUDLP, AUDLN, VCOM, VDDAUD, GNDAUD` | выход аудио — **ЦАП/кодек** |
|
||||
| `F_SO/F_SI/F_SCK/F_CSN` | внешний SPI-flash с прошивкой |
|
||||
| `P28/RX, P25/TX, P0/TXD2, P12/CTS, P13/RTS` | UART’ы к хосту |
|
||||
| `XI/XO (26 МГц), CLK_26M/PWM0` | опорный генератор |
|
||||
|
||||
То есть DSP + AMBE-вокодер + ВЧ-трансивер + аудио-кодек + CPU — **в одном чипе HF6853**.
|
||||
|
||||
## Идентификация: семейство AUCTUS A6
|
||||
|
||||
Архитектура «CPU + ВЧ-трансивер + DSP + AMBE-вокодер + кодек в одном кристалле,
|
||||
прошивка во внешнем SPI-flash, 26 МГц» — это **AUCTUS A6** ( shenzhen Auctus).
|
||||
Реверс jhart99 показал: **A6 внутри = RDA8809** (дериватив RDA8955, 2G-GSM SoC,
|
||||
перепрофилированный под рацию). Auctus также владеет правами на AT1846.
|
||||
|
||||
Тот же чип/модуль стоит в: COTRE CO01D/CO04D/CO06D, GOCOM GD900/GD100/GD700/GD800,
|
||||
CONNECOM. Прошивочные строки RT-4D (`Vocoder/WebRTC/codec adc/dac/mic`,
|
||||
`F312/F315/DP275/FM100/PM100`) — это общая прошивка Auctus/iRadio/Radtel DMR-модуля.
|
||||
|
||||
> **Коррекция прежней версии:** ранее модуль был опознан как *Sicomm SCT3258TD* по
|
||||
> строкам вокодера. Это неверно: SCT3258 — только baseband (нужен внешний ВЧ SCT3700),
|
||||
> а HF6853 содержит ВЧ-тракт сам. Нативный протокол тоже другой (не `84 A9 61`, а
|
||||
> RDA-debug `AD 00 …` + CPS `aa … bb`, см. ниже). Актуальная идентификация — **HF6853 / Auctus A6 / RDA8809**.
|
||||
|
||||
## Скрытый ATE/CPS-интерфейс (реверс jhart99, репо `a6tools`)
|
||||
|
||||
Полностью реверснут. Копия в [`research/a6tools/`](../research/a6tools). Транспорт: UART **921600 8N1, XON/XOFF**.
|
||||
|
||||
### Два уровня протокола
|
||||
|
||||
1. **RDA-debug** (низкий уровень, доступ к памяти/регистрам):
|
||||
кадр `AD 00 <len16 BE> FF <cmd> <payload> <XOR>`; спецбайты `0x5C/0x11/0x13` экранируются
|
||||
(`5C, 0xFF^x`); ACK = `11 13`.
|
||||
Команды: `0x02` read_word, `0x04` read_reg8, `0x84` write_reg8, `0x83` write_block.
|
||||
2. **ATE/CPS** (высокий уровень): команда пишется `write_block`’ом в спец-регистр
|
||||
`ate_cps_addr` (адрес = read_word(`0x81C00270`)), затем «звонок» — запись в
|
||||
регистр `0x00000005` (h2p): `0x00`=clear, `0xA5`=выполнить, `0xEE`=reboot, `0xFF`=boot handler.
|
||||
- ATE-кадр: строка `AT+…\r`, добита нулями до кратности 4.
|
||||
- CPS-кадр: `aa <len8> <cmd…> <XOR> bb` + null-паддинг до кратности 4.
|
||||
- Ответ читается из памяти: длина по `resp_addr-4`, данные с `resp_addr`
|
||||
(`resp_addr` = read_word(`0x81C00264`), uart_resp = `0x81C0026C`).
|
||||
|
||||
Вход в debug: держать UART в debug-режиме записью регистра `0x00000003 = 0x80`.
|
||||
`rebootandfreeze` (запись рег.`0` = `0x03`) — сброс+останов CPU для чтения ROM.
|
||||
|
||||
## ⭐ Починка частотного смещения TX (наша проблема [[rt4d-dmr-tx-broken]])
|
||||
|
||||
**Ровно наш случай.** У A6-раций заводское смещение TCXO (у jhart99 GOCOM GD900 было
|
||||
+800 Гц «в допуске», но MMDVM не тянул). У нас ~1100 Гц — тоже в пределах ±2500 Гц.
|
||||
|
||||
Команды: `AT+GETFREQERR` (прочитать), `AT+DMOFREQERR=<N>` (записать).
|
||||
**Формула:** `offset[Гц] = -2500 + 10*N` ⇔ `N = (offset + 2500)/10` (N = 0..500, шаг 10 Гц).
|
||||
После записи **сменить канал**, чтобы применилось. Диапазон ±2500 Гц.
|
||||
|
||||
`freqoffset.py`: `delta = target - current; N = ((get_freq_err()+delta)+2500)/10`.
|
||||
Т.е. измеряем реальную TX по SDR, даём (измеренную, номинальную) — тул сам считает N.
|
||||
|
||||
### Как применить на RT-4D
|
||||
1. Ввести модуль в bridge/update-режим («Обновление DMR чипа» — вкл. с зажатой MENU).
|
||||
Проверить, слушает ли он RDA-debug (`AD 00 … FF 04 <03000000> 01 …` → ответ `content=0x80`)
|
||||
на нужной скорости (пробовать 921600, затем скорость нашего моста).
|
||||
2. Если отвечает → адаптировать `tools/a6_freqfix.py` (заготовка в репо) под COM рации через
|
||||
powershell-мост (как в `tools/fm100b.py`).
|
||||
3. Измерить реальную TX-частоту рации по SDR (RTL-SDRv3) относительно номинала (438.800 и т.д.).
|
||||
4. `AT+DMOCONNECT` → `AT+GETFREQERR` → посчитать N → `AT+DMOFREQERR=N` → сменить канал → проверить BER на хотспоте.
|
||||
|
||||
**НЕ выполнять вслепую** (боевая рация, нужен SDR для измерения — см. [[rt4d-dmr-tx-broken]]).
|
||||
Это первый путь, НЕ требующий Radtel `.updat` и не требующий Radio Tuning Software.
|
||||
|
||||
## Что это открывает помимо TX
|
||||
- `AT+DMOSETVAFC/DMOGETVAFC`, `AT+DMOSETPOWER/DMOSETCHPOWER`, `AT+DMORDRSSI` — вся калибровка.
|
||||
- CPS-команды (`0x0012` chanInfo и др.) — прямое чтение/запись каналов в модуле.
|
||||
- `radiodump-ng.py` — дамп прошивки модуля через debug-интерфейс (свой вокодер/reverse).
|
||||
- Полный список — `research/a6tools/atcommands.md`, `cpecommands.md`.
|
||||
|
||||
## Источники
|
||||
- jhart99: [A6 обзор](https://jhart99.com/auctus-a6/), [A6 in depth](https://jhart99.com/auctus-a6-revealed/),
|
||||
[hidden interface](https://jhart99.com/a6-hidden-interface/), [ATE/CPS commands](https://jhart99.com/atecps/),
|
||||
[Frequency Fix (GD900)](https://jhart99.com/frequency-fix/)
|
||||
- Код: [github.com/jhart99/a6tools](https://github.com/jhart99/a6tools) (копия в `research/a6tools/`)
|
||||
- qdmr `AuctusA6Interface` (libdmrconf)
|
||||
- Схема: `RT4DDLT01.pdf` (Radtel), рендеры листа DMR-модуля.
|
||||
Ссылка в новой задаче
Block a user