Jarvis's Blog

白帽子、全栈、IoT安全专家、嵌入式系统专家

J1900软路由加装无线网卡做AP折腾记

家里无线设备多,唯一的一台出口路由器是小米路由器3 Pro负载逐渐上升,这玩意刚到手用着一直没啥问题,很久不重启都没事,但是随着设备多了,就开始时不时卡死,连管理界面都打不开,只能重启。硬路由一般用的都是MIPS之类的架构,带机能力有限,网上看到真正的带机神器其实是软路由,就是用一台x86的机器装上路由相关的软件虚拟成路由器用。一直心心念念了很久想搞一台,但一直没入坑,终于前段时间终于忍不住入了台J1900的四口软路由:

话说回来其实这种机器本来叫做工控主机,主要用在工业控制现场完成一些任务处理的,装上路由系统用在家里,就变成软路由了,我选的这款用的是Intel J1900四核处理器,性能相当可以的,有4个Intel I211千兆网口,加上2个USB,1个HDMI,1个VGA,看上去可玩性相当高,而且预留了天线接口,不过买之前卖家就提醒了,这货由于四个千兆网卡占用了cpu所有的pci-e通道,所以如果要装无线网卡虚拟AP的话,只能用USB定义的无线,一开始这番话我并没有太放在心上,然而路由到手之后,没想到这就成了折腾的开始。

好了,到手第一件事——拆开看一眼,这里顺便补充一下我买的配置:2G内存+32G SSD,其实到这里根据我的经验来说,如果不打算装windows或者想跑虚拟化系统的话,系统盘不用太大,像我只用openwrt系统的,一般会选择squashfs文件系统,因为可以恢复出厂设置,然而squashfs是不可写入的,所以系统盘那么大没必要,而且也没法用来存我们自己数据,主机里还留了一个SATA借口,更倾向于选择再挂一个更大的2.5寸硬盘来做NAS共享用,机器拆开如图:

可以看到红圈的地方是除了msata接口之外多出来mini pcie接口,于是我就想着加一个mini pcie无线网卡然后把天线连出来发射AP。然而我想当然的就认为只要找一个openwrt下有驱动的mini pcie无线网卡插上去就能在luci界面里用了,另外由于机箱外壳上只留了2个天线柱的接口,所以找个双天线的网卡最合适,最后挑了一下,选择了QCA9882,5G单频nac,2x2MIMO,最高速率867M的无线网卡,选定之后很快下单了:

不过,这并没有什么卵用,等无线网卡到了以后,风风火火的马上装上,开机,然而,不识别。。lspci命令里根本没有无线网卡设备。。一开始我一度以为是无线网卡坏了,问了卖软路由的老板才知道,之前说的pci-e通道被都被千兆网卡占用了不是随便说说的,指的就是,这个剩下的mini-pcie接口上面,就没有pcie的信号线了,是个usb only的接口,可以转换出usb接口用,但是pcie无线网卡不识别的。也就是说可以支持RT3070这种虽然是mini pcie接口但是走的是mini pcie座子上的usb总线的网卡才能用:

再或者,用华为的3G/4G无线模块也是可以的,走的也是USB总线,并且主板上接口旁边也预留好SIM卡座了,猜测这个mini pcie在原设计中就是留给3G/4G模块用的,天线也是给3G/4G天线留的。

否则的话,要么用转接板把usb接口转出来用,想要接pcie总线的无线网卡是不可能的。

难道只能用USB无线网卡了?但是RT3070这货只支持2.4G啊,而且速度只有150M,对于追求完美的我来说,我想要个5G ac的卡啊。并且,我真的不想在机箱上USB接口上再接东西,只想用内置的网卡。然而,我找遍了走USB总线的mini pcie无线网卡,只发现一款符合要求,那就是RT5572:

这货只有LiteON WN6500RH这款网卡是pci-e接口的,如上图,然而。。找遍了TB,没货。。。没货。。。这不还是坑爹嘛。。

无奈之下,后来我又找到了一款RTL8812BU的无线模块,双天线,USB接口,1200M双频支持ac,但是是模块,需要自己焊接4根USB线,不过也没别的办法了,只能把mini pcie转出usb接口来,然后直接焊线接上无线模块来用,话不多说,果断下单。

到手之后,果断焊上,焊上的效果如图:

完成,开机。。然而,不识别。。。我以为又是usb不支持,然而我把转换出来的usb接口直接接U盘,又是没问题的,这是为什么呢?后来折腾了半天,原来是因为pci-e接口的3.3V供电电压太低了,只有3.1V,由于我买的模块是3.3V供电的,我不敢直接接5V,于是直接焊在pci-e的3.3V电源处,然而没想到这货这么辣鸡,3.1V就不工作了,于是果断直接接USB的5V,正常识别,而且模块好像也没事啊。。这不还是坑爹么。。早说啊。。

然后下一步,驱动。。由于8812BU并不是openwrt原生就带驱动的,只能找第三方驱动。接着就开始了艰难的编译驱动之路,找了n版驱动,有的直接编译不过,有的编译完了直接kernel panic,大部分驱动,都只支持4.4以前的内核版本。一开始我用的是RTL8812AU的驱动,然而完全不工作,8812BU的USB id是0bda:b812,网上查了一下,这个desc应该用RTL8822BU的驱动,晕,还是坑爹。

最终,找到了这个驱动,可以在高版本4.14以后的内核里工作https://github.com/y0urself/rtl8822bu,不负所望,这次编译通过。。然后加载,很不幸。。kernel panic….

也就是说驱动还有点问题,根据提示,找到出错的函数,然后分析panic原因,一通瞎patch,最终,终于可以成功加载8822bu的驱动了。可是,这驱动并不能在luci界面里控制,只能用iw程序来控制,或者自己写控制脚本。这也太不方便了,还是坑爹了。

也许到这里,大家认为我最后还是打算放弃了,然而并不是的,还是打算再挣扎下。

还有一个终极方案没尝试过,那就是,不是说Intel I211网卡把pci-e通道都占满了吗,多出来的mini-pcie座子上没有pcie的信号线,那如果我拆掉一个Intel I211芯片,然后把原本接在Intel I211芯片上的pci-e线直接飞线到mini pcie座子上呢?

不多说了,试试吧,首先,我们找一下Intel I211芯片的datasheet,看一下引脚图:

首先两个红圈里的就是和PCIe信号有关的引脚了,其中PE_Rp,PE_Rn和PE_Tp,PE_Tn是两对pcie的差分信号,PECLKp和PECLKn是pcie的时钟,理论上来讲,只需要把这6根线飞线到mini pci-e的座子上对应地方就可以。接下来我们看一下Mini pcie插座的定义:

Top side Bottom side
1 2 3.3V
3 Reserved**** 4 GND
5 Reserved**** 6 1.5V
7 CLKREQ# 8 VCC**
9 GND 10 I/O**
11 REFCLK- 12 CLK**
13 REFCLK+ 14 RST**
15 N/C or GND 16 VPP**
Mechanical key
17 Reserved 18 GND
19 Reserved 20 Reserved***
21 GND 22 PERST#
23 PERn0 24 +3.3Vaux
25 PERp0 26 GND
27 GND 28 +1.5V
29 GND 30 SMB_CLK
31 PETn0 32 SMB_DATA
33 PETp0 34 GND
35 GND 36 USB_D-
37 Reserved* 38 USB_D+
39 Reserved* 40 GND
41 Reserved* 42 LED_WWAN#
43 Reserved* 44 LED_WLAN#
45 Reserved* 46 LED_WPAN#
47 Reserved* 48 +1.5V
49 Reserved* 50 GND
51 Reserved* 52 +3.3V

*Reserved for future second PCI Express Lane (if needed). Pin 51 has changed to be W_DISABLE2#
**Reserved for future Subscriber Identity Module (SIM) interface (if needed)
***Reserved for future wireless disable signal (if needed)
****Reserved for future wireless coexistence control interface (if needed)

可以看到上面标红的位置就是我们需要飞线焊接的位置了,话不多说,直接开干吧:

如上图,看不清楚的话可以直接下载原图,其中PERp PERn PETp PETn这4根线在可以焊在I211芯片边上的4个电容左侧,但是PECLKp和PECLKn这两根线没办法只能焊在芯片的焊盘上了,比较考验技术。另外注意一点,我右侧座子上标记的信号名和实际座子的定义是反过来的,因为PCIe的接法里面,发送端的PETp要接接收端的PERp,PETn接PERn,接收端的PETp要接发送端的PERp,接收端的PETn接发送端的PERn,也就是说发送和接收的信号要反接。CLK不需要,直接对应信号接上即可。完成之后,用点热熔胶固定,防止脱落:

然后,开机,见证奇迹的时刻到了:

竟然正常识别了!!!

接下来,重新编译openwrt固件,把firmware-qca988x的固件选上,kernel modules里选上ath10k刷进去,奇迹出现了,接口里面终于出现了无线:

好了,最后把外壳装好,按上天线,完美~~

总结:这次折腾总算是完美了,但是代价是LAN1这个网口就不能用了,不过对我来说这倒不是太大问题,牺牲一个有线网口换来一个内置的无线网卡对我来说还算值得,不过这次折腾也说明了一个问题,那就是确实软路由确实不适合用来直接发射AP,如果想要无线的话,最方便的方法还是去搞个硬路由接在LAN口上使用吧。本文纯属个人兴趣探索,供各位朋友参考!

OpenWRT 18.06配置ipv6内网机器无法正常获取地址的一个坑

上一篇

Openwrt ipv6 继续踩坑

下一篇
评论
发表评论 说点什么
  • 老哥 j1900 装 ubuntu reboot 或者 其他重启命令 卡死 有没有遇到过....... 我谷歌搜了 下 遇到这个问题的还挺多

  • 刚开始就应该就考虑加一个ap而不是上无线网卡…比如k2p,DW33D这样的便宜货,无线性能也很好 话说我是搜索j1900软NAT性能才找到这里的…

    • 只是尝试一下这种可能性,无线网卡买都买了,不折腾一下感觉就亏了~~

  • 楼主流啤啊 我想问一下 如果这个机器我用MINIPCIE转接板接一个RT5572的模块可以直接识别吗

    • RT5572需要自己把驱动选上重新编译Openwrt内核,可以识别出无线网卡,但不能在LuCi界面里控制,只能用iw命令控制。

  • 我的腿毛生生不息

    大佬牛B,我买了同款正打算加无线模块.看你这么一折腾打消了我的想法

  • 大佬你这用着咋样,速度稳定性啥的,可以的话我也开搞,求私信WX:jiakai1000

    • 还行啊,已经稳定使用快半年了~~只不过速度最高只能到867M,只支持5G。

  • 一看飞线我就懵逼了。 哈哈哈跟你同款的J1900 工控软路由。也送了两根天线,折腾半天后面拆开才发现尼玛没有无线网卡。。。

  • 你好,请问你买的 9880的网卡有链接吗?我买的卡lspci 可以查看到,但是无法驱动。

  • 图吧垃圾佬

    怎么买这么贵啊 其实没必要这么贵的 一个小机箱 89块钱 装弄个二代i3 i5或者赛扬cpu 10-200之间(没看错g530 10块钱包邮) 插个ddr3内存条 1-4g 30-100元 再买个乐扩四口千兆 150元 1-4g的ddr3内存, 主板h61足以100-150元 30块钱包邮电源 功耗大概30-50w,我家里现在用的

  • 大佬啊,有什么外接ap设备推荐一下吗?就不用像路由那样外接电源的设备

  • 网上搜蜗牛国际,一种矿机,才300块左右,也是j1900,用这个应该更经济。

  • refclk应该是可选信号。不需要连接。 一般都是板卡自带晶振提供

  • 测没测能同时带多少 STA?我用 intel 7260 网卡在 Ubuntu (4 核 x64,4GB 内存)下设置 SoftAP,反复测试最多只能同时带 12 个左右 STA,哭死。。。。

    • 我没那么多的端设备,没测过。。P.S.我现在自己也搞了个AC86U在用,无线网卡性能毕竟不如专门的AP。

  • 特地留言膜拜一下,本来只是Google一下同款路由器是不是有两个msata的,没想到看到了一篇折腾牛文,佩服佩服,想问博主是学什么专业的。

  • 硬核硬核,就要折腾到底的这股劲点个赞! 有时候经常搞到一半火了,不(gù)小(yì)心就把某个地方搞坏,然后就好吧,就这样了,天意........

  • 原本也打算整的,看完都奔溃了,楼主有这技术,继续折腾。后续靠这个直接定制DiY卖,肯定生意不错

    • 不能,因为QCA988x是单phy,单phy只能同时1个,如果要分开至少需要2个无线网卡。

  • 居然还有比我更能折腾的+1 实在是佩服,不过这还不如重买了,况且这种没有独立功放的网卡效果不会好吧 但是折腾精神还是不错滴

  • 小奶牛牛不牛

    有个疑问,前面淘宝买的是RTL8812BU,后面Openwrt识别出来的是QCA9880。 还有,RTL8812BU是USB信号,后来飞线接入的是PCIe信号,能识别吗?是不是后来换无线网卡了?

    • RTL8812BU接上去,有问题不好用,就换网卡了。我总共买了2个网卡。这个机器的mini-pcie座子上面没有连pcie通道,只有usb,所以如果要用pci-e网卡得像我一样飞线才行。

  • 大佬神人啊,原本我也想搞一下,看完你在介绍没有这个念头了。

  • 请教一下大佬,usb网卡驱动成功编译进openwrt,iw list有有输出,然而luci 显示无线未关联,我想把这个网卡设置成ap模式,那么应该通过什么具体命令设置呢?

  • 大神,可否请教你添加无线网卡的问题?我的是Ralink corp. RT3090 Wireless 802.11n 1T/1R PCIe | Network 编译后没有无线显示。。。。郁闷 !!!搞了很久了!谢谢你

  • 你好楼主,我目前有一款占美工控小主机j1900,只有一个lan口和一个mini pcie 无线网卡,我想搞软路由,不知道楼主能提供可行性的改造方案吗

    • 你这个配置似乎只能LAN口当WAN用,剩下的客户端都无线接入了。

  • 感谢如此详细的文章,按文章的指引,购买了RT5572装在了软路由上。

  • 我和你一样的主板,一直在网上找mini pcie的无线网卡,我是用在RouterOS上的,楼主有什么好的建议,直接买过来就能用的有没有

50149
16

    浙公网安备 33011002014706号