H3C TX1801 Plus 路由器刷 OpenWRT 记录

前言

一次偶然的机会,我在二手市场发现了一台 H3C TX1801 Plus 路由器。通过手机搜索,我发现这款路由器已有成熟的 OpenWRT 和梅林固件可用,于是果断以 30 元的价格将其购入。

原厂固件虽然功能看似丰富,但大多华而不实,尤其是我最需要的 IPv6 相关功能并不完善。

原厂固件界面

在使用几周后,我决定刷入 OpenWRT 系统。本文主要参考了 DragonBluep 在恩山无线论坛发布的《新华三 H3C TX1801 Plus OpenWrt 刷机教程》,并结合我的实际操作经验整理而成。

一、拆机准备

拆开路由器外壳后,内部做工精致,H3C TX1801 Plus 是 MT7621 芯片 + 256MB RAM + 128MB NAND 的配置,TTL 接口清晰可见。使用杜邦线简单焊接后,连接到 CH341 编程器。

拆机图

二、环境准备

[!TIP]

刷机原理详解

整体刷机流程设计

本次刷机采用 「两步走」 的安全策略,核心思想是 「先测试后刷写」,最大程度降低变砖风险。

image-20251129110853868

各阶段技术原理

1. U-Boot 阶段 - 底层控制

  • U-Boot 是路由器的底层引导程序,类似 PC 的 BIOS
  • 通过 TTL 串口中断正常启动流程,进入 U-Boot 控制台
  • 在此阶段拥有对硬件的完全控制权,可以执行底层操作

2. 临时系统阶段 - 安全测试

1
2
tftpboot initramfs.bin  # 通过网络加载镜像到内存
>bootm # 从内存直接启动
  • initramfs.bin 是包含完整系统的内存盘镜像
  • 整个系统在 内存中运行,完全不写入 Flash 闪存
  • 优点:测试固件功能,确认硬件兼容性,零风险体验
  • 缺点:重启后所有更改丢失,无法永久使用

3. 永久刷写阶段 - 固件写入

  • xxxx-tx1801-plus-squashfs-sysupgrade.bin 是完整的固件镜像
  • 通过 OpenWRT 的 sysupgrade 机制安全刷写
  • 会擦除原厂固件分区,写入新的 OpenWRT 系统
  • 刷写过程包含坏块管理和分区校验,确保数据完整性

关键技术要点

NMBM 坏块管理

  • TX1801 Plus 使用 NAND Flash,可能存在坏块 NMBM (NAND Memory Bad-block Management) 自动处理坏块
  • 这也是为什么不能刷 Breed 等第三方 U-Boot 的原因
  • 原生 U-Boot 与 NMBM 紧密配合,确保数据安全

分区保护机制

1
2
原厂分区布局:
>bootloader → 配置区 → 固件区 → 用户配置区
  • 刷机过程主要修改「固件区」
  • U-Boot 和关键引导区域得到保护
  • 即使固件刷写失败,仍可通过 U-Boot 恢复

为什么选择这种方案?

  1. 安全性高:临时系统阶段相当于「试驾」,满意再购买
  2. 容错性强:网络加载失败不影响原有系统
  3. 标准化操作:使用 OpenWRT 官方推荐的 sysupgrade 流程
  4. 可逆性:在临时系统阶段可以随时退出,恢复原状

风险控制设计

整个刷机过程设计了多重保护:

  • 物理层:TTL 接线避免 VCC 短路
  • 引导层:保留原厂 U-Boot,确保引导能力
  • 系统层:内存运行测试,避免直接写闪存
  • 应用层:标准刷写工具,避免低级错误

理解了这些原理,就能明白每个步骤的意义,在遇到问题时也能准确判断故障环节。

准备固件文件

  1. 从教程提供的网盘下载 OpenWRT 固件包(h3c_tx1801-plus.tar.7z)
  2. 解压压缩包
  3. xxxx-tx1801-plus-initramfs-kernel.bin 重命名为 initramfs.bin
  4. 确保 xxxx-tx1801-plus-squashfs-sysupgrade.bin 文件也在同一目录

下载地址(来自帖子)

准备 TFTP 服务端

安装和配置 TFTP 服务器: (如有不清楚的地方还请自行搜索tftp64配置方法)

  1. 下载 TFTP 服务端软件
    • 推荐使用 tftpd64(Windows)或 tftpd-hpa(Linux)
    • tftpd64 下载地址:官方页面 或各大软件下载站
  2. 配置 TFTP 服务端
    • 安装后打开 tftpd64
    • 设置服务器接口:选择你设置的 IP 地址(192.168.124.99)
    • initramfs.bin 放入 TFTP 根目录(如使用 tftpd64)
    • 确保服务正常运行
    • 防火墙已关闭放行 TFTP 端口(69)

网络设置

使用网线连接路由器 LAN 口至电脑网口,设置电脑 IP 为:

  • IP 地址:192.168.124.99
  • 子网掩码:255.255.255.0
  • 网关和DNS不填

三、刷机步骤

1. TTL 接线

CH340 编程器接线方式:

  • TTL 模块 GND ↔ 路由器 GND(暂时不接)
  • TTL 模块 RX ↔ 路由器 TX
  • TTL 模块 TX ↔ 路由器 RX
  • 路由器 VCC 接口不接

注意: CH341 编程器接口名称略有不同:

  • TTL 模块 TXD → 路由器 RX
  • TTL 模块 RXD → 路由器 TX
  • TTL 模块 GND → 路由器 GND(暂时不接)
  • 路由器 VCC 接口不接

2. 进入 U-Boot 模式

  1. 路由器先不通电,将USB-TTL模块( CH341 编程器)插入电脑 USB 接口
  2. 在 Windows 设备管理器中设置 CH341 波特率为 115200,数据位 8,奇偶校验关闭(None),停止位 1

设备管理器设置

  1. 打开Xshell,新建会话,协议选择SERIAL(串口)
QQ20251128-172723

然后点击”串口“选项,设置端口为你在设备管理器里面看到的CH341编程器端口(如COM4),波特率为115200,然后点击连接

image-20251128211328744
  1. 连接后,看到控制台显示 “connected” 时,接通路由器电源

    image-20251128211819829
  2. 当指示灯变为绿色时,立即连接 TTL 刷机线的 GND

  3. 在控制台中一直按 0 键中断启动过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
***************************************************************
* *
* H3C TX1801_Plus_C uboot, Version 102 *
* *
***************************************************************

Hit any key to stop autoboot: 0


*** U-Boot Boot Menu ***

1. Startup system (Default)
2. Upgrade firmware
3. Upgrade Factory
4. Upgrade bootloader
5. Upgrade bootloader (advanced mode)
6. Load image
0. U-Boot console #选择这一项

Press UP/DOWN to move, ENTER to select
  1. 选择 0. U-Boot console 进入 U-Boot 命令行

U-Boot 菜单

3. 加载并启动临时系统

在 U-Boot 命令行中依次执行:

1
2
3
4
env set bootflag 0
env save
tftpboot initramfs.bin
bootm

请确保 TFTP 服务端正常运行

正常输出如下:

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
=> tftpboot initramfs.bin
Using eth@1e100000 device
TFTP from server 192.168.124.99; our IP address is 192.168.124.54
Filename 'initramfs.bin'.
Load address: 0x80010000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
################
7 MiB/s
done
Bytes transferred = 6904336 (695a10 hex)
=> bootm
## Loading kernel from FIT Image at 80010000 ...
Using 'config-1' configuration
Trying 'kernel-1' kernel subimage
Description: MIPS OpenWrt Linux-5.15.103
Type: Kernel Image
Compression: lzma compressed
Data Start: 0x800100e4
Data Size: 6891349 Bytes = 6.6 MiB
Architecture: MIPS
OS: Linux

成功加载后,系统将从 内存启动 OpenWRT(不写入 Flash)

[!NOTE]

提示:约 50 秒后可通过浏览器访问 http://192.168.1.1输入任意密码即可登录 LuCI。此为临时系统, 所以现在后悔还来得及,重启后恢复原厂固件

OpenWRT 界面

4. 备份关键分区

进入 LuCI 后台后,建议先备份关键分区:

  1. 进入 系统 → 备份
  2. 保存 mtdblock 部分备份关键分区,如 firmware 分区

备份分区

5. 刷入正式 OpenWRT 固件

  1. 在 LuCI 中进入 系统 → 备份/升级 → 刷写新的固件
  2. 上传 xxxx-tx1801-plus-squashfs-sysupgrade.bin(注意不是 initramfs.bin
  3. 可选勾选”保留配置”
  4. 等待自动重启

刷写固件

重启后,Xshell 控制台会显示 U-Boot 菜单,选择 1. Startup system (Default) 启动系统。

启动完成后,访问 http://192.168.1.1 进入登录界面,输入任意密码即可进入 OpenWRT 后台。

登录界面

如需后续升级至 X-WRT梅林固件,也可在此 OpenWRT 基础上继续操作

重要提醒与风险提示

风险点 说明与解决方案
不要刷第三方 U-Boot(如 Breed) TX1801 Plus 使用 NMBM 坏块管理,普通 U-Boot 无法正确识别分区,可能导致设备无法启动
不要使用 cp.l 直接写固件 容易因对齐错误或坏块处理不当导致系统崩溃
TTL 接线时 VCC 不要接 只连接 GND、TX、RX 三线,供电由路由器本身提供
波特率设置问题 如出现乱码,尝试调整波特率至 115200 ± 误差,或更换 USB-TTL 模块(推荐 CH340/CP2102)
Xshell 不显示输出(不跑代码) 先将 TTL 刷机线接入电脑(不接 GND),路由器上电后绿灯亮起时立即连接 GND,此时 Xshell 应正常显示输出

结语

本次刷机过程总体顺利,OpenWRT 系统运行稳定,提供了比原厂固件更丰富的功能和更好的 IPv6 支持。刷机有风险,操作需谨慎,建议在充分了解步骤和风险后再进行尝试。

希望这篇记录能为有同样需求的用户提供参考和帮助。


H3C TX1801 Plus 路由器刷 OpenWRT 记录
http://blog.dutyc.top/2025/11/29/2025112901/
作者
DUTYC Studio
发布于
2025年11月29日
许可协议