Flash Memory(字库)如何备份
Flash Memory(字库)如何备份
字库就是Flash Memory。
字库通常指以下关键数据:
- NVRAM(Non-Volatile Random Access Memory):包含 IMEI、WiFi MAC 地址、蓝牙地址等校验信息。
- Modem 分区(基带数据):存储设备通信相关的驱动程序和配置。
- EFS(Encrypting File System):高通设备中存储 IMEI、设备标识符等关键信息。
- TEE(Trusted Execution Environment):存储安全环境数据。
- Persist 分区:保存传感器校准、设备认证等重要数据。
如果你在刷机的过程中出现了基带丢失,那么你将无法使用移动网络。比如出现了基带未知的错误,如图:
基带版本未知错误
基带版本未知有几种情况,分别是:
- 刷姬失败,刷姬的过程中出现错误,未能正确的刷入基带分区
- ROM与基带不匹配
- 某些模块导致出现这种错误,并且无法更改回去
- 硬件损坏
- 没有这个硬件
- EFS分区和NV数据损坏,基带分区损坏
例如,我的3588开发板中的云手机就不存在这个硬件,所以也会出现一些未知错误,如图:

判断
如何进行判定呢?
在拨号界面输入 *#06# 检查 IMEI:
- IMEI 正常:说明问题可能在基带固件。
- IMEI 丢失:可能是 EFS 或 NV 分区问题、要么就是基带分区加载失败

查看基带版本:
- 如果显示为“未知”或“无”,说明基带分区损坏。
综合诊断,说明基带分区出现了问题,只能重新刷入基带分区。
解决
解决的方法有两种:
- 直接重新刷机,清楚手机数据
- 重新刷入基带模块
刷入基带模块方法很多,可以利用flash刷写工具、可以使用adb、可以使用TWRP等方法。
准备工具
Qualcomm Devices(高通):
QPST(Qualcomm Product Support Tool)
EFS Professional
MTK Devices(联发科):
SP Flash Tool
MTK Droid Tools
分区访问工具:adb、TWRP
备份基带数据
将备份的基带分区(如 modem.img 或 nvram.bin)复制到设备,如果你的设备是正常的那么直接备份就可以了,如果你的设备已经出现错误,并且没有提前备份,那么可以直接使用ROM包里面的modem.img,只有卡刷包里面才能提取出来modem.img,线刷包里面是没有的。

使用adb和dd备份
和基带相关的分区通常是:modem、modemst1、modemst2。使用adb进入shell控制台。
命令如下:
adb shell
alioth:/ $ su
alioth:/ # ls /dev/block/by-name/
在 A/B 分区设备上,系统会自动切换到当前使用的分区(Slot)。进入手机shell进行操作:
getprop ro.boot.slot_suffix输出会是 _a 或 _b,表示当前设备正在使用 modem_a 或 modem_b。
也可以通过fastboot来进行一个查询,在Windows的powershell中操作如下:
fastboot getvar current-slot返回内容如下:
< waiting for any device >
current-slot: b
Finished. Total time: 0.003s手动打包img文件:
adb shell
su
dd if=/dev/block/by-name/modem_a of=/sdcard/modem_a.img
dd if=/dev/block/by-name/modem_b of=/sdcard/modem_b.img
dd if=/dev/block/by-name/modemst1 of=/sdcard/modemst1.img
dd if=/dev/block/by-name/modemst2 of=/sdcard/modemst2.img
打包好了之后传输到电脑做一个备份。
恢复基带数据
使用adb和dd恢复
操作如下:
adb shell
su
dd if=/sdcard/modem_a.img of=/dev/block/by-name/modem_a
dd if=/sdcard/modem_b.img of=/dev/block/by-name/modem_b
dd if=/sdcard/modemst1.img of=/dev/block/by-name/modemst1
dd if=/sdcard/modemst2.img of=/dev/block/by-name/modemst2TWRP:
- 在 TWRP 中选择“恢复”,加载之前备份的文件。
修复权限:
chmod 600 /dev/block/by-name/modem重启设备,检查基带信息是否恢复。
使用fastboot刷写
将基带文件(如 modem.img)放在 fastboot 目录下。
进入 fastboot 模式:
adb reboot bootloader刷写基带:
fastboot flash modem modem.img然后重启设备:
fastboot reboot如果官方固件包中只有一个modem文件,而没有单独的modem_a、modem_b、modemst1、modemst2等文件,直接刷入单个文件就可以了,和上面的步骤一样。
字库备份
主要备份的内容如下:
- modem_a.img:设备的主modem固件。
- modem_b.img:第二个modem固件(如果设备使用双modem架构)。
- modemst1:存储modem状态1的文件。
- modemst2:存储modem状态2的文件。
- modem.img:包含设备的modem固件。
- modem.elf:modem固件的执行代码。
- modem.bin:存储modem固件的二进制文件。
- baseband.img:存储基带固件,包含低层无线电通信协议。
- radio.img:无线电固件文件,管理无线电信号。
- radio.elf:无线电固件的执行代码文件。
- radio.bin:无线电固件的二进制文件。
- nvram.img:设备的非易失性内存(NVM)数据,保存了无线通信的配置和参数。
- nvram.md5:
nvram.img的校验文件。 - props:包含设备无线电配置的文件,定义设备支持的网络、频段、通信协议等。
- wcnss_qcom.cfg:Qualcomm芯片设备的无线通信配置文件。
- pds_mpss.mbn:包含高通平台的无线通信协议。
- mpss.mbn:高通平台用于基带和无线电通信的固件文件。
- libmodem.so:modem模块的共享库文件,通常用于设备的无线通信管理。
- libradio.so:支持无线电功能的共享库文件。
- libwcnss.so:用于高通设备的无线通信共享库文件。
- libaudio.so:部分设备中与音频相关的无线电模块文件。
- firmware.bin:设备固件的二进制文件,包含设备的无线通信固件。
- modem_fw.bin:特定modem固件文件,包含无线电控制相关的固件。
- radio_fw.bin:无线电固件文件,控制无线电模块的功能。
- boot.img:设备的启动镜像,虽然主要用于启动设备,但可能包含modem或基带相关的文件。
- system.img:包含Android系统文件的映像文件,某些字库文件也可能包含在系统镜像中。
- QCS405.img:高通平台的基带固件文件。
- MDM9x35.mbn、MDM9x50.mbn:高通平台的基带固件文件,分别用于不同型号的设备。
- ril:Radio Interface Layer相关的文件,用于与基带、无线电模块进行通信(虽然它不直接属于字库的一部分,但与字库紧密相关)。
- debug.log:用于调试的日志文件,可能包含基带和无线通信相关的调试信息。
- dsp_fw.bin:用于控制和处理数字信号的固件文件,可能与无线通信相关。
我们不可能单独一一备份这些文件,这里我们需要使用脚本来备份。
访问https://github.com/xxx252525/Android-flash-memory-backup 下载脚本

脚本上传到手机,或者下载到手机。
