(4)搜索和连接无线网络 要搜索无线网络,最简单的是使用Linux Wireless Tools工具。使用Linux无线工具配置Wi-Fi网络的主要步骤如下: 查看可用的无线网卡:iwconfig; 启用无线网卡:ifconfig wlan0 up; 列举无线网络:iwlist wlan0 scan,可以扫描到周围的AP。 使用Linux Wireless Tools工具只能连接WEP加密的网络,无法连接WPA/WPA2加密的网络。通常使用该工具对无线网络进行简单的配置,如扫描和启动无线网卡等。 wpa_supplicant是作为一个服务程序运行的。在启动wpa_supplicant时,需要一个wpa_supplicant.conf配置文件,该文件指明了要连接的AP的ESSID和连接密钥等信息。采用如下命令可以根据明文密码创建暗文密码: wpa_passphrase FAST_555B30 417417417 以上命令的含义是要连接的ESSID为FAST_555B30,这个是通过扫描得到的。417417417是要连接的明文密码。生成的psk显示如下: psk=b461ee0209a9b5a6f114317e9ae72f52829b5f743e47a600b7a08911cc3bd30f 对于不同的加密方式,wpa_supplicant.conf的内容也不一样。FAST_555B30使用的是WPA2加密方式,wpa_supplicant.conf文件如下: # WPA-PSK/TKIP ctrl_interface=/var/run/wpa_supplicant network={ ssid=”FAST_555B30” key_mgmt=WPA-PSK proto=WPA2 pairwise=CCMP psk=1512bf80a15b8b595522e18cf3a51db47d5084da9565ad38ffec9ab1da37a108 } 其中,ctrl_interface指明了控制接口路径,wpa_cli等程序可能使用该路径来与wpa_supplicant通信。ssid和psk指明了要连接的AP及其暗文密码。key_mgmt指明了密钥管理方式。如果是WPA2方式加密的,proto=WPA2,pairwise=CCMP。 采用如下命令可以启动wpa_supplicant服务进程: wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf & -D选项指明了采用的驱动程序接口,这里是Wext接口。-i选项指明了无线网络接口名称。-c选项指示使用的配置文件。启动了wpa_supplicant命令,就可以连接到WPA2加密的无线网络,如果要使用DHCP动态获取IP地址,可以采用如下命令: udhcpc -i wlan0 udhcpc是busybox中包含的DHCP客户端工具。也可以直接使用ifconfig命令配置静态IP地址,例如:ifconfig wlan0 192.168.0.10。 4 结 语 本文在分析现有的Linux下的无线网络驱动程序框架和常用无线网络配置应用程序的基础之上,通过实例介绍了Linux下Wi-Fi连接的方法。实际测试表明,该方法可以有效实现嵌入式Linux下的Wi-Fi网络接入,对于嵌入式Linux下的Wi-Fi应用开发有一定的参考意义。 参考文献 [1]刘芳华,周凤星. Linux下Wi-Fi驱动程序的设计与实现[J]. 自动化仪表, 2011,32(3):1-3 [2] Jouni Malinen . Linux WPA/WPA2/IEEE 802.1X Supplicant [EB/OL].[2013-1-12].http://hostap.epitest.fi/wpa_supplicant/. [3]裴超. 基于Android平台Wi-Fi模块的设计与实现[D]. 武汉:华中科技大学,2011 |