wndr3700刷dd-wrt固件

家里的netgear wndr3700已经平稳工作大半年了,但是最近突然很想把它刷到dd-wrt。主要是stock firmware虽然稳定,但是功能还是弱不少,实在不符合它高端无线路由器的定位。最近很想路由器有这俩功能,还是GFW惹的祸……

  • 定时重启路由器,或者重新连接PPPoE,因为家里是使用ADSL,定时重启路由器可以重新获取新的IP。
  • 安装openvpn,由于dd-wrt就是一个嵌入式linux,很容易配置。

在网络上搜了一遍,发觉刷dd-wrt还是很简单的,直接按照wiki>来就可以了。不幸的是,虽然我明确按照步骤,但是第2步就出问题了。当页面的刷机进度到达100%之后,等待了2分钟——结果wireless灯没有闪烁,反而是power灯变黄了——继续过了10秒后,所有的LAN灯变黄闪烁,然后,WPS灯变绿闪烁,如此反复。

继续尝试了hard reset(就是持续按住RESET键,通电30秒,断电30秒,再通电30秒),依然没有什么反应。

设置电脑eth0为192.168.1.x,尝试ping路由器默认地址192.168.1.1,发觉会返回 ...ttl=64(truncated);但有时候会直接失败,此时发觉eth0地址又空了。所以,初步判断,路由器其实在不停的重启。

目前还不太清楚,为什么这么简单的刷机步骤会导致失败,猜测原因可能有两点:

  • 由于我的路由器设置了自动更新固件,可能最新的stock firmware更新后,已经不能从web页面刷dd-wrt固件了。
  • 在网上某处看到需要用IE浏览器刷固件,而我用的是linux系统和chrome浏览器,不过我觉得这不至于吧。

不过很凑巧,当天就有人给出了解答,才知道原来netgear路由器有个“Reset Flash”功能,可以让路由器进入recovery mode,此时就可以用tftp来刷机了(包括刷原厂固件)。

进入recovery mode的步骤是这样的:

  • 关闭路由器
  • 按住Reset键,打开路由器
  • 直到power灯开始闪绿色,松开reset键(大约45秒)

现在就能开始刷机了,把电脑连上某个LAN口,设置eth0地址到192.168.1.2~192.168.1.254,比如:

$ sudo ifconfig eth0 192.168.1.2

此时,发觉已经可以ping通 192.168.1.1 了,运行tftp导入你要刷的固件:

$ tftp 192.168.1.1
tftp> binary
tftp> rexmt 1
tftp> timeout 60
tftp> put wndr3700-factory.img
Sent 7229569 bytes in 5.0 seconds

看到发送成功的消息后,等待片刻后,路由器开始重启——成功!

没有再需要hard reset,已经可以成功访问192.168.1.1看到dd-wrt的管理页面。

延伸链接: