国庆回家,捡了个吃灰的H3C TX1801 plus路由器回来,应该是装电信宽带送的,研究下能不能刷机。于是搜到了恩山这一篇帖子,https://www.right.com.cn/forum/thread-8244730-1-2.html 写得很好,基本步骤是可以参考的。但我是Linux系统,具体使用的工具还是会有一些区别,所以记录下。

准备

硬件

淘宝买个CH340G,就是所谓的USB转TTL通信模块。由于路由器的调试串口焊盘没焊插针,刷机线送的杜邦线又都是双端母口,所以顺手下单了一些间距2.54mm排针。共花费6块钱包邮。

总共用3根杜邦线和排针即可。提前把杜邦线一端接到板子上,另一端插上三个排针(正常来说焊到板子上更靠谱,但我懒),在不插电的情况下比较下是否满足
板子 - 路由器

TXD - RX
RXD - TX
GND - GND

注意不要接VCC,另外板子上有个电压跳线,要设置到3.3V。

刷机包

openwrt原版 https://firmware-selector.openwrt.org/?version=24.10.3&target=ramips%2Fmt7621&id=h3c_tx1801-plus

其中sysupgrade和kernel这两个都要下,应该是两个.bin文件
下完之后kernel文件放到tftp的路径下

sudo mkdir -p /srv/tftp/
sudo mv openwrt-24.10.3-ramips-mt7621-h3c_tx1801-plus-initramfs-kernel.bin /srv/tftp/initramfs.bin

软件环境

我是Arch Linux,主要需要装两个东西,一是串口通信的工具,另一个是tftp server。
主要参考这两篇:
https://wiki.archlinux.org/title/Working_with_the_serial_console
https://wiki.archlinux.org/title/TFTP

# 串口工具
sudo pacman -S picocom

# tftp server
sudo pacman -S tftp-hpa

# 装完之后改下配置
sudo vim /etc/conf.d/tftpd

这里是我的配置文件内容

TFTPD_ARGS="--secure /srv/tftp/"
TFTP_ADDRESS="0.0.0.0:69"

改完之后重启tftpd

systemctl restart tftpd.service

最后要给自己的有线网口设置个ip地址(必须为192.168.124.99),后面刷机时会通过这个ip地址下载kernel进去。

# 先看下自己的有线网卡名称,一般en开头
ip addr

# 设个ip
sudo ip addr add 192.168.124.99/24 dev enp199s0f4u1u2

然后可以测试下能不能正常通过tftp下到文件

tftp 192.168.124.99
get initramfs.bin
quit

看看是否initramfs.bin已经成功下载到。

刷机

把USB转TTL的板子插到电脑上,然后把网线一端插之前配好ip地址的网口,另一端接到路由器的LAN 口上,这步很关键,因为刷机包的下载实际上是通过这根网线走的,而不是通过TTL。

# 看一下是哪个tty设备,我这里是ttyUSB0
sudo dmesg -T |grep tty

# 启动picocom
sudo picocom -b 115200 /dev/ttyUSB0

此时还不着急把杜邦线另一端三根插针插到路由器调试焊盘。先插路由器,绿灯亮了再插上插针。

这时候应该能看到终端里开始输出一些日志,狂按0中断加载过程,直到看一个=>提示符停在那里进入一个交互式命令行模式,即可进行下一步,如果日志还一直不停,说明手速慢失败了,得断开路由器电源重新进行上述步骤直到成功。

在命令行输入

env set bootflag 0
env save
tftpboot initramfs.bin
bootm

然后就可以看到开始加载内核了,日志滚动到不动时,按下回车,应该可以进入OpenWRT的shell,这时候就算启动完了。

访问http://192.168.1.1/ 可以打开OpenWRT的Web界面,目前还是临时在跑,如果在Web界面测试功能都正常的话,可以在页面顶端导航栏 System -> Backup/Flash Firmware 这个页面,最下面的Flash new firmware image,选择那个sysupgrade的.bin文件刷进去,刷完等它自己重启,整个刷机流程就结束了,然后就可以照常插网线开web界面去进行配置了。之后刷机就都可以直接在web页面里刷,除非变砖才需要回到插ttl线来刷。