Главное: - Опознан DMR-чип: FM100B = Sicomm SCT3258TD. Датащит Packet Interface (126 стр) в docs/. Открывает калибровку/AMBE/вокодер по документации. Родня: UV-4R, китайские клоны. Реализовано: - Приём Talker Alias (cmd 0x60) — позывной крупно на экране (build_ta.py) - Интерактивный агент — управление FM100B по COM без перешивки (build_agent.py + agent.py) - Полная карта команд FM100B с живой рации (fm100b-commands.md) - Работа с SPI: чтение/запись/восстановление codeplug и калибровки (spi_read/spi_wr/spi_restore) - Конструктор дисплея + редактор прошивки (tools/display-editor) Документация: - docs/SCT3258_packet_interface.txt/.pdf — спека DMR-чипа - docs/fm100b-commands.md — карта команд - docs/dmr-tx-recovery.md — диагноз/восстановление DMR-передачи Инструменты: flash_ps.py (прошивка через WSL/powershell), sniff.py (снифер кадров), hotspot_rxoffset_sweep.py, apply_patch.py, build_* сборщики. Важно: DMR TX-калибровка сбита в экспериментах со SET-командами модулю; восстановление через offset-компенсацию / .updat Radtel / калибровку по прибору (docs/dmr-tx-recovery.md).
3.2 KiB
FM100B — карта команд (снята интерактивным агентом)
Снято tools/agent.py на прошивке rt4d_agent.bin — запрос каждой команды пустым
payload (68 cmd 01 01 CK CK 00 00 10), ответ модуля через снифер. Рация V1.2.0.32.
status (байт [3] ответа): 0x00 = OK/есть данные, 0x01 = не поддержано или нужен payload.
Отвечают данными (status 0x00, len>0)
| cmd | len | ответ | смысл |
|---|---|---|---|
0x04 |
1 | 03 |
параметр |
0x24 |
4 | 01 00 40 01 |
возможности/идентификатор модуля |
0x25 |
4 | 01 02 00 32 |
версия прошивки = V1.2.0.32 |
0x27 |
1 | 00 |
статус |
0x28 |
1 | 00 |
статус |
0x34 |
2 | 00 00 |
параметр (2 байта) |
0x35 |
35 | 10 02 21 6a df 62 e1 4f 53 90 38 … |
таблица (записи с сигнатурой e1 4f 53 90) |
0x36 |
1 | 00 |
статус |
0x3B |
1 | 01 |
флаг |
0x43 |
33 | 10 01 01 70 65 57 5b e1 4f 53 90 31 … 32 … |
таблица: две записи …e1 4f 53 90 + индекс 1/2 (контакты/RX-группы?) |
0x46 |
1 | 00 |
статус |
0x85 |
1 | 00 |
статус |
Приняты без данных (status 0x00, len 0) — действия/OK
0x01 0x03 0x1A 0x40 0x4B 0x65 0x66
(0x66 = девиация ш/у полосы по changelog; 0x65 рядом — вероятно связанное)
Не поддержано / нужен payload (status 0x01)
0x0D 0x0E 0x10-0x19 0x22 0x2B 0x2C 0x2D 0x30 0x37 0x3A 0x3C 0x3D 0x3F 0x41 0x44 0x45 0x47 0x4A 0x4E 0x4F 0x50 0x51 0x52 0x54 0x56 0x58 0x5C 0x5D 0x5E 0x60 0x61 0x63 0x64 0x67 0x83 0x84 0x86 0x87
(это SET/enable-команды — на пустой запрос отвечают отказом; проверять с payload)
Не опрошены (опасные SET — меняют состояние)
0x05 конфиг канала · 0x06 вызов · 0x07 данные канала · 0x0A PTT ·
0x49 свой DMR ID · 0x62 параметры вызова · 0x81/0x82 SMS · 0x2A 0x42 0x48 0x4C 0x4D 0x55 0x57 · 0x3E прошивка модуля — НЕ СЛАТЬ
Известны из снифера входящего вызова (FM100B → MCU)
| cmd | смысл |
|---|---|
0x62 |
параметры вызова (src/dst/TG) |
0x06 |
setup (sub 0x60) / end (sub 0x6f) |
0x60 |
Talker Alias (позывной) — см. docs/talker-alias |
0x59 |
активность приёма (гейт звука PA14) |
0x05 |
конфигурация канала |
Открыто
- AMBE-выдача (для модема): по умолчанию нет. Кандидаты — SET-команды со
status 0x01, проверять с payloadenable+ активный вызов + наблюдение потока через агента. - Таблицы
0x35/0x43: расшифровать формат записи (сигнатураe1 4f 53 90).