linux 下wifi 功能的实现
一、嵌入式linux四件套配置
1、网卡选型的依据:
a.网卡不能乱选,否则没戏。网卡的依据是,kernel的menuconfig -> device drivers -> network device support -> wireless lan -> 一堆驱动,however,这还没有结束;
b.buildroot -> menuconfig -> target packet -> hardware handling -> *** firmwares -> linux-firmware -> wifi firmwares -> 一堆驱动的bin。
# 这些网卡商都十分淫荡,在官网上放着10年前的固件,但是却给这些软件巨头发放最新的驱动,而且还不开源,嗞嗞。。
# 接下来是开启一些功能
2、开启内核rfkill功能
menuconfig -> networking support -> rf switch subsystem support
3、开启kernel和buildroot的驱动支持
a、就是第一步的那两个地方,然后:
b、Networking support -> Networking options ->
<*> Packet socket
[*] NETLINK: mmapped IO
[*] IP: DHCP support
[*] IP: BOOTP support
[*] IP: RARP support
[*] Network packet filtering (replaces ipchains) //添加,后面子选项可不选,配置CONFIG_NETFILTER
4、buildroot软件包设置
buildroot -> menuconfig -> target packet -> network applications
选择hostapd,iw,wireless tools,wpa_supplicant(注意全选)
5、然而还没有结束
buildroot -> busybox-menuconfig -> networking utilities -> udhcpd, udhcpc
嗯,telnet困难症的朋友,你们现在可以脱离苦海了,把telnetd也选上去吧
# 这个时候,应该就能顺利启动网卡了,需要验证一下/sys/class/net/wlan0里面有没有phy80211这个东西,如果没有,说明驱动安装失败。
# 如果是网上找到的开源驱动,并且你不需要开AP,那么即使没有phy80211也能够上网,详见附一
# 如果你的网卡是usb的,而且比较水,那么网卡有时候会死机,这个时候你怎么搞,它都不会再鸟你了,这个时候,嗯,抽出来,再插进去 = =..
二、应用程序配置(client篇)
1、ifconfig wlan0 up
2、情况一:要连接的AP没有密码
iw dev wlan0 connect "Guest hi-T"
udhcpc -i wlan0
# 然后可以用ping了
# 经过使用,Guest的信号还是不错的,丢包率只有10%上下,udhcpc找ip的速度也是非常快的。
3、情况二:要连接的AP使用WPA加密
需要使用wpa_supplicant
a、创建文件/etc/wpa_supplicant.conf,如果是在buildroot把这个包打上去的,那么应该本来就有这个文件;
b、编辑文件:/etc/wpa_supplicant.conf:
ctrl_interface=/var/run/wpa_
ap_scan=1 //必须要这一句,这是导演安排滴
network={
ssid="zhd-1" # 这是AP的名字
psk="123456789" # 这是AP的密码
}
保存退出。
c、wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant
-D 表示驱动程序; -i 表示网卡; -c 表示配置文件
如果看到CTRL-EVENT-CONNECTED的debug输出,证明配置是对的。
如果看到 pre-shared key maybe incorrect,并且持续不断出现,表示密码可能是错的。
如果看到其他的信息,有可能是配置文件不完整,甚至是驱动程序本身也是不完整的。
d、CTRL-EVENT-CONNECTED之后一段时间内,如果没有任何输出,证明连接稳定,可以进行下一步:
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant -B,让wpa_supplicant常驻在后台,控制网卡
处于client模式;
e、udhcpc -i wlan0, 获取ip
f、用完后,wpa_cli -i wlan0 terminate,退出wpa_supplicant,并停止wlan0
# 使用 zhd-1 测试带密码wifi,请务必保持耐心,不要随便 ^C ,请久等。。(ping的丢包率在40%以上。。。)
三、应用程序配置(AP篇)
1、sh: iw list
a. 找到Supported interface modes, 发现内有AP,lucky, go next;
b. No AP exist, oh shit! and fuck too! You doomed, breake a window and just jump off, goodbye and never say hi ~~~
2、建立/etc/hostapd.conf,内容如下:
interface=wlan0 # 所用的网卡
driver=nl80211 # 所用的驱动
ssid=hostapd # 热点名称
channel=6 # 也称为频段,wifi共有13个通道,其中1、6、11是最佳频道
hw_mode=g # 可以为a、b、g
ignore_broadcast_ssid=0 # 广播ssid
auth_algs=1 # 1=WPA2,2=WEP
wpa=2 # 1=WPA1, 2=WPA2, 3=BOTH
wpa_passphrase=12345678 # 密码
wpa_key_mgmt=WPA-PSK # 加密方式
wpa_pairwise=TKIP # 802.11g 加密算法
rsn_pairwise=CCMP # 802.11i 加密算法
3、hostapd -d /etc/hostapd.conf
-d 表示debug模式,所以会出来一大片信息,仔细检查有没有发现file not found错误,一般是由于配置错误导致的,有时候也会是驱动的原因。这个时候用手机应该能够看到有一个叫hostapd的热点。。。
4、接下来,配置udhcpd,配置文件样本可以在buildroot/output/build/busybox***/examples/udhcpd/udhcpd.conf中找到,使用 cat udhcpd | grep ^\# -v 命令,查看默认的配置
5、那么,其实呢,这个东东是建立在有线网络的基础上的,并且要作为一个能够上网的路由器使用,而我们只需要互联通信就ok了,所以有很多东西是没有必要的,核心配置,只有如下的几条:
# 确定IP的范围
start 192.168.0.20
end 192.168.0.25
# 选定udhcpd的设备
interface wlan0
option subnet 255.255.255.0 # 子网掩码
option router 192.168.0.1 # 网关(就是本机)
option lease 86400 # 租约时间,其实就是该IP地址的生命周期,单位是秒,86400是一天
设置好了后,保存在/etc/udhcpd.conf;
6、hostapd /etc/hostapd.conf -B
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 # 注意,一定要和udhcpd.conf严格匹配
touch /var/lib/misc/udhcpd.leases
udhcpd -S /etc/udhcpd.conf
7、用手机再找到hostapd热点,连接,连接了之后,查看手机IP;
8、开发板:ping -I wlan0 手机ip, 如果有应答,就成功了。
附一、开源驱动的应用程序配置(仅client)
# 现在的驱动程序已不支持iwconfig,用iwconfig配置任何新版wlan驱动均会报错
1、ifconfig wlan0 up
2、iwconfig wlan0 scan # 得到附近AP的列表
3、iwconfig wlan0 essid "zhd-1" key "123456789"
# 感想:脚本is very important,要加进系统的东西越来越多,不得不学着写了脚本,在buildroot编完后,还要再用脚本向rootfs中打进一大堆文件、修改一堆东西,要是手动完成的话,这得等到猴年马月啊。。。
linux 下wifi 功能的实现的更多相关文章
- kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 【转】
转自:http://blog.chinaunix.net/uid-26349264-id-4455634.html 目录 kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 ...
- Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析
源: Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析
- Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析
SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈.可以实现用户主平台数据通过SDIO口到无线网络之间的转 ...
- Linux下Wi-Fi的实现:wireless_tools和wpa_supplicant
平台为hi35XX,在Liunx下借助wireless_tools和wpa_supplicant(因为现在的无线WIFI网络大多是wpa加密.所以需要移植wpa_supplicant工具)等工具实现w ...
- 嵌入式linux下wifi网卡的使用(二)——应用程序iw编译
首先编译iw,Iw支持两种加密/认证方式.第一种是OPEN/OPEN 第二种是WEP/WEP在网上下载iw源码,发现iw的编译需要依赖libnl库(这个库是为了方便应用程序使用netlink借口而开发 ...
- 编程实现类似Linux下cp功能
MyCP的代码实现 一.题目要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bi ...
- Linux下Wi-Fi配置工具2
上回说到,linux下面的Wi-Fi配置工具,说是江湖多事,风起云涌...嗯,这回是真的要动手配置了.各种麻烦啊,想死的心都有了有木有啊. 尝试用iwconfig 话说上回说用iwconfig配置Wi ...
- Linux下VLAN功能的实现 (转)
1.Linux网络栈下两层实现 1.1简介 VLAN是网络栈的一个附加功能,且位于下两层.首先来学习Linux中网络栈下两层的实现,再去看如何把VLAN这个功能附加上去.下两层涉及到具体的硬件 ...
- linux下wc功能的简单实现
1.代码来源:自己编写 2.运行环境:linux终端 3.编程语言:c/c++语言 4.bug:未发现 5.当前功能:可以统计字符的字符数.行数.单词数 6.使用方法:wc -l 文件名-->统 ...
随机推荐
- Home键状态保存运用场景
当我们在一个Activity中有接收Intent过来的值,或者当前Activity有保存数据时候,如果此时不小心按到了Home键,然后没有及时回来而是运行了其它应用程序,当你想起来的时候,恐怕已经是几 ...
- Redis、Redis+sentinel安装(Ubuntu 14.04下Redis安装及简单测试)
Ubuntu下Redis安装两种安装方式: 1.apt-get方式 步骤: 以root权限登录,切换到/usr目录下. 接下来输入命令,apt-get install redis-server,如图: ...
- 学习“要件审判九步法”,正确处理五个关系 z
学习“要件审判九步法”,正确处理五个关系 2015-06-29 07:39:07 | 来源:人民法院报第二版 | 作者:阮丹军 “要件审判九步法”,是邹碧华法官总结审判和审判管理双重经验后的心血之作, ...
- C++学习41 exception类
C++语言本身或者标准库抛出的异常都是 exception 的子类,称为标准异常(Standard Exception).你可以通过下面的语句来匹配所有标准异常: try{ //可能抛出异常的语句 } ...
- sikuli实例
代码: package selenium.sikuli; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; im ...
- http.StripPrefix 的参数含义
看下面两行代码: http.Handle("/file/", http.StripPrefix("/file", http.FileServer(http.Di ...
- 无法加载程序集,因为该程序集包含EdmSchemaAttribute,并按名称加载结束类型。不允许同时按名称和特性进行加载
小小记录下,今天写程序时遇到的一个bug,相信大家用MVC+EF写项目时遇到的概率是挺大的.昨天本人也遇到了,很悲剧,暂时没想到好的办法解决,跟项目经理交流了下,这个问题认为出现在EF的自身设计上,它 ...
- UIApplication及UIWindow
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Ubuntu 12.04 gedit编辑器 中文乱码
百度一下查看了很多关于这个问题的解决方法,无非是用通过配置编辑器修改键值来解决.但是由于我的ubuntu是12.04版本的,搜索到的很多方法都不能用,网上一般的解决办法如下: 打开“注册表”(从字面理 ...
- Orchard官方文档翻译(六) 建立你的第一个Orchartd站点
让我们开始 该主题内容已在Orchard1.8Release版本下测试通过. 这里通过向导式的教程来告诉大家Orchard的功能如何使用.如果你是第一次使用Orchard,该文档就是为你而准备的! O ...