基于Hi3559A 无线WIFI模块移植调试

wifi模块: RTL8188GU/RTL8192FM/RTL8811CU
硬件平台: Hi3559A 
软件平台: Linux-4.9

一、 WIFI模块驱动移植

  1、SDIO 模块 rtl8189FTV
   下载驱动 
   网址 http://linux-sunxi.org/Wifi
   
   或者下载:
   
   git clone https://github.com/jwrdegoede/rtl8189ES_linux.git
   cd rtl8189ES_linux.git
   git checkout -B rtl8189fs origin/rtl8189fs
   
   编译
   进入rtl8189ES_linux:   
   make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- KSRC=../../osdrv/opensource/kernel/linux-4.9.y_multi-core/
      
   得到 rtl8192eu.ko
   
   
 2、成品USBWIFI 

    A、USB-AC57 (0B05 :1841)
    驱动源码 :rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959

   编译:
    make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux-  KSRC=../../../../Hi3559A/Hi3559AV100_SDK_V2.0.1.0/osdrv/opensource/kernel/linux-4.9.y_multi-core/

    B、USB-AC68

源码: rtl8814AU_linux_v4.3.21.1_24835.20171031  
编译:  make -j4 ARCH=arm CROSS_COMPILE=aarch64-himix100-linux-  KSRC=../../../../Hi/Hi3531A/Hi3531A_SDK_V2.0.2.0/osdrv/opensource/kernel/linux-3.10.
    
     C、Tenda_u6
    源码:rtl8192EU_WiFi_linux_v5.2.7_22739.20170615_COEX20170113-0046_Tenda_u6
编译:  make -j4 ARCH=arm CROSS_COMPILE=aarch64-himix100-linux-  KSRC=../../../Hi/Hi3531D/Hi3531DV100_SDK_V2.0.4.0/osdrv/opensource/kernel/linux-3.18.y/
    

 3、移植RTL8821CS 
 
    厂家给驱动  rtl8821CS_linux_v5.2.3_20744.20161226_BTCOEX20161208-0c0c.tar.gz  ,因不支持 linux-4.9,需要修改代码,如下:
    修改Makefile ,
      修改include/rtw_wifi_regd.h
        
    //shenghuai add
    #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
    #define ieee80211_band nl80211_band
    #define IEEE80211_BAND_2GHZ NL80211_BAND_2GHZ
    #define IEEE80211_BAND_5GHZ NL80211_BAND_5GHZ
    #define IEEE80211_NUM_BANDS NUM_NL80211_BANDS
    #endif

    修改ioctl_cfg80211.c,增加
    // shenghuai add        
            #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0))
             struct cfg80211_scan_info info = {
                                .aborted = aborted,
                        };
                        cfg80211_scan_done(pwdev_priv->scan_request, &info);        
            #else
                cfg80211_scan_done(pwdev_priv->scan_request, aborted);
            #endif
    
    修改rtl8821c.mk 去掉
    #EXTRA_CFLAGS += -DCONFIG_MP_VHT_HW_TX_MODE
    #CONFIG_MP_VHT_HW_TX_MODE = y
       
二、移植工具 libnl-3.2.25   
   
    ./configure --host=aarch64-himix100-linux --prefix=$(pwd)/../3rd_lib/libnl --enable-shared --enable-static
    
    ./configure --host=arm-hisiv400-linux --prefix=$(pwd)/../3rd_lib/31D/libnl --enable-shared --enable-static
    
    cp /mnt/wifi/59a/libnl-3.so* . -Rdp
三、移植openssl  

四、移植wpa_supplicant
    使用王刚给的 工具包 wpa_supplicant_8_O_8.x_rtw_r26589.20180301.tar.gz
    
    1、sudo apt-get install libnl-3-dev
    2、vi .config
       CC=aarch64-himix100-linux-gcc

    CFLAGS += -I/home/shenghuai/WorkSpace/O.Source/3RD/3rd_lib/openssl-1.0.1t/include/
    LIBS += -L//home/shenghuai/WorkSpace/O.Source/3RD/3rd_lib/openssl-1.0.1t/lib
    CFLAGS += -I/home/shenghuai/WorkSpace/O.Source/3RD/3rd_lib/libnl/include/libnl3
    LIBS += -L//home/shenghuai/WorkSpace/O.Source/3RD/3rd_lib/libnl/lib
    
    3、make

    wpa_supplicant 和wpa_cli两个文件,需要增加两个库文件
    libnl-genl-3.200
    libnl-3.so.200
    
    4、copy wpa_supplicant和wpa_cli 及libnl-genl-3.200 、libnl-3.so.200 到目标板上
    
五、运行
    1、wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
     
   /etc/wpa_supplicant.conf 初始内容为:
   
  ctrl_interface=/var/run/wpa_supplicant
    update_config=1
    network={
        ssid="Optus"
        psk="Zonekey123"
    }
    
    运行后自动连接
        
    2、手动配置ip
    ifconfig wlan0 192.168.18.202
     route add default gw 192.168.18.254
        
六、测试:

    移植iperf-2.0.5
    下载:git clone git://git.code.sf.net/p/iperf2/code iperf2-code 
    编译:./configure --host=aarch64-himix100-linux --prefix=$(pwd)/../install
        
    PC上 apt-get install iperf
    
    测试方法 :

      请看 Hi3559A 资料库中:  WiFi 使用指南.pdf
    
    TCP: 
    1、PC上 运行 
      iperf -s
    2、目标板运行: 
     iperf -c 192.168.18.200 -t 10 -i 1
    iperf -c 192.168.18.13 -t 10 -i 1 -w 1M
    
七、调试相关命令

 启动wpa_supplicant应用

wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B

wpa_supplicant -D nl80211 -i wlan0 -c /etc/wissless/wpa_supplicant.conf -B

或者
wpa_supplicant -i wlan0 -Dwext -c /etc/wpa_supplicant.conf -dd &

/etc/wpa_supplicant.conf文件里,添加下面代码:

ctrl_interface=/var/run/wpa_supplicant
update_config=1

启动wpa_cli应用

wpa_cli -i wlan0 scan           // 搜索附近wifi网络
wpa_cli -i wlan0 scan_result      // 打印搜索wifi网络结果
wpa_cli -i wlan0 add_network      // 添加一个网络连接
如果要连接加密方式是[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS] (wpa加密),wifi名称是name,wifi密码是:psk。

wpa_cli -i wlan0 set_network 0 ssid '"Optus"'
wpa_cli -i wlan0 set_network 0 psk '"Zonekey123"'

wpa_cli -i wlan0 set_network 0 ssid '"LTE_ZQ"'
wpa_cli -i wlan0 set_network 0 psk '"0987612345"'


wpa_cli -i wlan0 enable_network 0

如果要连接加密方式是[WEP][ESS] (wep加密),wifi名称是name,wifi密码是psk。

wpa_cli -i wlan0 set_network 0 ssid '"name"'
wpa_cli -i wlan0 set_network 0 key_mgmt NONE
wpa_cli -i wlan0 set_network 0 wep_key0 '"psk"'
wpa_cli -i wlan0 enable_network 0

如果要连接加密方式是[ESS] (无加密),wifi名称是name。

wpa_cli -i wlan0 set_network 0 ssid '"name"'
wpa_cli -i wlan0 set_network 0 key_mgmt NONE
wpa_cli -i wlan0 enable_network 0

分配ip/netmask/gateway/dns

udhcpc -i wlan0 -s /etc/udhcpc.script -q
执行完毕,就可以连接网络了。

保存连接

wpa_cli -i wlan0 save_config
断开连接

wpa_cli -i wlan0 disable_network 0

连接已有的连接

wpa_cli -i wlan0 list_network             列举所有保存的连接
wpa_cli -i wlan0 select_network 0         连接第1个保存的连接
wpa_cli -i wlan0 enable_network 0         使能第1个保存的连接

断开wifi

ifconfig wlan0 down
killall udhcpc
killall wpa_supplicant    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值