TearSnow Fan


十年老路由的觉醒——TTL刷机水星MW300Rv2小记

2020年春节回家,老妈与时俱进地提出了“阳台上WiFi信号差无法微信语音/视频通话的问题”。这些年家里的WiFi一直依靠一台网件/Netgear WNDR3700 v2独立支撑,运行OpenWrt十分稳定从未令人失望。但是信号覆盖整个房子确实吃力。

翻了翻家里的陈年旧物,“那些年我折腾过的路由器”一文中留下的除了网件WNDR3700 v2以外,就只有一台水星/Mecure MW300R v2了。采用高通AR7241芯片,RAM 32 MB,FLASH 4 MB,具有一定可玩性,可以刷OpenWrt和DD-Wrt。这款路由器v3及以后的版本缩水严重,比如Flash 2MB就没什么折腾空间了。打算用这个老古董做repeater或者在OpenWrt下尝试组个mesh网络来改善家里的WiFi信号。

事实上,水星的MW300r v2,迅捷的FW300r v2,TP-Link的TL-WR841n v7,TL-WR840n v1,TL-MR3420 v1的硬件基本是一致的。其中,mw300rv2,fw300rv2,wr841nv7 硬件几乎完全一样,wr840nv1据说是少了个wps按键。
mr3420v1则是加了个USB。所以甚至有折腾的玩家把mw300rv2/fw300rv2/wr840nv1/wr841nv7等改出了USB,也可以刷mr3420v1的固件。

十年老路由器了,2020年的市场持有率太低,原厂固件刷OpenWrt,DD-Wrt的方法就不详聊了,详情可以自行挖坟恩山老帖:

我这台路由器本来运行的是OpenWrt基于Attitude Adjustment 12.09 branch的版本,硬件显示为tp-link tl-wr841n v7。作为不更新会死星人,首先去OpenWrt官网查询了一下wr841nv7的更新,惊喜地发现居然支持18.06.5版的OpenWrt哦。

下载了基于18.06.5的官方编译-sysupgrade.bin文件,web界面刷新(未保留配置)果断变砖。现象为上电后不断重启。。。

本来这种老古董砖了就不打算要了,但是翻箱倒柜捣鼓了一番发现我还真是只有这么一个宝贝路由器了,疫情当前,收个别的路由器都不容易发货,所以最后还是打算通过TTL刷机来恢复。

水星/Mecure MW300R v2 电路板全貌

找到下图中这个串口通信区域:

MW300Rv2串口通信引脚,C496需要被短接

预留的接口焊上去四根排针即可方便的使用杜邦线连接USB转TTL适配器。但我找不到电烙铁和排针,也就没有焊排针,因此直接用杜邦线内插了测试线,让老妈帮忙按在触点上完成了刷机。

使用3.3V的TTL电平,将串口Rx连接路由器Tx,串口Tx连接路由器Rx,GND连GND,VCC悬空,电容C496需要短接否则通信有乱码,我是用镊子夹住两端进行短接的,愿意一劳永逸的可以拆掉该电容后焊通两个触点。

TTL刷机软件方面需要准备:

  • USB转串口TTL适配器的驱动(我的是基于CH340芯片的);
  • 串口通信软件:SecureCRT,Putty,串口通信助手等;
  • TFTP服务器:我用了Windows下的TFTPD32;
  • 需要刷入的固件,本文中将其命名为abc.bin,这个固件可以是原厂固件,也可以是OpenWrt/DD-Wrt固件(应该是使用factory版本而非升级版)。

用TTL线连接电脑和路由器,并用一根网线连接电脑和路由器LAN口(串口只用于发送控制命令,固件下载是通过网络使用TFTP协议进行的)。

TP-Link路由器TTL刷机的方法基本都差不多,但是根据硬件不同,写入的地址是不一样的,因此刷机命令仅适用于文中所述的固件。

首先把电脑连接路由器的网卡IPv4地址改为192.168.1.10,这也就是TFTP服务器的地址了。

架设好TFTP服务器,将代刷入的固件abc.bin放入服务器当前目录中。可以自行用TFTP客户端测试一下服务器工作是否正常。在Windows下可以在“启用或关闭windows功能”中安装“TFTP客户端”,然后在Command命令提示符/Powershell窗口中键入下列命令看看是否能够下载abc.bin文件:

tftp -i 192.168.1.10 get abc.bin

打开串口通信,波特率设置为115200,给机器上电,监测串口输出,显示“Autobooting in 1 seconds”时,在1秒内输入tpl(回车)中断执行。总是错过的话,可以提前准备好要发送的数据,例如在串口调试助手中输入好tpl(回车)适时点击“发送”,或者在SecureCRT中使用右键快速发送剪贴板中的数据等。

成功终止路由器启动过程后,串口输出“ar7240>”提示符等待输入。首先设置tftp服务器IP地址<serverip>和路由器地址<ipaddr>,可以使用printenv命令检查环境变量。

ar7240> setenv serverip 192.168.1.10
ar7240> setenv ipaddr 192.168.1.169
ar7240> printenv

然后下载固件:

ar7240> tftpboot 0x80000000 abc.bin

下载成功的输出最后两行是:

done
Bytes transferred = 3932160 (3c0000 hex)

然后擦除部分地址:

ar7240> erase 0x9f020000 +0x3c0000

擦除成功后的输出最后一行是:

Erased 60 sectors

然后执行一个复制命令:

ar7240> cp.b 0x80000000 0x9f020000 0x3c0000

复制成功的输出最后两行是:

Copy to Flash… write addr: 9f020000
done

最后执行bootm命令:

ar7240> bootm 0x9f020000

执行成功的输出是:

## Booting image at 9f020000 …
(省略一万行……)
write successfully

此时路由器已经以新刷入的固件启动了,完成了一块砖的自我觉醒!

P.S. 实测该路由器水星MW300R v2可以使用DD-WRT官网针对TP-Link WR841N(D) v7 编译的基于 v3.0 (Beta) Build 40559(官网发布日期为:2019-08-06)。

参考资料:

[1] 王乐平|水星MW300R v2 路由器刷DD-Wrt 小记

本文固定链接: https://blog.xieyc.com/mw300rv2-ttl-flashing/ | 小谢的小站

该日志由 xieyc 于2020年02月20日发表在 折腾 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 十年老路由的觉醒——TTL刷机水星MW300Rv2小记 | 小谢的小站
关键字:

十年老路由的觉醒——TTL刷机水星MW300Rv2小记:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter
//added by myself XIEYC