HI3559AV100 移植 usb 无线网卡
1. 移植
(1).配置内核支持的环境
内核需要配置相关的模块进行对 wifi 支持,具体配置选项可以参考:
https://www.cnblogs.com/LuoboGan/p/10411837.html
(2) 下载驱动源码
本次调试使用的是 EW-7811Un 模块,驱动源码;
源码链接: http://www.edimax.us/html/english/frames/b-download.htm
(3).编译驱动;
01. 解压 rtl8188C_8192C_usb_linux_v4.0.9_20171222.tar.gz
02. 修改 Makefile
增加 CONFIG_PLATFORM_HISI3559 = y,改 CONFIG_PLATFORM_I386_PC = n
增加:
ifeq ($(CONFIG_PLATFORM_HISI3559), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm64
CROSS_COMPILE:=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-
KVER := 4.9.37 #内核版本
KSRC ?= /home/deepglint/linux-4.9.37 #内核位置(该位置不要太过复杂,最好复制出来)
Endif
03. 编译:make
04. 错误 1:implicit declaration of function ‘csum_ipv6_magic’
解决: 找到错误处增加头文件: #include
05. 错误 2:
error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
{"rx_info", proc_get_rx_info, proc_reset_rx_info},
解决: 将
int proc_reset_rx_info(struct file *file, const char __user *buffer, size_t count, loff_t
*pos, void *data)
修改为:
static ssize_t
proc_reset_rx_info(struct file *file, const char __user *buffer, size_t
count, loff_t *pos, void *data)
06. 再次执行 make,最后会在同级目录下生成 8192cu.ko 驱动文件.
07. 加载驱动;insmod 8192cu.ko
09. 启动无线网卡:
ifconfig wlan0 up
再执行
iwlist scanning
此命令可以搜索到可用的无线网络接入点
2 wifi 工具- wireless_tool
01. 说明: 用于扫描,连接.
02. 下载源码: https://hewlettpackard.github.io/wireless-tools/Tools.html
或者 https://hewlettpackard.github.io/wireless-tools/wireless_tools.29.tar.gz
03. 编译:
CC = aarch64-himix100-linux-gcc
AR = aarch64-himix100-linux-ar
RANLIB = aarch64-himix100-linux-ranlib
a) Makefile ,修改:
b)
c)
d)
e) make; 将生成的命令复制过去就可以直接使用;iwlist
f) 在执行 iwlist 时需要哭的支持: libiw.so.29,将其复制到开发板中.
使用: 执行 iwlist scanning 命令可以搜索到当前可用无线网络接入点.
g) 连接:
连接需要 iwconfig 工具
无线接入点是需要密码的。假设密码是 123456。使用如下的命令设置密码。
iwconfig wlan0 key 123456
为了能接无线网,还要使用下面的命令设置 ESSID
iwconfig wlan0 essid "rat-linux"
如:
iwconfig wlan0 essid "null" key ch123456
如果出现这种错误;
Error for wireless request "Set Encode" (8B2A) :
原因就是系统对 wpa 加密方式的支持不够,还需要其他额外配置,使用 wpa_passphrase 软
件
需要移植 wpa_supplicant
3 dhcpd
用于无线网卡连接后分配 IP
01. 下载源码: ftp://roy.marples.name/pub/dhcpcd(我下载的版本是:dhcpcd-6.9.4.tar.xz)
02. 配置:./configure
03. 编译:make CC=aarch64-himix100-linux-gcc
04. 生成:直接复制 dhcpd 即可使用(./dhcpd wlan0)
4. wpa_supplicant 编译
环境准备: 需要事先准备好: libnl,openssl
01. Libnl,为编译 wpa_supplicant 做准备
02. 下载源码: http://www.infradead.org/~tgr/libnl/(libnl-3.2.25.tar.gz )
03. ./configure CC=aarch64-himix100-linux-gcc --host=aarch64-himix100-linux --enable-static
--enable-shared LIBS=-lpthread --prefix=$(pwd)/__install
04. make clean
05. make
06. make install
07. iw 编译(需要单独编译 libnl,编译不再此处描述)
08. 下载:https://www.kernel.org/pub/software/network/iw/(注意下载 4.0 版本,其他版本
没有编译通过)
09. 配置
export PKG_CONFIG_PATH=/home/Hi3559A/work/wifi/libnl-3.2.25/__install/lib/pkgconfig:$PKG_CONFIG_PATH
10. 修改:NL3xFOUND := Y
11. make 便可生成 iw
12. openssl(https://blog.csdn.net/shunrenwang/article/details/80440647)编译
13. 下载 https://www.openssl.org/(openssl-1.0.2h)
14. ./config no-asm shared --prefix=$(pwd)/__install
15. make depend
16. 修改 Makefile:
将下面
CC= gcc
AR= ar $(ARFLAGS) r
NM= nm
修改为
CC= aarch64-himix100-linux-gcc
AR= aarch64-himix100-linux-ar $(ARFLAGS) r
NM= aarch64-himix100-linux-nm
17. 删除-m64
18. make clean
19. make
20. make install
21. 下载 wpa_supplicant 源码: http://w1.fi/wpa_supplicant/(wpa_supplicant-2.5.tar.gz )
22. cd wpa_supplicant-2.5/wpa_supplicant/
23. cp defconfig .config
24. 修改.config
将#CONFIG_LIBNL32=y
修改为
CONFIG_LIBNL32=y
25. 修改 Makefile
增加下面几行(地址需要根据实际编译的地址改变)
#openssl
CFLAGS += -I/home/Hi3559A/work/wifi/openssl-1.0.2h/__install/include/
LIBS += -L/home/Hi3559A/work/wifi/openssl-1.0.2h/__install/lib
LIBS_p += -L/home/Hi3559A/work/wifi/openssl-1.0.2h/__install/lib
#libnl
CFLAGS += -I/home/Hi3559A/work/wifi/libnl-3.2.25/__install/include/libnl3/
CFLAGS += -I/home/Hi3559A/work/wifi/libnl-3.2.25/__instal /include/
LIBS += -L/home/Hi3559A/work/wifi/libnl-3.2.25/__install/lib/
26. make clean
27. make CC=aarch64-himix100-linux-gcc(有些打印 No package 'libnl-3.0' found,可以忽略)
28. wpa_supplicant 使用配置:
设置配置文件:vi /etc/wpa_supplicant.conf
内容(ctrl_interface 为文件夹,update_config 表示 wpa_cli 可以更新该配置文件):
update_config=1
ctrl_interface=/etc/wpa_supplicant
network={
ssid="DG"
proto=WPA RSN
key_mgmt=WPA-PSK WPA-EAP
pairwise=CCMP
group=CCMP
psk="On1shiuva4"
}
运行: wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -d &
注意在运行之前需要动态库的支持:
libnl-3.so.200; libnl-genl-3.so.200; libssl.so.1.0.0; libcrypto.so.1.0.0
也可参考: https://www.jianshu.com/p/e8e7949cf4d3
5. 正常使用 wifi 的流程;
1. 开启 wifi 网卡
ifconfig wlan0 up
2. 动态分配一个 ip 或者手动分配
ifconfig wlan0 192.168.0.232
动态获取: dhcpcd wlan0
3. 输入 wifi 密码
#写入配置
wpa_passphrase "null" "ch123456"
准)
#连接 wifi
wpa_supplicant -B -i wlan0 -Dwext -c /etc/wpa_supplicant.conf
> /etc/wpa_supplicant.conf (conf 文 件以 实 际 为
4. 配置 dns 服务器
修改文件: /etc/ resolv.conf;dns 服务器的地址以实际为准,本次测试使用谷歌公网地
址.
nameserver 114.114.114.114
nameserver 114.114.114.114