2013年2月2日星期六

TP-Link WR841N进行CustomFirmware成功的经验



首先感谢owner,利用自己宝贵的时间,给大家带来如此方便的路由方案,而且Wiki写得也相当详细。通过wiki的指导以及不断的摸索,我终于在WR841N上成功实现了CustomFirmware模式的autoddvpn。下面分享一下我的经验和制作出的固件,希望大家在自己的路由器上实现的同时,也能上传各自修改的固件以飨后人吧。

DD-Wrt系统根据路由器能利用的空间大小不同,分为多个不同版本,如Micro、Standard、Mega等等,功能越多的版本自然也需要更大的存储空间。TP-LINK WR841N只有4M的Flash,这限制了其安装功能较全的版本。此外,WR841n采用的是Atheros的芯片,而对于这个品牌芯片的路由器,DD-Wrt官方都只有一种固件,例如我这款WR841N就只有Standard版,没得选。所以,支持这款路由器的DD-Wrt固件不可能支持OpenVPN以及jffs功能(能自己DIY硬件并且修改官方源代码再自己编译的大神除外)

这样一来,在使用autoddvpn的时候,只能选择PPTP的wget模式或是CustomFirmware模式了。在应用wget模式成功之后,我开始不知足地尝试后者(为此还装了个Ubuntu = =)。但是按照wiki中的指南http://code.google.com/p/autoddvpn/wiki/CustomFirmware ,在“解開ddwrt韌體”这一步中出现了问题,最后提示“Error: filesystem not extracted properly. firmware image format not compatible?”

于是我开始在Google上搜索,并翻找firmware-mod-kit项目的Issue,功夫不负有心人,终于被我找到了,原来是wiki中的extract_firmware.sh文件不能支持某些固件,于是作者最近写了一个新的extract-ng.sh,可以解开这些固件。于是我开始了尝试。前面的步骤都和wiki中一致。只是在解开固件一步,将命令改为:
$ ./extract-ng.sh firmware.bin working_directory/
接着在放入autoddvpn必要的3个文件之后,打包命令改为:
$ ./build-ng.sh working_directory/
得到的new-firmware.bin(和原固件大小相同,但通过十六进制编辑器对比发现其实是有区别的)即是我们所要的新固件。

附件中是我修改的WR841n的最新版固件(Build 17201)。目前使用感觉很好。相比于wget模式要先从网络上下载脚本相比,应该会更快一些吧。对于不支持jffs功能路由器来说,真是相当方便了。

PS. 项目拥有者请把CustomFirmware的wiki稍微更新一下吧:)如果使用原先的extract_firmware.sh解开固件时提示错误,就试试新的extract-ng.sh和build-ng.sh吧。
  new-firmware.bin
3.8 MB   Download

没有评论:

发表评论