RTL8192EU模组实现station模式以及AP模式下的功能

前言

近一个礼拜,首次接触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

总结

第一次操作,虽然好多步骤都不理解,只是照着做,但是起码是一个好的开始哦!

你可能感兴趣的:(dhcp)