最近在将小米路由器CR8808刷机时,不小心操作失败,路由器成砖头了。好消息是,按reset可以进入openwrt 恢复控制台;坏消息是,通过恢复控制台上传的所有的固件,都提示无效固件。简单记录下成砖过程和救砖过程。PS:在某鱼上咨询一些救砖人士,至少需要50大洋,我也差一点买编程器。
一、成砖
之前将CR880X系列都根据,恩山论坛的教程都成功将固件刷新为红米AX3000,但是一直没有能刷成功极客固件。
1、刷红米AX3000分区,采用如下命令
bash
tftpboot OpenWrt.mtd1.bin && flash 0:MIBIB
#做完不要断电!继续输入以下命令:
tftpboot OpenWrt.mtd11.bin && flash 0:APPSBL
tftpboot OpenWrt.mtd12.bin && flash 0:APPSBL_1
#确认好步骤,没有报错后直接拔电!
reset #重启
2、重启后,使用小米恢复工具就可以正常输入Redmi AX3000的固件了。
3、本打算使用大分区(CR880X合并分区并刷带web的uboot)。如下命令,但是第三步失败。
bash
tftpboot MIBIB.bin && flash 0:MIBIB
#刷完务必断电重启
#重新卡进uboot
#继续刷入带web的uboot命令:
tftpboot APPSBL.bin && flash 0:APPSBL
tftpboot APPSBL1.bin && flash 0:APPSBL1.bin
4、重启后就变成砖了。系统自动进入uboot,并且网络不通。尝试使用小米恢复工具,根本网络不通。通过 httpd 可以启动openwrt web恢复界面,但是固件校验都失败,此时网络是通的。Ctrl+C退出httpd后,网络不通。
二、救砖
1、help领命发现,printevn可以查看环境变量,setenv 可以设置变量,saveenv则可保存变量。但是printenv发现,环境变量非常少。大概如下
bash
IPQ5018# printenv
baudrate=115200
bootargs=console=ttyMSM0,115200n8
bootcmd=bootmiwifi
bootdelay=5
eth1addr=44:df:65:5e:8d:9
ethact=eth0
ethaddr=44:df:65:a:2f:3
fdt_high=0x4A400000
fdtcontroladdr=4a9d4004
flash_type=11
ipaddr=192.168.2.1
machid=8040000
netmask=255.255.255.0
serverip=192.168.2.100
soc_hw_version=20180101
soc_version_major=1
soc_version_minor=1
stderr=serial@78AF000
stdin=serial@78AF000
stdout=serial@78AF000
Environment size: 450/262140 bytes
2、找到另一台同型号的CR880X(已经刷成Redmi AX3000了),查看环境变量。内容非常多,包含系列号、无线信息、超密等等。
bash
IPQ5018# printenv
CMSN=2411000125813
CountryCode=CN
SN=4484/FVA30551
andlink_dev_key=00010001045A73D1EBD6CDF1285FDF9A62C8DF4A736BF96B9628D299034D31934789873
andlink_prov_code=ZHJ
andlink_svr_try_count=3
boot_wait=on
bootargs=ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs rootwait
bootcmd=bootmiwifi
bootdelay=2
bootfile=miwifi_cr8808_all_fac_release_6.4.52.bin
cmei=11105167225813
color=101
default_netmode=router
eth1addr=4c:c6:4c:65:ca:87
ethact=eth1
ethaddr=4c:c6:4c:1:ee:2d
ethprime=eth1
fdt_high=0x4A400000
fdtcontroladdr=4a9d4004
fileaddr=44000000
filesize=1a8ae28
flag_boot_recovery=0
flag_boot_rootfs=0
flag_boot_success=1
flag_boot_type=2
flag_last_success=0
flag_ota_reboot=0
flag_try_sys1_failed=0
flag_try_sys2_failed=0
flash_type=11
fsbootargs=ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs
gatewayip=192.168.31.1
ipaddr=192.168.31.111
machid=8040000
mgtpsd=y@3jmca
miot_did=69992866
miot_key=6MWwxcU0cAwqNVZ
mode=Router
model=CR8808
mtddevname=fs
mtddevnum=0
mtdids=nand0=nand0
mtdparts=mtdparts=nand0:0x2400000@0xa80000(fs),
netmask=255.255.255.0
no_wifi_dev_times=0
partition=nand0,0
serverip=192.168.31.100
soc_hw_version=20180101
soc_version_major=1
soc_version_minor=1
stderr=serial@78AF000
stdin=serial@78AF000
stdout=serial@78AF000
telnet_en=0
uart_en=0
wifipsd=9h36uk9
wl0_radio=1
wl0_ssid=CMCC-ukw-5G
wl1_radio=1
wl1_ssid=CMCC-ukw
wl_pa_type=xpa
Environment size: 1505/65532 bytes
3、经过对比,使用 setenv,saveenv恢复环境变量。最后可以启动、网络也通了。刷红米AX3000分区。使用小米恢复工具恢复后,可以正常启动了,wifi也可以接入。但是,路由器管理密码不对,怀疑miot_key、nv_sys_pwd每台路由器不同,但是这2个我已经复制过去了。尝试了很多密码都无法登录。再次使用小米恢复工具时,悲催的是路由器和电脑网络有不通了。恢复环境变量的时候,没有将TTL开启,启动后TTL直接无法中断了。
三、后续计划。
1、操作TTL的时候,西安执行永久开启TTL的命令,如下:
bash
setenv boot_wait on
setenv uart_en 1
saveenv
2、寻找CR8808开启ssh方法,类似于CR660X系列解锁ssh方法。