先挖个坑在这
刚买的路由器 没睡醒走串口一通指令下去U-BOOT爆了,现在手上抱着块砖等flash烧录器快递。
开始折腾,首先总结一下现有的资料。
红米AX6000这个型号在中文社区里也有一大堆东西可以参考,这里放几个链接在这
拆机及串口pinout
编程器烧写flash救砖, 是那种仅介绍步骤不讲底层的教程,姑且可以参考。
路由器使用的flash为ESMT F50l1G41LB,SPI NAND Flash, 数据手册链接
flash 包含1024个block,每个block 由64pages组成
可见整个flash大小为128M+4M,根据数据手册4M是留给ECC用的
openwrt论坛有人分享了dump出来的flash,链接
flash晚点回实验室焊线去刷 这里首先尝试分析一下openwrt官方的刷机教程主要做了什么工作
https://openwrt.org/toh/xiaomi/redmi_ax6000
根据该教程,首先其通过小米内部API启用了root以及ssh等功能,之后向某一个UBI 分区写入了openwrt initramfs。关于UBI以及MTD的介绍可以参考该doc
https://docs.kernel.org/filesystems/ubifs.html
之后boot进入initramfs, 修改了部分uboot env, 并刷写openwrt固件。值得注意的是initramfs分两种,分别是stock layout 以及 ubootmod layout, 分别对应不同的MTD分区。分区区别如下
关于initramfs资料可以参考该doc
https://docs.kernel.org/filesystems/ramfs-rootfs-initramfs.html#what-is-initramfs
Flash 烧录过程记录
我使用的flash烧录工具是淘宝买的CH341土豪金 蛮常见一款 手头买到的这块芯片是WCH CH341B,各种型号差别不算大。
修改CH341输出电平
路由器flash使用电平为3v3,但经过测量ch341使用5v供电,根据数据手册其信号开漏输出,为5v电平,因此首先将其魔改为3v3.
参考这个帖子改两根线就可以了。不同型号间可能有细微差别,用万用表量过再改。
烧录原厂固件
从路由器上拆下来的Flash焊坏了,买了俩新Flash试试…
我这里使用的烧录工具是SNANDer
首先 SNANDer -e
擦除flash, 之后写入。注意NAND flash 必须先擦除后写入…
刷好之后焊回去路由器就能开机了, 之后再按照openwrt官方教程刷机即可
这贴暂时大概就结了,后续有想记录的openwrt配置大概会开新帖
大概可以算一下,用ch341的带宽,传输flash全片大小需要多久…还不包括协议损耗