Liunx下借助wireless_toolswpa_supplicant(因為現在的無線wifi網路大多是wpa加密。所以需要移植wpa_supplicant工具)等工具實現wifi的過程。



一、移植wireless_tools

1. 編譯wireless_tools

    tar zxf  wireless_tools.29.tar.gz(網上下載)

    cd wireless_tools.29

    make

    成功后會在當前目錄生成iwspyiwpriviwlist以及iwconfig等文件。

2. 文件

    我們只需將這四個文件拷備到文件系統的sbin目錄,然后將當前目錄的libiw.so.29庫文件拷到文件系統的lib目錄,無線網路工具即安裝完成。



 

二、加載無線網驅動

    網上有很多無線驅動模塊,可移植性很好。呵呵,我的是利用XX無線網卡公司提供的網卡驅動源碼,修改下Makefile1.網卡選擇 2.平台  3.內核路徑和工具鏈)以及os/linux下的config.mk(一般不需要修改),make得到的。

    insmod rtutil5572sta.ko
    insmod rt5572sta.ko
    insmod rtnet5572sta.ko



三、指令的使用

1.  描可用的無線網路

    iwlistwifi-name scanning 

    其中wifi-name為無線網卡的名字,比如網卡eth0就是系卡名字wifi-name可以用ifconfig查看,一般ra0(無線網),不,需要ifconfig ra0 up

2.  網路信息

    iwlistra0 scan

===>rt_ioctl_giwscan.11(11) BSS returned, data->length = 1427 

ra0       Scan completed : 

          Cell 01 - Address:C4:CA:D9:1D:9E:A0 

                    Protocol:802.11b/g/n 

                    ESSID:"" 

                    Mode:Managed 

                    Frequency:2.412 GHz(Channel 1) 

                    Quality=7/100  Signal level=-87 dBm  Noise level=-82 dBm 

                    Encryption key:off 

                    Bit Rates:54 Mb/s 

    如上:ESSID項的值即為無線網路的名字,如上的“TXJ”等。如果值為空,說明在無線路由勾選了隱藏ESSID的選項。ESSID是很關鍵的,如果被隱藏了,也不是不能連接,而是需要破解,用到其他的工具,非常麻煩。

3. 置要接的網路類

      iwprivra0 set NetworkType=Infra 

4. 置要接的無線網路的安全模式

      iwprivra0 set AuthMode=WPA2PSK 

5. 網路加密方式:(CCMPAES

      iwprivra0 set EncrypType=TKIP  

6. 的密

      iwprivra0 set WPAPSK=*******  //********為加密網路的密碼

7. 該網路:有兩種方式:

<1> iwpriv命令

    iwpriv ra0 set SSID=TXJ

<2> iwconfig命令

    iwconfigra0 essid TXJ

    至此,如果密碼正確,就可以連接上網路TXJ了。 但這種方式不太穩定,時好時壞,最好使用下面的wpa_supplicant方式。

8. 查看狀態

    iwpriv ra0 connStatus 

    當然,你也可以用iwconfig命令查看狀態。



 

四、wpa_supplicant

   wpa_supplicant本 是開源項目源碼,被谷歌修改后加入android移動平台,它主要是用來支持WEPWPA/WPA2WAPI無線協議和加密認證的,而實際上的工作內 容是通過socket(不管是wpa_supplicant與上層還是 wpa_supplicant與驅動都釆用socket通訊)與驅動交互上報數據給用戶,而用戶可以通過socket發送命令給 wpa_supplicant調動驅動來對WiFi芯片操作。 簡單的說,wpa_supplicant就是WiFi驅動和用戶的中轉站外加對協議和加密認證的支持。

    wpa_supplicant由網卡公司提供,呵呵,衕樣,網上也有很多相關資料,如下:

1.生成wpa_supplicant上下,本人未

1.1并解wpa_supplicant需要的源

    tarxvfz wpa_supplicant-0.7.2.tar.gz

    tarxvfz wpa_supplicant-0.5.8.tar.gz

    tarzxvf openssl-0.9.8e.tar.gz

1.2編譯openssl

wpa_supplicant中的補丁拷貝到openssl中:

       cp wpa_supplicant-0.7.2/patches/openssl-0.9.8e-tls-extensions.patch  openssl-0.9.8e/

建立openssl編譯目標路徑:

      mkdir /usr/local/ssl

修改openssl-0.9.8e目錄下的makefile文件,修改內容如下:

    CC=arm-none-linux-gnueabi-gcc

    AR=arm-none-linux-gnueabi-ar

    RANLIB=arm-none-linux-gnueabi-ranlib

    INSTALLTOP=/usr/local/ssl

    OPENSSLDIR=/usr/local/ssl

然后編譯openssl:

    make & make install

正常編譯后,在/usr/local/ssl中將會出現ssl庫。

1.3編譯wpa_supplicant

    cd  wpa_supplicant-0.5.8

    cp  defconfig .config

.config中添加如下代碼:

    CC=arm-none-linux-gnueabi-gcc-L /usr/local/ssl/lib/

    CFLAGS+= -I/usr/local/ssl/include/

    LIBS+= -L/usr/local/ssl/lib/

然后編譯:

    make

 經過編譯后的wpa_supplicant源程序可以看到兩個主要的可執行工具:wpa_supplicantwpa_cliwpa_supplicant是核心程序,它和wpa_cli的關系就是服務和客戶端的關系:后台執行wpa_supplicant,使用wpa_cli來搜索、設置、和連接網路。



2.RT2870STA.dat文件制到/etc/Wireless/RT2870STA

    1.1 mkdir -p /etc/Wireless/RT2870STA //建多

    1.2 cp /mnt/rt5370/RT2870STA.dat  /etc/Wireless/RT2870STA

 

3.首先關閉本地卡,再啟動wifi

    #ifconfig eth0 down (如果非衕一ip段,不需要關閉)

    ifconfig ra0 up

    啟動網卡后,現錯誤BIRIdx(1): RXDMALen not multiple of 4.[43507], BulkInBufLen = 416)
   
修改./MODULE/include/iface/rtmp_usb.h問題就能夠解決掉。
    #define RXBULKAGGRE_SIZE  12
該為



4.參數

    ifconfig ra0  192.168.2.188

    #ifconfig ra0  broadcast 192.168.2.255 (廣播地址,默認)

    #ifconfig ra0  netmask 255.255.255.0(子網掩碼,默認)

 

5.編寫wpa_supplicant.conf配置文件

    ctrl_interface=/var/run/wpa_supplicant

    network={

             ssid="TXJ"  //路由器名稱

             scan_ssid=1

             key_mgmt=WPA-EAP WPA-PSK IEEE8021XNONE

             pairwise=TKIP CCMP

             group=CCMP TKIP WEP104 WEP40

             psk="xxxxx" //密碼

            }

 

6.啟動命令

    mkdir -p /var/run/wpa_supplicant

    /mnt/rt5370/wpa_supplicant -Dwext-ira0 -c /etc/wpa_supplicant.conf

7.命令查看狀態

  /mnt/rt5370/iwpriv ra0 connStatus   //iwpriv文件放在/mnt/rt5370/下,所以,需要這樣執行指令。

  成功 ra0  connStatus:Connected(AP:TXJ[E0:05:C5:CF:F0:56])

  然后,就可以ping192.168.2.1接上路由器了。那么,工作就完成了。

附:

    -i<ifname>: 網路埠名稱 

    -c<conf>:配置文件名稱

    -C<ctrl_intf>:控制埠名稱

    -D<driver>:驅動類型

    -p<driver_param>:驅動參數

    -b<br_ifname>:橋埠名稱

 

rt5370支持WPSrt3070不支持。

 http://blog.csdn.net/huangblog/article/details/8556234

arrow
arrow
    全站熱搜

    立你斯 發表在 痞客邦 留言(0) 人氣()