【USB-WIFI模块:rtl8723bu (无线网卡的基于 x6818的移植)
需要在 X6818 开发板上 WIFI模块加载驱动到 内核。
-
linux的内核需要支持wifi的功能,
-
需要把 rtl8723bu 驱动编译出来, ko , 再 到开发板 上去 加载 insmod …ko
-
懂得如何去连上 AP 热点,实现无线上网。
-
配置内核
进入内核目录。
执行 make menuconfig
然后会打开一个配置工具,它可以让你遍历每个可用模块,然后启用或者禁用你需要或者不需要的模块。(空格表示选择)
进入 NetWork device support 层下的 Wireless 层,启用 cfg80211 - wireless configuration API、cfg80211 wireless extensions compatibility、Generic IEEE 802.11 Networking Stack (mac80211
然后退到顶层,进入 Device Drivers 层下的 Network device support 启用 Wireless LAN
然后退出编译内核即可。
make menuconfig 是生成了一个 .config 文件。
x6818_defconfig 编译内核 根据这个配置文件来编译内核的。
kernel/arch/arm/config/x6818_defconfig —>
mv kernel-3.4.39/.config kernel-3.4.39/arch/arm/config/x6818_defconfig
编译内核 ./mk -k
生成一个 root.img 内核镜像文件》 再把 这个文件 重新烧写到你的开发板。
那么这个内核 就可以支持 无线网卡的功能了。
- 编译RTL8723BU-WiFi驱动
下载地址:https://pan.baidu.com/s/1JdHK7tmVYQYgkYHFTUFEjw 提取码: mi9f
解压 unzip RTL8723BU_WiFi_linux_v4.3.9_13200.20150106_BTCOEX20140929-5443.zip
进入 driver 目录。
修改 Makefile 文件。
74行: CONFIG_PLATFORM_X6818 = y
ifeq ($(CONFIG_PLATFORM_X6818), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT -DCONFIG_CONCURRENT_MODE
ARCH := arm
CROSS_COMPILE := /home/china/newdisk/x6818_linux_180209/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-
KSRC := /home/china/newdisk/x6818_linux_180209/linux/kernel/kernel-3.4.39
MODULE_NAME := rtl8723bu_wifi
endif
然后 make 即可,会在当前目录下看到 rtl8723bu_wifi.ko 的驱动文件,拷贝到开发板上就好了。
- 移植wpa_supplicant
简介:wpa_supplicant是wifi客户端(client)加密认证工具,和iwconfig不同,wpa_supplicant支持wep、wpa、wpa2等完整的加密认证,而iwconfig只能支持wep。
wpa_supplicant运行于后台,它需要借助控制台工具wpa_cli来进行手动操作,使用wpa_cli来搜索、设置、和连接网络。
下面分配来编译 下面的3个库。
libnl-3.2.29.tar.gz openssl-1.0.2k.tar.gz wpa_supplicant-2.6.tar.gz
1). openssl-1.0.2k.tar.gz 移植
1、先执行: ./config no-asm 如果需要动态库,执行:
./config no-asm shared --prefix=/opt/wifi_depend/openssl_lib
选项指定install的地址,install后可以在里面找到库和头文件等,有需要的话,可以加入-fPIC选项
2、修改生成的makefile
1、将gcc和ar加上XX对应编译链的前缀,例如: XX-XX-linux-
2、删除代有m64的两个地方
3、执行 make 进行编译
我用的是openssl-1.0.2q版本,libcrypto.a和libssl.a都会生成,可以使用。
4、还可以执行make install进行安装,安装的路径就是-prefix指定的地址。当然也可以不安装,make后就能找到openssl库。配合curl使用的时候最好指定安装路径,因为curl编译的时候也许会用到。
2)libnl-3.2.29.tar.gz 移植
配置: ./configure --prefix=/opt/wifi_depend/libnl_lib --host=arm-linux
修改 include/linux-private/linux/ipv6.h
include/linux-private/linux/if_bridge.h 的 #include<linux/in6.h> 为 #include <netinet/in.h>
然后 make && make install 即可。
3) wpa_supplicant移植
解压 tar -zxvf wpa_supplicant-2.6.tar.gz
进入源码目录 cd wpa_supplicant-2.6/wpa_supplicant
拷贝一份默认配置文件 cp defconfig .config
修改 .config 文件如下:
-
第 47行 去掉 #号
-
在 Makefile 文件前面加上
CFLAGS += -I/opt/wifi_depend/openssl_lib/include -I/opt/wifi_depend/libnl_lib/include/libnl3
LIBS += -L/opt/wifi_depend/openssl_lib/lib -L/opt/wifi_depend/libnl_lib/lib -ldl
CC = arm-linux-gcc
- make
当前目录下会生成三个可执行文件 wpa_supplicant wpa_passphrase 和 wpa_cli
拷贝到开发板的 /usr/bin 目录下即可。
- 配置:
在板子上运行 mkdir/var/run 生成 run 文件夹。
在 /etc 目录下创建 wpa_supplicant.conf 文件,内容为
ctrl_interface=DIR=/var/run/wpa_supplicant
update_config=1
network={
ssid=“P30”
scan_ssid=1
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=“123456789qq”
eap=TTLS PEAP TLS
}
-
最后拷贝 libnl_lib.tar.gz 库到板子上的 /usr/lib 即可
-
测试
运行 wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -dd& 即可连接 wifi 了。