红米AX6S刷OpenWrt

您所在的位置:网站首页 红米路由AX6S一直在重启 红米AX6S刷OpenWrt

红米AX6S刷OpenWrt

2023-12-10 10:07| 来源: 网络整理| 查看: 265

设备概况

生产日期:2021年11月型号:RB03出场固件版本:1.0.28

注意:本流程不适用于型号为RB01的机型,经测试,1.0.37作为初始版本也可行

TLDR

在经历过刷机进不了OpenWrt系统(重启还是进了小米系统),刷机重启黄灯常亮等问题后,总结的可行的刷机步骤。重点在如何设置nvram参数,对比其他攻略,这里精简了指令;以及如何把固件上传到路由器上,这里提供了四种方法。

本流程针对OpenWrt官方原版系统,版本号 22.03.0-rc6 。其他非官方原版系统,可以借鉴,切勿盲从。

刷机准备:开启路由器telnet访问

将电脑用网线连接路由器的LAN口

用浏览器打开192.168.31.1,并完成初始化设置

通过管理页面刷入开发板固件,刷入就可以使用telnet连入路由器后台了

固件下载地址:

https://github.com/YangWang92/AX6S-unlock/raw/master/miwifi_rb03_firmware_stable_1.2.7.bin

刷机准备:获取路由器root账户的密码

有两个方法,原理都是基于路由器序列号计算得出密码路由器的序列号在设备的背面,“SN:”后面那一串就是路由器的管理网页右下角也有

方法一

浏览器打开这个网站 https://www.oxygen7.cn/miwifi/ ,输入路由器的序列号,点击GO,就能够看到密码

https://www.oxygen7.cn/miwifi/

方法二

如果上面这个网站你访问不了,可以用方法二,稍麻烦一点

下载这个脚本文件unlock_pwd.py (脚本下载地址:https://raw.githubusercontent.com/YangWang92/AX6S-unlock/master/unlock_pwd.py )

如果你点击这个链接后浏览器里直接显示了脚本的内容而不是下载.py文件,你可以在浏览器页面上点击右键选择“另存为”来把它保存成文件

安装python

打开Windows里的CMD/Powershell,并cd到你保存unlock_pwd.py文件的目录

执行如下命令: python .\unlock_pwd.py aaaaa/xxxxxxxxx ,其中“aaaaa/xxxxxxxxx”替换为你的序列号

Powershell里的样例

找个地方记下这个密码,只要是这台机器刷了小米官方系统,后台就是这个密码。

刷机主步骤

第一步

用telnet客户端登录到路由器后台,命令为telnet 192.168.31.1,然后在login后面输入root回车,然后输入上一步得到的密码。

注1:输密码的时候,界面没有任何反馈,并不是你输入一个字符它显示一个星号。不要犹豫,输完密码回车就行。

注2:Win10自带telnet客户端,但是默认是不可用的,需要在“设置 - 应用 - 可选功能 - 更多Windows功能”中找到“Telnet客户端”,把它勾选上。然后打开CMD或者Poweshell就可以使用telnet命令了.

看到“AER YOU OK”的界面就表示登录成功了

第二步

按行输入以下指令

nvram set ssh_en=1

nvram set uart_en=1

nvram set flag_try_sys1_failed=0

nvram set flag_try_sys2_failed=1

nvram commit

或者在一行内输入指令

nvram set ssh_en=1 && nvram set uart_en=1 && nvram set flag_try_sys1_failed=0 && nvram set flag_try_sys2_failed=1 && nvram commit

指令的含义:nvram是非易失随机访问存储器,全称Non-Volatile Random Access Memory。作用是断电后仍可以保存信息。路由器启动时,会从这里读取一些配置项。这些指令都是为下一次路由器启动时准备的,主要目的是让路由器进入OpenWrt系统,以及打开uart以防进不了系统。

vram set ssh_en=1:下次启动时允许ssh登录(不是很必要,因为如果成功的话,下次启动进入的系统是openwrt,而openwrt的ssh默认是开的,不依赖nvram里的这个值)

nvram set uart_en=1:下次启动时允许uart登录(这时为了在本次刷机变砖后通过uart能够登录系统后台,变砖后的最后一丝希望,详情请自行百度)

nvram set flag_try_sys1_failed=0,nvram set flag_try_sys2_failed=1:大致意思是告诉引导程序“上一次启动时尝试过从第2个启动分区(也就是firmware1分区)启动,但是失败了”,所以下一次启动,引导程序就会主动尝试从第1个启动分区启动也就是firmware分区

nvram commit:提交上述修改(上面几个指令执行后,是暂存在内存里的,需要用本条指令把它们写入到nvram中)

注:建议不要去改boot_fw1这个环境变量(即,不要按照op官网那样做nvram set "boot_fw1=run boot_rd_img;bootm")我只能说我尝试过,失败了

第三步

下载OpenWrt固件并把它上传到路由器上

我仅针对使用OpenWrt官方的固件,下载地址为 https://downloads.openwrt.org/releases/22.03.0-rc6/targets/mediatek/mt7622/openwrt-22.03.0-rc6-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin

如何上传到路由器上

如果你的路由器此时能够访问互联网,你可以在路由器后台命令行直接执行 wget -O /tmp/factory.bin https://downloads.openwrt.org/releases/22.03.0-rc6/targets/mediatek/mt7622/openwrt-22.03.0-rc6-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin,这条命令会将固件下载到/tmp/目录并改名为factory.bin

如果路由器此时不能访问互联网,你需要先把固件下载到电脑上,然后通过以下方法把固件上传到路由器上

方法一:用python在电脑上建一个简单的web服务(在CMD或者Poweshell里cd到你下载到的固件的目录,然后执行如下指令python -m http.server 8000,最好把固件文件名改短一点例如改成factory.bin);在路由器后台用命令行执行wget -P /tmp/ http://:8000/factory.bin,注意,你的电脑ip应该是192.168.31.x网段的,因为直连路由器,是路由器给你分配的

方法二:先在路由器上启动ssh server服务,在路由器后台命令行执行/etc/init.d/dropbear start;然后在电脑上通过winscp等软件把固件上传到路由器的/tmp/目录,账号密码和你登录telnet的是一样的,具体步骤就百度吧

方法三:和方法二是反向的,如果你的电脑上开启了ssh server服务(没错,windows也可以开),那么你可以在路由器后台通过scp命令从电脑上把固件给拉取到路由器上,如果愿意这么干的,估计你看到这个思路也就知道怎么操作了

第四步

正式开始刷固件,在路由器后台命令行执行 mtd write -r /tmp/factory.bin firmware 我假定你把固件上传到了/tmp/目录并且改名叫做factory.bin

这条指令表示把固件刷入路由器的firmware分区,"-r"参数表示执行成功后自动重启,你可以不加这个参数,然后手工执行reboot指令来重启

主要指出的是,有些帖子说RB03型号的分区有两种结构,用指令cat /proc/mtd可以看到分区列表,两种结构分别如下

#结构一 

dev:    size   erasesize  name 

mtd0: 00020000 00020000 "PL_Header" 

mtd1: 00060000 00020000 "Preloader" 

mtd2: 00040000 00020000 "ATF" 

mtd3: 00080000 00020000 "uboot" 

mtd4: 00040000 00020000 "Nvram" 

mtd5: 00040000 00020000 "Bdata" 

mtd6: 00080000 00020000 "Factory" 

mtd7: 00040000 00020000 "crash" 

mtd8: 00040000 00020000 "crash_log" 

mtd9: 01e00000 00020000 "firmware" 

mtd10: 002a0000 00020000 "kernel" 

mtd11: 01b60000 00020000 "rootfs" 

mtd12: 01e00000 00020000 "firmware1" 

mtd13: 03200000 00020000 "overlay" 

mtd14: 00500000 00020000 "obr" 

#结构二 

dev:    size   erasesize  name 

mtd0: 00020000 00020000 "PL_Header" 

mtd1: 00060000 00020000 "Preloader" 

mtd2: 00040000 00020000 "ATF" 

mtd3: 00080000 00020000 "uboot" 

mtd4: 00040000 00020000 "Nvram" 

mtd5: 00040000 00020000 "Bdata" 

mtd6: 00080000 00020000 "Factory" 

mtd7: 00040000 00020000 "crash" 

mtd8: 00040000 00020000 "crash_log" 

mtd9: 01e00000 00020000 "firmware" 

mtd10: 01e00000 00020000 "firmware1" 

mtd11: 002a0000 00020000 "kernel" 

mtd12: 01b60000 00020000 "rootfs" 

mtd13: 03200000 00020000 "overlay" 

mtd14: 00500000 00020000 "obr"

mtd9及之前都是一样的,从mtd10开始就不同了。

我多次尝试和观察发现,AX6S是双启动分区,可以从firmware或者firmware1启动,当从firmware启动时,看到的是结构一,从firmware1启动时看到的是结构二。

无论本次从哪个分区启动,如果将openwrt刷入firmware1,那么重启后始终进不了openwrt系统。无论本次从哪个分区启动,如果将openwrt刷入firmware,那么重启后就可以进入openwrt系统。

另外,进入openwrt后再看mtd分区表,是如下这样的,说明没有保留小米系统,不能重启切换了。如果想要用小米系统,可以用官网的变砖修复工具刷回小米官方rom或者开发板rom。

dev:    size   erasesize  name

mtd0: 00080000 00020000 "Preloader"

mtd1: 00040000 00020000 "ATF"

mtd2: 00080000 00020000 "u-boot"

mtd3: 00040000 00020000 "u-boot-env"

mtd4: 00040000 00020000 "bdata"

mtd5: 00080000 00020000 "factory"

mtd6: 00040000 00020000 "crash"

mtd7: 00040000 00020000 "crash_log"

mtd8: 00400000 00020000 "kernel"

mtd9: 06f00000 00020000 "ubi"

如果上一步操作顺利,路由器重启后,电脑就能够通过192.168.1.1访问openwrt系统了。

如果访问不了,看看电脑的ip是不是192.168.1.x网段的,插拔一下网线,或者禁用/启用一下网卡,亦或者手工设置电脑的ip。

There you go!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3