📦 这是 0.3.0 的存档教程。最新版(0.4.0)在 recovery-guide.html。

网页 U-Boot 指南

把 Airoha 方案的光猫(支持机型)换成能用浏览器刷机、救砖的 U-Boot,以及换好之后怎么用。跟着步骤做即可,不需要懂 U-Boot 或 Linux。

对应恢复页 0.3.0仅适用 ubi 变体支持机型 ↓
★这个 U-Boot 和恢复页都是业余时间做的,全部开源、没有任何收费。觉得有用的话,去 GitHub 点个 Star——这是对作者最好的支持。Loong1996/ImmortalWrt-Airoha →
1开始

1.1判断你在哪一步

系统还能进 OpenWrt 的话,SSH 上去执行 cat /proc/mtd,看分区名:

看到说明走哪条
bootloader / ubootenv,或 nsb_1 / romfiletcboot 或原厂引导第 2 章 首次迁移
bl2 和 ubi已经是网页 U-Boot打开恢复页看左栏:有「试跑固件」「系统诊断」就是 0.3.0,看第 3 章;没有就是旧版本,看第 4 章

系统进不去的话:面板灯自己开始流水,说明已经是网页 U-Boot、恢复页开着,看第 3 章;一直不流水、按住 reset 也不流水,多半是原厂,只能从第 2 章开始。

1.2支持机型

网页 U-Boot 本身不认机型,同一份页面服务所有开了它的板子。下表是已知能用的机器,以及下载固件时该选哪一个。

机型SoC下载时选状态备注
Nokia XG-040G-MDAiroha AN7581XG-040G-MD实机验证本教程的截图与串口日志都来自它
Nokia XG-040G-MFAiroha AN7583XG-040G-MF实机验证与 MD 共用分区布局与恢复页,步骤完全相同
Nokia XG-140G-MDAiroha AN7581XG-040G-MD实测可用同一套参考设计,直接用 XG-040G-MD 的固件;设备详情页会显示为 XG-040G-MD
ZNXT ZN515XG-DAiroha AN7581XG-040G-MD实测可用同上,直接用 XG-040G-MD 的固件

其他 AN7581 参考设计的机器大概率也能直接用 MD 固件,试过的请到仓库 Issues 或 QQ 群 1092754041 反馈。

1.3下载固件

只列出最近一次 ubi 自适应内存构建。点文件名直接下,文件名不用改,网页会按名字做核对。

全部 Releases →
正在读取最新 Release…

1.4准备工作

  • 网线一根 + 一台电脑
    只用来连这台路由器,不需要能上外网,插哪个口见「连上恢复页」。固件先在上方下好。页面按桌面浏览器设计,手机也能用。
  • USB 转 TTL 串口模块仅首次迁移
    3.3V 电平的那种(不是 RS232),CH340 一类都行,带 3 根杜邦线。之后日常用网页就不再需要它。
  • 支持 Xmodem 发送的串口终端仅首次迁移
    Windows 上 MobaXterm、SecureCRT、Xshell 都自带「发送文件 → Xmodem」;macOS / Linux 用 minicom,或装 lrzsz 后在 screen 里用 sx。
  • 先做一次整机 flash 备份仅首次迁移
    首次迁移会清空原厂分区,其中 ri(MAC / 序列号)和 bosa(光模块校准)是这台机器独有的、没有第二份。备份方法见 原厂备份与刷回原厂。备份的 all_flash.bin 以后能在网页里整片刷回原厂。
2首次迁移需要串口,只做一次

2.1接串口,传引导文件

先不要插网线。只有这一次需要打开机壳接串口,传完两个引导文件之后,剩下的和以后的每一次都只用浏览器。

找到串口调试口,接好线

拆开机壳,主板上电解电容旁边有一排焊盘,标着 Tx Rx GND:

主板串口焊盘位置,红色箭头标出 Tx / Rx / GND
▲ 主板实拍,电解电容左侧就是调试串口

接线是「交叉」的——模块的 TX 接主板的 Rx,模块的 RX 接主板的 Tx,GND 接 GND。不同批次位置可能略有出入,以实物丝印为准:

电脑
USB 口
TX
RX
GND
USB-TTL
模块
→Rx
→Tx
→GND
路由器
调试口

打开串口终端

端口选 USB-TTL 模块对应的那个(Windows 是 COMx,macOS / Linux 是 /dev/tty.usb… 或 /dev/ttyUSB0),参数 115200 · 8 · 无校验 · 1 停止位 · 无流控。这时候先别接路由器电源。

长按 reset 并同时上电,看到 Press x 立刻按 x

[ 164.234828] br-lan: port 4(lan4) entered disabled state Press x <- 看到就立刻按键盘 x CCC <- 刷出 C 就用 Xmodem 发送 preloader.bin

▲ 前面那一大段启动日志不用看,就盯着 Press x 这一行

依次 Xmodem 发送两个文件

先发 …-preloader.bin。传完路由器自动重启一次,很快刷出第二个提示,再按一次 x,出现 C 后发送 …-bl31-uboot.fip:

MRW RKO MR#6 = 0xc6b DRAM FLOW DONE!!! NOTICE: BL22: v2.10.0 (release):ImmortalWrt v2.10-2 (an7581-bl2) NOTICE: Current in BL23 Press x to load BL31 + U-Boot FIP <- 再按一次 x,出现 C 后发送 bl31-uboot.fip

▲ 满屏 MRW 是内存训练,属于正常;MF 机器这里显示 an7583

fip 传完新 U-Boot 就跑起来了,用下面任一种方式进恢复页:

一直按住 reset上电时按下的 reset 一直别松,等面板灯呈流水效果再松手(约 15 秒)
在菜单里选第 9 项启动菜单出来时按 9,选 Start web recovery server
Airoha Web U-Boot 0.3.0 U-Boot 2026.07-ImmortalWrt-r… 1. Run default boot command. 2. Boot system via TFTP 3. Boot production system from NAND 4. Load production system via TFTP then write to NAND 5. Load BL31+U-Boot FIP via TFTP then write to NAND 6. Load BL2 preloader via TFTP then write to NAND 7. Reboot 8. Reset all settings to factory defaults 9. Start web recovery server <- 按 9 a. About - github.com/Loong1996/ImmortalWrt-Airoha 0. Exit

串口出现下面这行,就是恢复页起来了:

Airoha Web U-Boot 0.3.0 by Loong Project https://github.com/Loong1996/ImmortalWrt-Airoha Guide https://loong1996.github.io/ImmortalWrt-Airoha/recovery-guide.html Using airoha-gdm1 device, MAC 90:03:2e:xx:xx:xx Listening for HTTP on 192.168.1.1 port 80 Handing out DHCP leases from 192.168.1.1

2.2连上恢复页

首次迁移接着上一步往下做;日常使用进了恢复页之后,也照这四步连。

等面板灯呈流水效果,再插网线

流水就是恢复页已经起来了。

插 LAN 2、3、4 任意一个,不要插 LAN 1

LAN 1 是 2.5G 口,U-Boot 里没有它的驱动(为什么),插上什么都不会发生。别的机型哪个口有效不一定一样,逐个口试,能拿到下面那个地址的就是对的。

电脑设成自动获取 IP,拿到 192.168.1.100 就对了

恢复页自带 DHCP,不用手动配地址。

浏览器打开 http://192.168.1.1

是 http:// 不是 https://。在「设备详情 → 网络」里改过地址并保存了的,用你改的那个;没保存的,断电重来就回到 192.168.1.1(见接进已有网络)。

打不开?看「出问题了」第一条。

2.3网页写入三样

192.168.1.1
写入期间不能断电。

重启后灯灭了很久还没进系统:小概率是卡在了 Press x 等按键,直接重新上电即可。

重建 UBI 会清掉出厂 MAC,设备改用随机 MAC。想要回真实 MAC,用「按卷写入」写回备份的 ri。
3日常使用只要浏览器

3.1进恢复页

主动进先上电,等 1~2 秒再按住 reset,等面板灯呈流水效果再松手(约 15 秒)
接着串口启动菜单按 9,选 Start web recovery server

面板灯呈流水效果就是进去了,接着连上恢复页。

菜单第 8 项「Reset all settings to factory defaults」平时别点,它会连出厂 MAC 一起清掉。

3.2恢复页一览

左栏一项一个任务,右边只显示那一个任务的表单。页面顶部的红条说闪存缺了什么;左栏最下角的点常驻显示还连不连得上设备。

192.168.1.1

▲ 示意框会自动轮流切换各页;点下表任一行直接跳过去

左栏做什么什么时候用
日常刷机传 …-squashfs-sysupgrade.itb,写进 fit 卷升级、救砖,最常用
引导升级传 BL2、U-Boot,可带固件;带「重建 UBI」开关首次迁移(开重建);升级 U-Boot(不开)
试跑固件传 …-initramfs-recovery.itb,载入内存直接引导,不写闪存先确认某个版本能不能跑
刷回原厂把 all_flash.bin 按偏移写回,边收边写彻底还原成原厂
按卷写入写回 ri / bosa,或按卷名写任意卷补回出厂 MAC
备份下载把 UBI 卷或整片闪存存到电脑,与 dd 镜像同格式重建 UBI、刷回原厂之前
设备详情硬件、网口连接状态、网络模式、UBI 卷占用核对机型;连不上时排查;接进已有网络
系统诊断快速检查(16 项逐项亮灯)、全片扫描、串口日志、下载诊断包刷完没反应;求助之前
环境变量只读查看变量与引导菜单预览;一键恢复默认怀疑 bootcmd 或菜单被改坏
启动与重启立刻重启、直接启动系统、下次开机停在本页连着写完几个卷之后
关于版本、作者、项目主页

3.3日常刷机

日常升级只传固件,用「日常刷机」页。点下面任一步可以停在那一步看。

192.168.1.1
会清空所有设置。系统还能进的话,用 sysupgrade 保留配置。
面板灯含义能拔网线吗
流水设备在工作:等上传、正在写、正在回读校验可以,只是看不到进度了(刷回原厂除外)
熄灭正在重启,约 1–2 分钟后可重新连接✅
写入期间不能断电。
拿不准固件能不能跑,先用左栏「试跑固件」传 …-initramfs-recovery.itb:载入内存直接引导,不写闪存,起不来断电即回原系统。别往那一页传 …-squashfs-sysupgrade.itb,起不来。

3.4补回出厂 MAC

重建过 UBI 或点过菜单第 8 项,出厂 MAC 就没了,设备在用随机 MAC。把备份的 ri 写回去即可,不用重刷固件。

192.168.1.1
只能用这台机器自己的备份。

3.5接进已有网络

默认是电脑直连:设备自己发地址,电脑插上就能打开。想从家里网络的任何一台机器打开它,在「设备详情 → 网络」里换个模式。

模式设备做什么什么时候用
DHCP 服务器默认自己是 x.x.x.1,给电脑发 x.x.x.100;掩码固定 255.255.255.0电脑直连。别在这一档接进已有网络,它会和你家路由器抢着发地址
静态地址用你填的固定地址,不发地址接进已有网络,推荐:填一个网段里的空闲地址
DHCP 客户端向上级路由要地址,不发地址也能接进网络,但地址要去路由器的客户端列表里按 MAC 找

每种模式都带「保存到闪存」。不勾就只管这一次开机,下次开机回到保存过的那套(没保存过就是 192.168.1.1);「应用」按钮下面那行一直写着下次开机会是什么。所以地址填错了,拔电源重来就是退路。

同一段里还列出各网口有没有插上、协商到多少速率,每 3 秒刷新一次——连不上时先看这里,换个口几秒后就能看出对不对。

3.6刷回原厂

把迁移前备份的整片 all_flash.bin 写回去,写完设备自动重启进原厂系统。

动手之前确认两件事。all_flash.bin 是这台机器的备份(页面不校验机型,MD 和 MF 的备份一样大);串口线还在——写完就没有恢复页了,想回 OpenWrt 得重新接串口。没有 all_flash.bin 就只能走串口。
192.168.1.1
写入中网线、电源都不能断。中途失败页面顶上会挂红条:不要重启,重新传到成功为止。
只写某一段(偏移不是 0)时,保持「擦净尾部」关着,否则后面的分区会被擦掉。偏移一改页面会自动关上。
4升级

4.1从旧版本升级

想先知道改了什么,看更新日志。升级用现在的恢复页就能做:0.2.x 进「引导升级」页,0.1.x 展开「引导程序」,重传 BL2 和 U-Boot 两个文件,固件留空,不要勾「重建 UBI」。

先在 LuCI 备份一次配置

系统 → 备份/升级 → 生成备份文件。0.1.1 之后的版本升级引导不会清配置,但花十秒备份总没坏处。

进旧版本的恢复页,只传两个引导文件

0.2.x 在「引导升级」页、0.1.x 在「引导程序」里:BL2 选 …-preloader.bin,U-Boot 选 …-bl31-uboot.fip,固件留空,「重建 UBI」不要勾——勾了会把出厂 MAC 和所有设置一起清掉。0.3.0 的页面长这样:

192.168.1.1

▲ 以后再升级 U-Boot 就是这样:两个引导文件,固件留空,重建 UBI 关着

重启后引导菜单标题变成 Airoha Web U-Boot 0.3.0

新 U-Boot 第一次开机会自己比对菜单版本,把保存的环境变量刷新一遍,串口上能看到 Boot menu: refreshing saved environment。不需要点「Reset all settings to factory defaults」。

4.2更新日志

每个版本改了什么、为什么改。点版本号展开。

0.3.0当前版本 · 24 项改动
传错东西之前拦下

打开了「重建 UBI」却没选齐 BL2 和 U-Boot,页面不让发——重建会抹掉 fip 卷,还会盖住原厂引导器的后半截,少了哪个机器都起不来。闪存里根本没有 UBI 时,日常刷机与创建 UBI 卷也一并拦下;只是缺 U-Boot 时,页面顶部亮红条提醒你重启之前先补上。这几条设备自己同样会查:不管从哪里发的上传,写之前先被拒,不再只靠页面。

文件太大也拦下

BL2 比 bl2 分区放得下的多、U-Boot 比 fip 卷放得下的多,页面直接不让发。两条写入都是先擦后写,装不下的话不是「没写」,是擦完了才失败,留下半截引导器。出厂数据那两个卷一直有这道门,这两个到 0.3.0 才补上。

重建 UBI 之后,出厂数据写得回去了

重建留下的是一片空 UBI,ri 与 bosa 两个卷压根还不存在,而「把备份写回去」恰恰要在重启之前做完。以前这一步会失败,得先重启一次让设备自己把卷建出来。现在和别的卷一样:不在就按备份文件的长度建出来。

升级上来的机器,复位键才真的进网页

0.3.0 之前从旧版本升上来,菜单里那一项会更新,但引导失败的自动回退和复位键仍然去等 TFTP —— 而这两条恰好是没有串口的人唯一能用的入口。现在它们跟着版本号一起刷新,升级完就生效,不必手动「恢复默认环境」。

试跑固件

左栏单独的一页:传一个 …-initramfs-recovery.itb,设备把它载入内存直接引导,闪存一个字节都不写。起不来就断电,系统还是原来那个 —— 刷固件这件事第一次变成可撤销的。要的是恢复固件,不是 sysupgrade 固件:恢复固件的根文件系统随镜像一起进内存,闪存里 UBI 空着也照样跑得起来;sysupgrade 的根要由 fitblk 从闪存的 fit 卷读,不写闪存就等于没换,内核是新的、根还是旧的。左栏顺带理了一遍名字:「写入 UBI 卷」改叫「按卷写入」、「诊断」改叫「系统诊断」,两页的内容都没动。

试跑失败会自己回到恢复页

试跑的固件起不来时,设备原地回到恢复页继续等着,页面自动刷新 —— 不再看你是怎么进来的。以前只有「引导失败就重开网页」那条路进来的机器会回来;按 reset 进来的会接着往下走去引导 NAND 里的旧系统,页面就没了,而那正是没有串口的人唯一的入口。闪存一个字节都没写,所以断电重来同样回到原系统,两条路都在。

「擦净尾部」不再默认擦到片尾

「刷回原厂」里这个开关擦的是镜像之后一直到闪存末尾的全部擦除块,不是它所在那个分区的末尾。整片写回时这是对的,只写一段时就是灾难:按「备份下载 → 原始区段」导出一段、再按同一个偏移写回来,默认勾着就会把它后面的 UBI 连同 ri、bosa 一起擦空。现在它只在偏移为 0 时默认打开,偏移改成非 0 就自动松开;你自己动过这个开关之后,页面不再替你改。

系统诊断

原来的「健康检查」和「串口日志」合成一页,分三段(左栏那一格 0.3.0 从「诊断」改叫「系统诊断」)。「快速检查」打开就跑,BL2、坏块、UBI 各卷、出厂 MAC 一项一盏灯,几秒出结果。「全片扫描」逐页读一遍整片:BBT 里的坏块是出厂就标好的,而每次读都要 ECC 悄悄纠正的那些页,才是这片 NAND 快不行了的信号 —— 只有整片读一遍才看得出来。「串口日志」不接串口也能看 U-Boot 从上电到现在打了什么,还能实时跟随。「下载诊断包」把四样连同设备详情打成一个文件,求助时直接发这个。

写完了会告诉你,而且重不重启你说了算

以前的顺序是「回一句上传完成 → 关连接 → 设备自己写 → 自己重启」,页面只说得出「传完了」,写得对不对、写没写完,都只有串口看得见。现在写入在连接里完成:设备一边写一边报到哪一步,写完把内容读回来算一遍 crc32跟上传的比,再弹出「写入完毕」列出每个文件的长度与校验和,由你点「立即重启」或者「留在恢复页」。校验没过就不弹框,顶上挂红条说清闪存里的东西不可信。连带的三件事:「按卷写入」的「写入后不重启」开关撤了(每次都问,开关就多余了);灯语只剩流水一种(齐闪的意思是「连接已关」,而连接不再关了);「闪存里没有 U-Boot」不再是硬拦——写完不会自动重启,先补上另一半再走就是了。

UBI 的空间去哪了

「设备详情 → UBI 卷」上方多了一条占用条:一段一个卷,宽度是它预留的容量,末尾是空闲、以及 UBI 留给自己的那点(卷表加坏块替换预留)。fit 与 rootfs_data 打了斜纹 —— 写固件时这两个卷先删掉再重建,所以对「还刷不刷得下」来说它们的容量是可用的,不是占用的;「系统诊断」里「可写空间」那一行报的就是这个加法,不然一台好好跑着的机器永远显示空闲 0 MiB。卷在闪存里并不连续,条上按卷号排,不表示物理位置。

连不上的时候先看网络

「设备详情」的网络那段直接读 PHY 寄存器,报出各口有没有插上、协商到多少速率 —— U-Boot 的网络层里没有 link 这个概念,这几行是绕过去拿到的。还会说明设备有没有发出过 DHCP 地址、最近发给了谁,据此分得清你现在用的地址是设备给的还是自己配的。这一段在前台时每 3 秒自己刷新一次,网线换个口不用重开页面,插上几秒之后那一行就跟着变。

三种模式,选一个

网络那段的「模式」下拉框把设备怎么上网这件事一次说完,三种互斥:DHCP 服务器(默认,本机发地址,电脑直连插上就有 IP)、静态地址(本机用一个固定地址,不再发地址)、DHCP 客户端(向上级路由要一个)。原来是「静态还是自动获取」再加一个单独的 DHCP 服务开关,两个开关能拼出「一边向路由器要地址、一边自己也在发地址」这种自相矛盾的组合;合成一个之后它根本选不出来。

把设备接进已有网络

选静态地址,填一个你家网段里的空闲地址,勾上「保存到闪存」,再把网线插到路由器上,就能从网内任何一台机器打开这个页面。也可以选 DHCP 客户端让上级路由分配 —— 但那样地址是多少这个页面事先不知道,得去路由器的客户端列表里按 MAC 找,所以多数时候填静态地址更省事。这两种模式下设备都不再发地址,不会和你家路由器抢。

DHCP 服务器档的两个数是定死的

这一档里子网掩码固定 255.255.255.0,填的地址末位也会被改成 .1:设备发出去的地址一直是本网段的 .100、网关指向自己,别的掩码描述的是一个租约并不属于的网络。填的时候输入框旁边就把「设备 x.x.x.1 · 电脑 x.x.x.100」两个结果摆出来,不用等按下按钮。接到已有网络上之前请换成另外两档,否则它会和那个网络的路由器抢着发地址,抢到的机器直接断网。

不勾保存,就只管这一次开机

三种模式都带一个「保存到闪存」。不勾的话,改动只在内存里生效,下次开机回到闪存里存着的那一套;从没保存过就是出厂默认的 DHCP 服务器 192.168.1.1/24。页面上「应用」按钮下面那行一直写着下次开机会是什么,不用自己推。地址填错时拔电源就是退路,所以这条是从结构上保证的:不保存的改动碰的是运行时的地址,碰不到闪存里那三个变量,别处的保存动作也捎带不上它。

备份下载

把 ri(出厂 MAC、序列号)、bosa(光模块校准)或者整片闪存下载到电脑。这两个卷逐机唯一,重建 UBI 就永远拿不回来了,而在此之前它们只能在原厂系统里 dd 出来 —— 现在系统进不去也能抢救。整片多大都是一个文件,传完页面给出 crc32 让你核对。

整片刷回不再有大小限制

镜像不再先整个读进设备内存,而是边收边写 —— 以前设备一次最多收约 249 MiB,而 256 MiB 的整片备份正好差这一点,只能让你自己把文件切开分几次写。现在整片直接传就行。代价是一旦开始写就必须传完:中途失败别重启,页面还在设备内存里,重传一次即可。

备份和 dd 镜像通用

整片备份里坏块照样占着位子,文件偏移就是 flash 偏移 —— 和 dd if=/dev/mtd0 一个格式。所以别人给的 all_flash.bin 能直接写进来,这里备份的也能拿去烧录器;有坏块的机器上,写回去不会从坏块起整体错位。

刷回原厂写完有回执

写完那一页不再是「上传完成」——拿到回应的时候镜像早就整份落盘了。现在单独一页,把设备回的写入长度、crc32 与跳过的坏块数摆出来。那个 crc32 和「备份下载」记的是同一个数,对得上就说明从读出到写回一个字节都没错。

写坏了会一直提醒

写到一半失败或者断线,页面顶上挂一条红条说明闪存已经不一致、重启会起不来,切页不消失,重写成功才清掉。设备回的原话也完整贴出来,不再被省略号截断。没开始写就被拒绝的(偏移没对齐这类)说的是另一句,不吓人。

知道自己还连不连得上

页面每隔几秒问设备一声。断了就盖一层说明,而且分清是哪种断:设备正在写入(别断电)、刚点了重启、还是真的失联(给「重新连接」)。路由器重启过页面会自己刷新,不会拿着重启前的旧内容让你误判。

环境变量与引导菜单

只读列出 U-Boot 的全部环境变量 —— 起不来的机器常常是 bootcmd 或引导菜单被改坏了,以前没串口就查不出来。「引导菜单预览」把开机时那个菜单按 bootmenu_* 摆出来,会写闪存的条目标红;序号列给的是串口上按的键(bootmenu_0 在屏幕上是 1.、第 10 项是 a.),照着念就能对上眼前的菜单。配套一个「恢复默认」,出厂 MAC、固件与用户配置都不受影响。

不必去够电源的三种走法

「启动与重启」页:立刻重启等同断电再上电;「直接启动系统」执行 bootcmd,省一次冷启动,起不来会自己回到本页面;「下次开机进恢复页」相当于开机时按住 reset,只生效一次,进来之后自动恢复原样 —— 而且是在原来的 bootcmd 前面插一段,万一没恢复成,设备照样会启动系统,不会被撂在半路。

进度条说得清,也说得住

上传时报速率和剩余时间,多个文件会说正在传哪一个。写入阶段没有进度:设备是单线程的,擦写期间它什么都答不了,所以给的是一个预计秒数而不是假装在走的条;回读校验那一段是设备自己的循环,报得出真百分比。备份下载没有字节进度——U-Boot 的网络栈同时只有一条连接,而下载那条从头开到尾,页面在这期间问不到设备。进度条只说「在读在传」,字节数请看浏览器自己的下载栏,传完页面给 crc32。这条以前写着「那条进度是真的」,是错的。

0.2.06 项改动
页面重做

按桌面浏览器设计的侧边栏布局,一页一个任务,不再有「这两样不能同时传」的报错。深浅色照旧。

不再写死机型

MD 与 MF 共用同一份页面,机型、闪存、分区、UBI 卷表都从设备上实时读,在「设备详情」页核对。

上传前就把错误拦下

出厂卷长度不对、偏移没对齐或超出容量、卷名非法——设备直接拒收并说明原因,此时什么都还没写。

刷回原厂可以填偏移

默认 0x0 整片;填某个原厂分区的起始就只写那一段。

写入 UBI 卷

出厂数据 ri / bosa 与任意卷合到一页;任意卷不存在时按文件长度新建;「写入后不重启」可以连着恢复多个卷。

上传进度更具体

显示正在传哪个文件、传了多少;传完明确告诉你页面已无作用可以关闭。

5遇到问题

5.1出问题了

按你看到的现象找,每条从最常见的原因往下排。都不对的话,到恢复页「系统诊断」点「下载诊断包」,带着它去 QQ 群 1092754041 或仓库 Issues 求助。

灯在流水,但 192.168.1.1 打不开
  1. 换个网口。LAN 1 无效,插 LAN 2~4;别的机型逐个口试。
  2. 看电脑拿到的地址。应该是 192.168.1.100;不是的话把网卡设成自动获取,拔插一次网线。
  3. 地址栏写 http://。浏览器自动补成 https:// 就打不开。
  4. 改过网络模式?用你保存的那个地址;没保存的,断电重来就回到 192.168.1.1。
  5. 接着串口的话看 Using … device, MAC … 那行:MAC 是 ff:ff:ff:ff:ff:ff 说明 U-Boot 是最早的 0.1.0,照升级步骤换新版。
灯不流水,进不了恢复页
  1. reset 按早了。先上电,等 1~2 秒再按住 reset,一直按到面板灯呈流水效果(约 15 秒)。
  2. 一直不流水、系统也起不来:多半还不是网页 U-Boot(原厂或 tcboot),只能走首次迁移接串口。
点了重启,灯灭了很久还没进系统
  1. 断电重启一次。偶尔会停在启动过程里等 Press x 按键,没接串口就没人按,看起来像卡住;重新上电通常就正常。
  2. 还是起不来:它会自己回到恢复页(灯流水),接着看下一条。
写完了,系统起不来
  1. 进恢复页开「系统诊断」,快速检查里红色的项就是起不来的原因。
  2. 怀疑引导被改坏:「环境变量」页看 bootcmd 是不是默认的;不是就点「恢复默认」,出厂 MAC 和固件都不受影响。
  3. 怀疑固件本身:换个版本先用「试跑固件」试,不写闪存。
页面顶上有一条红条
  1. 闪存里没有 U-Boot(fip 卷):现在的 U-Boot 只在内存里,重启就没了。先到「引导升级」传 U-Boot 文件,写完再重启。
  2. 闪存里没有可挂载的 UBI:到「引导升级」三样都选、打开「重建 UBI」,和首次迁移一样。
  3. 闪存已写入一部分(刷回原厂中途失败):不要重启,重新传一次、传到成功为止;已经重启了就只能走串口。
提示「设备拒绝了上传(400)」
  1. 闪存没被动过。偏移没对齐、文件超出容量、出厂卷长度不对、卷名非法这类问题,设备在写之前就挡下了。照提示改完重来即可。
提示「设备写入失败(500)」,或传到一半断线
  1. 别重启。页面还在设备内存里跑,重新传一次、传到成功为止。
  2. 只有「刷回原厂」断网会留下写了一半的闪存;别的页断网,设备会自己把这次写完。
网能用,但 MAC 地址不是机器背面那个
  1. 出厂 MAC 被清了(重建过 UBI,或点过菜单第 8 项),设备在用随机 MAC。用「按卷写入」把备份的 ri 写回去。

5.2常见问题

为什么网线插 LAN 1 没反应?
LAN 1 是 2.5G 口,走 SoC 的 GDM4 接外置 PHY EN8811H,这颗 PHY 每次上电都要先灌一份固件才能工作;U-Boot 里既没有这条通路的驱动,也不带那份固件。LAN 2~4 挂在 SoC 内置交换机上,U-Boot 只驱动这一个口,串口里 Using airoha-gdm1 device 说的就是它。进系统之后 LAN 1 一切正常,只是在恢复页里用不上。
什么时候要开「重建 UBI」?
只有第一次从原厂或 tcboot 换过来时要开:旧布局里没有能用的 UBI。之后升级固件、升级 U-Boot 都不开——开了会把出厂 MAC 和所有设置清空。
MD 和 MF 的固件、教程通用吗?
教程通用,固件不通用——MF 是 AN7583,下载时在「下载固件」那里切到 XG-040G-MF。恢复页是同一份,「设备详情」页会显示机型。刷回原厂时两款机器的整片备份长度相同,页面分辨不出来,别拿错文件。
想从这个 U-Boot 换回 tcboot,能靠网页操作吗?
换回原厂可以——「刷回原厂」页整片写回备份的 all_flash.bin。换成 tcboot 不行,那是另一套引导和分区布局,这个页面写不了它;而且 tcboot 变体已经不再维护。
Loong 的赞赏码

业余时间维护,全部开源。觉得有用可以请作者喝杯咖啡,不强求。