WIfi 移植
移植与交叉编译hostapdtar xzf wpa_supplicant_hostapd-0.8_rtw_r6747.20130222.tar.gzcd wpa_supplicant_hostapd-0.8_rtw_r6747.20130222/hostapd/CC=/usr/local/dvsdk/linux-devkit/bin/arm-arago-linux-gnueabi-gcc
·
通过Hostapd可以将无线网卡切换为AP/Master模式,通过修改配置文件,可以建立一个开放式的(不加密)的,WEP,WPA或WPA2的无线网络。并且通过修改配置文件可以设置无线网卡的各种参数,包括频率,信号,beacon包时间间隔,是否发送beacon包,如果响应探针请求等等当用以wifi的时候,作为station,工作在managed模式,有后台进程wpa_supplicant对认证管理。0)hostapd是什么:
工作在sofap的时候,作为AP; 工作在master模式,由后台进程hostapd做认证处理。
Master模式: 即wifi从模式,可以链接无线ap
作为station,用户通过UI启动WIFI,由framework层,JNI,hardware层加载WIFI的驱动,加载firmware。驱动加载成功后,启动wpa_supplicant,设置mad地址,设置为managed模式,通过ioctl命令启动scan,启动DHCPD获取IP地址,链接到对应的AP,建立连接后同时sock通信。AP模式 : 即wifi的ap模式,当作无线路由
作为softap模式的时候,和station模式的流程差不多,只不过不是启动wpa_supplicant,启动hostapd的后台管理进程。
由framework层,JNI,hardware层加载softap的驱动,加载firmware。驱动加载成功后,启动hostap,设置mad地址,设置为master模式,设置BSSID,启动DHCPD获取IP地址。等待station来连接。
tar xzf wpa_supplicant_hostapd-0.8_rtw_r6747.20130222.tar.gz1)移植和交叉编译hostapd:
cd wpa_supplicant_hostapd-0.8_rtw_r6747.20130222/hostapd/
CC=/usr/local/dvsdk/linux-devkit/bin/arm-arago-linux-gnueabi-gcc
make出现如下错误:hostapd/../src/drivers/driver_nl80211.c:8672: undefined reference to `genlmsg_attrdata'
这里说明需要用到libnl库,因此:
tar xzf libnl-1.1.4.tar.gz
cd libnl-1.1.4/
CC=/usr/local/dvsdk/linux-devkit/bin/arm-arago-linux-gnueabi-gcc
./configure --prefix=$PWD/_install --host=arm-arago-linux-gnueabi
make
make install之后将生成的库文件和头文件复制到交叉编译路径:
cp -rf _install/* /usr/local/dvsdk/linux-devkit/arm-arago-linux-gnueabi/usr/
回到hostapd目录,并重新编译:
cd ../wpa_supplicant_hostapd-0.8_rtw_r6747.20130222/hostapd/
CC=/usr/local/dvsdk/linux-devkit/bin/arm-arago-linux-gnueabi-gcc
make
当前目录会生成:hostapd_cli和hostapd两个文件。
在设备上运行hostapd(注意:此时不能运行wpa_supplicant等进程):
./hostapd ./hostapd.conf -B
使用的配置文件如下:
cat hostapd.conf
在设备上运行udhcpd:
udhcpd ./udhcpd.conf
使用的配置文件如下:
cat ./udhcpd.confstart2)DNSmasq是什么,怎么移植:
DNS :DNS 是域名系统 (Domain Name System) 的缩写 ,即将输入的网址转换成IP地址。 DHCP:是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址给用户给内部网络管理员作为对所有计算机作中央管理的手段。DNSmasq是一个小巧且方便的用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。
dnsmasq-2.56移植过程非常简单,只需要修改下makefile文件即可,如下:
添加CC = arm-linux-gcc,把PREFIX = /usr/local修改为你要安装的目录PREFIX =/opt/dnsmasq
修改完毕,执行make目录,编译完毕后运行make install安装,此时/opt/dnsmasq就出现我们需要的可执行程序了。 3)wpa_supplicant解释:
wpa_supplicant本是开源项目源码,被谷歌修改后加入android移动平台,它主要是用来支持WEP,WPA/WPA2和 WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是 wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给 wpa_supplicant调动驱动来对WiFi芯片操作。 简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。
更多推荐
已为社区贡献1条内容
所有评论(0)