Wireless tools for Linux介绍 Wireless tools for Linux是一个Linux命令行工具包,用来设置支持Linux Wireless Extension的无线设备。Wireless tools for Linux 和 Linux Wireless Extension 由 Jean Tourrilhes在维护,由Hewlett-Packard(HP惠普)赞助。 大多数基于Linux内核的操作系统都包含Wireless tools。在许多GNU/Linux 发行版中,都缺省安装这个工具包,即使是没有自动安装,也能很容易地找到其二进制代码安装包。 Wireless Extension (WE)是一组通用的API,能在用户空间对通用Wireless LANs进行配置和统计。它的好处在于仅通过一组单一的工具就能对各种各样的Wireless LANs进行管理,不过它们是什么类型,只要其驱动支持Wireless Extension就行;另一个好处就是不用重启驱动或Linux就能改变这些参数。 Wireless Tools (WT)就是用来操作Wireless Extensions的工具集,它们使用字符界面,虽然粗糙,但支持所有Wireless Extension。虽然还有很多其他管理Wireless Extensions的工具,但Wireless Tools是参考实现,它包括以下工具: iwconfig:设置基本无线参数 iwlist:扫描、列出频率,比特率,密钥等 iwspy:获取每个节点链接的质量 iwpriv:操作Wireless Extensions 特定驱动 ifrename: 基于各种静态标准命名接口 大多数 Linux 发行版本都在其网络初始化脚本中集成Wireless Extension,以便启动时配置无线接口。他们还将Wireless Tools作为其标准封装包。 无线配置也可以使用hotplug或uDev脚本来完成,需要发行版特定的支持,这样能支持任何可移动的无线接口(Pcmcia,CardBus,USB接口...)。 Wireless Tools(从版本19)开始完全支持IEEE 802.11标准参数和设备,支持旧风格的设备和最专有协议,并准备处理HiperLan。较新版本增加了更多802.11支持。但不幸的是,并非所有的驱动程序支持所有这些功能。 最新的稳定版本的Wireless Tools是版本29,大多数愚蠢的错误已被删除,并支持所有的Wireless Extension(从版本v11至v21)。可以从http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz下载最新的Wireless Tools。 我们经常会用到的主要是iwlist、iwconfig、 iwpriv:
命令行:(ap不需要验证密码) iwlist mlan0 scan //搜索ap iwconfig mlan0 essid “linksys” //连接ap udhcpc –i mlan0 //获得动态IP
命令行:(ap需要验证密码) iwlist mlan0 scan //搜索ap iwconfig mlan0 key xxxxxxxxxx // 输入验证密码 iwconfig mlan0 key open //密码验证功能打开 iwconfig mlan0 essid “linksys” //连接ap udhcpc –i mlan0 //获得动态IP 关于iwconfig 可以看上一篇文章;这里补充一下有关iwpriv:
[root@root- /]#iwpriv
mlan0 Available private ioctls :
extscan (8BFA) : set 0 int & get 2 char hostcmd (8BE4) : set 2047 byte & get 2047 byte arpfilter (8BE6) : set 2047 byte & get 2047 byte regrdwr (8BE3) : set 256 char & get 256 char sdcmd52rw (8BFE) : set 7 byte & get 7 byte sdcmd53rw (8BFF) : set 0 char & get 0 char setgetconf (8BEA) : set 2000 byte & get 2000 byte getcis (8BE1) : set 0 & get 512 byte scantype (8BEB) : set 8 char & get 8 char deauth (0001) : set 1 addr & get 0 getNF (0001) : set 1 int & get 1 int getRSSI (0002) : set 1 int & get 1 int bgscan (0004) : set 1 int & get 1 int enable11d (0005) : set 1 int & get 1 int adhocgrate (0006) : set 1 int & get 1 int sdioclock (0007) : set 1 int & get 1 int wmm (0008) : set 1 int & get 1 int uapsdnullgen (000A) : set 1 int & get 1 int setcoalescing (000B) : set 1 int & get 1 int adhocgprot (000C) : set 1 int & get 1 int disable_chsw (000F) : set 1 int & get 1 int setpowercons (0001) : set 1 int & get 1 int wmm_qosinfo (0002) : set 1 int & get 1 int lolisteninter (0003) : set 1 int & get 1 int psnullinterval (0005) : set 1 int & get 1 int bcnmisto (0006) : set 1 int & get 1 int ldocfg (0008) : set 1 int & get 1 int rtsctsctrl (000F) : set 1 int & get 1 int moduletype (000B) : set 1 int & get 1 int autodeepsleep (000C) : set 1 int & get 1 int enhanceps (000D) : set 1 int & get 1 int wakeupmt (000E) : set 1 int & get 1 int setrxant (0001) : set 1 int & get 0 settxant (0002) : set 1 int & get 0 authalgs (0004) : set 1 int & get 0 encryptionmode (0005) : set 1 int & get 0 setregioncode (0006) : set 1 int & get 0 setlisteninter (0007) : set 1 int & get 0 setmultipledtim (0008) : set 1 int & get 0 setbcnavg (0009) : set 1 int & get 0 setdataavg (000A) : set 1 int & get 0 associate (000B) : set 1 int & get 0 getregioncode (0001) : set 0 & get 1 int getlisteninter (0002) : set 0 & get 1 int getmultipledtim (0003) : set 0 & get 1 int gettxrate (0004) : set 0 & get 1 int getbcnavg (0005) : set 0 & get 1 int getdataavg (0006) : set 0 & get 1 int getauthtype (0007) : set 0 & get 1 int getrsnmode (0008) : set 0 & get 1 int act_paircipher (0009) : set 0 & get 1 int act_groupcipher (000A) : set 0 & get 1 int getdtim (000B) : set 0 & get 1 int getrxant (0001) : set 0 & get 12 char gettxant (0002) : set 0 & get 12 char gettsf (0003) : set 0 & get 12 char wpssession (0004) : set 0 & get 12 char deepsleep (8BFB) : set 1 char & get 6 char adhocstop (0004) : set 0 & get 0 radioon (0001) : set 0 & get 0 radiooff (0002) : set 0 & get 0 rmaeskey (0003) : set 0 & get 0 crypto_test (0006) : set 0 & get 0 reasso-on (0007) : set 0 & get 0 reasso-off (0008) : set 0 & get 0 wlanidle-on (0009) : set 0 & get 0 wlanidle-off (000A) : set 0 & get 0 softreset (000C) : set 0 & get 0 sleepparams (0002) : set 64 char & get 64 char requesttpc (0004) : set 64 char & get 64 char powercap (0005) : set 64 char & get 64 char measreq (000C) : set 64 char & get 64 char bca-ts (0003) : set 64 char & get 64 char scanmode (0006) : set 64 char & get 64 char getadhocstatus (0009) : set 64 char & get 64 char setgenie (000A) : set 64 char & get 64 char getgenie (000B) : set 64 char & get 64 char qstatus (000D) : set 64 char & get 64 char ts_status (000E) : set 64 char & get 64 char setaeskey (0001) : set 32 char & get 0 getaeskey (0001) : set 1 int & get 128 char version (0002) : set 1 int & get 128 char verext (0003) : set 1 int & get 128 char setwpaie (8BE0) : set 24 char & get 0 setband (0001) : set 10 char & get 0 setadhocch (0002) : set 10 char & get 0 chanswann (0003) : set 10 char & get 0 getband (0001) : set 0 & get 10 char getadhocch (0002) : set 0 & get 10 char getlog (8BE9) : set 0 & get 512 char tpccfg (0001) : set 16 int & get 16 int scanprobes (0006) : set 16 int & get 16 int ledgpio (0005) : set 16 int & get 16 int sleeppd (0007) : set 16 int & get 16 int rateadapt (0008) : set 16 int & get 16 int getSNR (0009) : set 16 int & get 16 int getrate (000A) : set 16 int & get 16 int getrxinfo (000B) : set 16 int & get 16 int atimwindow (000C) : set 16 int & get 16 int bcninterval (000D) : set 16 int & get 16 int sdiopullctrl (000E) : set 16 int & get 16 int scantime (000F) : set 16 int & get 16 int sysclock (0010) : set 16 int & get 16 int txcontrol (0012) : set 16 int & get 16 int hscfg (0014) : set 16 int & get 16 int hssetpara (0015) : set 16 int & get 16 int inactoext (0016) : set 16 int & get 16 int dbgscfg (0017) : set 16 int & get 16 int drvdbg (0018) : set 16 int & get 16 int drvdelaymax (001A) : set 16 int & get 16 int intfctrl (001B) : set 16 int & get 16 int setquietie (001C) : set 16 int & get 16 int ctspowerctrl (001E) : set 16 int & get 16 int psmode (001F) : set 16 int & get 16 int setuserscan (0001) : set 2000 byte & get 2000 byte getscantable (0002) : set 2000 byte & get 2000 byte setmrvltlv (0003) : set 2000 byte & get 2000 byte getassocrsp (0004) : set 2000 byte & get 2000 byte addts (0005) : set 2000 byte & get 2000 byte delts (0006) : set 2000 byte & get 2000 byte qconfig (0007) : set 2000 byte & get 2000 byte qstats (0008) : set 2000 byte & get 2000 byte txpktstats (000C) : set 2000 byte & get 2000 byte getcfptable (0009) : set 2000 byte & get 2000 byte mefcfg (000A) : set 2000 byte & get 2000 byte getmem (000B) : set 2000 byte & get 2000 byte 通过iwpriv,我们可以得到AP的一些参数设置,也可以设置自己的WIFI参数。 [root@root- /]#iwpriv mlan0 getband
mlan0 getband:bg -----------------------------------------------------------------
1.WIFI介绍 2.1 wireless-tools安装 1、资源下载 下载wireless_tools.29.tar.gz 2、解压 # tar zxvf wireless_tools.29.tar.gz #cd wireless_tools.29 3、修改Makefile ## Compiler to use (modify this for cross compile). CC = mipsel-linux-gcc 4、编译 #make 5、拷贝 将生成的工具:iwlist、iwconfig、iwpriv等拷贝到目标板上,路径为:/root/app/bin/wifitools/ 2.3 wpa-supplicant安装 Rt73的原始驱动中采用的wpa_supplicant的版本比较旧,是0.5.8,我们采用版本。 1、下载资源 本文使用的是: http://hostap./releases/wpa_supplicant-0.5.11.tar.gz 最新 wpa-supplicant 2、文件修改 对照2009_0206_RT73_Linux_STA_Drv.bz2中WPA_Supplicant-0.5.8的文件,修改0.5.11中的对应文件, 3、解压 # tar zxvf wpa_supplicant-0.5.11.tar.gz # cd wpa_supplicant-0.5.11 4、编译 #cp defconfig .config #使用默认的config #export CC=mipsel-linux-gcc #make 5、安装 将生成的wpa_supplicant 拷贝到目标板上, 路径为:/root/app/bin/wifitools/下 6、编写wpa网络的配置文件wpa_supplicant.conf 在目标板上目录为/root/appb/conf/wifi/下,创建一个wpa_supplicant.conf,键入以下内容: ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 ap_scan=1 network={ ssid="a" #essid psk="111" #密码 } 3. WIFI驱动安装 http://www./data/drivers/2009_0206_RT73_Linux_STA_Drv1.1.0.2.tar.bz2 2、解压 # tar jxvf 2009_0206_RT73_Linux_STA_Drv1.1.0.2.tar.bz2 # cd 2009_2006_RT73_Linux_STA_Drv_1.1.0.2/Module 3、修改Makefile 5 #PLATFORM=PC 6 PLATFORM=CMPC 40 ifeq ($(PLATFORM),CMPC) 41 LINUX_SRC = /opt/smp86xx_kernel_source_2.8.4.1/linux-2.6.15 42 endif 4、编译 # cp Makefile.6 ./Makefile # make 5、安装 在目标板上,先将生成的rt73.ko以及文件rt73sta.dat 与 rt73.bin 拷贝到目标板上。 # cp rt73.ko /root/app/lib/ modules/2.6.15/ # mkdir –p /etc/Wireless/RT73STA # cp rt73.bin /etc/Wireless/RT73STA # cp rt73sta.dat /etc/Wireless/RT73STA # insmod rt73.ko # lsmod 另:ifrename 的使用 touch /etc/iftab --------------------------------------------------------------------------- 移植wireless tools for liunx 要正常使用无线网卡,还要正确配置。linux下的配置工具是wireless-tools,可以在这里下载到它的最新版。
下载后,将源代码解压。再修改其中的makefile文件,将其中的
CC = gcc AR = ar RANLIB = ranlib 改为 CC = arm-linux-gcc AR = arm-linux-ar RANLIB = arm-linux-ranlib 再执行make,编译完成后,将生成的iwconfig,iwlist文件拷贝到rat-linux for mini2440的根文件系统中的/bin目录下,将
libiw.so.29拷贝到/lib目录下。
启动mini2440开发板,进入linux命令行后,执行ifconfig wlan0 up,启动无线网卡。再执行iwlist scanning,此命令可以搜索到
可用的无线网络接入点。我的无线接入点是一台无线路由器,ESSID是"rat-linux",执行此命令后就会下列输出
wlan0 Scan completed :
Cell 01 - Address: 00:19:C6:53:B9:CE ESSID:"rat-linux" Mode:Master Channel:2 Frequency:2.417 GHz (Channel 2) Quality=11/100 Signal level:66/100 Encryption key:on Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s 48 Mb/s; 54 Mb/s Extra:tsf=000000056306469f Extra: Last beacon: 1065ms ago 其中可以看到我的无线接入点是需要密码的。假设密码是123456。使用如下的命令设置密码。 iwconfig wlan0 key 123456 为了能接无线网,还要使用下面的命令设置ESSID
iwconfig wlan0 essid "rat-linux"
其它的参数可以都采用默认的,不用再设了。可以使用下面的命令加入无线网了。
iwconfig wlan0 ap auto 再执行iwconfig wlan0,就可以看到下面的信息。
wlan0 IEEE 802.11bg ESSID:"rat-linux"
Mode:Managed Frequency:2.417 GHz Access Point: 00:19:C6:53:B9:CE Bit Rate=1 Mb/s Tx-Power=27 dBm Retry min limit:7 RTS thr:off Fragment thr=2352 B Encryption key:1234-56 Security mode:open Power Management:off Link Quality=100/100 Signal level:66/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 这就表示已接入无线网。
最后,为无线网卡指定IP地址。命令如下
ifconfig wlan0 192.168.1.30 netmask 255.255.255.0
我的开发主机和无线网卡处于同一网段,因此是可以相互PING通的。因此可以用从开发主机上PING无线网卡的IP地址的方法来确网
卡是否工作正常。从主机上执行ping 192.168.1.30,正常PING通。
至此,无线网卡安装全部完成。 最后,为了方便配置,可以将上述的配置命令写入linux脚本文件,以后,只要执行此脚本,即可完成上述步骤的配置。脚本文件内
容如下。
#! /bin/sh ifconfig wlan0 up
iwconfig wlan0 key 123456 iwconfig wlan0 essid "rat-linux" iwconfig wlan0 ap auto ifconfig wlan0 192.168.1.30 netmask 255.255.255.0 本文来自CSDN博客,转载出处:http://blog.csdn.net/linweig/archive/2010/01/15/5194761.aspx |
|