0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux 驅(qū)動(dòng)開發(fā):USB無線wifi驅(qū)動(dòng)開發(fā)(MT7601)、完成WIFI管理工具安裝

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-07-14 13:48 ? 次閱讀

開發(fā)環(huán)境說明

內(nèi)核版本:3.5.0

交叉編譯器:arm-linux-gcc-4.5.1

PC 宿主機(jī):紅帽 REDHAT

一、移植 WIFI 驅(qū)動(dòng)

當(dāng)前采用的WIFI是360隨身WIFI,這款隨身WIFI所用的網(wǎng)卡芯片是 Ralink(雷凌科技) 的解決方案(在之前文章里也有詳細(xì)介紹),芯片型號(hào)為 MT7601。 如果在PC計(jì)算機(jī)上使用這款隨身WIFI那自然是簡(jiǎn)單,官網(wǎng)下載個(gè)驅(qū)動(dòng)安裝插上就能使用。 如果是在嵌入式平臺(tái),自動(dòng)的平臺(tái)上使用,官網(wǎng)就沒有現(xiàn)成的驅(qū)動(dòng)下載了,這種情況下就需要針對(duì)WIFI編寫驅(qū)動(dòng)。當(dāng)然,從0開始寫確實(shí)困難,不過這款芯片官方提供了linux下的驅(qū)動(dòng)源碼,這就好辦了。只需要下載下來,編譯就能使用了。

接下來這篇文章會(huì)詳細(xì)介紹WIFI驅(qū)動(dòng)從哪里下載,下載下來如何修改進(jìn)行編譯安裝測(cè)試,并交叉編譯對(duì)應(yīng)的WIFI工具,最終完成WIFI的基本使用,完成IP地址動(dòng)態(tài)分配,熱點(diǎn)連接,熱點(diǎn)掃描、熱點(diǎn)信息查看等等。

1.1 下載 WIFI 驅(qū)動(dòng)

下載鏈接:http://mediatek.com/zh-CN/downloads1/downloads/[](http://mediatek.com/zh-CN/downloads1/downloads/)

直接下載鏈接

http://s3.amazonaws.com/mtk.cfs/Downloads/linux/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2[](http://s3.amazonaws.com/mtk.cfs/Downloads/linux/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2)

1.2配置編譯驅(qū)動(dòng)

將下載的驅(qū)動(dòng)壓縮包拷貝到虛擬機(jī),解壓。(為了好分類,最好單獨(dú)創(chuàng)建一個(gè)文件夾存放)

1.2.1 解壓

[root@XiaoLong 360_WIFI]# tar xvf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2

1.2.2 修改運(yùn)行環(huán)境

進(jìn)入到解壓的目錄下,修改頂層 Makefile,驅(qū)動(dòng)默認(rèn)的運(yùn)行環(huán)境為 X86,需要注釋掉。

[root@XiaoLong DPO_MT7601U_LinuxSTA_3.0.0.4_20130913]# gedit Makefile +3030 行加上注釋:#PLATFORM = PC 第 49 行取消注釋:LATFORM = SMDK

1.2.3 修改編譯環(huán)境

[root@XiaoLong DPO_MT7601U_LinuxSTA_3.0.0.4_20130913]# gedit Makefile +275
ifeq ($(PLATFORM),SMDK)

LINUX_SRC = /work/linux3.5/linux-3.5 內(nèi)核路徑 CROSS_COMPILE = arm-linux- 交叉編譯器 endif

1.2.4 查看 USB 的 ID

USB 芯片的 ID,需要用作匹配作用!相當(dāng)于平臺(tái)設(shè)備的驅(qū)動(dòng)端與設(shè)備端一樣,插入了 USB 之后,USB 控制器需要對(duì)插入的 USB 進(jìn)行訪問,確認(rèn)是否是 WIFI 芯片。確定的憑證就是 ID 號(hào)

查看 USB ID 的方法:

在虛擬機(jī)環(huán)境下,輸入 lsusb 先查看已經(jīng)存在的 USB 設(shè)備:

查看之后,再插入 360WIFI,再次輸入 lsusb 查看存在的 USB 設(shè)備。

注意: 默認(rèn) 360WIFI 會(huì)被 windows 掛載,需要手動(dòng)點(diǎn)擊虛擬機(jī)右下腳的 USB 圖標(biāo)將 360WIFI 掛載進(jìn)來。

掛載進(jìn)來之后,查看的結(jié)果:

由上面可以看出,360WIFI 的設(shè)備 ID 分別是:148f 和 760b。

1.2.5 添加 USB ID

添加 USB 的 ID 需要修改 common 目錄下的 rtusb_dev_id.c 文件,該文件里有一個(gè)存放 ID 的結(jié)構(gòu)體,我們需要將上一步得到的 360WIFI 的 ID 添加到結(jié)構(gòu)體中。

[root@XiaoLong DPO_MT7601U_LinuxSTA_3.0.0.4_20130913]# cd common/

[root@XiaoLong common]# gedit rtusb_dev_id.c +37

添加的格式:

{USB_DEVICE(0x148f,0x760b)}, //添加 360wifi 的設(shè)備 ID

1.2.6 去除調(diào)試信息

為什么去除調(diào)試信息呢?因?yàn)樵诮K端調(diào)試代碼的時(shí)候,驅(qū)動(dòng)會(huì)不斷的向終端打印信息,導(dǎo)致沒法敲打命令,所以需要將其注釋掉。去除調(diào)試信息需要進(jìn)入到 include/os/目錄下,修改 rt_linux.h 文件的 1558 行。

[root@XiaoLong DPO_MT7601U_LinuxSTA_3.0.0.4_20130913]# cd include/os/

[root@XiaoLong os]# gedit rt_linux.h +1558
#include "os/rt_os.h"

#undef DBGPRINT //添加這兩句話 去除調(diào)試打印輸出

#define DBGPRINT(...)

#endif /* __RT_LINUX_H__ */

1.2.7 編譯源碼

修改完之后,編譯源碼,生成驅(qū)動(dòng)文件。 (需要在解壓的頂層目錄下輸入 make) 編譯成功后,會(huì)在 os/linux/目錄下生成 mt7601Usta.ko 文件。

1.2.8 修改 U-BOOT 啟動(dòng)代碼

啟動(dòng) u-bootd 的時(shí)候先進(jìn)入 U-BOOT 命令行,設(shè)置 UBOOT 環(huán)境變量,在之前的環(huán)境變量后加一句 coherent_pool=2M。

coherent_pool=2M 表示設(shè)置 DMA 的緩沖區(qū)大小。如果不設(shè)置 DMA 緩沖區(qū)大小,裝載 360WIFI 驅(qū)動(dòng)的時(shí)候會(huì)報(bào)錯(cuò)。

設(shè)置UBOOT環(huán)境變量代碼如下:(注意:下邊代碼是一行,不能有換行符出現(xiàn))

set bootargs root=/dev/nfs nfsroot=192.168.18.3:/work/nfs_root ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off console=ttySAC0,115200 lcd=s70 coherent_pool=2M init=/linuxrc

1.2.9 測(cè)試 WIFI 驅(qū)動(dòng)

將生成的 mt7601Usta.ko 驅(qū)動(dòng)文件拷貝到開發(fā)板目錄下,安裝。安裝成功之后,將 360WIFI 插入到開發(fā)板的 USB 口中,觀察彈出的測(cè)試信息。

[root@XiaoLong /360_WIFI]# insmod mt7601Usta.ko

如果識(shí)別成功,會(huì)出現(xiàn)以下的提示信息:

1.3.0 拷貝 WIFI 啟動(dòng)配置文件

將 RT2870STA.dat 拷貝至開發(fā)板 /etc/Wireless/RT2870STA/目錄下。

(沒有目錄就創(chuàng)建一個(gè)); mkdir /etc/Wireless/RT2870STA

二、移植 WIFI 配置工具

2.1 移植wireless_tools

Wireless tools for Linux是一個(gè)Linux命令行工具包,用來設(shè)置支持Linux Wireless Extension的無線設(shè)備。Wireless tools for Linux 和 Linux Wireless Extension 由 Jean Tourrilhes在維護(hù),由Hewlett-Packard(HP惠普)贊助。

大多數(shù)基于Linux內(nèi)核的操作系統(tǒng)都包含Wireless tools。在許多GNU/Linux 發(fā)行版中,都缺省安裝這個(gè)工具包,即使是沒有自動(dòng)安裝,也能很容易地找到其二進(jìn)制代碼安裝包。

Wireless Extension (WE)是一組通用的API,能在用戶空間對(duì)通用Wireless LANs進(jìn)行配置和統(tǒng)計(jì)。它的好處在于僅通過一組單一的工具就能對(duì)各種各樣的Wireless LANs進(jìn)行管理,不過它們是什么類型,只要其驅(qū)動(dòng)支持Wireless Extension就行;另一個(gè)好處就是不用重啟驅(qū)動(dòng)或Linux就能改變這些參數(shù)。

Wireless Tools (WT)就是用來操作Wireless Extensions的工具集,它們使用字符界面,雖然粗糙,但支持所有Wireless Extension。雖然還有很多其他管理Wireless Extensions的工具,但Wireless Tools是參考實(shí)現(xiàn),它包括以下工具:

iwconfig:設(shè)置基本無線參數(shù)

iwlist:掃描、列出頻率,比特率,密鑰等

iwspy:獲取每個(gè)節(jié)點(diǎn)鏈接的質(zhì)量(只能查閱與之相連的節(jié)點(diǎn))

iwpriv:操作Wireless Extensions 特定驅(qū)動(dòng)

ifrename: 基于各種靜態(tài)標(biāo)準(zhǔn)命名接口

大多數(shù) Linux 發(fā)行版本都在其網(wǎng)絡(luò)初始化腳本中集成Wireless Extension,以便啟動(dòng)時(shí)配置無線接口。他們還將Wireless Tools作為其標(biāo)準(zhǔn)封裝包。

2.1.1 下載地址

下載地址:

http://www.labs.hpe.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz[](http://www.labs.hpe.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz)

2.1.2 解壓配置

(1)解壓

[root@xiaolong 360wifi]# tar xvf wireless_tools.29.tar.gz

[root@xiaolong 360wifi]# cd wireless_tools.29

(2)修改 Makefile

[root@xiaolong wireless_tools.29]# gedit Makefile 大約 12 行和 14 行

12 CC = arm-linux-gcc

14? R = arm-linux-ar

(3)? 編譯

[root@xiaolong wireless_tools.29]# make

(4) 拷貝文件

拷貝 libiw.so.29 文件到目標(biāo)系統(tǒng) rootfs/usr/lib/目錄




拷貝用到的幾個(gè)程序到目標(biāo)板 rootfs/usr/lib/bin/目錄

iwpriv、iwconfig、iwlist, iwevent, iwspy




至此 wireless_tools 移植完成




有可能出現(xiàn)的錯(cuò)誤:

在到產(chǎn)品板上還可能出現(xiàn) can't resolve symbol '__ctype_b_loc' 錯(cuò)誤




去掉 iwlib.h 中這一行重新編譯即可

#include < ctype.h >

2.1.3 工具使用方法

1. 啟動(dòng)網(wǎng)卡:

ifconfig ra0 up

2. 關(guān)閉網(wǎng)卡:

ifconfig ra0 down

3. 掃描周圍的 wifi 信息:

iwlist ra0 scan

4. 查看無線網(wǎng)卡的信息(比如:網(wǎng)卡名稱,已經(jīng)連接上的 WIFI 等):

iwconfig

5. 我們經(jīng)常會(huì)用到的主要是 iwlist、iwconfig、 iwpriv(沒有全部測(cè)試過)

命令行:(連接不需要驗(yàn)證密碼的熱點(diǎn))

iwlist mlan0 scan //搜索熱點(diǎn)信息

ap iwconfig mlan0 essidlinksys//連接熱點(diǎn)

udhcpc -i mlan0 //獲得動(dòng)態(tài) IP

命令行:(連接需要驗(yàn)證密碼的熱點(diǎn))

iwlist mlan0 scan //搜索熱點(diǎn)信息

ap iwconfig mlan0 key xxxxxxxxxx //輸入驗(yàn)證密碼

iwconfig mlan0 key open //密碼驗(yàn)證功能打開

iwconfig mlan0 essidlinksys//連接熱點(diǎn)

udhcpci mlan0 //獲得動(dòng)態(tài) IP

3.1 移植 wap_supplicant 工具

目前可以使用wireless-tools 或wpa_supplicant工具來配置無線網(wǎng)絡(luò)。請(qǐng)記住重要的一點(diǎn)是,對(duì)無線網(wǎng)絡(luò)的配置是全局性的,而非針對(duì)具體的接口。

wpa_supplicant是一個(gè)較好的選擇,但缺點(diǎn)是它不支持所有的驅(qū)動(dòng)。請(qǐng)瀏覽wpa_supplicant網(wǎng)站獲得它所支持的驅(qū)動(dòng)列表。另外,wpa_supplicant目前只能連接到那些你已經(jīng)配置好ESSID的無線網(wǎng)絡(luò),它可以讓您連接到那些使用WPA的AP。wireless-tools支持幾乎所有的無線網(wǎng)卡和驅(qū)動(dòng),但它不能連接到那些只支持WPA的AP。

關(guān)于WPA:

WPA是WiFi Protected Access的縮寫,中文含義為“WiFi網(wǎng)絡(luò)安全存取”。WPA是一種基于標(biāo)準(zhǔn)的可互操作的WLAN安全性增強(qiáng)解決方案,可大大增強(qiáng)現(xiàn)有以及未來無線局域網(wǎng)絡(luò)的數(shù)據(jù)保護(hù)和訪問控制水平。

wpa_supplicant是一個(gè)開源項(xiàng)目,已經(jīng)被移植到Linux,Windows以及很多嵌入式系統(tǒng)上。它是WPA的應(yīng)用層認(rèn)證客戶端,負(fù)責(zé)完成認(rèn)證相關(guān)的登錄、加密等工作。

wpa_supplicant是一個(gè) 獨(dú)立運(yùn)行的 守護(hù)進(jìn)程,其核心是一個(gè)消息循環(huán),在消息循環(huán)中處理WPA狀態(tài)機(jī)、控制命令、驅(qū)動(dòng)事件、配置信息等。

經(jīng)過編譯后的 wpa_supplicant源程序可以看到兩個(gè)主要的可執(zhí)行工具:wpa_supplicant 和 wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的關(guān)系就是服務(wù)和客戶端的關(guān):

后臺(tái)運(yùn)行wpa_supplicant,使用 wpa_cli來搜索、設(shè)置、和連接網(wǎng)絡(luò)。

3.1.1 wap_supplicant 簡(jiǎn)介

在 Linux 移植 iw 工具的時(shí)候,我們講過 iw 支持兩種“認(rèn)證/加密”的方式,這兩種方式分別為:open 與 wep。但是現(xiàn)在很多的無線加密方法都是以 wpa 與 wpa2(AES)方式加密的。那么這里就出現(xiàn)了 iw 工具不能再 wpa 與 wpa2 的無線加密上使用。因此接下來移植一個(gè) wpa_supplicant 的工具:這個(gè)工具支持上面介紹到的四種方式:

1? open

2? WEP

3? WPA(TKJP)

4? WAP2(AES)

3.1.2 移植 libopenssl 庫

OpenSSL 是一個(gè)安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協(xié)議,并提供豐富的應(yīng)用程序供測(cè)試或其它目的使用。

OpenSSL被曝出現(xiàn)嚴(yán)重安全漏洞后,發(fā)現(xiàn)多數(shù)通過SSL協(xié)議加密的網(wǎng)站使用名為OpenSSL的開源軟件包。OpenSSL漏洞不僅影響以https開頭的網(wǎng)站,黑客還可利用此漏洞直接對(duì)個(gè)人電腦發(fā)起“心臟出血”(Heartbleed)攻擊。據(jù)分析,Windows上有大量軟件使用了存在漏洞的OpenSSL代碼庫,可能被黑客攻擊抓取用戶電腦上的內(nèi)存數(shù)據(jù)。

下載鏈接:http://distfiles.macports.org/openssl/[](http://distfiles.macports.org/openssl/)

1.? 將下載的 openssl-1.0.2e.tar.gz 壓縮包拷貝至虛擬機(jī)解壓。

[root@XiaoLong 360_WIFI]# tar xvf openssl-1.0.2e.tar.gz

2.? 配置編譯安裝的路徑

[root@XiaoLong openssl-1.0.2e]# ./config shared no-asm --prefix=$PWD/tmp

--prefix=$PWD/tmp 表示編譯安裝的路徑為當(dāng)前目錄下的 tmp


3.? 修改頂層 Makefile

[root@XiaoLong openssl-1.0.2e]# gedit Makefile +62


62 CC= arm-linux-gcc

AR= arm-linux-ar $(ARFLAGS) r

RANLIB= arm-linux-ranlib

NM= arm-linux-nm

75? AKEDEPPROG= arm-linux-gcc

4.? 編譯

[root@XiaoLong openssl-1.0.2e]# make

5.? 安裝

[root@XiaoLong openssl-1.0.2e]# make DESTDIR=$PWD/tmp install

3.1.3 拷貝生成的文件

(1)將安裝目錄下(tmp/include)的頭文件拷貝到交叉編譯器的 include 目錄下

[root@XiaoLong openssl-1.0.2e]# cp tmp/include/* /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include/ -rf

(2) 將編譯生成 lib 庫拷貝一份到開發(fā)板根文件系統(tǒng) lib 目錄下

[root@XiaoLong tmp]# pwd

/work/360_WIFI/openssl-1.0.2e/tmp

[root@XiaoLong tmp]# ls bin include lib openssl-1.0.2e.tmp.tar ssl

[root@XiaoLong tmp]# cp lib/* /work/nfs_root/lib/ -rf -d

(3) 將編譯生成的 lib 庫拷貝到交叉編譯器的 lib 目錄下

[root@XiaoLong openssl-1.0.2e]#

cp tmp/lib/* /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ -rf -d

3.1.4 移植 wpa_supplicant : 可用于上述 4 種"認(rèn)證/加密"的庫

下載鏈接:http://w1.fi/wpa_supplicant/[](http://w1.fi/wpa_supplicant/)

(1)將下載好的壓縮包拷貝至虛擬機(jī)解壓

[root@XiaoLong 360_WIFI]# tar xvf wpa_supplicant-2.5.tar.gz

(2) 加載配置文件

[root@XiaoLong wpa_supplicant-2.5]# cd wpa_supplicant/

[root@XiaoLong wpa_supplicant]# cp defconfig .config

(3)修改配置文件

[root@XiaoLong wpa_supplicant]# gedit .config


增加以下代碼:

CC=arm-linux-gcc

CFLAGS += -I/work/360_WIFI/openssl-1.0.2e/tmp/include

LIBS +=-L/work/360_WIFI/openssl-1.0.2e/tmp/lib

CFLAGS += -I /work/360_WIFI/libnl-3.2.25/tmp/include/libnl3

LIBS += -L /work/360_WIFI/libnl-3.2.25/tmp/lib

CONFIG_LIBNL32=y

(4)編譯

[root@XiaoLong wpa_supplicant]# make

(5)安裝

[root@XiaoLong wpa_supplicant]#make DESTDIR=$PWD/tmp install

(6)拷貝生成的可執(zhí)行文件到開發(fā)板的 sbin 目錄下--路徑 /tmp/usr/local/sbin

[root@XiaoLong sbin]# pwd

/work/360_WIFI/wpa_supplicant-2.5/wpa_supplicant/tmp/usr/local/sbin

[root@XiaoLong sbin]# cp ./* /work/nfs_root/sbin/

(7)? 拷貝生成的可執(zhí)行文件到開發(fā)板的 bin 目錄下

[root@XiaoLong sbin]# ls wpa_cli wpa_passphrase wpa_supplicant

[root@XiaoLong sbin]# cp ./* /work/nfs_root/bin/

4.1 測(cè)試使用 WIFI 步驟

4.1.1 創(chuàng)建密碼配置文件

在開發(fā)板根文件系統(tǒng)/etc/目錄創(chuàng)建 wpa_supplicant.conf 文件 ,輸入以下內(nèi)容:

# WPA-PSK/TKIP

ctrl_interface=/var/run/wap_supplicant ap_scan=1 update_config=1

network={

ssid="208"

key_mgmt=WPA-PSK

proto=WPA

pairwise=TKIP CCMP

group=TKIP CCMP #

priority=2

psk="www.linux.com"

}

4.1.2 創(chuàng)建網(wǎng)卡控制接口

在開發(fā)板終端輸入:

[root@XiaoLong /]#mkdir /var/run/wap_supplicant -p

4.1.3 插入 360wifi 測(cè)試

360WIFI 插入開板 USB 口,安裝 WIFI 驅(qū)動(dòng):

[root@XiaoLong /driver/360wifi]# insmod mt7601Usta.ko

[ 47.260000] rtusb init rt2870 --- >

[ 47.260000] usbcore: registered new interface driver rt2870

[ 94.105000] usb 1-2.2: new high-speed USB device number 7 using s5p-ehci

[ 94.220000] usb 1-2.2: New USB device found, idVendor=148f, idProduct=760b

[ 94.220000] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[ 94.220000] usb 1-2.2: Product: 802.11 n WLAN

[ 94.220000] usb 1-2.2: Manufacturer: MediaTek

[ 94.220000] usb 1-2.2: SerialNumber: 1.0

[ 94.225000] < -- RTMPAllocTxRxRingMemory, Status=0

[ 94.230000] < -- RTMPAllocAdapterBlock, Status=0

[ 94.235000] BULK IN MaxPacketSize = 512 [ 94.235000] EP address = 0x84

[ 94.240000] BULK IN MaxPacketSize = 512

[ 94.245000] EP address = 0x85

[ 94.245000] BULK OUT MaxPacketSize = 512 [ 94.250000] EP address = 0x 8

[ 94.255000] BULK OUT MaxPacketSize = 512 [ 94.255000] EP address = 0x 4

[ 94.260000] BULK OUT MaxPacketSize = 512 [ 94.265000] EP address = 0x 5

[ 94.265000] BULK OUT MaxPacketSize = 512 [ 94.270000] EP address = 0x 6

[ 94.275000] BULK OUT MaxPacketSize = 512

[ 94.280000] EP address = 0x 7

[ 94.280000] BULK OUT MaxPacketSize = 512

[ 94.285000] EP address = 0x 9

查看識(shí)別成功的網(wǎng)卡:

[root@XiaoLong /driver/360wifi]# iwconfig lo no wireless extensions.

ra0 Ralink STA sit0 no wireless extensions.

eth0 no wireless extensions.

ip6tnl0 no wireless extensions.

4.1.4 啟動(dòng)網(wǎng)卡

[root@XiaoLong /]# wpa_supplicant -Dwext -ira0 -c /etc/wpa_supplicant.conf -B

[ 257.765000] Current MAC: =00:87:46:19:8f:eb

[ 257.780000] NICReadEEPROMParameters: RxPath = 1, TxPath = 1

[ 257.790000] 20MHz BW, 2.4G band-03030505, Adata = 03030505, Gdata = 03030505 [ 257.790000] 20MHz BW, 2.4G band-00000004, Adata = 00000004, Gdata = 00000004

[ 257.795000] 20MHz BW, 2.4G band-00000002, Adata = 00000002, Gdata = 00000002

[ 257.800000] 20MHz BW, 2.4G band-00000002, Adata = 00000002, Gdata = 00000002

[ 257.800000] 20MHz BW, 2.4G band-ffff0002, Adata = ffff0002, Gdata = ffff0002

[ 258.020000] BuildChannel # 1 :: Pwr0 = 16, Pwr1 =0, Flags = 0

BuildChannel # 2 :: Pwr0 = 16, Pwr1 =0, Flags = 0

BuildChannel # 3 :: Pwr0 = 16, Pwr1 =0, Flags = 0

BuildChannel # 4 :: Pwr0 = 16, Pwr1 =0, Flags = 0

BuildChannel # 5 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 6 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 7 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 8 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 9 :: Pwr0 = 17, Pwr1 =0, Flags = 0

BuildChannel # 10 :: Pwr0 = 18, Pwr1 =0, Flags = 0

BuildChannel # 11 :: Pwr0 = 18, Pwr1 =0, Flags = 0

BuildChannel # 12 :: Pwr0 = 18, Pwr1 =0, Flags = 0

BuildChannel # 13 :: Pwr0 = 18, Pwr1 =0, Flags = 0

BuildChannel # 14 :: Pwr0 = 18, Pwr1 =0, Flags = 0

<==== rt28xx_init, Status=0

[ 258.075000] 0x1300 = 00064300

[root@XiaoLong /]# [ 260.380000] RSN_IE: f0b15003, len = 24

[ 260.380000] 0x0000 : dd 16 00 50 f2 01 01 00 00 50 f2 04 01 00 00 50

[ 260.380000] 0x0010 : f2 04 01 00 00 50 f2 02

[ 260.545000] Key = 71:62:76:2d:90:f1:7d:e4:76:57:c0:c7:e4:a8:fa:a8

[ 260.545000] Rx MIC Key = 00:00:00:00:00:00:00:00 [ 260.545000] Tx MIC Key = 00:00:00:00:00:00:00:00

出現(xiàn)上面紅色部分的提示表示連接路由器成功??!

4.1.5 查看連接成功的 WIFI 信息

[root@XiaoLong /]# iwconfig lo no wireless extensions.

ra0 Ralink STA ESSID:"208" Nickname:"MT7601STA" 連接模式是 STA,連接上的路由器名稱是 208

Mode:Managed Frequency=2.437 GHz Access Point: D0:C7:C0:D4:84:12

Bit Rate=135 Mb/s

RTS thr:off Fragment thr:off

Encryption key:7162-762D-90F1-7DE4-7657-C0C7-E4A8-FAA8 [3] Security mode:restricted Security mode:open

Link Quality=100/100 Signal level:-27 dBm Noise level:-27 dBm

Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0

Tx excessive retries:0 Invalid misc:0 Missed beacon:0

4.1.6 配置網(wǎng)卡地址信息

① [root@XiaoLong /]# ifconfig ra0 192.168.18.123 broadcast 192.168.18.255 netmask 255.255.0.0 up




② [root@XiaoLong /]# ifconfig ra0

Link encap:Ethernet HWaddr 00:87:46:19:8F:EB inet addr:192.168.18.123 Bcast:192.168.255.255 Mask:255.255.0.0 配置成功 inet6 addr: fe80::287:46ff:fe19:8feb/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:124367 errors:0 dropped:0 overruns:0 frame:0 TX packets:175 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:26249317 (25.0 MiB) TX bytes:10673 (10.4 KiB)

4.1.6 配置網(wǎng)卡地址信息

[root@XiaoLong /]# ifconfig ra0 192.168.18.123 broadcast 192.168.18.255 netmask 255.255.0.0 up[root@XiaoLong /]# ifconfig ra0

Link encap:Ethernet HWaddr 00:87:46:19:8F:EB inet addr:192.168.18.123 Bcast:192.168.255.255 Mask:255.255.0.0 配置成功 inet6 addr: fe80::287:46ff:fe19:8feb/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:124367 errors:0 dropped:0 overruns:0 frame:0 TX packets:175 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:26249317 (25.0 MiB) TX bytes:10673 (10.4 KiB)

4.1.7 配置網(wǎng)關(guān)信息

[root@XiaoLong /]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ra0

查看路由表信息:

[root@XiaoLong /]# iproute

192.168.0.0/16 dev ra0 src 192.168.18.123

如果沒有無線網(wǎng)卡的網(wǎng)關(guān)信息,需要自己添加一個(gè):

[root@XiaoLong /]# route add default gw 192.168.18.1

4.1.8 ping 外網(wǎng) IP 測(cè)試

前提是當(dāng)前連接的 WIFI 可以連接互聯(lián)網(wǎng)。

202.108.22.5 是百度的 IP 地址。

[root@XiaoLong /]# ping 202.108.22.5

PING 202.108.22.5 (202.108.22.5): 56 data bytes

64 bytes from 202.108.22.5: seq=0 ttl=51 time=51.431 ms

64 bytes from 202.108.22.5: seq=1 ttl=51 time=44.511 ms

64 bytes from 202.108.22.5: seq=2 ttl=51 time=95.936 ms 64 bytes from 202.108.22.5: seq=3 ttl=51 time=46.402 ms

4.1.9 實(shí)現(xiàn) ping 域名

在/etc/目錄下創(chuàng)建一個(gè) resolv.conf 文件,輸入 DNS 地址,如下:

nameserver 192.168.1.1 nameserver 202.96.134.33

說明:一般寫本地網(wǎng)關(guān)就可以了,也就是保留 nameserver 192.168.1.1

也可以直接在串口終端使用命令創(chuàng)建并且寫入內(nèi)容。如下:

[root@XiaoLong /]# echo nameserver 192.168.1.1 > > /etc/resolv.conf

[root@XiaoLong /]# echo nameserver 202.96.134.33 > > /etc/resolv.conf

開發(fā)板中要想 ping 通外網(wǎng) IP,需要設(shè)置默認(rèn)網(wǎng)關(guān),這個(gè)網(wǎng)關(guān)必須要和所連接的路由器設(shè)置的網(wǎng)關(guān)相同(resolv.conf 文件內(nèi)容一般可以自動(dòng)獲取,不用手動(dòng)填)。

ping 百度示例:

[root@XiaoLong /]# ping www.baidu.com

[ 2742.105000] CmdThread : CMDTHREAD_SET_ASIC_WCID : WCID = 1, SetTid = 400000, DeleteTid = ffffffff.

[ 2742.105000] 1-MACValue= d4c0c7d0,

[ 2742.105000] 2-MACValue= 411284,

PING www.baidu.com (119.75.218.70): 56 data bytes

64 bytes from 119.75.218.70: seq=0 ttl=51 time=55.509 ms 64 bytes from 119.75.218.70: seq=1 ttl=51 time=53.253 ms 64 bytes from 119.75.218.70: seq=2 ttl=51 time=62.990 ms

64 bytes from 119.75.218.70: seq=3 ttl=51 time=44.665 ms

4.2.0 自動(dòng)獲取 IP 地址

使用 busybox 的 udhcpc 工具。一般默認(rèn)的配置都是選中的,為了確保成功,還是需要去確認(rèn)一下。

1. 首先配置 linux 內(nèi)核使其支持 DHCP,以及 socket:

[*] Networking support --- >< * > Packet socket

[*] IP: DHCP support

[*] Network packet filtering framework (Netfilter) --- >

2. 配置 busybox:

Networking Utilities --- > udhcp Server/Client --- >

[ * ] udhcp Server (udhcpd) udhcp Client (udhcpc)

[ * ] Lease display utility (dumpleases)

[ * ] Log udhcp messages to syslog (instead of stdout)

[ * ] Compile udhcp with noisy debugging messages

3. 編譯安裝 busybox

make

make install

4. 編譯完并安裝 busybox 后,將 busybox 源碼目錄下的 example/udhcpc/simple.script 腳本文件 cp 到根文件系統(tǒng)的/usr/share/udhcpc/default.script 文件中。

如果沒有目錄先創(chuàng)建目錄:

[root@XiaoLong /]#mkdir /usr/share/udhcpc -p

5. 自動(dòng)獲取 IP:

[root@XiaoLong /]# udhcpc -i ra0 udhcpc (v1.23.2) started

Setting IP address 0.0.0.0 on ra0 Sending discover...

Sending select for 192.168.1.10...

Lease of 192.168.1.10 obtained, lease time 7200

Setting IP address 192.168.1.10 on ra0 Deleting routers

route: SIOCDELRT: No such process

Adding router 192.168.1.1 獲取的 IP 地址

Recreating /etc/resolv.conf 自動(dòng)更新 resolv.conf 文件

Adding DNS server 211.162.66.66

Adding DNS server 211.162.77.77

6. 查看獲取到的 IP:

[root@XiaoLong /]# ifconfig ra0

Link encap:Ethernet HWaddr 00:87:46:19:8F:EB inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::287:46ff:fe19:8feb/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:260636 errors:0 dropped:0 overruns:0 frame:0 TX packets:528 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:55031927 (52.4 MiB) TX bytes:33119 (32.3 KiB)

7. ping 百度測(cè)試:

自動(dòng)獲取 IP 也可以使用第三方其他工具(一般使用 busybox 自帶的即可):

下載 DHCP 源碼,編譯后得到 dhclient 工具,實(shí)現(xiàn) DHCP client.

(1) 下載源碼:http://gd.tuwien.ac.at/infosys/servers/isc/dhcp/ ,選中 dhcp-3.1.3.tar.gz;

(2) 解壓 tar -zxvf dhcp-3.1.3.tar.gz,然后進(jìn)入./dhcp-3.1.3/,運(yùn)行配置./configure,之后生成 work.linux-2.2 文件夾, 進(jìn)入 work.linux-2.2/client/,輸入 make "CC=arm-linux-gcc -static",將編譯生成 dhclient。

(3) 拷貝生成的 dhclient 到 mini2440 開發(fā)板上,為方便使用,可以放在/usr/bin/下;拷貝另外兩個(gè)配置文件到開發(fā)板,分別是 /dhcp-3.1.3/client/dhclient.conf 和/dhcp-3.1.3/client/scripts/linux 到開發(fā)板的/sbin/目錄下。并改名后一個(gè)文件為 dhclient-script ,并修改該文件的第一行 #! /bin/bash 為 #! /bin/sh ,保存后,修改權(quán)限 chmod +x /sbin/dhclient-script。

(4) 為 eth0 或者 wlan0 配置 dhcp 服務(wù),輸入 dhclient eth0 或者 dhclient wlan0 即可.

4.2.1 開機(jī)自動(dòng)加載連接路由器

可以將以下代碼加載到 etc/profile 文件里或者是/etc/rcS 文件里,開機(jī)自動(dòng)執(zhí)行。

insmod mt7601Usta.ko #安裝驅(qū)動(dòng)

wpa_supplicant -Dwext -ira0 -c /etc/wpa_supplicant.conf -B #啟動(dòng)網(wǎng)卡

udhcpc -i ra0 #自動(dòng)獲取 IP 地址--busybox 自帶的工具

5.1 其他工具移植方法

5.1.1 安裝flex工具庫

系統(tǒng)自帶的flex庫版本太低,需要升級(jí)!

Flex 是一個(gè)高效、免費(fèi)的開源框架,可用于構(gòu)建具有表現(xiàn)力的 Web應(yīng)用程序,這些應(yīng)用程序利用Adobe Flash Player和Adobe AIR, 可以實(shí)現(xiàn)跨瀏覽器、桌面和操作系統(tǒng)。雖然只能使用 Flex 框架構(gòu)建 Flex應(yīng)用程序,但Adobe Flash Builder(之前稱為 Adobe Flex Builder?)軟件可以通過智能編碼、交互式遍歷調(diào)試以及可視設(shè)計(jì)用戶界面布局等功能加快開發(fā)。

下載鏈接:http://sourceforge.net/projects/flex/files/

將下載的壓縮文件拷貝至虛擬機(jī),解壓,配置,編譯安裝。

[root@XiaoLong 360_WIFI]# tar xvf flex-2.6.0.tar.bz2

[root@XiaoLong 360_WIFI]# cd flex-2.6.0

[root@XiaoLong flex-2.6.0]# ./configure

[root@XiaoLong flex-2.6.0]# make && make install

5.1.2 安裝 bison

下載鏈接:http://ftp.gnu.org/gnu/bison/

GNU bison 是屬于 GNU 項(xiàng)目的一個(gè)語法分析器生成器。

GNU Bison是一種通用目的的分析器生成器。它將LALR(1)上下文無關(guān)文法的描述轉(zhuǎn)化成分析該文法的C程序。 一旦你精通Bison,你可以用它生成從簡(jiǎn)單的桌面計(jì)算器到復(fù)雜的程序設(shè)計(jì)語言等等許多語言的分析器。

將下載好的bison-3.0 .tar.gz壓縮包拷貝到虛擬機(jī)解壓,解壓后,進(jìn)入到解壓后的目錄,配置,編譯,安裝。

[root@XiaoLong bison-3.0]# ./configure

[root@XiaoLong bison-3.0]# make && make install

5.1.3 安裝libnl庫

libnl套件是netlink庫提供api的集合協(xié)議基于Linux內(nèi)核的接口。

Netlink IPC機(jī)制主要是在內(nèi)核和用戶空間之間提供接口。 它被設(shè)計(jì)為一個(gè)更靈活的ioctl的繼任者,主要提供網(wǎng)絡(luò)相關(guān)的內(nèi)核配置和監(jiān)控接口。

下載鏈接:http://www.infradead.org/~tgr/libnl/

將下載后的libnl-3.2.25.tar.gz壓縮包拷貝到虛擬機(jī),解壓,配置,編譯,安裝。

[root@XiaoLong work]# tar xvf libnl-3.2.25.tar.gz

[root@XiaoLong libnl-3.2.25]# ./configure --host=arm-linux --prefix=$PWD/tmp

--prefix=$PWD/tmp :表示指定編譯安裝的路徑 ---安裝路徑為當(dāng)前目錄的tmp文件夾

--host=arm-linux :指定編譯器
[root@XiaoLong libnl-3.2.25]# make && make install

5.1.4 拷貝依賴庫

Libnl庫安裝成功之后,在tmp目錄下會(huì)生成lib目錄。

1將lib目錄下的文件拷貝一份到系統(tǒng)交叉編譯路徑下的lib目錄里

2將lib目錄下的文件拷貝一份到開發(fā)板的根文件系統(tǒng)lib目錄里

3將libnl庫下include目錄下的文件,拷貝一份到交叉編譯器的include目錄

[root@XiaoLong libnl-3.2.25]# cp tmp/lib/* /work/nfs_root/lib/ -rf -d

[root@XiaoLong libnl-3.2.25]#

cp tmp/include/* /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include/ -rf


[root@XiaoLong libnl-3.2.25]#

cp tmp/lib/* /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ -rf -d

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7945

    瀏覽量

    264628
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209476
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5297

    瀏覽量

    203706
  • 驅(qū)動(dòng)開發(fā)

    關(guān)注

    0

    文章

    130

    瀏覽量

    12077
  • MT7601
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    2887
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux環(huán)境下如何管理Python包管理工具

    Linux環(huán)境下,需要對(duì)軟件包進(jìn)行安裝、卸載、升級(jí)和查詢等操作,包含這些操作的工具,稱為包管理工具。
    發(fā)表于 08-22 15:14 ?657次閱讀
    <b class='flag-5'>Linux</b>環(huán)境下如何<b class='flag-5'>管理</b>Python包<b class='flag-5'>管理工具</b>

    RT5370,MT7601 WIFI模組專用DC-DC降壓芯片

    M3406-ADJ大量運(yùn)用于RT5370 MT7601等方案,深圳中龍通 邁騰等大量運(yùn)用驗(yàn)證,歡迎各位研發(fā)工程聯(lián)系咨詢。深圳市東品科技全系列代理西安航天民芯科技產(chǎn)品歡迎來電咨詢索取免費(fèi)樣品測(cè)試。梅
    發(fā)表于 08-13 17:13

    平板電腦/MID領(lǐng)域調(diào)試專用USB接口WiFi模塊Dongle版萬能轉(zhuǎn)接板/USB Dongle版WiFi模塊

    兼容芯片:RTL8188CUS/RTL8188CTV/RTL8188EUS/RTL8188ETV/RTL8188FTV/MT7601;WiFi+藍(lán)牙4.0模塊(13.4*12.2mm),采用芯片
    發(fā)表于 03-06 10:48

    登錄管理工具LimitLogin

    LimitLogin是一款于2005年面世的登錄管理工具,由一名微軟合作伙伴技術(shù)專家和一名應(yīng)用程序開發(fā)顧問合力開發(fā)。LimitLogin旨在在Active Directory域中跟蹤和限制并發(fā)工作站和終端用戶登錄。
    發(fā)表于 07-16 06:27

    【MYD-YA157C開發(fā)板試用連載】一波多折的MT7601驅(qū)動(dòng)編譯歷程

    是聯(lián)發(fā)科的一款無線網(wǎng)卡芯片,常見分為MT7601U和MT7601E(U后綴代表USB驅(qū)動(dòng),E后綴不明,可能是PCIE接口
    發(fā)表于 06-08 00:54

    【MYD-YA157C開發(fā)板試用連載】【資料帖】MT7601 RTL8192編譯相關(guān)obj和源碼

    ` 本帖最后由 donatello1996 于 2020-6-10 01:07 編輯 這帖是純資料帖,對(duì)應(yīng)上貼《【MYD-YA157C開發(fā)板試用連載】一波多折的MT7601驅(qū)動(dòng)編譯歷程》,放出
    發(fā)表于 06-08 01:15

    Linux的進(jìn)程管理工具之Supervisor

    Linux進(jìn)程管理工具Supervisor
    發(fā)表于 06-12 10:58

    迅為IMX6ULL開發(fā)Linux_WIFI驅(qū)動(dòng)實(shí)驗(yàn)

    ---> Realtek 8723B USB WiFi配置結(jié)果如圖所示:直接將 rtl8723 wifi 模塊的驅(qū)動(dòng)編譯到內(nèi)核中去。以上 Linu
    發(fā)表于 09-11 10:59

    介紹在ARM-Linux平臺(tái)下移植MT7601U的無線網(wǎng)卡驅(qū)動(dòng)

    具有USB外設(shè)接口,無線網(wǎng)卡等。本篇將介紹在ARM-Linux平臺(tái)下移植MT7601U的無線網(wǎng)卡驅(qū)動(dòng)
    發(fā)表于 12-16 08:21

    USB無線網(wǎng)卡選擇MT7601驅(qū)動(dòng)移植

    這里寫自定義目錄標(biāo)題前言USB無線網(wǎng)卡選擇MT7601驅(qū)動(dòng)移植資源下載驅(qū)動(dòng)源碼修改編譯及加載功能快捷鍵合理的創(chuàng)建標(biāo)題,有助于目錄的生成如何改
    發(fā)表于 12-16 07:30

    MT7601 WIFI驅(qū)動(dòng)linux下的移植

    前言:本文針對(duì)的是MT7601 WIFI驅(qū)動(dòng)linux下的移值,對(duì)于MT7601的兩種模式STA和AP模式都有說明,包括對(duì)支持
    發(fā)表于 12-16 07:29

    wg208–USB WIFI模塊數(shù)據(jù)表

    USB接口_WiFi模塊_MT7601,本文檔介紹了USB接口的wifi模塊的一些特征和參數(shù),以及wif
    發(fā)表于 10-11 16:31 ?9次下載

    MT7601小體積WIFI模塊 ,已通過CE/FCC/IC/ROHS認(rèn)證

    WG209是一兼容802.11?b/g/n WiFi標(biāo)準(zhǔn)的USB接口 WiFi模塊,基于MT7601單芯片全新架構(gòu),集成了CPU和內(nèi)存,可以在片上運(yùn)行更多的
    的頭像 發(fā)表于 07-11 12:21 ?5996次閱讀
    <b class='flag-5'>MT7601</b>小體積<b class='flag-5'>WIFI</b>模塊 ,已通過CE/FCC/IC/ROHS認(rèn)證

    如何安裝Python包管理工具

    第三方庫,Python提供了一些強(qiáng)大的包管理工具。本文將介紹如何安裝Python包管理工具,以便您能夠在Python項(xiàng)目中方便地管理和使用第三方庫。
    的頭像 發(fā)表于 04-14 12:10 ?1123次閱讀

    wifi模塊MTK方案 MT7601芯片模組在投影儀上的應(yīng)用

    無線WiFi模塊MTK方案 MT7601芯片模組在投影儀上的應(yīng)用介紹,開放、易用的開發(fā)和調(diào)試環(huán)境,無線W
    的頭像 發(fā)表于 11-17 11:53 ?3422次閱讀
    <b class='flag-5'>wifi</b>模塊MTK方案 <b class='flag-5'>MT7601</b>芯片模組在投影儀上的應(yīng)用