USB-WiFi在x210板子上的移植
以下內容源于朱有鵬嵌入式課程的學習,如有侵權,請告知刪除。
一、本課程內容
1、MT7601驅動的移植
(1)開發環境搭建和確認
(2)源碼獲取和解壓
(3)配置、編譯、安裝
最后得到網絡設備文件。
2、無線網卡的配置和使用
(1)常用無線網卡工具包介紹:iwconfig、iwlist、iwpriv、wpa_supplicant(2)常見WIFI加密格式介紹:WEP、WPA(一般使用這個)
(3)wpa_supplicant使用詳解
(4)配置本地IP地址、網關、dns等并確認外網連接
上面是在官方的已經配置好的rootfs上配置,下面是在自己制作rootfs上配置。
3、在自己定制的rootfs中移植USB WIFI
(1)自己定制rootfs(2)移植wifi驅動并安裝
(3)移植iwconfig工具集(LWE)
(4)移植wpa_supplicant
上面是靜態分配ip。下面是自動獲取ip地址,通過dhcp功能。
4、在自己定制的rootf中添加dhcp支持
(1)在內核和busybox配置中添加dhcp支持(2)移植dhcpc和dhcpd并使用
二、項目各項材料的準備和確認
1、開發環境搭建和確認
(1)ubuntu14.04
(2)內核源碼樹
(3)開發板運行著官方linux+QT4.8鏡像(在開發版光盤資料\X210V3S_B\linux\QT4.8)root 123456
(4)nfs服務器和文件夾形式的rootfs
mount -t nfs -o nolock 192.168.1.100:/root/rootfs /opt
2、網卡驅動源碼確認
(1)DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz23、USB WIFI網卡硬件確認
(1)網卡基本信息介紹(2)lsusb查看網卡的VID(產商id):PID(產品id)
Bus 001 Device 003: ID 148f:7601
三、驅動源碼修改及編譯
1、確認USB的VID和PID
(1)源碼包中rtusb_dev_id.c文件。如果沒有該usb對應的vid和pid在該數組中,移植時要添加。
- find -name "rtusb_dev_id.c"得知在/common/rtusb_dev_id.c中。
- 或者grep "rtusb_dev_id"
2、修改Makefile
(1)平臺換成:三星
- PLATFORM = SMDK
(2)內核源碼樹路徑設置
- LINUX_SRC = ?//改為實際的linux內核源碼樹
(3)交叉工具鏈路徑設置
- CROSS_COMPILE = ?//交叉編譯環境
3、修改網卡名字(可選)
(1)常用無線網卡名稱:rax、wlanx- 有線的一般叫ethn
(2)修改include/rtmp_def.h文件
- #define INF_MAIN_DEV_NAME "ra"
- #define INF_MBSSID_DEV_NAME "ra"
4、添加wpa_supplicant支持
- 確保config.mk文件中WPA_SUPPLICANT=y
5、編譯生成驅動模塊
(1)清理&編譯
- make clean,make -j2,生成os/linux/mt7601Usta.ko就是驅動模塊
(2)modinfo?mt7601Usta.ko可以查看驅動信息。
四、USB WIFI網卡驅動源碼簡單分析
主要對應上節設置的解釋。
上面安裝驅動后,還需要進一步裝載、配置等。
五、WIFI網卡的配置過程
掛載,然后安裝驅動(成功后肯定得到一個設備文件(可以ifconfig -a查看),可以打開網卡ifconfig ra0 up),打印出一系列信息。
但是打開后還不能上網,因為沒有經過配置。
1、iwconfig工具集的介紹和使用演示
(1)linux下專用來配置無線網絡的一些命令集,這些命令集比較老了。
(2)因為iwconfig本身有一定限制,它只支持一定的加密格式,在我們這里不用。
2、路由器端基礎知識
ap(路由器端)和station(手機)
(1)路由器的WAN、LAN
(2)無線參數:SSID(路由器的名字)、頻段(2.4G附近分割成若干頻段,每個用戶使用不同頻段)、模式(工作在哪種標準)
(3)安全類型:WEP(早版本)和WPA(升級版)、WPA2(完整版)
(4)安全選項
(5)加密算法
(6)PSK密碼
3、wpa_supplicant配置文件
(1)wpa_supplicant簡介
- 進行wifi網絡管理的工具,也集成到了busybox中,即可以直接用。
(2)建立/etc/Wireless/RT2870STA/目錄(mkdir -p /etc/Wireless/RT2870STA/(這是wifi網卡的配置文件)),然后拷貝RT2870STA.dat(源碼中有)到此目錄下。
(3)編輯/etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicantnetwork={key_mgmt=WPA-PSKssid="newifi_inaqui"psk="inaqui12" }
4、網卡配置(上網)命令順序
(1)安裝驅動程序:insmod mt7601Usta.ko
(2)開啟無線網卡:ifconfig ra0 up
(3)連接無線網絡:wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0
(4)查看連接狀態:wpa_cli -i ra0 status
至此,usb_wifi已經連上了路由器。
(5)關于手工設置靜態IP
因此,我只能使用dhcp的形式,ping通內網。如果能通過qt界面登錄校園網賬號,就可以ping外網的內容了。
-----------------------------------------------------------------------------------------------
因此下面的操作,無法正常運行。
(1)ifconfig eth0 down
(2)ifconfig ra0 192.168.1.200 ?//手動配置ra0的ip地址,和路由器處于同一網段
(3)route add default gw 192.168.1.1 dev ra0 ?//配置網關(配置網關才能訪問外網)
- ping 192.168.1.1 ? ?//ping 網關
- ping 8.8.8.8 ? ? ? ?//ping 外網(谷歌某地址)
(4)vi /etc/resolv.conf ?//配置dns。即在此文件里添加nameserver xx.xx.xx.xx(根據實際)
- ping www.baidu.com ??
(5)注意:
1、ra0的配置和上網前,一定要先關掉eth0(ifconfig eth0 down),否則你ping或者設置等等都是默認使用的eth0而不是ra0.
2、當wifi網卡連接上路由器后,想要ping通路由器(網關),本地wifi網卡需要和網關同一網段的ip地址。這個本地的ip地址可以dhcp分配,也可以手工配置一個。
3、本地有了ip地址,并且wifi網卡通過wpa_supplicant配置連上路由器后,就能ping通網關了。但是這時還不能ping通外網,因為本地還沒有添加網關配置。添加網關配置有2種方法:通過route命令動態添加,或者通過/etc/network/interfaces文件添加。
4、添加網關后就能ping通外網IP了,但是還ping不通www.baidu.com等域名,因為還沒有dns。
5、使用interfaces文件靜態配置IP地址
(1)手工操作insmod mt7601Usta.ko ? ? ? ? ? ?//安裝驅動程序
ifconfig ra0 up ? ? ? ? ? ? ? ? //開啟無線網卡
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 ?//連接無線網絡
wpa_cli -i ra0 status ? ? ? //查看連接狀態
(2)interface文件
第一步,編輯好interface文件
第二步,使interface文件生效(重啟網卡),方法是先ifdown ra0然后ifup ra0
總結:使用/etc/network/interfaces文件其實就是替代了手工配置時的ifconfig分配本地ip地址,和route添加網關這兩步。
-----------------------------------------------------------------------------------------
6、使用dhcp動態分配IP
(1)原理:路由器中有個dhcp服務器,本地有dhcp客戶端
(2)前導步驟
ifconfig eth0 down
insmod mt7601Usta.ko ? ? ? ? ? ?//安裝驅動程序
ifconfig ra0 up ? ? ? ? ? ? ? ? //開啟無線網卡
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 ?//連接無線網絡wpa_cli -i ra0 status ? ? ? //查看連接狀態
(3)至此,wifi網卡已經啟動并且連接上路由器。但由于本地沒有ip地址,無法ping通路由器。怎么辦?
使用dhcp分配一個本地ip。
方法1:命令行使用udhcpc -i ra0命令來分配
方法2:使用interface文件選擇dhcp模式然后重啟網卡
7、讓開發板開機自動連上路由器上網
改/etc/init.d/rcS及其相關文件。
(1)etc/init.d/下的目錄,和rcS文件的遍歷執行該目錄下的文件。
(2)在etc/init.d/目錄下新建文件S41WIFI,添加如下內容,保存夠修改權限。
insmod (具體路徑)mt7601Usta.ko ifconfig eth0 down ifconfig ra0 up wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 //連接無線網絡 wpa_cli -i ra0 status //查看連接狀態 ifdown ra0 ifup ra0 然后修改chmod 777 S41WIFI。
六、在自己定制的rootfs中移植網卡
1、確認自己制作的rootfs并啟動
(1)busybox交叉編譯
(2)啟動后直接nfs方式掛載文件夾形式的rootfs,測試ok后再做成鏡像燒錄
(3)掛載參數bootargs和bootcmd
setenv bootargs root=/dev/nfs nfsroot=192.168.1.100:/root/rootfs ip=192.168.1.10:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200 set bootcmd 'tftp 30008000 zImage; bootm 30008000'2、確認需要的移植的工具集
(1)iwconfig工具集:需要另外移植,不是busybox中的
(2)dhcp工具集:是busybox中集成的,確認busybox的menuconfig中配置支持了這個
(3)wpa_supplicant工具集:需要另外移植,不是busybox中的
3、交叉編譯iwconfig
(1)源碼下載
(2)配置
(3)交叉編譯
(4)部署安裝
(5)測試
七、移植wpa_supplicant并制作鏡像
1、交叉編譯wpa_supplicant
(1)下載wpa_supplicant源碼并配置編譯。參考http://blog.csdn.net/hktkfly6/article/details/48949863
(2)下載配套版本的openssl并配置編譯。
(3)去掉配置NL相關的選項省去移植libnl。參考:http://www.cnblogs.com/helloworldtoyou/p/6145995.html
2、在nfs中測試wpa_supplicant使用
3、制作ext2鏡像并刷機測試
http://blog.csdn.net/oqqhutu12345678/article/details/72246299
總結
以上是生活随笔為你收集整理的USB-WiFi在x210板子上的移植的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php连接sql数据库的方法,php连接
- 下一篇: 巨头不想再将“命脉”交给微信、支付宝