Featured image of post 小米WR30U刷入OpenWrt

小米WR30U刷入OpenWrt

MiWIFI系統更換官方OpenWrt的過程

前言

Wi-Fi 7 都有產品上市了。家裡 3 年前買的 AC86U ,只支援 Wi-Fi 5 ,設備大都是 2×2,只能協商 866Mbps 的速度。之前換的手機和桌機,也都能支援 Wi-Fi 6E 。看到蠻多人在網路上賣 AC86U ,而且價格比想像中保值。再加上前陣子中國很熱門的小米 AX3000T 路由器,使用的 MTK Filogic 820 SOC ,性能不俗價格又便宜,基於台積電 12nm 製程,發熱耗電表現不錯。於是換換病發作,決定將家裡路由器升級成 Wi-Fi 6 。

直接上淘寶找,發現還有一款 WR30U ,是中國聯通的小米訂製機。基本跟 AX3000T 相同,天線多一根和少了 NFC 功能(刷 OpenWrt 用不到),價格還能便宜 200 左右。也有官方 OpenWrt 支援,那改買這款省點錢。再順便買張 AX210 幫筆電升級一下。兩樣含運費才花了一千出頭,拿 AC86U 賣掉的錢來買還有剩😁。

刷機流程

獲取SSH

需要先準備:

  • Windows 電腦,需要有網路孔和其他上網方式(ex: Wi-Fi 或手機 USB 數據共享)
  • 安裝 Python 和 pycryptodome 3.17
  • 下載server_emulator.py

開始啟用 SSH Service:

  1. 路由器中設定以下部分:

    • 固定 WAN 至 Port1
    • 開啟 “启用与智能网关的无线配置同步”
    • 上網方式改為 “DHCP” 與 “自動配置DNS”
  2. 電腦中 Wi-Fi 網卡上右鍵開啟共用如下圖

  3. 用網路線將路由器 Port1 和電腦連接,如果共用設定成功,路由器上的網路指示燈會亮

  4. 執行 server_emulator.py 並等待找到路由器連線

  5. 找到後會顯示路由器資訊,按任意鍵繼續操作

  6. 出現 finish 後即可關閉程式

  7. 將網路線換回路由器上其他 LAN 口,即獲得臨時 SSH 權限。帳密為root/admin

備份原廠韌體分區

避免意外或是之後想還原,建議備份分區內容供日後還原
可以用 cat /proc/mtd 查看分區表:

其中只需要備份:

1
2
3
4
5
6
7
8
9
dev:    size   erasesize  name
mtd1: 00100000 00020000 "BL2"
mtd2: 00040000 00020000 "Nvram"
mtd3: 00040000 00020000 "Bdata"
mtd4: 00200000 00020000 "Factory"
mtd5: 00200000 00020000 "FIP"
mtd8: 02200000 00020000 "ubi"
mtd9: 02200000 00020000 "ubi1"
mtd12: 00040000 00020000 "KF"

使用以下指令備份分區:

1
2
3
4
5
6
7
nanddump -f /tmp/BL2.bin /dev/mtd1
nanddump -f /tmp/Nvram.bin /dev/mtd2
nanddump -f /tmp/Bdata.bin /dev/mtd3
nanddump -f /tmp/Factory.bin /dev/mtd4
nanddump -f /tmp/FIP.bin /dev/mtd5
nanddump -f /tmp/ubi.bin /dev/mtd8
nanddump -f /tmp/KF.bin /dev/mtd12

分區會備份至 /tmp ,使用 scp 將檔案保存至電腦

刷入 Uboot

刷入 Uboot 後再刷入 OpenWrt
也可以不刷 Uboot ,直接刷過渡韌體,再刷 OpenWrt

由於 OpenWrt 官方的 Uboot(ubootmod) 安裝需要更改路由器分區,刷機風險較高,因此改用第三方開源 Uboot 。選擇了 hanwckf 的bl-mt798x,自帶 Web Fail-Safe ,可以方便地刷回原廠韌體。

mt7981_wr30u-fip-fixed-parts-multi-layout.bin使用 scp 上傳至/tmp ,並使用mtd write mt7981_wr30u-fip-fixed-parts-multi-layout.bin FIP刷入 Uboot 至 FIP 分區。

Uboot 中不含 DHCP 功能,因此需將電腦網路卡設定為固定 ip 。

重啟後按住 reset ,即可在 192.168.31.1 看到 Faif-Safe 介面。

刷入官方 OpenWrt

接著就能將 OpenWrt 官網下載的韌體刷入,需要選擇 stock 分區布局且為 sysupgrade 的完整韌體包。如 xiaomi_mi-router-wr30u-stock-squashfs-sysupgrade.bin 檔案。

在 Web 介面上傳韌體,mtd layout 選擇 default 。重啟後,就能在 192.168.1.1 登入 OpenWrt 後台。
預設 user: root 且無密碼。

刷回原廠韌體

要從 OpenWrt 刷回原廠韌體,一樣重啟按住 reset 進入 Uboot 。刷入之前備份的 ubi 分區。
如果要還原原廠 Uboot ,需要再次獲取 SSH 後,上傳 FIP/tmp ,執行 mtd write FIP.bin 即可。

更新 Uboot

通常非必要都不需更新 Uboot 。但如果需要更新,一樣重啟按住 Reset 進入 Web Fail-Safe。
並在 192.168.31.1/uboot.html 頁面上傳 Uboot 。

Source

PatriciaLee3/wr30u_ssh
Github上討論
hanwckf/bl-mt798x

Licensed under CC BY-NC-SA 4.0
使用 Hugo 建立
主題 StackJimmy 設計