在我通过读带有符号的反汇编代码,写了TL-WR941N 固件 fixsum 工具后,通过TL-WR941N的管理页面上传修改后的固件或者第三方固件成为可能。我最初的目的是想让 dd-wrt 开发者给 dd-wrt 增加对 TL-WR941N 的支持,但是 dd-wrt 的开发者对 TL-WR941N 的兴趣并不大,在 dd-wrt 上迟迟没有动作。
2月19日,TP-Link 发布了新的 GPL 源代码,其中包括了 u-boot 源代码。OpenWrt 的开发者 jusohg 之后就利用 fixsum 和TP-Link 发布出来的源代码完成了对 WR941N 的支持。今天我测试了 dev snapshot build,局域网、无线都能正常工作了(我使用的是 WPA2 EAP-TLS)。相信不久以后,正式版本就能出来了。
TL-WR941N 使用了一个修改过的 u-boot,在最初发布的源代码中并不包括 u-boot 源代码。虽然我的 fixsum 能对头部做必要的处理,但使用其他的内核启动时,总是会跳出内核启动步骤,返回到 u-boot 提示符,没有任何有用的提示。我一直以为是 u-boot 对内核做了 checksum 检查(因为在头部还有另外一个没有用到的 checksum),但在 u-boot 的二进制映像中,并没有找到相关的痕迹。今天 jusohg 告诉我是因为 kernel entry point 需要修改,真是够简单的问题。头部中另外一个 checksum 是干什么用的,还是一个未解的谜。
OpenWrt 的 Web 界面 LuCI 没有中文翻译,我有空的话(做梦)会去翻译一下。
更新:目前的 ath9k 驱动有问题,我测试的时候,在没有 rx 的情况下,tx 丢包,所以还不能算正常工作。