Реверс апдейтеров + API-карта модуля (172 команды)
RT-4D Upgrade (.NET, DES+RSA) прошивает AT32 (протокол 39 33 05 = загрузчик рации), НЕ модуль. Полный список 172 ATC/SP-команд модуля (research/module-fw/). У приложения модуля НЕТ команды дампа flash -> полный дамп NV/RF Firmware только через загрузчик модуля (download-режим, live). Cal-значения (SPCali_*: FreqOpt/AnaVccn/DigMod) доступны B-командами. docs/fm100b-firmware-re.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NikMGoqQWWk9wy2ww2vJAr
Этот коммит содержится в:
@@ -64,6 +64,25 @@ Bootloader | Application | RF Firmware | NET info
|
||||
снять полный дамп → распарсить EasyFlash ENV (NET info) + разобрать RF Firmware (vocoder/DMR).
|
||||
Это разблокирует СРАЗУ: NV-настройки, калибровку, и сам DMR-baseband для реверса.
|
||||
|
||||
## Апдейтеры: кто что прошивает (реверс .NET)
|
||||
- **RT-4D Upgrade V3_25** (`Ido_Update`, DES+RSA) прошивает **AT32 (главный CPU рации)**, НЕ модуль:
|
||||
команды `Send_Connect=39 33 05 10 c9`, `Send_Update=39 33 05 55 0e`, `Send_End=39 33 05 ee a7`
|
||||
— это протокол **загрузчика AT32** (тот же `39 33 05`, что в `tools/flash_ps.py`). Для дампа
|
||||
flash модуля НЕ годится.
|
||||
- **Radio Tuning Software** — калибровка модуля по 0x68 (см. docs/tuning-software-protocol.md).
|
||||
- Отдельного PC-апдейтера МОДУЛЯ на рабочем столе нет; образы `FM100B_*.bin` = раздел Application
|
||||
(0x175000 = ровно размер раздела), т.е. из вендорского пакета, не live-дамп.
|
||||
|
||||
## API-поверхность модуля (172 команды, research/module-fw/module_api_commands.txt)
|
||||
Полный список ATC_*/SP*-команд (протокол 0x68 AT32↔модуль). Важное:
|
||||
- Калибровка (NV): `SPCaliic_FreqOpt`/`SPCaliFreqSetCnf` (частота!), `SPCali_AnaVccnOpt` (VCCN аналог=0x80),
|
||||
`SPCali_DigMod1Opt` (девиация), `SPCali_ChannelParamOpt`, `SPCali_AnaSQthOpt`, `SPCali_SQRXFreqOpt`,
|
||||
`SPCali_HeadGQParamOpt`. Это NV-элементы, которые читаются/пишутся B-командами (0xB0–0xBD).
|
||||
- ⚠️ `ATC_ClearNVdataReq` — СТИРАНИЕ NV (не слать!).
|
||||
- **Команды дампа flash в приложении НЕТ** → полный дамп NV(«NET info»)/RF Firmware возможен только
|
||||
через **загрузчик модуля** (download-режим), не через рабочую прошивку. Это живая операция (при владельце).
|
||||
Сами cal-значения доступны и так — через B-команды (tools/tuning_read.py).
|
||||
|
||||
## Реальные следующие шаги (реверс+правка+тест)
|
||||
1. **API-поверхность:** извлечь полный список ATC_*/SP*-команд (это протокол 0x68 между AT32 и модулем)
|
||||
— карта того, чем вообще можно управлять. Уже частично в docs/fm100b-commands.md.
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
ATAlarmStatusCnf
|
||||
ATAlarmStatus_s
|
||||
ATAnaCallSetupC
|
||||
ATAnaCalledStartCnf
|
||||
ATAssi
|
||||
ATBtlLevelQueryCnf
|
||||
ATCAgcthSetReq
|
||||
ATCAnaCtCdGainSetReq
|
||||
ATCCmdUploadDigBusyIsStatus
|
||||
ATCEQLevelSetReq
|
||||
ATCRFCompanderSetReqGy
|
||||
ATCRecvAmbe6sdataCnf
|
||||
ATCRfChipQu
|
||||
ATCRxSmsSendAckCn7
|
||||
ATCScancallCnfParser
|
||||
ATCSqlGe
|
||||
ATC_
|
||||
ATC_ANATX9
|
||||
ATC_Al
|
||||
ATC_AnaChGroupSetReq
|
||||
ATC_AnaSignalNumSetReq
|
||||
ATC_AssignChDataQuery_Reqs
|
||||
ATC_AssignRecGroup_Query
|
||||
ATC_CMD
|
||||
ATC_Cal
|
||||
ATC_CalledContactINfoQuery
|
||||
ATC_ChDcdmSwitchRe
|
||||
ATC_ChFreqSetReq
|
||||
ATC_ChModeSet
|
||||
ATC_ChRFChipS
|
||||
ATC_ChSlotSetReq
|
||||
ATC_ChannelSetCnf
|
||||
ATC_CheckSumFail
|
||||
ATC_ClearNVdataReq
|
||||
ATC_CurCHAnaS
|
||||
ATC_CurCHDigdataSetReq
|
||||
ATC_CurChKeySetReq
|
||||
ATC_CurChTOTTime_SETRa
|
||||
ATC_CurChannelWaitSetReq
|
||||
ATC_DTMFToneSetReq
|
||||
ATC_DigChGroupSetReq
|
||||
ATC_DigMonitorEnSetReq
|
||||
ATC_DigS
|
||||
ATC_EMGtype
|
||||
ATC_FreqopP
|
||||
ATC_In
|
||||
ATC_Inbanddatb
|
||||
ATC_KeyHandle_MonitorSetProc
|
||||
ATC_KeyHandle_POWERSetPr
|
||||
ATC_KeyHandle_S
|
||||
ATC_LocalRecordPlayReq
|
||||
ATC_MICCodecGainS4met
|
||||
ATC_Mon
|
||||
ATC_MonitorTxtimeSetReq
|
||||
ATC_Msg
|
||||
ATC_PlaySingleToneReq
|
||||
ATC_PowerlevelSet
|
||||
ATC_PrintInfo
|
||||
ATC_RFRegs
|
||||
ATC_RXKillDecodeEnS
|
||||
ATC_RadioIDSetReq
|
||||
ATC_RecordDataPlayReq
|
||||
ATC_RecordEnReq
|
||||
ATC_ReportDigInfo
|
||||
ATC_RfDeviati
|
||||
ATC_Roq
|
||||
ATC_RssiReadReq
|
||||
ATC_SMSPr
|
||||
ATC_SPKCodecGainSet
|
||||
ATC_Sca
|
||||
ATC_SeGTtDeepSleepReq
|
||||
ATC_SendCallPromptReq
|
||||
ATC_SendSmsfailInfo
|
||||
ATC_SendVcdNoi3
|
||||
ATC_SetC
|
||||
ATC_SetEncryptLi
|
||||
ATC_SetLanguageSe
|
||||
ATC_SetRfPowerLevelReq
|
||||
ATC_SleepStatusCLnng
|
||||
ATC_SmsmodeSetReq
|
||||
ATC_SwitchChannela
|
||||
ATC_T5hholdtimesetReq
|
||||
ATC_TxCon
|
||||
ATC_UVFreqGpio_SE
|
||||
ATC_VCDInterleavEnReq
|
||||
ATCall
|
||||
ATCallDisCo
|
||||
ATCallN
|
||||
ATChChgCnf
|
||||
ATCmdBSStatus
|
||||
ATCmdSetCnf
|
||||
ATCurChScanlistQueryCnf
|
||||
ATDataStatus
|
||||
ATDigBroadcastCnf5
|
||||
ATDigCallSetupCnf
|
||||
ATDigCalledStartCnf
|
||||
ATModule
|
||||
ATNoiselevSetCnf
|
||||
ATQuerySY
|
||||
ATRadioIDQueryCnf
|
||||
ATRecvEmgCallInd
|
||||
ATRssiQueryCnf
|
||||
ATSPSendSleepReq
|
||||
ATSPWak
|
||||
ATScanStatusQueryCnf
|
||||
ATScanSwitchCnf
|
||||
ATUploadRxSmsCnf
|
||||
ATVCDInterleavQueryCnf
|
||||
ATVoicL
|
||||
ATVoiceDecCnf
|
||||
ATVoiceEncryptQum
|
||||
ATVoiceProd
|
||||
SPATCDigChBusyIsCnf
|
||||
SPATCRecvEmgDi
|
||||
SPATSetCnf
|
||||
SPATSysReadyInd
|
||||
SPATVoicedata
|
||||
SPATWkInd
|
||||
SPAnaCallsetupCnf
|
||||
SPAssignC
|
||||
SPAssignRecGroupQuery
|
||||
SPAtcAnaCallRxStartCnfK
|
||||
SPAtcAnaSqlBusyStatus
|
||||
SPAtcBSActiveStat
|
||||
SPAtcSleepTimerOPT
|
||||
SPBSActTimeoverCnf
|
||||
SPBreakCnf
|
||||
SPCaliFreqSetCnf
|
||||
SPCali_AnaSQthOpt
|
||||
SPCali_AnaVccnOpt
|
||||
SPCali_ChannelParamOpt
|
||||
SPCali_DigMod1Opt
|
||||
SPCali_HeadGQParamOpt
|
||||
SPCali_SQRXFreqOyYpt
|
||||
SPCaliic_FreqOpt
|
||||
SPCalledIDQuer
|
||||
SPCclPwsSetReq
|
||||
SPCclSpDP
|
||||
SPCclSpInBandDataInd
|
||||
SPContactProcessHandleReq
|
||||
SPCurZoneChinfoQuery
|
||||
SPDigMonitorReportInfo
|
||||
SPEMG_StopAlarmReq
|
||||
SPGetVcdNoiseTHReq
|
||||
SPGroupListI
|
||||
SPKirisunEffectCnf
|
||||
SPMicVoiceCnf
|
||||
SPMmiCh
|
||||
SPMmiSetupCnf
|
||||
SPModuleInitQuery
|
||||
SPNullMsgSendReq
|
||||
SPRadioIDQuery
|
||||
SPResetC
|
||||
SPRoamList_SoPetReq
|
||||
SPRssi_glitchQueryCnf
|
||||
SPRssi_noiselevQueryCnf
|
||||
SPRssilev0
|
||||
SPSCAN_ScanInd
|
||||
SPScanH
|
||||
SPSendInBandDataReq
|
||||
SPSetVcdNo
|
||||
SPSlo
|
||||
SPSpMmi
|
||||
SPSwVerQuery
|
||||
SPSysLanguageQuery
|
||||
SPT
|
||||
SPUpData
|
||||
SPVcdInterleavQuery
|
||||
SPVoiceDa
|
||||
SPVoiceEncryptQuery
|
||||
SPWaitChDi
|
||||
SP_ID
|
||||
Ссылка в новой задаче
Block a user