在宿舍适用校园网发愁的,路由器可以刷pandavan固件的华工学生
读研期间,学校宿舍的WiFi只能同时登陆两台设备,这对于设备比较多的我来说实在是头疼,刚好手头有一台租房时在某鱼上淘到的小米路由器3,于是就在网上摸索了一下,参考了许多大佬的文章,最后成功搞定了华工路由器。整个过程也没有怎么截图,所以有一些图片也是从其他地方搜罗来的(侵删)
我参考的网站
我参考的网站是编译的Redmi AC2100路由器的固件,而我的是小米路由器3,所以我根据文章里的方法,稍作修改,最后成功编译了小米路由器3的scut-padavan固件。
编译要在Linux下进行,官方给出了很多distribution对应的命令行,包括CentOS,Ubuntu和Debian等等,我用的是Ubuntu,如果是其他系统就稍作修改。
如果想在Windows环境下编译你会发现你甚至没办法从GitHub上完整地把仓库拉下来,因为仓库里有的文件名含有冒号,这在Windows系统上是不允许的(Windows下冒号用来表示盘符)。Windows编译之路直接被堵死。
而且我一开始是在自己电脑Windows上运行WSL(Linux子系统)进行编译,发现当要安装依赖的时候,很多包都装不上(也可以理解,毕竟是Windows下的Linux,也可能是我自己的问题),这就导致最后编译也出了问题,甚至强制安装一些包使得我的Linux子系统也被搞坏了,不得已后面卸载又重装,所以还是建议有条件直接在纯正的Linux系统上进行编译。
也不需要性能特别高的电脑,我用的是五年前买的笔记本,用双系统里的Ubuntu,性能一般般,但是我正常编译也就十几分钟就搞定了。
另外,如果没有梯子,在GitHub上拉取工程的速度真的是龟速,我大部分时间都花费在这上面了。在编译过程中偶尔会需要从外网下载文件,因此建议保持网络“通畅”。
在安装依赖的时候,使用国内一些网站提供的镜像源,可以极大地提高下载安装包的速度,我习惯使用的是阿里云的镜像源
阿里巴巴开源镜像站
Ubuntu更换阿里源方法
以ubuntu 20.04(我的系统)为例,Ctrl+Alt+T打开终端,执行一下命令
cd /etc/apt/
sudo mv sources.list source.list.bak # 备份
sudo vi sources.list
用vi打开新建的配置文件之后,在命令模式下点击按键i进入插入模式,此时可以输入文本,复制以下内容到剪贴板
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
在终端里点击鼠标右键即可将剪贴板的内容粘贴到终端里,然后按下esc键退出插入模式,输入“:wq”,保存并退出。
再在命令行里输入
sudo apt-get update # 更新
仓库地址
按照官方所说的,事先在系统中安装好依赖包(上面配置的源就派上用场了),即Ubuntu下执行一下命令(仓库README中给出了其他distribution对应的命令,可以自己去仓库查看)
sudo apt install unzip libtool-bin curl cmake gperf gawk flex bison nano xxd \
fakeroot kmod cpio git python3-docutils gettext automake autopoint \
texinfo build-essential help2man pkg-config zlib1g-dev libgmp3-dev \
libmpc-dev libmpfr-dev libncurses5-dev libltdl-dev wget libc-dev-bin
这里我遇到一个坑:在Windows的WSL连接子系统下安装依赖包,有部分依赖包安装不了,不仅最后编译不了固件,还使得我的子系统被我误操作给糟蹋坏了,无奈只好重装一个。后来在另一台笔记本上双系统Ubuntu下安装依赖包,一次就通过!
在Linux系统下使用下面的命令把仓库拉下来
git clone --depth=1 https://github.com/hanwckf/rt-n56u.git /opt/rt-n56u
用 git clone --depth=1 的好处是限制 clone 的深度,不会下载 Git 协作的历史记录,这样可以大大加快克隆的速度。
depth用于指定克隆深度,为1即表示只克隆最近一次commit
适合用 git clone --depth=1 的场景:你只是想clone最新版本来使用或学习,而不是参与整个项目的开发工作
由于仓库比较大,下载的速度很慢,有梯子的朋友记得搭梯子。而且提示一下,不能直接克隆到Windows系统上,由于仓库里有文件名包含冒号,会导致克隆出错,浪费很多时间。
执行以下命令
cd /opt/rt-n56u/toolchain-mipsel
# (推荐)使用脚本下载预编译的工具链:
sh dl_toolchain.sh
# 或者,也可以从源码编译工具链,这需要一些时间:
./clean_toolchain
./build_toolchain
切换到下面的文件夹
cd /opt/rt-n56u/trunk/configs/templates
文件夹下有预设好的各种路由器型号对应的配置文件
已适配除官方适配外的以下机型
PSG1208
PSG1218
5K-W20 (USB)
OYE-001 (USB)
NEWIFI-MINI (USB)
MI-MINI (USB)
MI-3 (USB)
MI-3C
MI-4
MI-R3G (USB)
MI-R4A
MI-R3P (USB)
HC5661A
HC5761A (USB)
HC5861B
360P2 (USB)
MI-NANO
MZ-R13
MZ-R13P
RT-AC1200GU (USB)
XY-C1 (USB)
WR1200JS (USB)
NEWIFI3 (USB)
B70 (USB)
A3004NS (USB)
K2P
K2P-USB (USB)
JCG-836PRO (USB)
JCG-AC860M (USB)
DIR-882 (USB)
DIR-878
MR2600 (USB)
WDR7300
RM2100
CR660x (CR6606, CR6608, CR6609)
R2100
JCG-Y2 (USB)
E8820V2 (USB)
ZTE_E8820S (USB)
MSG1500 (USB)
R6220 (USB)
NETGEAR-CHJ (R6260, R6350, R6850, WAC124)
NETGEAR-BZV (R6800, R6700-v2, R7200, Nighthawk AC2400)
选择小米路由器3对应的配置文件——MI-3.config
sudo nano MI-3.config
# 或者
sudo vi MI-3.config
找到 CONFIG_FIRMWARE_INCLUDE_SCUTCLIENT,修改其为y,这样编译的时候会编译此scutclient插件
tip:想要在vim下快速定位到字符串,可以在命令行模式下输入?,后面跟着想要查找的字符串
?CONFIG_FIRMWARE_INCLUDE_SCUTCLIENT # 按下n(查找下一个),N(查找上一个) 。定位到指定位置之后按回车,光标就会到达这一行
编辑完成后按 ESC输入 :wq保存退出
执行以下命令开始编译固件
cd /opt/rt-n56u/trunk
# 对于WSL环境,建议使用sudo进行编译,或者使用fakeroot-tcp代替fakeroot
fakeroot ./build_firmware_modify MI-3
# 脚本第一个参数为路由型号,在trunk/configs/templates/中
# 编译好的固件在trunk/images里
# 首次编译完成后,如果需要再次编译其它固件,需要执行清理脚本:
./clear_tree
编译好的固件在 /opt/er-n56u/trunk/images中,我们需要的就是那个 .trx后缀名的文件,把它拷贝下来。(白嫖党想要现成的scut-padavan固件也可以留言,我直接把我编译好的发给你)
我参考的网站
百度网盘链接搬运 提取码:qi9j
首先要将路由器厂家的固件降级到miwifi_r3_all_55ac7_2.11.20版本(不降级可能无法获取权限)。
提前下载好我们需要的降级固件。
网线连接电脑和路由器的一个LAN口。一般是在浏览器的网址栏输入192.168.31.1或者miwifi.com进入小米路由器的后台管理页面,在后台选择系统状态,“升级状态”下选择手动升级
选择下载好的降级固件,点击开始升级。
完成之后,路由器的固件被我们成功降到了2.11.20版本
接下来安装虚拟机,操作很简单,百度网盘里也有word文件说明怎么安装,这里就不赘述。
安装完虚拟机之后选择打开镜像,选择网盘中给出的镜像文件(需要解压),点击打开
点击“开启此虚拟机”
打开虚拟机之后会显示如下的界面,输入数字0
登陆到下面这个界面,输入路由器的后台地址,小米路由器3的后台地址是192.168.31.1,然后回车
输入你自己设置的登陆路由器后台的密码(并不是root密码)。这里也本以为是需要root密码的,还专门去绑定了小米账号,后来发现并不需要,这个软件自己能找到root密码,我们需要的是WebUI的密码,也就是路由器后台的密码,输入后回车。
系统显示成功连接SSH,并且给我们显示了本路由器的root密码(系统自己找到的),我们按下任意键继续。
成功连接SSH之后,系统显示如下界面,我们接下来就要来刷入华硕固件了,输入数字4并回车。
再选4
这里问我们需不需要备份,我有试过备份,结果卡住了,后来我改成了选择不备份,结果没什么问题,还很快。输入n然后回车。
出现如下界面表示我们已经成功刷入了华硕固件。
输入y回车重启路由器,回到主界面关闭虚拟机
有的小伙伴可能在这里没有办法操作鼠标,其实使用CTRL+ALT就可以退出虚拟机界面,恢复使用鼠标。
路由器重启之后,再要登陆后台就是另一个IP地址:192.168.1.1。账号密码都是admin,无线连接初始密码为1234567890
登陆到后台之后的界面如下所示,点击图中画横线的位置
弹出下面的界面之后选择文件,选择我们前面编译好的scutclient固件(不是网盘里提供给我们的固件!!),点击上传。
上传完成之后,固件就自动的刷入了路由器。至此,我们成功获得一台华工路由器。
这一次,后台的IP地址变为了192.168.2.1,账号密码都是admin。
可以看到带有scutclient插件
首先先进行一次恢复设置,点击“系统设置”->“配置管理”,先点击下面的重置按钮,再点击上面的重置按钮。
然后设置外网WAN,根据学校提供的信息进行填写下面那个红框。
填写红框圈起来的部分,用户名是指学号,密码是指宿舍区登陆密码。
完成之后,重启路由器,就可以享受全天候覆盖的WiFi了。