前言
近一个礼拜,首次接触Linux方面知识。记录一下使用RTL8192EU模组,在正点原子开发板I.MX6ULL上成功跑通。需要先编译成.ko模块再加载到开发板上。并涉及到以下几个工具的移植,wireless tools;openssl;libnl;wpa_supplicant和wpa_cli;hostapd;udhcpd。
一、正文
首先正点原子提供的文档,讲述的十分详细,可以实现station模式下的功能。简述一下该过程中自己踩过的坑,最开始的时候根据文档编译以后不知道把.ko文件放置到什么地方,真的是摸着石头一步步走,最后发现是放到rootfs根文件系统下。然后面前来了一个深渊巨坑,我使用16.04版的Ubuntu,rootfs是以.tar.bz2压缩包的形式呈现的,鼠标右击压缩包选择“提取到此处”,此时呈现在你面前的是一个rootfs文件夹,打开以后里面有根文件系统的各种文件夹,此时我认为根文件系统打包的时候要从rootfs进行打包,我添加好了rtl8192eu.ko文件后把rootfs文件夹打包成.tar.bz2,使用烧写工具烧录以后,根文件系统挂载失败。搞了大概一整天吧,我才发现原来rootfs.tar.bz2解压缩以后是直接散开的各种文件,是选择提取到此处造成外面套了一个文件夹。希望初学者引以为戒!!!!!!!一定要使用指令解压文件夹,“提取到此处”还是有弊端的。
station模式跑通以后,开始研究AP模式,让手机连接WiFi模组发出的AP热点。
wpa_supplicant和wpa_cli移植
依赖:openssl libnl
依照正点原子的教程走就可以,此处不再赘述。
hostapd移植
下载文件wget http://w1.fi/releases/hostapd-2.8.tar.gz
移植方法参照wpa_supplicant即可
注意hostapd与openssl存在一个匹配问题,openssl里面的ctx结构体的定义有改变,导致出错。
错误信息可以看见"CTX",网上博客说是需要降低openssl的版本,由于当时我的station测试使用的该版本的openssl,我不想修改
然后我就下载到了2.8版本的hostapd,可以与1.0.2g版本的openssl兼容。
在启用hostapd之前需要先设置udhcpd,否则当你使用手机连接AP热点的时候就会发现无法分配IP地址。
移植udhcpd和udhcpc
这次需要先编译内核,使其支持DHCP该功能:
进入内核,开启DHCP功能,配置如下:
Networking --->
[*]Networking support
Networking options --->
<*>Packet socket
[*] IP:DHCP support
[*]Network packet filtering(replaces ipchains)
使用busybox编译出
2、进入BusyBox,开启dhcp功能,配置如下:
Networking Utilities --->
udhcp Server/Client --->
[*]udhcp Server(udhcpd)
[*]udhcp Client(udhcpc)
3、编译BusyBox,得到busybox二进制文件,将该文件拷贝到系统的/bin文件中。
因为原子提供的编译好的busybox就配置了dhcp功能,直接使用就可以。
# 启用网卡
ifconfig wlan0 up
# 给无线网卡设置IP地址
ifconfig wlan0 192.168.0.1
# 启动DHCP,必须先设置无线网卡地址,不然启动udhcp会失败
udhcpd /etc/udhcpd.conf
# 启动热点
hostapd /etc/hostapd.conf -B
station模式下需要配置wpa_supplicant.conf AP模式下需要配置udhcpd.conf和hostapd.conf
wpa_supplicant.conf配置方式:
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
ssid="AS"
psk="1234567."
}
其中udhcpd.conf使用的是busybox-1.29.0/examples/udhcp/udhcpd.conf
udhcpd.conf删除注释文件后如下:
start 192.168.0.20
end 192.168.0.254
interface wlan0
opt dns 192.168.10.2 192.168.10.10
option subnet 255.255.255.0
opt router 192.168.0.1
opt wins 192.168.10.10
option dns 129.219.13.81 # appended to above DNS servers for a total of 3
option domain local
option lease 864000 # default: 10 days
option msstaticroutes 10.0.0.0/8 10.127.0.1 # single static route
option staticroutes 10.0.0.0/8 10.127.0.1, 10.11.12.0/24 10.11.12.1
option 0x08 01020304 # option 8: "cookie server IP addr: 1.2.3.4"
option 14 "dumpfile"
hostapd.conf的配置文件如下:
#ctrl_interface=/var/run/hostapd
#change wlan0 to your wireless device
interface=wlan0
driver=nl80211
ssid=Linux
hw_mode=g
channel=6
#ieee80211n=1
wmm_enabled=1
# 认证/加密方式
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
max_num_sta=255
第一次操作,虽然好多步骤都不理解,只是照着做,但是起码是一个好的开始哦!