本文转自大默无言博客,如侵删
★ 准备:Windows电脑(有无线网卡)、Redmi AX6,电脑用网线连接Redmi AX6。
★ Redmi AX6降级(1.0.16)并恢复出厂设置。
★ 附件包在末尾。
创建OpenWrt软路由系统
安装VMWare WorkStation 15 Pro(或以上版本)
打开VMWare,点击创建新的虚拟机,选择自定义

硬件兼容性选择15.x,如果版本是15以下的,就选择你能用的最高级的版本

选择稍后安装操作系统

操作系统类型选择Linux,版本选择其他Linux 3.x内核

虚拟机名称与存放位置自定义

内核数量选择一个就够用了,内存大小要求1G以上

网络模式设置为桥接模式

SCSI控制器选择LSI Logic,磁盘类型选择SCSI
磁盘选择使用现有磁盘,下一步直接把我们下载好的OpenWrt koolshare的vmdk文件导入进来

如果弹出格式转换,就选择使用现有格式

最后点击完成,虚拟机就创建完成啦
安装好后先不要启动虚拟机,还需要进行如下配置
点击编辑虚拟机设置,选择网络适配器选择,把桥接模式下的复制物理机网络状态打勾,点击确定保存设置

编辑虚拟机的桥接网络:菜单>编辑>虚拟网络编辑器>更改设置为电脑的有线网卡(名字不一样,选择自己的有线网卡就行)

开启软路由虚拟机
出现如下界面时, 说明开启完毕

这时候需要按一下回车, 你会看到这样的界面

输入命令,设置软路由IP地址
vi /etc/config/network

浏览器访问:169.254.31.1,输入密码:koolshare
Ps:“i”键进入编辑模式;“Esc”键退出编辑模式;“:”键+“w”键+“q”键(顺序按)保存并退出
输入命令重启:
reboot
开启SSH
更改以太网属性:更改适配器选项>以太网>属性>Internet协议版本 4 (TCP/IPv4) 属性>
IP地址设置为:169.254.31.3
子网掩码设置为:255.255.255.0

浏览器访问:169.254.31.1,输入密码:koolshare

进入:网络>接口>LAN,关闭DHCP服务器

用Xshell(或其他工具)SSH连接上 OpenWrt 软路由器
用户名:root,密码:koolshare

创建 /usr/lib/lua/luci/controller/admin/xqsystem.lua 文件:
vim /usr/lib/lua/luci/controller/admin/xqsystem.lua
文件内容填写下面的保存即可
module("luci.controller.admin.xqsystem", package.seeall)
function index()
local page = node("api")
page.target = firstchild()
page.title = ("")
page.order = 100
page.index = true
page = node("api","xqsystem")
page.target = firstchild()
page.title = ("")
page.order = 100
page.index = true
entry({"api", "xqsystem", "token"}, call("getToken"), (""), 103, 0x08)
end
local LuciHttp = require("luci.http")
function getToken()
local result = {}
result["code"] = 0
result["token"] = "; nvram set ssh_en=1; nvram commit; echo -e 'admin\nadmin' | passwd root; sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;"
LuciHttp.write_json(result)
end输入完成后你可以 cat /usr/lib/lua/luci/controller/admin/xqsystem.lua 检查一下

浏览器访问:http://169.254.31.1/cgi-bin/luci/api/xqsystem/token,如果得到下面的结果,则证明设置成功

打开电脑热点,关闭热点的Internet协议版本 4 (TCP/IPv4)

关闭并重新打开电脑热点
编辑虚拟机的桥接网络:菜单>编辑>虚拟网络编辑器>更改设置为本地连接#2(也可能是#3、#4…)

将电脑的网络设置回自动获取 DHCP
登录Redmi AX6 路由器管理后台获取后台 STOK(浏览器地址栏 stok= 后面选中部分)

第一次请求
http://192.168.31.1/cgi-bin/luci/;stok={STOK}/api/misystem/extendwifi_connect?ssid={SSID}&password={Wi-Fi密码}
{STOK}替换为上面的值
{SSID}替换为电脑的热点名
{Wi-Fi密码}替换为电脑的热点密码
将替换好的值复制到浏览器请求,如果显示 code 0 则成功
&;例如:我WiFi名称是Heal密码是123456,那么应替换为:http://192.168.31.1/cgi-bin/luci/;stok={STOK}/api/misystem/extendwifi_connect?ssid=Heal&password=123456

第二次请求
http://192.168.31.1/cgi-bin/luci/;stok={STOK}/api/xqsystem/oneclick_get_remote_token?username=xxx&password=xxx&nonce=xxx
将替换好的值复制到浏览器请求,如果显示 code 0 则成功

验证SSH并备份
ssh 连接小米路由器ssh root@192.168.31.1
密码是 admin,如果能 ssh 连接上则证明上述步骤均完成
连接成功后进行备份
mkdir /tmp/syslogbackup/
dd if=/dev/mtd9 of=/tmp/syslogbackup/mtd9浏览器请求该地址下载备份:http://192.168.31.1/backup/log/mtd9
刷入OpenWrt固件
ssh 连接上后复制下面执行:
nvram set flag_last_success=0
nvram set flag_boot_rootfs=0
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram set boot_wait=on
nvram set uart_en=1
nvram set telnet_en=1
nvram set ssh_en=1
nvram commit用WinSCP把固件xiaomimtd12.bin上传到路由器tmp目录,SSH命令:
mtd write /tmp/xiaomimtd12.bin rootfs
拨电源重新启动路由器,此时路由器的后台地址已经变为192.168.1.1
重新分区
WinSCP把固件a6minbib.bin上传到路由器tmp目录,SSH命令:
. /lib/upgrade/platform.sh
switch_layout boot; do_flash_failsafe_partition a6minbib "0:MIBIB"拨电源重新启动路由器
OpenWrt刷入
PS:此步骤不一定刷入教程中的固件,可输入该机型别的openwrt固件,准备好ubi格式固件上传至路由tmp目录,执行命令时修改为上传固件的文件名即可
WinSCP把固件openwrt-ipq807x-generic-redmi\_ax6-squashfs-nand-factory.ubi上传到路由器tmp目录,SSH命令:
ubiformat /dev/mtd13 -y -f /tmp/openwrt-ipq807x-generic-redmi_ax6-squashfs-nand-factory.ubi
fw_setenv flag_last_success 1
fw_setenv flag_boot_rootfs 1SSH命令重启:
reboot
操作完成
- 登录IP:192.168.10.1
- 密码:password
注意:按照教程刷的OpenWrt固件为AP固件,刷机完成后可自行更换为其它固件。