/************************************************************************ * backports移植rtlwifi驱动 * 说明: * Linux内核版本算是蛮多的,版本越高其内核自带的驱动也是越多,对于低版本 * 如何使用高版本中的驱动是个问题,左栋提醒使用backports来做移植,尝试一下。 * * 2017-9-13 深圳 龙华樟坑村 曾剑锋 ***********************************************************************/ 一、参考文档: 1. backports: Linux kernel backports http://drvbp1.linux-foundation.org/~mcgrof/rel-html/backports/ 2. ubuntu15.04安装Atheros AR8161网卡驱动 https://jingyan.baidu.com/article/3ea51489d814c052e71bba7a.html 3. ath10k backports releases https://wireless.wiki.kernel.org/en/users/drivers/ath10k/backports 4. Linux wifi backports cross compile https://stackoverflow.com/questions/18855554/linux-wifi-backports-cross-compile 5. compat: exports duplicate symbol clk_disable (owned by kernel) corehtml5canvas.com/code-live/ 6. cfg80211: exports duplicate symbol __ieee80211_get_channel (owned by kernel) http://blog.csdn.net/wuqingwei/article/details/53374309 7. Beaglebone Black fails in installing RTL8892CU WIfi module https://github.com/beagleboard/kernel/issues/39 二、backports编译、测试: 1. Download backports: http://www.kernel.org/pub/linux/kernel/projects/backports/stable/v4.2.6/backports-4.2.6-1.tar.xz 2. 参考教程:https://wireless.wiki.kernel.org/en/users/drivers/ath10k/backports 3. 配置交叉编译器和硬件架构: ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 4. 修改Makefile,主要是修改内核目录,编译后库目录: ... KMODDIR ?= updates KLIB := /home/Qt/kernel/RTL8188/backports-4.2.6-1/ ifneq ($(origin KLIB), undefined) KMODPATH_ARG := "INSTALL_MOD_PATH=$(KLIB)" else # KLIB := /lib/modules/$(shell uname -r)/ KLIB := /home/Qt/kernel/RTL8188/backports-4.2.6-1/ KMODPATH_ARG := "INSTALL_MOD_PATH=$(KLIB)" endif KLIB=/home/Qt/kernel/RTL8188/backports-4.2.6-1/ # KLIB_BUILD ?= $(KLIB)/build/ KLIB_BUILD ?= /home/Qt/kernel/linuxQt_kernel/ ... 5. make defconfig-rtlwifi 6. make 7. 拷贝当前目录下lib目录到文件系统lib目录 8. 下载rtl8192cufw.bin,并拷贝到文件系统/lib/firmware/rtlwifi/: https://github.com/beagleboard/kernel/issues/39 9. wpa_supplicant: 1. configure: [zengjf@root ~]# cat /etc/wpa_supplicant.conf network={ ssid="LTE_CPE_EDEDBE" psk="EDEDBED2" } 2. wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf 3. wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf & 4. wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf > /dev/null 2>&1 & 10. dhcpcd wlan0 获取ip,路由; 11. 如果有双网卡,需要检查route表,是否将无线网卡的路由放在第一个,路由表默认采用第一个通信; 三、注意事项: * 主要是要注意解决其中的duplicate symbol之类的问题,因为内核中可能选择了,在backports中有选择了,导致双重声明,或者没有声明之类的错误。 * 在移植的时候,有将内核中80211功能关闭,保存config,然后又打开,保存config,这样内核中的80211的选项就是默认的,之后内核就可以了。