Beken CRC16-формат образа + де-интерливинг -> чистая прошивка
Образы FM100B = сырой Beken-флеш (32 данных + 2 CRC16 = блоки 34Б; подтверждено периодом 34). tools/bk_deinterleave.py снимает CRC -> research/module-fw/FM100B_V1.2.0.32_clean.bin (чисто, строки целые). Окончательно подтверждает стандартный Beken-флеш -> ltchiptool/bk7231tools подойдут для дампа живого модуля (вариант A). docs/fm100b-firmware-re.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NikMGoqQWWk9wy2ww2vJAr
Этот коммит содержится в:
@@ -105,6 +105,18 @@ Bootloader | Application | RF Firmware | NET info
|
||||
Вывод: модуль — универсальный Beken-378x DMR/intercom SoC, используемый разными брендами
|
||||
(Radtel/Kirisun/iRadio). Многое из этого можно дёргать по 0x68 через мост (осторожно — только Query/Read вслепую).
|
||||
|
||||
## ⭐ Формат образа: Beken CRC16-каждые-32-байта (де-интерливинг)
|
||||
Образы `FM100B_*.bin` — сырой дамп Beken-флеша: **32 байта данных + 2 байта CRC16 = блоки по 34 байта**
|
||||
(подтверждено: непечатные пары строго через 34 байта). Те «битые» 2 байта в строках (`ef 10`,
|
||||
`a8 2c`) — это CRC, не порча. Снятие CRC даёт ЧИСТУЮ прошивку:
|
||||
- `tools/bk_deinterleave.py raw.bin clean.bin` (выкинуть 2 CRC из каждых 34 байт, фаза 0).
|
||||
- Чистый образ: `research/module-fw/FM100B_V1.2.0.32_clean.bin` (1 437 938 Б, снято 89 870 CRC).
|
||||
- После снятия строки целые («RF Firmware», «check failed» и т.д.). **Для будущего реверса — брать
|
||||
чистый образ.**
|
||||
|
||||
Это **окончательно подтверждает стандартный Beken-флеш** → для дампа живого модуля подойдут
|
||||
**ltchiptool / bk7231tools** (они читают этот формат и сами снимают CRC). Путь варианта A ниже.
|
||||
|
||||
## Достоверность образов и версии
|
||||
- Оба образа (.13 2025-04, .32 2026-01) — plaintext, надёжны (в обоих `beken378`/`EasyFlash`/партиции/
|
||||
`check failed`). Встречаются одиночные не-ASCII байты в строках (в разных местах у .13 и .32) —
|
||||
|
||||
Ссылка в новой задаче
Block a user