本教程不包含驱动的下载,spd_dump本体的下载和fdl文件的下载。不同的设备要使用的fdl不同,不要觉得是就往里刷
当然了,刷错fdl砖不了,重启再次进入u2s即可
什么是u2s端口
SpreadTrum u2s diag,是一个类似于MTK的深度刷机端口,高通的9008端口,麒麟的COM1.0端口的深度刷机端口。u2s端口一般可以干这些事情:
- 刷系统,刷magisk等
- 重新分区
- 备份系统
- 救砖
等等功能,本教程将会详细介绍用于深刷紫光芯片的命令行刷机工具SPD Dump
的基础使用方法。
如何进入u2s端口
类似于MTK,紫光芯片的设备也有通用的进入深刷的方法。将你的紫光设备关机,长按音量下键,三秒后插入电脑,如果你的紫光驱动已经正确安装并且打开了spd dump,那么电脑屏幕上将会出现:

这表示设备已经成功进入BootROM,你可以以最高权限执行所有命令,操作任何分区了。
推送FDL
当然了,类似于华为的“写底层”,bootrom本身不附带读取和操作的功能。在刷机之前,我们需要推送FDL1,用于初始化最基本的内存空间,和FDL2,用于初始化设备的分区系统。
首先,让我们推送FDL1。FDL1以 .bin 的形式存在,我们可以在BROM后输入以下命令来推送FDL1:
fdl [你的fdl1.bin路径] 0x5500
推送FDL1后,此时你的设备的内存已经被初始化完成,spd dump会自动进入FDL1模式。此时,我们输入以下命令:
fdl [你的fdl2.bin路径] 0x9efffe00
此时,你会发现,spd dump并未自动进入FDL2,仅仅提示了成功推送的消息。所以我们需要执行这条命令来切换到FDL2模式:
exec
输入完成后,你会发现屏幕上打印出了设备的分区列表,就像这样:

这便是你设备中的所有分区。但要注意,如果你在使用动态分区的安卓系统,那么你会发现system,vendor都不存在于列表中。这是因为使用动态分区的系统一般将这几个分区打包放在了super分区内,所以如果想要修改其中的分区,需要将其提取出来,然后解包,修改,重新打包,再刷回,才能修改。由于过于复杂,复杂到可以再开一篇教程的程度,所以这里不再赘述。
此时,我们就进入了FDL2模式。这个步骤在每次重新进入u2s后都需要重新进行,如果不想每次都这么麻烦,你可以创建一个bat批处理文件,然后在复制以下命令:
spd_dump --wait 300 fdl [替换为fdl1.bin的路径] fdl1_addr fdl [替换为fdl2.bin的路径] fdl2_addr exec
然后每次需要刷机时打开这个批处理文件,即可自动推送两个FDL!
Write_parts命令
write_parts
命令,可以简写为w
命令,使用write_parts/w [分区名称] [镜像路径]
,可以实现对指定分区的刷写操作。比如说,如果要刷入system.img到system分区,我们可以使用w system system.img
。输入这条命令后,spd dump会自动发送镜像到对应分区,等待进度条跑满后即为成功刷入。以下为一个示例:
FDL2> w system system.img
[ ]0.0%
[= ]2.5%
[== ]5.0%
[=== ]7.5%
[==== ]10.0%
[===== ]12.5%
[====== ]15.0%
[======= ]17.5%
[======== ]20.0%
[========= ]22.5%
[========== ]25.0%
[=========== ]27.5%
[============ ]30.0%
[============= ]32.5%
[============== ]35.0%
[=============== ]37.5%
[================ ]40.0%
[================= ]42.5%
[================== ]45.0%
[=================== ]47.5%
[==================== ]50.0%
[===================== ]52.5%
[====================== ]55.0%
[======================= ]57.5%
[======================== ]60.0%
[========================= ]62.5%
[========================== ]65.0%
[=========================== ]67.5%
[============================ ]70.0%
[============================= ]72.5%
[============================== ]75.0%
[=============================== ]77.5%
[================================ ]80.0%
[================================= ]82.5%
[================================== ]85.0%
[=================================== ]87.5%
[==================================== ]90.0%
[===================================== ]92.5%
[====================================== ]95.0%
[======================================= ]97.5%
[========================================]100.0%
Write Part Done: system+0x0 , target: 0x114514, write: 0x114514.
当然了,如果你在刷入系统的时候不小心拔掉了数据线,或者电脑抽风断开连接了,也不用担心,未完成写入的分区更改不会被应用,你的分区还是原来的分区,此时只需要开机,关机,重新进入u2s刷写即可。当然,我不建议这么放松,万一砖了呢?对吧
Read_parts命令
read_parts
命令,可以简写为r
命令,使用read_parts/r [分区名称]
,可以实现对指定分区的提取操作。比如说,如果要提取boot分区,我们可以使用r boot
。输入这条命令后,spd dump会自动提取镜像,等待进度条跑满后,你就可以在与spd dump同级的目录下找到刚刚提取的boot.bin。如果要提取除cache,userdata等非活动槽位的全部分区,可以使用r all
命令。
SPD Dump提取的.bin文件其实就是安卓raw镜像,直接将后缀改为.img即可正常导入各大软件。
注意这个.bin并不是payload.bin!
以下为一个示例:
FDL2> r boot
[ ]0.0%
[= ]2.5%
[== ]5.0%
[=== ]7.5%
[==== ]10.0%
[===== ]12.5%
[====== ]15.0%
[======= ]17.5%
[======== ]20.0%
[========= ]22.5%
[========== ]25.0%
[=========== ]27.5%
[============ ]30.0%
[============= ]32.5%
[============== ]35.0%
[=============== ]37.5%
[================ ]40.0%
[================= ]42.5%
[================== ]45.0%
[=================== ]47.5%
[==================== ]50.0%
[===================== ]52.5%
[====================== ]55.0%
[======================= ]57.5%
[======================== ]60.0%
[========================= ]62.5%
[========================== ]65.0%
[=========================== ]67.5%
[============================ ]70.0%
[============================= ]72.5%
[============================== ]75.0%
[=============================== ]77.5%
[================================ ]80.0%
[================================= ]82.5%
[================================== ]85.0%
[=================================== ]87.5%
[==================================== ]90.0%
[===================================== ]92.5%
[====================================== ]95.0%
[======================================= ]97.5%
[========================================]100.0%
Write Part Done: system+0x0 , target: 0x1919810, read: 0x1919810
与write_part不同的是,如果设备在读取过程中断开,提取到一半的镜像会直接损坏。切记不要直接使用,会导致刷入后设备变砖(这是常识吧)!再重新运行一遍提取分区命令,spd dump会自动覆盖它。
Erase系列命令
erase_part
命令,可以简写为e
命令,可以擦除设备分区表中的指定分区。比如,如果我要擦除设备上的system分区~~(system频频受灾)~~,那么我可以使用e system
。
Warning
注意!接下来的这条命令会将所有分区全部擦除,包括你的分区表,是比格机脚本还要底层的命令。
请一定要注意,整个设备的最高权限现在掌握在你手中,多一分权力多一分危险!
做这件事之前务必三思,否则你的设备轻则卡开机(这么干了基本不会轻),重则直接不开机!
类似于r all
命令,我们也可以直接擦除全部分区。擦除全部分区的指令是erase_all
,但是像上面说的那样,除非你想要完全重新烧录,否则万万不要这么干!
关于双清(wipe data/factory reset)
虽然你可以用 e 命令直接擦除userdata分区,但是请不要这么做!直接擦除userdata分区非但不能做到双清,还会导致你的设备卡开机第二屏,还可能导致你连u2s端口都无法再次进入!
如果要双清,请使用w misc misc-wipe.bin
。spd dump自带了一个misc-wipe.bin,把它写入到misc分区,设备重启后会自动执行双清。
列出分区的命令
print
命令,简写为p
命令,可以重新读取分区表并输出。输出的格式与刚进入FDL2时相同,如果忘记了分区表或者单纯懒得翻可以使用。
重启相关命令
Reset命令
reset
可以直接让设备重启回安卓系统,刷机完成后可以使用这条命令来快速退出u2s端口。
Poweroff命令
poweroff
命令可以直接让设备关机,刷机完成但不想要直接重启或设备变砖反复重启时可以进入FDL2输入这条命令强制关机。
reboot-recovery和reboot-fastboot
reboot-recovery
命令可以直接重启到recovery手动双清(如果你misc-wipe没了的话);reboot=fastboot
命令可以直接重启到fastboot。但注意,对于动态分区的需要使用fastbootd的机型,重启到fastboot并没有什么用。不仅刷不了super分区内的子分区而且还慢,老老实实重启到安卓系统再用ADB命令重启到fastbootd吧。
一些问题的FAQ
目前没有什么问题,如果遇到了奇奇怪怪的问题可以直接发条评论,我会在解答后将解决过程放在这里。
发表回复