Yocto i.MX6 (TQIMX6) (02) : USB Wifi (TP-Link WN82

2019-07-13 08:53发布

说明

固件的下载见博客末尾。

Wifi模块

有一个TP-Link的WN821N的USB无线网卡,查到UbuntuPC上面用lsusb看了看:

内核支持 在内核中搜索lsusb输出的设备VID与PID,可以看到是有支持的,直接在内核中配置即可:
这个是Linux社区对这个USB Wifi的支持,在这个Menuconfig选项的help中的网站里面很多东西都已经无法下载了。

支持的设备

使用AR9170的设备有如下这些(来源于这个网页): Vendor Product USB Vendor USB Product
MaxPower

3Com Dual Band 802.11n USB 0x0cf3 0x1010   Actiontec 802AIN Wireless N 0x1668 0x1200   Airlive X.USB 11a/b/g/n 0x1b75 0x9170   Arcadyan WN7512 0x083a 0xf522   Atheros 9170 0x0cf3 0x9170   Atheros TG121N 0x0cf3 0x1001   AVM FRITZ!WLAN USB Stick N 0x057c 0x8401   AVM FRITZ!WLAN USB Stick N 2.4 0x057c 0x8402   Cace Airpcap NX 0xcace 0x0300   D-Link DWA-130 D 0x07d1 0x3a0f   D-Link DWA-160 A1 0x07d1 0x3c10   D-Link DWA-160 A2 0x07d1 0x3a09   H3C Dual Band 802.11n USB 0x0cf3 0x1011   IO-Data WNGDNUS2 0x04bb 0x093f   NEC WL300NU-AG 0x0409 0x02b4   NEC WL300NU-G 0x0409 0x0249   Netgear WN111 v2 0x0846 0x9001   Netgear WNA1000 0x0846 0x9040   Netgear WNDA3100 (v1) 0x0846 0x9010 500mA Planex GWUS300 0x2019 0x5304   Proxim ORiNOCO 802.11n USB 0x1435 0x0804   Sphairon Homelink 1202 0x0cde 0x0027   TP-LINK TL-WN821N v2 0x0cf3 0x1002 500mA WNC Generic 11n USB Dongle 0x1435 0x0326   Z-Com UB81 BG 0x0cde 0x0023   Z-Com UB82 ABG 0x0cde 0x0026   Zydas ZD1221 0x0ace 0x1221   Zyxel NWD271N 0x0586 0x3417  

寻找固件

根据内核KConfig中的help信息,我们知道可以去这个页面查找帮助与相关固件,但是当你真正的进去后就会发现这个页面的固件根本就无法下载了,很多信息也已经无效且让人误解,我在花了大量的时间尝试摸索之后,终于找到了对应的固件与固件需要被存放的位置。 固件下载 linux的固件都放在了linux-firmware repo中,可以在这个页面看到里面的内容:
可以看到这里面有2个固件(ar9170-1.fw与ar9170-2.fw),但是我们应该用哪个呢?或者使用哪几个呢? 我们可以不管这些直接将这2个都拷贝到系统中去。但是当我拷贝进去(/lib/firmware)之后,发现驱动依然提示找不到固件:
因此说明这个固件,要么内容不对,要么我们放的位置不对,要么还缺少文件。

固件应该放在哪里

对此问题,linux wireless的wiki中提到的right place:


即为/lib/firmware下面。 我在Yocto中添加了linux-firmware(参考我的博客:Yocto tips (11): Yocto如何往最终的rootfs中添加软件)之后,发现确实是在这个位置:

且根据Yocto中的信息,我们可以看到这里面有三个,和前面相比,多了一个,因此,我们再一次尝试,将这三个都放进去,然后拔插USB Wifi,发现就可以了:

固件下载 到我的我的资源中下载:AR9170 (支持TP Link WN821N ) Linux 固件 firmware  

AR9170 (支持TP Link WN821N ) Linux 固件 firmware