backports移植rtlwifi驱动

/************************************************************************
 *                   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的选项就是默认的,之后内核就可以了。

 

posted on 2017-09-13 09:37  zengjf  阅读(3106)  评论(0编辑  收藏  举报

导航