小米路由器WR30U解锁ssh刷uboot和kwrt或immortalwrt(openwrt)并配置passwall

参考别人教程刷机还是遇到了一些问题,这里记录一下流程。

  • 小米路由器WR30U:wifi6 AX3000 256M内存,128M存储,联通定制版没有零售,可以买二手的。
  • PatriciaLee3/wr30u_ssh:py脚本解锁路由器ssh
  • 固件刷mt798x uboot作为底层固件,自带webui
  • 通过uboot webui刷入kwrt固件
  • kwrt自带passwall上网工具

openwrt的衍生固件很多,比如ImmortalWrt、kwrt、Qwrt等等,我们这里用kwrt界面更好看一点,内置passwall上网工具,配置起来很简单。

准备工作

需要有公网,这一步下载好,后边可能就没网了。

准备ssh解锁脚本

把这个脚本保存下来
https://github.com/PatriciaLee3/wr30u_ssh/blob/main/server_emulator.py

安装python依赖

1
pip intall pycryptodome

准备uboot固件

uboot就是类似bios的东西,带一个webui,只要uboot刷成功了,后边wrt固件你刷错了也没关系,都能回到uboot重新刷,一直刷到地老天荒。

参考这里下载
https://cmi.hanwckf.top/p/mt798x-uboot-usage/

下载好的一个镜像大集合bl-mt798x-release-20241115.7z解压找到mt7981_wr30u-fip-fixed-parts-multi-layout.bin就是我们需要的适配本路由器的uboot固件。

准备kwrt固件

在这里下载
https://openwrt.ai/?target=mediatek%2Ffilogic&id=xiaomi_mi-router-wr30u

选第一个sysupgrade.bin
https://dl.openwrt.ai/releases/24.10/targets/mediatek/filogic/kwrt-08.02.2025-mediatek-filogic-xiaomi_mi-router-wr30u-squashfs-sysupgrade.bin

解锁和刷固件

初始化路由器

用reset按钮重置路由器,然后把电脑连接到其中一个lan口(你插2口就好了),路由器的wan口(1口)空着,电脑浏览器进入192.168.31.1的管理后台,在常用设置-上网设置里分别设置:

  • 上网设置 DHCP,自动配置 DNS
  • 启动与智能网关无线配置同步(会重启)
  • 固定 WAN 口为 1(会重启)

这时候路由器重启,初始化完成。

解锁ssh

准备:

  1. 现在把电脑连接到一个其他的有公网的wifi上,然后电脑网口插到WR30U的wan口(1口),让电脑作为WR30U的网关。
  2. 把你电脑的wifi网络共享到电脑的网口:控制面板 - 网络和 Internet - 网络和共享中心 - 更改适配器设置 - 选择 WLAN - 右键属性 - 共享。
  3. 关闭你电脑的防火墙和安全软件。

执行py脚本解锁

1
python server_emulator.py

一直等着,直到出现Device informationfinish这时候就是完成了,这时候脚本可能不会自己结束,直接关掉就行了。
这时候你的WR30U路由器的默认SSH用户名是 root 密码是 admin

这时候你就可以打开防火墙,关闭刚才设置的网络共享了。

测试ssh和sftp

上一步网络的状态是 电脑-网线-WR30U的wan口,现在把网线从wan口改到lan1口。此时WR30U就是你电脑的网关。

尝试直接连接

1
ssh root@192.168.31.1 

如果你能连接去最好了,但是你也可能遇到ssh的报错Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa就是路由器的ssh加密算法过时了,你可以强制使用rsa:

1
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa root@192.168.31.1

这时候输入密码,看到ARE U OK就是连接进去了。

刷入mt798x uboot

此时你已经ssh到了WR30U路由器,按照别人教程写的,这时候把固件scp上去就行了。

1
scp mt7981_wr30u-fip-fixed-parts-multi-layout.bin root@192.168.31.1:/tmp

但是我就遇到了提示路由没有sftp-server,那怎么上传到路由器呢?在电脑的终端里,cd到你的镜像文件夹,启动一个web服务器就行了,路由器此时能访问到。

1
2
3
4
5
# 比如镜像在你D盘data目录下
cd d:/data

# 用python启动一个文件服务器,默认监听8000端口
python -m http.server

假设你电脑ip是192.168.31.99,那么在路由器上执行 wget http://192.168.31.99/mt7981_wr30u-fip-fixed-parts-multi-layout.bin 就能下载到你电脑的镜像文件了。

假如你把bin文件下载到了路由器的tmp目录下,因为/tmp目录是128M的存储,其他的路径都是在46M的存储下边。在路由器ssh里执行,开始写入uboot固件:

1
mtd write /tmp/mt7981_wr30u-fip-fixed-parts-multi-layout.bin FIP

等完成后,执行命令关闭路由器

1
poweroff

刷入kwrt固件

此时路由器是关闭的状态,如果不是,就把电源拔掉,然后用针按住路由器reset按钮不放,插上电源,等待10s左右,路由器灯从黄色变成蓝色就可以了,这时候松开针。

此时路由器里只有uboot的webui,固定的地址是192.168.31.1,我们把电脑用网线连接路由器lan1口,wan口空着,让路由器作为电脑网关。

因为 uboot 不支持 DHCP 功能,需要把电脑的 IP 地址设置成固定 IP。,然后在电脑网络设置里将以太网设置为静态,IP地址:192.168.31.100,子网掩码:255.255.255.0,网关:192.168.31.1,首选 DNS:192.168.31.1,最后保存。然后浏览器访问192.168.31.1你就能看到uboot的网页了。

在uboot的页面里选择Chosse mtd layout: Qwrt,上传你之前下载好的kwrt固件,点击upload等上传结束,点击updata刷入固件。

如果遇到报错,那么重新上传固件刷一次,或者下载其他固件刷一下。

等刷成功了,会提示路由器在重启,然后你直接在电脑浏览器访问固件的默认ip地址,每种固件不同,比如kwrt就是10.0.0.1,这时候就能看到路由器kwrt后台了,密码是默认的root

配置passwall上网工具

kwrt自带此工具,在侧边栏里找到服务-PassWall进入页面你就知道怎么配置了。

如果你要刷immortalwrt

immortalwrt固件 https://firmware-selector.immortalwrt.org/?version=23.05-SNAPSHOT&target=mediatek%2Ffilogic&id=xiaomi_mi-router-wr30u-112m-nmbm 下载第一个sysupgrade固件,然后在uboot里选在Chosse mtd layout: immortalwrt-112m就可以刷了。

immortalwrt的默认地址是192.168.1.1吧还是31.1忘了,没有密码。

immortalwrt安装openclash

直接在immortalwrt的软件包管理页面,搜索openclash点击安装。

你也可以手动安装openclash.pkg https://github.com/vernesong/OpenClash/releases 在这里下载luci-app-openclash_0.46.137_all.ipk,按照这个releases里写的去 https://github.com/MetaCubeX/mihomo/releases 下载对应的clash内核,并放到路由器的/etc/openclash/core里。不知道内核选啥版本,可以用它提供的内核选择器网站: https://wiki.metacubex.one/startup/#__tabbed_5_3

这里安装的openclash有个坑,就是打不开Yacd或zashboard管理页面,因为默认没安装,也没有打开9090/ui的服务配置。这个没搞定,我也不想搞,直接用kwrt就行了。

完成

本文参考了文章:
https://www.cnblogs.com/ywang-wnlo/p/WR30U.html
https://blog.qust.me/wr30u