本帖最后由 hackpascal 于 2016-4-11 08:41 编辑
楼主最近入手一台二手 WDR3320,发现刷 OpenWrt 固件在启动时会出错。
分析发现是由 BUG(); 函数调用而产生的的,此调用发生在 PCI 的初始化过程中。位于文件 pci-ath9k-fixup.c 中。
原因是 pci-ath9k-fixup.c 只针对 AR71XX/AR7240/AR7241/AR7242 进行了初始化,其它的平台一律 BUG(),因此导致无法启动。
而为什么会有这个问题呢,这是因为 AR9344 的 PCI 初始化数据一般位于其内置的 OTP 中,不需要 pci-ath9k-fixup.c 里的操作,因此其不识别 AR9344;
而 WDR3320 v2 使用了 AR9287 作为 PCI 设备,而 AR9287 的 PCI 初始化数据位于 ART 中,需要 pci-ath9k-fixup.c 进行初始化,而 pci-ath9k-fixup.c 不认 AR9344,因此才导致了此错误。
解决方法就是对 pci-ath9k-fixup.c 进行一点小修改。
OpenWrt trunk (Designated Driver) 已经支持
就不要再找楼主要固件和代码了
https://dev.openwrt.org/changeset/46934
USB 可用,但前提是使用 3R33 之类的模块进行供电。通过补全 PCB 供电电路来供电的方法未测试。
特别注意:不能在原厂Web里刷,因为固件头变了。只能用编程器来刷。
此固件所有 LED 均正常,2.4G/5G 无线正常,LAN/WAN 端口顺序正常。
固件下载地址:
http://pan.baidu.com/s/1i3j3yRj#dir/path=%2F%E8%B7%AF%E7%94%B1%E6%94%B9%E6%9C%BA%E7%9B%B8%E5%85%B3%2FOpenWrt%2FTL-WDR3320