跳至主要內容

Redmi AC2100 刷机教程

fatSheep大约 6 分钟

我手上共有两台AC 2100,第一次没有记录,这次记录下来~

刷机准备

OpenWrt

Breed

类似于安卓的recovery模式,恢复出厂设置后自动进入,可以很方便的刷写各类固件

Redmi AC 2100 固件

小米官方固件

什么?你问我都刷了三方还要官方固件干嘛?当然是变砖以后救砖啊(bushi

刷机过程

开启SSH权限

首先我们需要从浏览器打开路由器的后台管理界面,地址一般为192.168.31.1,登陆后url变为http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/web/home#router这样的格式

f12打开控制台,复制以下代码:

function getSTOK() {
    let match = location.href.match(/;stok=(.*?)\//);
    if (!match) {
        return null;
    }
    return match[1];
}

function execute(stok, command) {
    command = encodeURIComponent(command);
    let path = `/cgi-bin/luci/;stok=${stok}/api/misystem/set_config_iotdev?bssid=SteelyWing&user_id=SteelyWing&ssid=-h%0A${command}%0A`;
    console.log(path);
    return fetch(new Request(location.origin + path));
}

function enableSSH() {
    stok = getSTOK();
    if (!stok) {
        console.error('stok not found in URL');
        return;
    }
    console.log(`stok = "${stok}"`);

    password = prompt('Input new SSH password');
    if (!password) {
        console.error('You must input password');
        return;
    }

    execute(stok, 
`
nvram set ssh_en=1
nvram commit
sed -i 's/channel=.*/channel=\\"debug\\"/g' /etc/init.d/dropbear
/etc/init.d/dropbear start
`
    )
        .then((response) => response.text())
        .then((text) => console.log(text));
    console.log('New SSH password: ' + password);
    execute(stok, `echo -e "${password}\\n${password}" | passwd root`)
        .then((response) => response.text())
        .then((text) => console.log(text));
}

enableSSH();

回车执行代码后需要输入SSH密码,出现undefined即表明开启成功。

刷写Breed固件(可选)

首先这个并不是路由器系统,刷入的话恢复出厂设置时,可以很方便刷写OpenWrt、Padavan固件 首先通过SSH连接路由器,ip地址为192.168.31.1(如果是小米固件的话) 连接需要确认指纹,首先输入yes 然后输入密码,密码在输入的过程中不显示 然后就进入到路由器的系统中啦~

通过scp指令将文件传入路由器

scp -O 文件所处的绝对路径 root@192.168.31  
.1:/tmp

openssh 9.0之后的版本,scp命令默认使用SFTP协义来传输文件,路由器系统大部分不支持,因此使用“-O”参数使用得scp的变回传统传输行为

Windowscp版本老不用添加,添加了反而会因为不识别参数报错,部分linux下版本较新需要添加 如果提示-O参数不可用,去掉即可

window系统建议在固件所处目录下shift+右键打开终端,然后通过

scp -O ./breed-mt7621-xiaomi-r3g.bin root@192.168.31  
.1:/tmp

将固件发送到路由器的tmp目录下,出现以下字样说明上传成功

通过SSH命令连接到路由器系统,执行以下命令

mtd -r write /tmp/breed-mt7621-xiaomi-r3g.bin Bootloader

出现以下字样说明刷写成功

拔掉路由器电源,按住reset同时接上电源等双黄灯闪烁后松开, 浏览器输入 192.168.1.1 即可进入breed (如果以后路由器出现问题,路由器断电之后,使用取卡针插入路由器,再接电即可重置路由器进入 Breed,不用担心软砖的问题) 点击环境变量编辑,翻到最下面点击添加,字段输入 xiaomi.r3g.bootfw  值输入2 ,点击 保存

刷写路由器系统

主要分为两大类,OpenWrtPadavan两种,个人体验:

系统OpenWrtPadavan
可玩性高,针对软路由有较好的解决方案和OpenWrt相比,添加新功能比较麻烦
系统占用高,空载占用50%~70%左右(AC 2100运存128MB)相对较低,空载占用约30%
使用体验页面响应速度较慢,有卡顿,不过有自己的包管理器,体验上更像完整的linux操作系统插件相对OpenWrt少,但是内存占用较少,更像是一个纯粹的、相比原版功能更多的路由器系统

总而言之,OpenWrt占用高,功能全,更像一个专门针对网络的操作系统,但是对于路由器来说运行较为吃力(也可能是我插件加的太多)。而Padavan更纯粹,插件相对OpenWrt也只是略逊一筹。取舍全看个人,看中可定制性,就OpenWrt,注重稳定低占用,就Padavan。

有Breed

在此处选择固件,刷写OpenWrt则选择布局为OpenWrt,分别刷写kernel1rootfs0的固件,文件后缀名为.bin 刷写Padavan则选择闪存布局为Padavan,刷写后缀名为.trx的文件 固件刷写成功会出现Wifi信号,无密码,连接后进入网关管理界面(我这里是192.168.2.1,如果进不去的花自行查看网关地址),Padavan的默认账号密码均为admin,输入后即可进入系统~

无Breed

我没有尝试过从命令行刷写padavan,网上也没有相关教程,因此这里只介绍刷写OpenWrt

刷写OpenWrt时,首先通过scp命令将固件传输至路由器

报错请自行删减-O参数(上面没加下面也不用加)

scp -O openwrt-21.02.0-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin root@192.168.31.1:/tmp

scp -O openwrt-21.02.0-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin root@192.168.31.1:/tmp

通过SSH连接进入路由器系统

ssh root@192.168.31.1

依次执行以下命令

mtd write openwrt-21.02.0-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin kernel1

mtd -r write openwrt-21.02.0-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin rootfs0

或者你也可以直接从网络获取固件并刷写 首先通过SSH进入路由器,依次执行以下命令

cd /tmp
wget http://openwrt.tetaneutral.net/releases/21.02.0/targets/ramips/mt7621/openwrt-21.02.0-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin 
wget http://openwrt.tetaneutral.net/releases/21.02.0/targets/ramips/mt7621/openwrt-21.02.0-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin

执行刷写操作即可

mtd write openwrt-21.02.0-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin kernel1
mtd -r write openwrt-21.02.0-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin rootfs0

享受你的新系统吧~

后记

本文只用作抛砖引玉,介绍的是官方固件,实际上有很多优秀的第三方固件,都是从OpenWrt或者Padavan的源码编译而来,因此如果一直找不到心仪的固件,可以自己从源码编译固件,并分享给他人使用,开源共享~