找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 6715|回复: 11

为什么QCA9558类的路由(TL-WR941Nv7/2041Nv2/880Nv1/881Nv2)不能进入Openwrt官方固件?

[复制链接]
发表于 2018-11-18 11:38 | 显示全部楼层 |阅读模式
本帖最后由 yumeimm 于 2019-4-11 20:38 编辑

1. 前言
OpenWrt以开源,支持设备多,第三方package多而闻名。想要什么功能,找个*.ipk,  然后 opkg install *.ipk就好。
国内的很多做路由的公司,都是基于openwrt修改而来(按道理,这些公司的系统应该也开源,然而没有)。

QCA9558之类的路由,例如:MW450R V1 =FW450R V1 = 880N V1= 881N V1 = 941N V7 = 2041N V2 等等,很早就有Gabor Juhos / hackpascal (感谢hackpascal )等写的驱动程序,以及后续lean等修改。
使用lean的代码(感谢lean),或者集成进OpenWrt官方的代码,然后编译出相应的固件,都不是很困难。
具体可看看我写的这两贴:
lean的源代码编译的2041N v2固件: https://www.right.com.cn/forum/f ... 51934&highlight=941
OpenWrt官方master分支编译固件: https://www.right.com.cn/forum/f ... 54267&highlight=941

但是OpenWrt官方的代码为什么没有集成进去呢? 我在网上搜了一下,找到了一些内容,特写出来供网友看看~~

2. 向OpenWrt的官方提交
其实向官方提交支持的pull request已经有了两次,一次是#1444, 一次是#1481。
第一次提交:#1444:  https://github.com/openwrt/openwrt/pull/1444
第二次提交   #1481:  https://github.com/openwrt/openwrt/pull/1481

提交者都是 imbrolla (感谢辛苦付出), 没有通过的原因,可以由上述链接看到原因。这里简单说一下:
第一次提交未通过,是因为需要按照Openwrt提交的格式进行提交,具体可看这里Submitting Patches。简单说,就是把所有的多次commit合并为一次commit, 然后commit 需要signoff。另外需要详细的描述提交的内容,包括适应的体系结构,等等。
第二次提交,这些问题应该都没有了。但是有两个主要问题:
1) 对源代码(mach-tl-wr941n-v7.c)的操作有疑义,英文如下:
The factory U-boot of this device (In fact, on all QCA device with an FE switch) will set MDIO_MASTER_EN bit to 1, which enabled the on-switch mdio master but also disallow the direct access to switch PHYs, resulting in the inability to read PHY ID from GMAC MDIO on SoC.
ar8216 on OpenWrt is introduced long time ago when there is no mdio device framework in kernel. It's probed using the PHY framework and current probing method requires an available PHY ID, which in this case isn't possible before setting MDIO_MASTER_EN to 0.
A proper way of solving this problem is writing a new probing procedure using the mdio-device framework currently available in kernel, which registers a device directly without needing the access to an PHY ID and we can do a switch reset after that in the switch driver.
As for the dirty way here, the machine initialization code alter a switch soft reset by directly accessing mdio registers of GMAC0 and send mdio instructions before the probing of mdio driver, doing what shouldn't be done by machine initialization code and introducing a piece of messy and duplicated code into the target.

它的意思大概是说:
a) 提交的代码中,重启/启动ar8236交换机的方法,采用直接访问mdio寄存器的方式
涉及到的主要是这两个函数:
static unsigned int __init athrs27_reg_read(unsigned int s27_addr)
{...}


static void __init ar8236_reset(void)
{...}


b) 这种方式,在新的内核模式下,不应该出现了。现在内核已经有了mdio框架支持
c) 使用内核提供的mdio框架,写一个探测模块然后再初始化ar8236就可以。

2) ar71xx/ath79架构,太久了,估计很难再接受新设备加入。(可能而已)

如果上述源代码问题解决,应该还是有可能合并入官方代码。



3. 总结

官方已经加入941n-v7:https://github.com/openwrt/openwrt/pull/1755/files


经过上述分析,可以看到,要加入官方代码,估计有点困难了。综合起来有很多原因:
首先   架构太老,旧路由性能不行,而且flash存储太小,基本是2M/4M居多, 合并入现在的官方代码,编译出的固件往往超过4M。导致需要硬改flash才能刷入。
其次,驱动尽管hackpascal 已经写了,但是openwrt已经往前发展,旧有的代码不太适合,而且没有大神继续维护。(当然对我们普通人,能用就行,代码规不规范不是关注点)。
最后,要这些旧路由发挥余热,那就用别人编译的吧,或者lean维护的代码,或者维护一个和openwrt同步的官方代码,但是加入这些老路由的支持也可以。










我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-18 22:10 | 显示全部楼层
支持大佬!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-18 23:34 来自手机 | 显示全部楼层
我也奇怪9558和9343这么好的芯片居然支持度那么小

点评

同意,在用9343,性能其实真不差的。  详情 回复 发表于 2018-11-18 23:49
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-18 23:49 | 显示全部楼层
woxinsilin 发表于 2018-11-18 23:34
我也奇怪9558和9343这么好的芯片居然支持度那么小

同意,在用9343,性能其实真不差的。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-7 14:07 | 显示全部楼层
本帖最后由 safehorse 于 2019-1-7 14:09 编辑



请教楼主 还有 @lean @lean ,
@LGA1150,  coolsnowwolf 对这类机器在11月份的时候有一个 commit 是ar71xx: add mdio hack patch

想请教下这个add mdio hack patch 是必要的吗? 因为我之前一直, 也就是这个commit之前. 虽然用的还行, 但是总感觉有点不正常. 因为只要下载点东西文件有几百MB的话, 网页就打不开了. 但是其它上级路由的无线不存在这样的问题.

这个 mdio hack patch 到底是什么作用? 你siwind那个有merge过这个commit吗?

点评

这个commit是lean大神的吧,具体不清楚。 但是这个QCA9558方案,无线是CPU来处理的,不知道会不会有影响~~ 另外,你用的是openwrt是什么版本呢? 我修改的代码合并了官方最新Openwrt在这里: https://github.co  详情 回复 发表于 2019-1-7 15:37
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-7 15:37 | 显示全部楼层
safehorse 发表于 2019-1-7 14:07
请教楼主 还有 @lean @lean ,
@LGA1150,  coolsnowwolf 对这类机器在11月份的时候有一个 commit 是ar ...

这个commit是lean大神的吧,具体不清楚。
但是这个QCA9558方案,无线是CPU来处理的,不知道会不会有影响~~

另外,你用的是openwrt是什么版本呢?
我修改的代码合并了官方最新Openwrt在这里: https://github.com/siwind/openwrt

点评

是的, 这个commit是lean那边的, 是11月份的一个. 但是你另外一个贴子里也说的很清楚了, 就是981213和hackpascal两个人都说需要一个dirty hack patch处理一下. 这个QCA9558方案的机器都是 CPU及无线都由QCA9558处  详情 回复 发表于 2019-1-7 16:09
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-7 16:09 | 显示全部楼层
QCA9558目前看性能还是落伍了,当然支持瘦AP还是没问题的。

从官方论坛有关讨论的内容看,隐约感觉ar71xx的target会在不久被关闭。官方在促进ar71xx设备向ath79(DTS)迁移,毕竟linus对mach文件嗤之以鼻,说过粗话。

目前官方代码库ath79(DTS)下已经有不少QCA9558设备了,不过ar934x-nfc还没有为设备树完成适配,NAND没法用。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-7 16:09 | 显示全部楼层
yumeimm 发表于 2019-1-7 15:37
这个commit是lean大神的吧,具体不清楚。
但是这个QCA9558方案,无线是CPU来处理的,不知道会不会有影响 ...

是的, 这个commit是lean那边的, 是11月份的一个. 但是你另外一个贴子里也说的很清楚了, 就是981213和hackpascal两个人都说需要一个dirty hack patch处理一下.

这个QCA9558方案的机器都是 CPU及无线都由QCA9558处理, 交换机是另外的.

我此前一直在用的都是 LEDE 17.01.6稳定版. 刚才倒是用你最新的代码里AR71XX那部分与OPENWRT MASTER 最新的合并后尝试编译了下,能通过. 因为你的码与OP MASTER 的都只有4.14没有4.9了, 用LEAN的虽然最近也没了4.9但是编译通不过
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-7 16:17 | 显示全部楼层
你能否看看合并一个LEDE-17.01.6的稳定版, 4.4内核的?  你的代码目前我看下来是最完整的了. LEAN的那个估计不是它自己搞的别人pull了下就合并了然后里面好几处都还没修改完整.boardname 还都是941n v7的
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-7 16:21 | 显示全部楼层
我玩的路线是ar9341>MT7620A>MT7621>x86_x64
现在主路由是MT7621,拿来NAT够用,拿来出国还是性能受限
所以开始接触hyper-v跑x86_x64,这样是既不担心内存又不担心性能,在家里最常开的那台电脑hyer-v分个两核512M来跑服务,做代理每台设备访问速度基本在50M以上,看4K毫无问题
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-11-16 15:35 | 显示全部楼层
大哥,若是我学习一下,如何编译这个固件呢,在官方19.07.8里面不支持这个设备,如替换或修改那些文件呢?希望你能教教我,谢谢。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-3-8 07:24 来自手机 | 显示全部楼层
型号:        TP-Link TL-WDR941N v6 CPU:    Atheros AR9344 rev  FLASH:16MB 内存:64MB                       如果楼主有空,可以帮忙弄一下这个,好吗?当然,在不影响你正常工作的情况下有空就弄,真的麻烦你了。如果没空间安装软件,就保留ZeroTier、阿里云盘、天翼云盘、网络唤醒、上网时间控制、定时重启、 TTYD终端、ipv6支持组件、广告屏蔽、访问限制、网址过滤、打印机共享、Turbo ACC网络加速、文件传输。希望楼主有空时帮忙编译一个固件,感谢了。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-18 13:30

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表