第十七章:STA模式USB WIFI驅動移植
1、下載原始碼
首先將原始碼複製到ubuntu中實驗目錄,並解壓開,這裡我們用到的是sta模式,所以解壓MT7601U_LinuxAP_3.0.0.1_20130802.tar.bz2這個檔案。
我們這裡解壓之後放在了以下目錄中.
2、修改移植
修改sta/MT7601U_LinuxAP_3.0.0.1_20130802資料夾下的主makefile
首先遮蔽SMDK,其次增加核心原始碼樹路徑、交叉編譯鏈、平臺架構等資訊,具體新增內容如下:
修改include/rtmp_def.h中1627行左右,修改網路名始終為:wlan
修改os/linux/目錄下的config.mk。增加以下內容。
修改完成之後,再次make,就會在os/linux/目錄下生成mt7601Usta.ko檔案,之後將其拷貝進開發板的檔案系統中,載入就能使用。
3、部署到開發板
首先將上面編譯好的RT2870STA.dat,複製到開發板的檔案系統中的/etc/Wireless/RT2870STA目錄下。
RT2870STA.dat檔案在原始碼目錄下。
然後將上述檔案拷貝到開發板中的/etc/Wireless目錄下
4、移植wpa_supplicant
需要用到wpa_supplicant-2.5.tar.gz和openssl-0.9.8za.tar.gz,這兩個檔案在第一點那邊下載的時候,就有包含在裡面。
在移植wpa_supplicant之前還需要移植openssl。
4.1、移植openssl
給openssl打補丁。把wpa_supplicant-2.5裡面的patches資料夾下的openssl-0.9.8za-tls-extensions.patch檔案拷貝到openssl-0.9.8za目錄下,執行:patch -p1 < openssl-0.9.8za-tls-extensions.patch
4.2、修改makefile
修改openssl-0.9.8za目錄下的makefile,設定將來編譯好的時候,安裝的目錄,還有設定相關的編譯鏈。
然後執行make,編譯完成後,再執行make install,如果出現以下錯誤,原因:OpenSSL 與 perl版本不相容
解決方法:rm -f /usr/bin/pod2man
當然,如果你在上面有刪除install_docs的話,一般就不會碰到這個錯誤。
安裝完成之後,在安裝目錄下就會有這些東西了。
4.3、編譯wpa_supplicant
首先進入解壓好的wpa_supplicant-2.5/wpa_supplicant路徑中。將defconfig變成.config檔案。
執行命令:cp defconfig .config
在此修改wpa_supplicant原始碼目錄下的makefile(wpa_supplicant-2.6/wpa_supplicant資料夾中)
CC=arm-hisiv300-linux-gcc -L/home/aston/hi3518/usb/MT7601_driver/sta/openssl_install/lib
CFLAGS+=-I /home/aston/hi3518/usb/MT7601_driver/sta/openssl_install/include
LIBS+=-L/home/aston/hi3518/usb/MT7601_driver/sta/openssl_install/lib
其中:/home/aston/hi3518/usb/MT7601_driver/sta/openssl_install這個目錄是之前安裝openssl的目錄。
在wpa_supplicant-2.5/wpa_supplicant目錄下執行make後,報錯。
退回到wpa_supplicant-2.6的主目錄下執行make後,報錯。
上網查詢之後,發現要麼安裝libnl,要麼修改.config檔案,註釋 CONFIG_DRIVER_NL80211=y,在執行make,就好生成wpa_supplicant和wpa_cli。
最後將wpa_supplicant和wpa_cli檔案拷貝到nfs檔案系統中的/usr/bin目錄下。
5、部署wpa_supplicant
首先將wpa_supplicant、wpa_cli放到海思開發板/usr/bin目錄下
cp wpa_supplicant /usr/bin
然後建立配置檔案/etc/wap_supplicant.conf,內容如下:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="pipixia-lets-go"
scan_ssid=1
key_mgmt= WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=TKIP CCMP
group=CCMP TKIP WEP104 WEP40
psk="******"//密碼
}
6、sta模式的USB WIFI設定
首先安裝驅動,我們先前將mt7601Usta.ko複製到了開發板檔案系統中的/home目錄。
insmod /home/mt7601Usta.ko
然後設定靜態IP地址,這裡先要確認清楚自己的pc主機的ip地址,將開發板的網段設定和pc一直,這裡我的電腦ip地址是192.168.1.102。
ifconfig wlan0 up, ifconfig wlan0 192.168.1.120
之後使用開發板sta連線AP (-dd開啟除錯資訊)
wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -dd &
完成後,輸入命令wpa_cli -i wlan0 status檢視連線狀態
注:這時候可以ping我的pc主機192.168.1.102,但是會發現ping不通。主要原因是之前還有一個有線網絡卡,這時候使用命令:ifconfig eth0 down 關閉有線網絡卡。然後再ping主機就可以ping通了。
如果想上外網,就需要新增
route add default gw 192.168.0.1 dev wlan0
這時候ping 8.8.8.8就能ping通。
8、測試用例準備
參考之前移植的ortp庫,進行修改host端的ip地址。
參考帖子:
修改Hi3518E_SDK_V1.0.3.0/mpp/sample/common目錄下的sample_common_venc.c檔案。
將LOCAL_HOST_IP為192.168.1.102。(和我的Widnows的WIFI自動分配的IP一樣)
修改完成之後,進入Hi3518E_SDK_V1.0.3.0/mpp/sample/venc目錄下,執行make clean,然後再執行make,最後生成新的sample_venc檔案,放在開發板檔案系統中,將來就可以使用了。
最後開發板端執行 ./sample_venc 0
PC端開啟vlc播放器,修改sdp配置,注意c=IN IP4 192.168.1.102,就能播放了。