小米(XiaoMi) Red Mi ac2100 (坏块) 刷 breed/pb-boot 并刷入 自编译openwrt
前排提醒
红米 ac2100 闪存大概率存在坏块。
如果存在坏块,建议刷PandoraBox boot来作为bootloader,它的貌似有机制可以跳过坏块。然后再从pb-boot里刷入底包(initramfs-kernel.bin),进入底包系统后升级成为真正的系统。
如果没有坏块,恭喜你,直接刷breed作为bootloader就可以的。之后想怎么刷怎么刷。
教程中用到的原厂固件、breed、pb-boot、底包在此下载,不包含最终openwrt固件。
刷入 breed / pb-boot
思路:
- 降级固件为特定带有漏洞的版本
- 查看坏块并决定刷入的boot系统
- 上传 breed / pb-boot 文件
- 写入到bootloader
选择为合适的系统版本
为了打开ssh,我们需要选择有漏洞的固件版本。
小米ac2100的版本为2.0.722
红米ac2100的版本为2.0.7
如果不是该版本则需降级,如下图我刚收到的红米ac2100就需要降级。
这里最好勾选 清除当前所有用户配置 。
降级完后:
开启ssh并修改root密码
在路由器管理界面的地址栏中http://192.168.31.1/cgi-bin/luci/;stok=4f24c77427ea47da6f9847a24ce8858c
,其中的stok保存并替换下面url的<STOK>
。
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B
接着访问替换后的url,成功的话如图表示开启ssh权限:
接着把root密码改为admin
,注意下面url的<STOK>
还需要替换,成的话和上面一样也是返回0。
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B
然后找一个ssh软件,可以是xshell、putty等,只要能用ssh就可以。我这里就直接使用终端做演示。
输入命令ssh root@192.168.31.1
,如果出现该主机是未知的,就输入yes
将它的key保存到本地。接着输入密码,成功后如下图所示:
查看坏块
使用命令dmesg | grep '[B|b]ad.*block'
来查看坏块。
如下图,我这是第换的第二个了,还是存在坏块,郁闷。
第三个还是有坏块
第四个坏块:
如果和我一样有坏块,那么就选择刷入pb-boot,如果没有坏块,那么就选择刷入breed就行。
刷入pb-boot(存在坏块)
将pb-boot传入路由器的/tmp/
文件夹下,注意你的工作目录此时应该和breed文件在同一个目录:
scp pb-boot.img root@192.168.31.1:/tmp/
接下来将breed刷入bootloader:mtd -r write /tmp/pb-boot.img Bootloader
耐心等待路由器重启。。。
刷入breed(没有坏块)
将breed传入路由器的/tmp/
文件夹下,注意你的工作目录此时应该和breed文件在同一个目录:
scp breed-mt7621-xiaomi-r3g.bin root@192.168.31.1:/tmp/
接下来将breed刷入bootloader:mtd -r write /tmp/breed-mt7621-xiaomi-r3g.bin Bootloader
耐心等待路由器重启。。。
进入breed / pb-boot
重启好后自动进入系统,我们给他把电源拔下来。注意,一定要先让他重启进入系统成功,防止bootloader损坏(也就时路由器闪蓝灯了)。
接下来,先按着reset键(丁真),再接上电源,再等5s左右后松开reset键。
- 如果是breed,则此时是sys的蓝灯在闪烁。
- 如果是pb-boot,则此时是sys的橙灯在呼吸。
成功的话,进入192.168.1.1
,breed web应该如下图所示:
首次进入breed记得先备份下编程器固件和eeprom。
pb-boot也是同样的地址,pb-boot web如下图所示:
如果sys蓝灯闪烁,但无法进入breed。请把其他网络断开,只连接路由器网络。
如果sys橙色呼吸,但无法进入pb-boot,以下方法都试一试:
- 请把其他网络断开,只连接路由器网络
- 清除浏览器缓存并重启浏览器
- 浏览器无痕模式
- 重启电脑
- 换另一个电脑重试
- 虚拟机桥接
我的是ubuntu系统无论如何都进不去,换到另一台电脑的win就可以了。
刷入自编译openwrt
自编译openwrt
有关自编译openwrt,最重要的是如下选择这3个就可以,其他的插件自己搭配。注意图中Target Profile为红米ac2100,小米ac2100应该为Xiaomi Mi Router AC2100。
breed 刷入openwrt
那么首先需要刷入squashfs-kernel1.bin
和squashfs-rootfs0
。
如果在中间失败了,极有可能是坏块导致的,要么7天无理由换换货,要么刷成pb-boot。如果不是坏块,那就看看是不是固件有问题,自己再重新编译一下。记得从原厂固件刷openwrt时候要选squashfs-kernel1.bin
和squashfs-rootfs0
。失败截图:
pb-boot 刷入openwrt
选择initramfs-kernel.bin
来刷入。
升级
我给的底包的openwrt默认用户名root
,密码为空,默认ip192.168.1.1
接下来登录上去后使用squashfs-sysupgrade.bin
升级。
这里请取消选择保留配置
参考
感谢如下教程:
[AC2100(RM2100)] 红米(小米)AC2100无需Telnet刷入Breed和Padavan固件教程 这里面有讲每一步的原理是什么推荐去看看
小米/红米AC2100刷OpenWrt/Padavan/第三方固件的详细教程(2022年8月23日更新) 这里有相当多的科普推荐去看看