小米(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

思路:

  1. 降级固件为特定带有漏洞的版本
  2. 查看坏块并决定刷入的boot系统
  3. 上传 breed / pb-boot 文件
  4. 写入到bootloader

选择为合适的系统版本

为了打开ssh,我们需要选择有漏洞的固件版本。
小米ac2100的版本为2.0.722
红米ac2100的版本为2.0.7
如果不是该版本则需降级,如下图我刚收到的红米ac2100就需要降级。
image
这里最好勾选 清除当前所有用户配置 。
image

降级完后:image

开启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权限:
image

接着把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保存到本地。接着输入密码,成功后如下图所示:
image

查看坏块

使用命令dmesg | grep '[B|b]ad.*block'来查看坏块。

如下图,我这是第换的第二个了,还是存在坏块,郁闷。
image

第三个还是有坏块
image

第四个坏块:
image

如果和我一样有坏块,那么就选择刷入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
首次进入breed记得先备份下编程器固件和eeprom。

pb-boot也是同样的地址,pb-boot web如下图所示:

image

如果sys蓝灯闪烁,但无法进入breed。请把其他网络断开,只连接路由器网络。
如果sys橙色呼吸,但无法进入pb-boot,以下方法都试一试:

  • 请把其他网络断开,只连接路由器网络
  • 清除浏览器缓存并重启浏览器
  • 浏览器无痕模式
  • 重启电脑
  • 换另一个电脑重试
  • 虚拟机桥接

我的是ubuntu系统无论如何都进不去,换到另一台电脑的win就可以了。

刷入自编译openwrt

自编译openwrt

有关自编译openwrt,最重要的是如下选择这3个就可以,其他的插件自己搭配。注意图中Target Profile为红米ac2100,小米ac2100应该为Xiaomi Mi Router AC2100。
image

breed 刷入openwrt

那么首先需要刷入squashfs-kernel1.binsquashfs-rootfs0
image
image

如果在中间失败了,极有可能是坏块导致的,要么7天无理由换换货,要么刷成pb-boot。如果不是坏块,那就看看是不是固件有问题,自己再重新编译一下。记得从原厂固件刷openwrt时候要选squashfs-kernel1.binsquashfs-rootfs0。失败截图:
image

pb-boot 刷入openwrt

选择initramfs-kernel.bin来刷入。
image

升级

我给的底包的openwrt默认用户名root,密码为空,默认ip192.168.1.1
接下来登录上去后使用squashfs-sysupgrade.bin升级。
这里请取消选择保留配置
image

参考

感谢如下教程:
[AC2100(RM2100)] 红米(小米)AC2100无需Telnet刷入Breed和Padavan固件教程 这里面有讲每一步的原理是什么推荐去看看
小米/红米AC2100刷OpenWrt/Padavan/第三方固件的详细教程(2022年8月23日更新) 这里有相当多的科普推荐去看看

posted @ 2023-08-22 20:13  1v7w  阅读(4319)  评论(6编辑  收藏  举报