999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式Linux下Wi—Fi接入技術研究

2014-10-30 16:30:22范延濱李小康
物聯網技術 2014年10期

范延濱 李小康

摘 要:討論了在嵌入式Linux下實現Wi-Fi接入的方法。在分析嵌入式Linux下無線網絡驅動程序架構和無線網絡的配置工具——Linux Wireless Tools和wpa_supplicant的基礎上,結合Tiny210開發板平臺,通過實例介紹了在嵌入式Linux平臺上連接基于WPA/WPA2加密技術的Wi-Fi連接點的原理和方法。

關鍵詞:嵌入式Linux;Wi-Fi;wap_supplicant;無線網絡

中圖分類號:TP316.2 文獻標志碼:A 文章編號:2095-1302(2014)10-00-03

0 引 言

Wi-Fi也稱為WLAN(wireless local-area network,無線局域網),是有線LAN的補充。Wi-Fi實際上是一個無線網絡通信技術的品牌,由Wi-Fi聯盟持有,目的是改進基于IEEE 802.11標準的無線網路產品之間的互通性。隨著Wi-Fi技術的發展,產生了許多協議標準:IEEE 802.11.a WLAN標準使用5 GHz ISM頻段,支持最高54 Mb/s的速率;802.11b和802.11g標準使用2.4 GHz頻段,分別支持11 Mb/s和54 Mb/s的速率。作為一種比較成熟的無線通信技術,Wi-Fi在嵌入式設備中得到了廣泛的應用,尤其是在嵌入式Linux環境中。本文探討了在嵌入式Linux環境下Wi-Fi技術的應用,首先介紹了Wi-Fi設備驅動程序的相關內容,然后介紹了一些嵌入式Linux下無線網絡配置工具及其特點,最后分析了嵌入式Linux環境下通過Wi-Fi接入網絡的方法。

1 Linux下Wi-Fi設備驅動程序

目前,Linux無線網絡驅動程序的架構如圖1所示:

圖 1 Linux無線網絡驅動程序架構

由圖1可知,Linux無線驅動程序主要包括以下4個部分:用戶空間、cfg80211無線網絡配置API、mac80211驅動程序和非mac80211驅動程序,這幾個部分組成了一種層次結構,共同完成無線網絡的接入和配置。

最底層是設備驅動程序層,包括mac80211和非mac80211兩種驅動程序。mac80211是一種標準的驅動程序框架,推薦未來的無線設備驅動程序采用此框架來編寫。mac80211驅動程序為上層提供了兩種不同的接口:Wext接口(Wireless Extensions接口,Linux內核中為無線網絡提供支持的接口,是一種比較老的接口)和cfg80211 ops接口。其中Wext接口為基于Wext接口的應用程序提供支持,而cfg80211 ops接口為上層cfg80211提供支持。而非mac80211驅動程序是比較老的驅動程序,僅對Wext接口提供支持。

cfg80211下層使用mac80211驅動程序的接口,為上層的應用程序提供標準的無線設備配置接口。nl80211是采用cfg80211接口的應用程序庫,有多種基于該應用程序庫的無線網絡配置程序,例如iw、crda、hostapd和wpa_supplicant(當使用-Dnl80211選項時) 。

一個WNIC(Wireless Network Interface Controller,無線網絡接口控制器)可以工作在以下幾種模式下:

基站模式(STA)。任何無線設備驅動程序都可以在該模式下工作,這種模式可以認為是默認模式。在該模式下工作的網卡需要連接到一個在AP模式下工作的網卡。這種模式在Wireless Extensions配置工具下被成為managed。

接入點模式(AP)。在接入點模式下工作的網卡又被稱為主設備。它通過管理和維護接入它的STA的列表來管理整個無線網絡。一個無線網絡以AP的BSSID(Basic Service Set ID)命名。

監聽模式(MON)。這是一個被動模式,工作在該模式下的無線網卡只接收數據包,不會發送數據包。使用mac80211,一個無線網卡在正常工作時也可以以監聽模式工作,并且可以發送數據包。

點對點模式(Ad-Hoc)。也被成為IBSS(Independent Basic Service Set)模式,用來在沒有AP的情況下創建無線網絡。在該模式下,網絡中的每個節點獨立維護網絡。

無線分布式系統模式(WDS)。該模式用來實現多個AP之間的連接。

Mesh模式。該模式允許多個設備之間通過建立動態路由來通信。

以上模式中,最為常用的是前兩種模式。我們通常使用的無線路由器其實就工作在AP模式下,我們可以通過使用手機或者筆記本電腦連接到路由器,手機和筆記本電腦的無線路由器就工作在STA模式下。

Wi-Fi網絡的加密方式主要有WEP(Wired Equivalent Privacy)、WPA(Wi-Fi Protected Access)和WPA2(即WPA的加強版)。WEP加密方式在同一個網絡中的所有設備使用相同的64 b或者128 b的密鑰,安全性很低。因此現在一般采用WPA加密方式。WPA又分為家用的WPA-PSK(Pre-Shared Key)和企業用的WPA-Enterprise版本。WPA實現了IEEE 02.811i標準的大部分。WPA 超越 WEP 的主要改進就是在使用中可以動態改變密鑰的“臨時密鑰完整性協定”(Temporal Key Integrity Protocol,TKIP),加上更長的初向量,這可以擊敗知名的針對 WEP 的密鑰擷取攻擊 。WPA2與WPA的差別在于,它使用更安全的加密技術AES (Advanced Encryption Standard),因此比WPA更難被破解、更安全。

2 Wi-Fi配置工具

Linux下比較常用的無線網絡配置工具主要有Linux Wireless Tools和wpa_supplicant。Linux Wireless Tools是一種比較老的無線網絡配置工具。wpa_supplicant主要用來支持WPA和WPA2,而Linux Wireless Tools不提供支持。與運行于內核空間的驅動程序不同,這兩個工具都是運行在用戶空間的軟件。

2.1 Linux無線工具(Linux Wireless Tools)

無線擴展(Wireless Extension)定義了一組驅動程序提供給應用程序的通用的API,使用基于該API的工具集可以實現對任意無線網卡的配置,并且可以在不重啟驅動程序的情況下修改配置參數。無線工具集主要包括iwconfig、iwlist、iwspy、iwpriv和ifrename。iwconfig可以修改最基本的網絡參數。iwlist可以掃描并列舉頻率、位速率和加密方式。iwspy可以獲取一個節點的連接質量。iwpriv可以針對特定的無線網卡驅動程序進行操作。ifrename可以基于各種動態標準對接口命名。

2.2 wpa_supplicant

wpa_supplicant在使用時作為一個后臺進程運行,用來控制無線連接,可以認為是一個服務進程。wpa_supplicant的設計目標是對所有的WPA功能使用與硬件、驅動程序和操作系統無關的C代碼。其他的程序作為客戶端進程與wpa_supplicant通信,向wpa_supplicant發送命令。wpa_supplicant源代碼中提供了wpa_cli(一個文本界面的命令程序)和wpa_gui(一個圖形界面的程序)作為客戶端程序與wpa_supplicant通信。當wpa_supplicant作為后臺進程運行時,就可以使用這兩個工具來控制無線連接。

3 嵌入式Linux下Wi-Fi連接的實現

嵌入式Linux下實現Wi-Fi連接,主要包括以下幾個步驟:

(1)移植相應無線網卡的驅動程序;

(2)移植Linux Wireless Tools和wpa_supplicant工具;

(3)使用Linux Wireless Tools和wpa_supplicant工具配置Wi-Fi連接。

本文使用的開發平臺是有善之臂的Tiny210,使用的無線網絡芯片是具有SDIO接口的Marvell8686,采用busybox構建了基本的根文件系統。

(1)加載無線網卡設備驅動程序

友善之臂提供了已經編譯好的Marvell8686驅動程序模塊,在其提供的跟文件系統的/lib/modules/3.0.8-FriendlyARM/目錄下有已經編譯好的Linux驅動程序模塊,將該目錄拷貝到自己構建的跟文件系統目錄下。在此之前,確保開發板燒寫的Linux內核版本為3.0.8,以保證驅動程序模塊版本與內核版本一致。在/etc/init.d/rcS啟動腳本中添加如下命令:

modprobe libertas_sdio 2>/dev/null

以上命令的作用是在系統啟動時,加載libertas_sdio模塊。使用該命令在加載內核模塊時不需要指明模塊的路徑,它會自動從/lib/modules目錄下尋找合適的驅動加載。

對于其他的無線網卡驅動程序,加載的方法是類似的,也可以先編譯出內核模塊,用insmod命令加載。

(2)移植Linux Wireless Tools工具

下載Linux Wireless Tools并解壓,修改Makefile文件,將gcc、ar、ranlib分別修改為arm-linux-gcc、arm-linux-ar、arm-linux-ranlib。使用make命令編譯,編譯完成后,將libiw.so.29拷貝到根文件系統 lib目錄下,將編譯生成的iwevent、ifrename、iwconfig、iwlist、iwpriv、iwspy拷貝到根文件系統的/bin目錄下。

(3)移植wpa_supplicant

wpa_supplicant需使用OpenSSL庫。OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,并提供豐富的應用程序供測試或其它目的使用。

首先下載wpa_supplicant-0.7.3和openssl-0.9.8e,解壓源碼包,將wpa_supplicant中的openssl補丁拷貝到openssl源碼目錄下。

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

建立目錄/usr/local/ssl,以保存編譯好的openssl庫。

cd openssl-0.9.8e,進入源碼目錄,修改Makefile文件,修改如下變量:CC= arm-linux-gnu-gcc ;AR= arm-linux-gnu-ar $(ARFLAGS) r;RANLIB= arm-linux-gnu-ranlib;INSTALLTOP=/usr/local/ssl;OPENSSLDIR=/usr/local/ssl。執行make,make install命令,可以在/usr/local/ssl目錄下生成openssl庫文件,這些庫文件是靜態庫文件。

編譯wpa_supplicant方法如下:將源碼目錄下的defconfig文件重命名為.config文件。修改.config文件:CC= arm-linux-gnu-gcc -L/usr/local/ssl/lib/(連接靜態庫);CFLAGS += -I/usr/local/ssl/include/;LIBS += -L/usr/local/ssl/lib/。執行make命令編譯,即可在源碼目錄下生成可以在開發板上運行的wpa_supplicant程序,包括wpa_cli、wpa_passphrase、bin/wpa_supplicant等,將這些程序拷貝到開發板的/bin目錄下。

(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

(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

(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

主站蜘蛛池模板: 久久永久精品免费视频| 超碰色了色| 99国产精品一区二区| 成人第一页| 中文字幕 91| 国产欧美视频综合二区| 国产精品欧美激情| 黄色网页在线观看| 欧美日本激情| av在线5g无码天天| 国产免费久久精品99re丫丫一| 人人91人人澡人人妻人人爽| 国产午夜一级毛片| 国产精选小视频在线观看| 永久免费AⅤ无码网站在线观看| 玖玖免费视频在线观看| 欧美成人aⅴ| 无码免费试看| 风韵丰满熟妇啪啪区老熟熟女| 亚洲高清资源| 99久久99视频| a级高清毛片| 51国产偷自视频区视频手机观看| 欧美精品三级在线| 久久精品国产精品青草app| 日韩亚洲综合在线| 天堂成人在线视频| 亚洲人成网7777777国产| 欧美精品啪啪一区二区三区| 粉嫩国产白浆在线观看| 国产成人亚洲综合a∨婷婷| 波多野结衣第一页| 中文字幕66页| 日本一区二区不卡视频| 国内精品小视频福利网址| 免费三A级毛片视频| 国产免费高清无需播放器| 亚洲第一中文字幕| 亚洲视屏在线观看| 四虎国产永久在线观看| 中文字幕中文字字幕码一二区| 久久国产V一级毛多内射| AV不卡国产在线观看| 国内精品免费| 国产乱子伦精品视频| 99在线视频免费观看| 国产色伊人| 91免费国产高清观看| 久青草国产高清在线视频| 最新亚洲人成网站在线观看| 国产在线专区| 欧美啪啪网| AⅤ色综合久久天堂AV色综合| 亚洲伦理一区二区| 国产一二三区视频| 伊人色天堂| 亚洲色婷婷一区二区| 成人免费黄色小视频| 国产精品成人免费视频99| 波多野结衣中文字幕一区二区 | 亚洲国产中文欧美在线人成大黄瓜| 国产人成网线在线播放va| 在线播放国产99re| 一级毛片在线播放免费| 精品午夜国产福利观看| 亚洲色图综合在线| 亚洲一区免费看| 97国产在线视频| 全午夜免费一级毛片| av大片在线无码免费| 免费国产高清精品一区在线| 91麻豆精品视频| 91www在线观看| 91麻豆精品视频| 国产精品微拍| 九月婷婷亚洲综合在线| 天天躁日日躁狠狠躁中文字幕| 国产在线观看一区精品| 国产精品欧美激情| 最新国产成人剧情在线播放| 第一区免费在线观看| 亚洲国产欧美国产综合久久|