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
Этот коммит содержится в:
@@ -0,0 +1,34 @@
|
||||
def escaper(msg):
|
||||
""" escape message
|
||||
|
||||
this function escapes special characters in the message. These
|
||||
are 0x5c, 0x11 and 0x13 which are '\' and XON and XOFF characters.
|
||||
|
||||
@param msg: the message to escape
|
||||
@return: the escaped message
|
||||
|
||||
"""
|
||||
|
||||
out = bytes(sum([[0x5c, 0xFF ^ x ] if x in [0x11, 0x13, 0x5c] else [x] for x in msg], []))
|
||||
return out
|
||||
|
||||
def unescaper(msg):
|
||||
""" unescape message
|
||||
|
||||
this function undoes any escape sequences in a received message
|
||||
|
||||
@param msg: the message to unescape
|
||||
@return: the unescaped message
|
||||
"""
|
||||
|
||||
out = []
|
||||
escape = False
|
||||
for x in msg:
|
||||
if x == 0x5c:
|
||||
escape = True
|
||||
continue
|
||||
if escape:
|
||||
x = 0x5c ^ x ^ 0xa3
|
||||
escape = False
|
||||
out.append(x)
|
||||
return bytes(out)
|
||||
Ссылка в новой задаче
Block a user