最近因为项目需要,我的文件系统是移植好wifi驱动的,所以前面的部分就不描述了,在界面添加wifi的连接,所以记录一下自己在探索中的经验和误区
一、无线路由器常见加密方式有WPA-PSK、WPA2-PSK,wpa加密需要用wpa_supplicant工具连接,连接又可以用wpa_cli和wpa_supplicant.conf两种方式,这里选择wpa_supplicant.conf的方式。
二、wpa_supplicant.conf的编写(该脚本适用于WPA-PSK/TKIP, WPA-PSK/AES WPA2-PSK/TKIP WPA2-PSK/AES 加密认证方式):
ctrl_interface=DIR=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=1
update_config=1
//开始无线接入点的具体配置
network={
//接入点名称
ssid="aaa"
//接入点密码
psk="12345678"
//如果你的无线接入点是隐藏的,那么这个就是必须的
scan_ssid=1
//支持的协议列表,不设置就默认
proto=WPA2 WPA
//认证密钥管理协议,不设置就默认支持WPA-EAP WPA-PSK
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
//加密方式CCMP就是AES,不设置的话是CCMP TKIP,但是有的路由器会无法识别,最好设置
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
eap=PEAP TTLS TLS
priority=2
}
将以上内容保存为/etc/wpa_supplicant.conf (路径不唯一)
三、
ifconfig –a //如果出现wlan0,则说明初始化成功;
ifconfig eth0 down //先关闭eth0,不然wlan0可能会有小问题
ifconfig wlan0 up //启用wlan0
wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -d //(-i 指定网络节点 –B 后台运行 –c指定配置文件路径)
iwconfig wlan0 //出现:ESSID:”aaa” 说明成功连接到AGS网络
udhcpc –i wlan0 //自动获取ip ,和添加dns,不然可能会连不上网或者ping不通,但是每个人都不一样
route //获取路由
四、完成上面的操作,你会发现你的wifi已经连接成功了
五、但是,你会有想切换热点的时候,你会发现添加失败,它会提示你
ctrl_iface bind(PF_UNIX) failed: Address already in use
ctrl_iface exists and seems to be in use - cannot override it
Delete '/var/run/wpa_supplicant/wlan0' manually if it is not used anymore
Failed to initialize control interface 'DIR=/var/run/wpa_supplicant'.
You may have another wpa_supplicant process already running or the file was
left by an unclean termination of wpa_supplicant in which case you will need
to manually remove this file before starting wpa_supplicant again.
Failed to add interface wlan0
你千万不要听到的手动删除'/var/run/wpa_supplicant/wlan0',删除之后你将会一直提示缺少/dev/xxx。
其实你仔细看看,它只是提示你,您可能已经运行了另一个wpa_supplicant进程,或者文件已经运行,这只是你上一个进程没有完全关闭,因为在切换wifi中,你上一个还占用着,这个时候你ps一下,你会看到
932 root wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -d
正是你之前运行的,但是没有关闭,此时你可以运行killall命令,不要运行kill,(可以看我之前的博客)因为每次pid号肯定不一样,我们运行
killall wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -d就可以了
然后你再运行wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -d,你会发现你已经连接上了新wifi
六、在这里只能提供大概的思路,qt界面的就是将这些步骤依次执行而已,如果有需要可以去下载
https://download.csdn.net/download/qq_41399894/10950658
此外,还有一些常用的wlan0命令
iwconfig wlan0 查看是否连接wifi,已经信息
udhcpc –i wlan0 自动获取ip和添加dns
route 获取路由表
iwlist wlan0 scan 扫描wlan0
wpa_cli status 查看连接状态
#杀死以前配置进程
killall wpa_supplicant
#杀死以前的dhcp进程
killall udhcpc
//添加默认网关
route add default gw 192.168.1.1
//删除默认网关
route del default
一般有了这些就足够了,如果有别的需求可以自行查找