-
Notifications
You must be signed in to change notification settings - Fork 16
RTD129X救砖
术语 | 释义 |
---|---|
目标机 | 需要被刷机的设备,这里是指你的盒子 |
宿主机 | 执行交互的设备,也就是你在用的PC机 |
首先需要连接UART。(如果是Z9S/Z10可以参考这里)
如果强刷过程卡死,很可能只是破坏了fwtable(功能类似分区表)签名,导致无法再刷机,这时只要恢复fwtable签名就行了。
-
目标机关机
-
UART连接好以后,在终端按住ESC键并开机,直到终端显示
*** ESC Pressed ***
(可能不是最后显示)或者终端不再滚动时再松开ESC键,这时按几次回车键应该会显示Realtek>
-
终端执行
help
会显示所有支持的命令,确认下其中是否包含rtkemmc
,dw
和mw
这几个命令,如果没有说明版本不一样,不要继续了 -
终端执行
rtkemmc read 0x03000000 12544 512
,这一步把fwtable的头读到内存里,成功的话没什么输出 -
终端执行
dw 0x03000000 8
。如果显示43534552 5f5f4555
,那么继续下一步;如果显示4f524556 5f5f414e
,则说明fwtable签名未损坏,不需要继续了,尝试UART+U盘刷机;如果两者都不是,那就不知道咋回事了,也不要再继续后面的步骤了。 -
终端执行
mw 0x03000000 0x4f524556
-
终端执行
mw 0x03000004 0x5f5f414e
-
终端执行
dw 0x03000000 8
。这时应该要显示4f524556 5f5f414e
才对 -
终端执行
rtkemmc write 0x03000000 12544 512
,这一步是把fwtable的头写回到emmc中,成功的话没什么输出 -
关机
fwtable签名已经恢复了,现在可以按照官方的强刷教程刷机,如果还是无法进入刷机那就尝试UART+U盘刷机吧
通常可以用这个方法恢复固件,除非uBoot坏了。
准备一个2GB以上的U盘,如果不是FAT32格式则格式化成FAT32。
如果你能走到这一步,肯定已经尝试过官方的强刷教程了( 例如 X9S,Z9S ),相信你已经有install.img
。
install.img
实际是一个TAR打包文件,解开它并把其中的bluecore.audio
,emmc.uImage
,rescue.emmc.dtb
,rescue.root.emmc.cpio.gz_pad.img
复制到U盘根目录,将install.img
也放到U盘根目录。
确认下U盘根目录现在至少应该有这些文件:
- bluecore.audio
- emmc.uImage
- rescue.emmc.dtb
- rescue.root.emmc.cpio.gz_pad.img
- install.img
这样U盘就准备好了。
刷机过程:
-
目标机关机,把U盘插上目标机
-
UART连接好以后,在终端按住ESC键并开机,直到终端显示
*** ESC Pressed ***
(可能不是最后显示)或者终端不再滚动时再松开ESC键,这时按几次回车键应该会显示Realtek>
,这表示进入了uBoot控制台 -
终端执行
help
会显示所有支持的命令,确认下其中是否包含usb
,fatload
和boot
这几个命令,如果没有说明uBoot版本不一样,不要继续了,请尝试下一个方案 -
终端执行
usb start
,这一步启用USB并扫描设备,需要几秒钟,完成后会显示Realtek>
。看看前面的输出中有没有出现Storage Device(s) found
字眼,如果没有,那就换个USB插槽,重新执行这一步。 -
终端一步一步执行以下命令:
fatload usb 0:1 0x01b00000 bluecore.audio fatload usb 0:1 0x03000000 emmc.uImage fatload usb 0:1 0x02100000 rescue.emmc.dtb fatload usb 0:1 0x02200000 rescue.root.emmc.cpio.gz_pad.img
如果有报错,把
0:1
分别改成0:2
,0:3
,0:4
等再试试,取决于U盘的分区 -
终端执行
boot all
,不出意外的话,很快就开始刷机了。
通常可以用这个方法恢复固件,除非uBoot坏了。
请先尝试 “UART+U盘刷机” 方案,如果不行再尝试这个方案。
这个方案需要:
- U盘
- 网线(用于目标机访问TFTP)
如果 “UART+U盘刷机” 方案中uBoot不支持usb
或者fatload
命令,但是支持net
命令,并且执行net
命令有出现tftp
,这时可以采用tftp加载刷机环境。
准备一个2GB以上的U盘,如果不是FAT32格式则格式化成FAT32。
将前面提到的install.img
复制U盘根目录,这样U盘就准备好了。
准备一个TFTP服务器,也可以在宿主机上部署TFTP服务,Windows用户参考这个,Mac用户参考这个。
解开install.img
并把其中的这些文件复制到TFTP根目录:
- bluecore.audio
- emmc.uImage
- rescue.emmc.dtb
- rescue.root.emmc.cpio.gz_pad.img
这样TFTP服务也准备好了。
刷机过程:
-
目标机关机,把U盘插上目标机,用网线将目标机连接到能访问TFTP服务器的网络中(如果TFTP服务器在内网则跟TFTP服务器同一个交换机或者同一个路由器的LAN网络)
-
UART连接好以后,在终端按住ESC键并开机,直到终端显示
*** ESC Pressed ***
(可能不是最后显示)或者终端不再滚动时再松开ESC键,这时按几次回车键应该会显示Realtek>
,这表示进入了uBoot控制台 -
终端执行
help
会显示所有支持的命令,确认下其中是否包含net
和boot
这两个命令,如果没有说明uBoot版本不一样,不要继续了 -
配置目标机网络。首先尝试DHCP自动配置,终端执行
net dhcp_client
,应该会输出DHCP client start
,等待几秒钟,如果有输出netif en ip ...
,那就进入下一步;如果没有任何输出,那么手动配置网络,执行net ifconfig <IP地址> <掩码> 0.0.0.0
,注意把<IP地址>
和<掩码>
换成合适的值(如果TFTP服务器在内网则只要跟TFTP服务器同一个网段就行)(如果你的TFTP服务在外网,则需要把0.0.0.0
换成真正的网关地址,通常是路由器的IP) -
终端执行
net ping <TFTP服务器IP>
(把<TFTP服务器IP>
换成TFTP服务器的IP),如果网络配置没问题的话,会输出多个ping: send ...
和ping: recv ...
,当不再输出时按一下回车回到控制台。如果没有输出ping: recv ...
,应该是网络配置有问题,请自行解决。 -
终端一步一步执行以下命令(把
<TFTP服务器IP>
换成TFTP服务器的IP):net tftp 0x01b00000 <TFTP服务器IP> bluecore.audio net tftp 0x03000000 <TFTP服务器IP> emmc.uImage net tftp 0x02100000 <TFTP服务器IP> rescue.emmc.dtb net tftp 0x02200000 <TFTP服务器IP> rescue.root.emmc.cpio.gz_pad.img
如果出现卡死的现象,可能是TFTP服务有问题,或者防火墙拦截了TFTP通讯,排除这些问题以后需要从第一步重新开始。
-
终端执行
boot all
,不出意外的话,很快就开始刷机了。
如果前面的方案连Realtek>
都不显示,要么你插反了TX/RX,要么uBoot已经坏了。如果之前只是按照官方的教程刷机或者OTA一般不会导致uBoot坏掉。
刷uBoot请参考 https://bbs.nas66.com/thread-5553-1-1.html
需要注意的是,教程中提到的dvrboot.exe.bin
和hwsetting.config
都不是唯一的,不同设备,不同功能都可能不是用同一个dvrboot.exe.bin
。
这里提供从Z9S中提取的相关文件:
参考