2019-06-29J1900软路由加装无线网卡做AP折腾记

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第1张图片

话说回来其实这种机器本来叫做工控主机,主要用在工业控制现场完成一些任务处理的,装上路由系统用在家里,就变成软路由了,我选的这款用的是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共享用,机器拆开如图:

2019-06-29J1900软路由加装无线网卡做AP折腾记_第2张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第3张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第4张图片

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

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第5张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第6张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第7张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第8张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第9张图片

2019-06-29J1900软路由加装无线网卡做AP折腾记_第10张图片

2019-06-29J1900软路由加装无线网卡做AP折腾记_第11张图片

2019-06-29J1900软路由加装无线网卡做AP折腾记_第12张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第13张图片

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

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第14张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第15张图片

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

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

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第16张图片

首先两个红圈里的就是和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)

2019-06-29J1900软路由加装无线网卡做AP折腾记_第17张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第18张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第19张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第20张图片

竟然正常识别了!!!

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第21张图片

2019-06-29J1900软路由加装无线网卡做AP折腾记_第22张图片

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

2019-06-29J1900软路由加装无线网卡做AP折腾记_第23张图片

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

你可能感兴趣的:(2019-06-29J1900软路由加装无线网卡做AP折腾记)