前面雖然將 VNT6656 的網卡移植ok,但如果無線路由設了密碼,就連不上了,所以還需要移植一個 wpa_supplicant 的工具。
so , what is "wpa_supplicant"?
:它主要是用來支持WEP,WPA/WPA2和WAPI無線協議和加密認證的,而實際上的工作內容是通過socket(不管是wpa_supplicant與上層還是wpa_supplicant與驅動都採用socket通訊)與驅動交互上報數據給用戶,而用戶可以通過socket發送命令給wpa_supplicant調動驅動來對WiFi芯片操作。 簡單的說,wpa_supplicant就是WiFi驅動和用戶的中轉站外加對協議和加密認證的支持。
移植環境:
移植環境:
host (個人pc + 虛擬機) :
fedora 9, 內核版本: Linux localhost.localdomain 2.6.25-14.fc9.i686
編譯工具:gcc 版本 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)
gcc version 4.4.3 (ctng-1.6.1)
target:
FriendlyARM mini2440 開發板;
內核:Linux FriendlyARM 2.6.32.2-FriendlyARM #2 Sat Dec 1 12:06:04 CST 2012 armv4tl unknown
網卡:VNT6656AU
移植步驟:;
一、下載源碼
http://hostap.epitest.fi/wpa_supplicant/
下載wpa_supplicant-0.7.3.tar.gz (openssl用到0.7.3提供的補丁)
#tar xvfz wpa_supplicant-0.7.3.tar.gz
下載www.openssl.org/source/openssl-0.9.8e.tar.gz
#tar zxvf openssl-0.9.8e.tar.gz
二、編譯openssl庫
將wpa_supplicant中的補丁拷貝到openssl中
# cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/
#cd openssl-0.9.8e
#mkdir /usr/local/ssl
#vim Makefile
CC= arm-linux-gcc
AR= arm-linux-ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
INSTALLTOP=/usr/local/ssl
OPENSSLDIR=/usr/local/ssl
#make
#make install
在/usr/local/ssl目錄下安裝了ssl庫
#ls /usr/local/ssl
#bin certs include lib man misc openssl.cnf private
後面編譯wpa_supplicant要依賴openssl中的lib和include
三、編譯wpa_supplicant
進入wpa_supplicant-0.7.3.tar.gz解壓生成的wpa_supplicant-0.7.3/wpa_supplicant目錄中:
#cp defconfig .config
#vim .config
CC=arm-linux-gcc -L/usr/local/ssl/lib/
#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
CFLAGS += -I/usr/local/ssl/include
#CPPFLAGS += -I../src/include -I../../src/router/openssl/include
LIBS += -L/usr/local/ssl/lib
#make
/*注:這裏可能出現很多編譯錯誤!不過不要慌張,認真看下到底是什麼錯誤!基本上都是缺少函數聲明,
不知道作者爲什麼會犯這樣的錯誤。比如在wpa_supplicant.c中對某個函數沒有定義,這時應該用grep
或者cscope等工具查找該函數名,找到在頭文件裏的定義,然後將頭文件寫入該文件中就可以了!
*/
經過編譯後的wpa_supplicant源程序可以看到兩個主要的可執行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的關係就是服務和客戶端的關係:後臺運行wpa_supplicant,使用wpa_cli來搜索、設置、和連接網絡。還有wpa_passphrase, 來加密明文密碼。將這3個文件拷貝到開發板的 /var/run 目錄下。
四、配置wpa_supplicant
在板子根目錄/etc中建立wpa_supplicant.conf文件
文件內容如下
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="TP-LINK_5C5472" //填寫無線網絡的的用戶名
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk="xray030907" //填寫密碼
}
注意要與你的無線路由中的設置對應。
另外要注意的是,無線路由中的模式應該設爲 : 11bg mixed
否則會出現些腦殘情況!
五、測試
insmod vntwusb.ko
ifconfig eth1 up
iwconfig eth1 essid TP-LINK_5C5472
wpa_passphrase TP-LINK_5C5472 密碼 >> /etc/wpa_supplicant.conf
之後wpa_supplicant.conf中會添加以下內容,然後把最後面的經過加密的密碼修改到上面去,再把下面的內容刪掉!
network={
ssid="TP-LINK_5C5472 "
#psk="1234567890"
psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba
}
如:
network={
ssid="TP-LINK_5C5472"
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk=1afb28b0c256957de410fa84239a95fe03fb9991c4e5eb581bb1c7ee4132563d
#psk="xray030907"
}
鏈接AP
wpa_supplicant -i eth1 -c /etc/wpa_supplicant.conf -B
再執行udhcpc -i eth1 可以順利獲取ip
目前許多WIFI都採用 AES的加密方法,所以 pairwise group 兩個選項中要加 CCMP
選項,來支持 AES加密,所以最終的樣子應該如下:
network={
ssid="TP-LINK_5C5472"
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk=1afb28b0c256957de410fa84239a95fe03fb9991c4e5eb581bb1c7ee4132563d
#psk="xxxxxxxx"
}
移植過程主要參考了:http://blog.csdn.net/ti_tantbx/article/details/7037741的方法,多謝ti_tantbx 的熱心分享!
wpa_supplicant 移植
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux kernel輪詢與等待隊列
Eric_Xi_BJ
2020-07-02 00:24:57
Linux 內核中的併發--中斷屏蔽
Eric_Xi_BJ
2020-07-02 00:24:57
(一)Linux ALSA 音頻系統:物理鏈路篇 Linux ALSA 音頻系統:物理鏈路篇
Jeet Liu
2020-06-27 12:49:10
Linux audio 驅動架構,audio物理鏈路+邏輯設備詳細描述(codec + platform + machine底層三大塊) Linux ALSA 音頻系統:物理鏈路篇
Jeet Liu
2020-06-27 12:49:09
一些深層次問題 ms問題
hehe1226
2020-06-19 02:29:23
linux下編譯運行驅動
zeroboundary
2020-06-16 08:06:37
gpio驅動重構版,未優化,附上測試demo
zs_2016
2020-06-03 16:26:36
Linux設備驅動模型kobject
水无声风无痕
2020-02-25 05:53:40
i/o 模擬IIC 寫的比較好的
hehe1226
2020-02-24 07:15:34
和菜鳥一起學linux總線驅動之i2c死鎖問題
hehe1226
2020-02-24 07:15:33
配置學習總結高通平臺GPIO
Joymine
2020-02-23 16:05:51
tslib-1.4的安裝與移植
ccReader
2020-02-23 00:48:01
使用iMX53 IPU SISG功能控制攝像頭閃光燈
chychc
2020-02-22 19:09:33
Linux ffs 命令
chychc
2020-02-22 19:09:33