修改WR941N的硬件和固件

从入手 wr941n 到现在,已经一月有余,修改硬件和固件的进展还算不错。

第一台 wr941n 焊上了 JTAG/Serial/USB 接口。其中,JTAG 到目前为止还没用上,USB接口的 5v 供电电路被阉割,所以无法正常使用。由于我的疏忽,导致 Serial (TTL)部分的 RX 被烧,无法向路由器输入字符,但可以获得路由器的输出。路由器的 bootloader 是 u-boot,波特率设置是 9600,linux kernel 波特率是 115200,busybox 设置是 115200。

买了第二台继续改,这次只焊了 JTAG 和 Serial。从官方固件中提取出 rootfs,用 john 计算出 root 帐号的密码,成功登录到路由器里面。翻了个遍以后,着手替换 rootfs 中的 busybox。u-boot 的 tftp 和 cp 命令都能正常工作,这一步比较顺利。能够通过 telnet 登录到路由器上进行各种操作了。

wr941n 所使用的 linux kernel 能下载到源代码;其使用的 wifi stack 是 madwifi。从厂商提供的源代码能编译出可用的 scsi module 和 usb module。

然后是找到如何从网页更新固件的办法。wr941n 用了和一般的厂商不太相同的固件校验方法,所以我开始寻求从 TP-Link 直接获取相关信息。和 TP-Link 的技术支持进行联系后,最终和他们负责 11N 产品系列的产品经理进行了邮件往来。他暂时拒绝了我的要求。我反汇编了原厂固件中的 httpd (总控程序),找到验证方法,编写了固件校验程序。到此能成功从网页升级到我修改的固件了。

wr941n 使用了一个修改过的 u-boot (其源代码还未公开),对启动的 kernel 也进行检验检查,目前检验和计算方法还没有找到,所以还不能更换 kernel。因为能通过 kernel module 来扩展内核功能,更换 kernel 的意义并不大,暂时我不准备花时间破解它的 u-boot 校验了。

这中间的进展我都记录在DD-WRT论坛上。

下一步就是把 DD-WRT 的 router 程序 port 到这个路由器上。主要的工作是写一个 nvram 库来使用 wr941n 的 mtd 分区保存配置;DD-WRT 支持 madwifi,所以其它部分有工作量,但难度不大。另外很重要的一件事是,如果配置分区不正确,原厂固件能否重置配置分区,这个关系到从第三方固件刷回到原厂固件如何实现。

标签: , , ,

20 条评论 发表在“修改WR941N的硬件和固件”上

  1. 菜鸟 说到:

    强烈关注中,希望写得更仔细些,比如用什么线连接来焊接,让我们也能试试玩玩

  2. sam 说到:

    太好了强人。我已经用实际行动支持你了今天败了一台回来。等待你的DD大作与我们一起分享。谢谢。

  3. xtactv 说到:

    我也是这个设备的用户,等站长放出最新的修改软固件,支持者,希望站长做出功能强大,性能超好的固件给我们。

  4. kunc 说到:

    说句实话,如其费劲的更改其原厂固件,还不如直接编译个redboot,烧写到8M或16M的SPI Flash中,直接更换其阉割容量的闪存,这样再来玩DD WRT更方便!USB接口硬件阉割部分我到可以反推的把零件都装上,现在就差固件!

    • lark 说到:

      修改固件不是为了自己爽爽,而是用户都能受益。如果真要自己爽,没必要拿 WR941N 来做,我可以自己画板子,在朋友的厂里面生产更牛的系统。
      USB 供电电路我已经画了一部分,拿其他参考设计看看就差不多了。只是现在没时间弄这个了。

  5. Kesun 说到:

    USB供电电路应该可以利用版上留下的位置,如果Lark已经知道那个负责DC-DC的U18是什么型号,就很容易了,只要软件能搞定,硬件这点问题不算困难了。
    http://picasaweb.google.com/kuncpic/WR941N?feat=directlink#5279491484433402082

  6. 菜鸟一个 说到:

    强人,太专业了。我决定选wr941n了哈哈

  7. 急,网友 说到:

    您好啊,我也是wr941n,最近我刷那个openwrt 刷成功了,可以我不会设,设坏了,现在不能进,不能PING,不能TELNET,不能取IP。

    网上找了找,找到你了,想问下TTL线,JTAG线,怎样接?谢谢你了!

    给我发个e-mail:tausha@163.com 非常感谢你!

  8. Litte.张 说到:

    LARK真好人。好了,我知道怎样接了,我马上taobao买个线,

    我的路由不是刷坏的。是刷成功后,在里面乱设,设坏了。

    不能PING通,不能TELNET,不能取IP,

    网上找了很多资料,说用TTL可以刷好。好吧,我说重点。

    就是,我新手,用TTL刷,要准备什么软件?什么命令?我想刷回原版。能写个简明教程日志吗?

    谢谢你了!

    • lark 说到:

      要使用 TTL 线,需要把主板上的两个器件的位置短路,请参考 dd-wrt 上我写的方法;还需要一个终端模拟软件,例如 SecureCRT 或者 Windows 自带的 Hyperterm,波特率设置 9600 8N1;你还需要建一个 tftp 服务器,把官方固件(展开后的 .bin)放在 tftp 服务器上。
      重启路由器后,进入 uboot 的方法是在提示 press “tp” to stop 时输入 “tp”,只有 1 秒钟的时间窗口。刷写的一般方法见 https://forum.openwrt.org/viewtopic.php?id=18354&p=3 juhosg 写的方法(setenv, tftp, erase, cp.b, reset)。
      我之所以都指向英文论坛上的链接,是因为如果英文不算糟糕的话,从论坛的帖子能了解更多的东西。

  9. 急 TP WR941N 刷OP 说到:

    急 TP WR941N 刷OPenwrt 成功了 但是好像设置坏了 现在不能进,不能PING,不能TELNET,不能取IP。 不过我的TTL已经焊上了 但是装好驱动 超级终端连接没反应!!~请问能否给分详细资料能否自己修复?

    • lark 说到:

      确认一下 TTL 接法是否正确:主板的 TX 要接 TTL 转接的 RX,主板的 RX 要接 TTL 转接器的 TX。还有波特率要设置正确。

      • TR 说到:

        老大我照着你说的方法试了一下 现在可以连接上TTL了 可以现实的都是乱码 还有中文 请问这个情况怎么处理?

        • lark 说到:

          乱码是波特率不对。它的 u-boot 是 9600-8N1,OS 是 115200-8N1。进 u-boot 命令行的话,要设为 9600,及时按 tp;如果是想进系统,则设为 115200,等乱码跑完以后回车就有提示符了,用户名是 root 或 admin (自己试试),密码是 5up 。

留下回复