紅米AX6S路由器從openwrt定制編譯到刷機的全過程

詳細描述定制編譯openwrt,然後紅米AX6S路由器破解,最後使用自編譯的openwrt刷機的全過程。

AX6S硬件配置

CPU MediaTek MT7622B 2 cores A53
Flash 128MB NAND
Ram 256MB
https://www.mi.com/global/product/xiaomi-router-ax3200/

AX6S的openwrt定制編譯

首先裝好 Linux 系統,推薦 Ubuntu LTS

安裝編譯依賴

1
2
3
4
5
6
7
8
sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

下載源代碼,更新 feeds 並選擇配置

1
2
3
4
5
git clone https://github.com/coolsnowwolf/lede
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
  1. 選擇Target Profile

  2. 選擇LuCI -> Applications ->

[ * ] 表示選中
[ ] 不選
< M > 編譯成模塊

常用應用

名稱 菜單位置 說明
luci-app-adbyby-plus 服務 -> 廣告屏蔽大師 Plus + 可以讓同一網絡環境下的設備,都能享受到去廣告的效果
luci-app-aliddns 服務 -> 阿里DDNS 阿里的ddns解析
luci-app-ddns 服務 -> 動態域名 動態域名 , 不支持 阿里DDNS
luci-app-autoreboot 系統 -> 定時重啟 可以設定定時重啟
luci-app-arpbind 網絡 -> IP/MAC 綁定 綁定IP/MAC
luci-app-filetransfer 系統 -> 文件傳輸 傳輸文件到openwrt的文件系統
luci-app-firewall 網絡 -> 防火牆 防火牆
luci-app-frpc 服務 -> Frp 內網穿透 Frp內網穿透客戶端
luci-app-frps 服務 -> Frps Frp內網穿透服務端
luci-app-guest-wifi 網絡 -> 訪客網絡 WiFi訪客網絡
luci-app-nlbwmon 帶寬監控 包括 帶寬監控 菜單下的所有內容
luci-app-qos 網絡 -> QoS 服務質量, 可以分類設置各種流量的優先級
luci-app-ssr-plus 服務 -> ShadowSocksR Plus+ 科學上網, 可以選擇需要的plugin
luci-app-turboacc 網絡 -> Turbo ACC 網絡加速設置 網絡加速
luci-app-unblockmusic 無菜單 解鎖網易云音樂
luci-app-upnp 服務-> UPnP 通用即插即用(UPnP)
luci-app-vlmcsd 服務 -> KMS服務器 微軟產品激活服務器
luci-app-wireguard 網絡 -> 接口 菜單設置 狀態 -> WireGuard 狀態可以查看鏈接狀態
luci-app-wol 服務 -> 網絡喚醒 網絡喚醒

選中需要的功能,並保存, 全部選完後退出

下載 dl 庫,編譯固件 (-j 後面是線程數,第一次編譯推薦用單線程)

1
2
make download -j8
make V=s -j1

編譯成功完成後, 編譯好的固件位於: ~/lede/bin/targets/mediatek/mt7622/

首次刷機使用 openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin
在openwrt系統中升級使用 openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-sysupgrade.bin

AX6S的破解和刷機

刷入紅米測試固件

只有刷入測試固件後才能通過telnet連接到AX6S進行後續操作,測試版固件 miwifi_rb03_firmware_stable_1.2.7.bin

計算telnet密碼

算號需要路由器的SN號,可以在機器反面的標籤上找到。後台管理界面也能找到
算號的網站很多都已失效,可以自行運行下面的python程序進行計算:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python3
import sys
import hashlib

if sys.version_info < (3,7):
    print("python version is not supported", file=sys.stderr)
    sys.exit(1)

# credit goes to zhoujiazhao:
# https://blog.csdn.net/zhoujiazhao/article/details/102578244

salt = {'r1d': 'A2E371B0-B34B-48A5-8C40-A7133F3B5D88',
        'others': 'd44fb0960aa0-a5e6-4a30-250f-6d2df50a'}


def get_salt(sn):
    if "/" not in sn:
        return salt["r1d"]

    return "-".join(reversed(salt["others"].split("-")))


def calc_passwd(sn):
    passwd = sn + get_salt(sn)
    m = hashlib.md5(passwd.encode())
    return m.hexdigest()[:8]


if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <S/N>")
        sys.exit(1)

    serial = sys.argv[1]
    print(calc_passwd(serial))
1
2
abc@openwrt-build:~$ python calc_ax6s_pwd.py SN
00d135eb

輸出的就是telnet密碼

telnet連接AX6S

首先確定路由器的ip地址,才能夠連到路由器。可以通過路由器連接的網絡的管理界面查看路由器的局域網地址。比如我的路由器ip地址是:192.168.0.121, 開啟一個終端輸入以下命令。 telnet 192.168.0.121
用戶名: root 密碼: 剛才計算出來的密碼

登陸成功後執行:

1
2
3
nvram set ssh_en=1 && nvram set uart_en=1 && nvram set boot_wait=on && nvram set bootdelay=3 && nvram set flag_try_sys1_failed=0 && nvram set flag_try_sys2_failed=1
nvram set flag_boot_rootfs=0 && nvram set "boot_fw1=run boot_rd_img;bootm" && nvram set flag_boot_success=1 && nvram commit 
/etc/init.d/dropbear enable && /etc/init.d/dropbear start

執行成功後會打開scp服務,使用scp服務上傳固件到路由器。

上傳固件

windows用winscp這個軟件連接路由器,將上面的步驟中編譯完成的文件 openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin 上傳到/tmp/目錄下,並改名為factory.bin文件

刷寫固件

在telnet窗口中使用以下命令,刷寫固件

1
mtd -r write /tmp/factory.bin firmware

刷寫完成後,路由器會重啟,重啟完成後 默認信息如下:
IP地址: 192.168.1.1
USER: root
Password: password

刷機出現問題後恢復

记录并分享
Built with Hugo
Theme Stack designed by Jimmy