MT7601U
聯發科的產品,u表示的是usb口通信;可在聯發科官網找到原始驅動並修改獲得hi3518e可用的.ko驅動;
1 編譯驅動使支持hi3518e
詳細文件在:DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/README_STA_usb
1> $tar -xvzf DPB_RT2870_Linux_STA_x.x.x.x.tgz
go to "./DPB_RT2870_Linux_STA_x.x.x.x" directory.
2> In Makefile
set the "MODE = STA" in Makefile and chose the TARGET to Linux by set "TARGET = LINUX"
define the linux kernel source include file pathLINUX_SRC
modify to meet your need.
3> In os/linux/config.mk
define the GCC and LD of the target machine
define the compiler flags CFLAGS
modify to meet your need.
** Build for being controlled by NetworkManager or wpa_supplicant wext functions
Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y'.
=> #>cd wpa_supplicant-x.x
=> #>./wpa_supplicant -Dwext -ira0 -c wpa_supplicant.conf -d
** Build for being controlled by WpaSupplicant with Ralink Driver
Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n'.
=> #>cd wpa_supplicant-0.5.7
=> #>./wpa_supplicant -Dralink -ira0 -c wpa_supplicant.conf -d我的情況是要將os/linux/config.mk做如下修改:
# Support Wpa_Supplicant # i.e. wpa_supplicant -Dralink HAS_WPA_SUPPLICANT=y # Support Native WpaSupplicant for Network Maganger # i.e. wpa_supplicant -Dwext HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y #Support Net interface block while Tx-Sw queue full HAS_BLOCK_NET_IF=n
改爲:# Support Wpa_Supplicant # i.e. wpa_supplicant -Dralink HAS_WPA_SUPPLICANT=n # Support Native WpaSupplicant for Network Maganger # i.e. wpa_supplicant -Dwext HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n #Support Net interface block while Tx-Sw queue full HAS_BLOCK_NET_IF=y
4> $make
# compile driver source code
# To fix "error: too few arguments to function ˉiwe_stream_add_event"
=> $patch -i os/linux/sta_ioctl.c.patch os/linux/sta_ioctl.c
5> $cp RT2870STA.dat /etc/Wireless/RT2870STA/RT2870STA.dat //默認配置文件:裏面有要連接的wifi的名字和密碼;
6> load driver, go to "os/linux/" directory.
#[kernel 2.4]
# $/sbin/insmod rt2870sta.o
# $/sbin/ifconfig ra0 inet YOUR_IP up
#[kernel 2.6]
# $/sbin/insmod rt2870sta.ko
# $/sbin/ifconfig ra0 inet YOUR_IP up
7> unload driver
$/sbin/ifconfig ra0 down
$/sbin/rmmod rt2870sta
2 配置文件
RT2870 driver can be configured via following interfaces,
i.e. (i)"iwconfig" command, (ii)"iwpriv" command, (iii) configuration file
i) iwconfig comes with kernel.
ii) iwpriv usage, please refer to file "iwpriv_usage.txt" for details.
見:/sample/Mt7601STA/start.sh //我的wifi配置文件
iii)modify configuration file "RT2870STA.dat" in /etc/Wireless/RT2870STA/RT2870STA.dat.
3 配置ip地址
連接成功後配置ra0的IP地址
動態獲取ip
udhcpc -i ra0
手動設置ip
ifconfig ra0 192.168.1.67
4 sta模式連接wifi流程
貌似要先關閉有限網卡;
insmod rt2870sta.ko //加載驅動 可lsmod查看結果
ifconfig eth0 down //先關閉有線網絡
ifconfig ra0 up //打開wifi設置網絡
iwlist ra0 scanning //掃描無線路由器的節點信息,會將周邊無線路由器的節點信息輸出
流程:
ifconfig eth0 down
ifconfig ra0 upiwpriv ra0 set NetworkType=Infra
iwpriv ra0 set AuthMode=WPA2PSK
iwpriv ra0 set EncrypType=AES
iwpriv ra0 set SSID="wyb"
iwpriv ra0 set WPAPSK="12345678" //無線路由器的密碼注意:獲取連接wifi時,所要連接的wifi必須是打開的否則會報錯;
連接成功後配置ra0的IP地址:
動態獲取ip
udhcpc -i ra0從Busybox的examples/udhcp/下copy simple.script文件到開發板/usr/share/udhcpc/下,並重命名爲default.script,然後更改文件default.script的權限, chmod a+x default.script。(如果你沒有在開發板上修改權限的話,是不能獲取ip的,錯誤可能是這樣的) >: udhcpc -i wlan0 udhcpc (v1.20.2) started Sending discover... Sending select for 192.168.1.110... Lease of 192.168.1.110 obtained, lease time 7200 後邊啥都沒了。。。。。。然而這並不是正確的!
手動設置ip
ifconfig ra0 192.168.1.67
ping 192.168.1.1 //測試網絡是否通,請ping 客戶wifi路由器的ip,連接上來就可以ping通路由器
注:實測用官方下載的驅動包;經過上面的配置;編譯是可以通過的,驅動是可以正常加載並ping同的;
註釋:韋東山怎麼使用wifi的:
1 參看linux內核支持哪種wifi芯片:在https://wireless.wiki.kernel.org/en/users/drivers/mediatek 網站中查看;
主要看自己wifi設備的ID,如(Atheros : VID 0x13D3 PID 0x3327 (成品型號 AR9271));
2 編譯內核是相應的wifi驅動編譯如內核;
cd drivers/net/wireless/
grep "0x3327" * -nR //查找哪個文件中有打開同目錄的makefile 確定配置項CONFIG_ATH9K_HTC,
make menuconfig, /CONFIG_ATH9K_HTC 得到下面信息 / 斜槓表示搜索 改爲y:編輯進內核
這時開機應該就可以顯示支持了,有的要在內核文件系統的固定目錄下,放置固件;
3 使用wifi網卡:iw、wpa_supplicant、dhcp這幾個命令是需要的,要編譯這幾個命令,編譯好後放入文件系統中;
20171118更新:
開啓ra0顯示錯誤:
RTUSB_VendorRequest failed(-110),TxFlags=0x0, ReqType=IN, Req=0x7, Idx=0x1710,pAd->Flags=0x31000002
原因:./load3518e 腳本調用lowpower.sh (該腳本關閉了USB電源)
#關閉USB PHY的總電源:0x20050080 [12]bit配置爲0 himm 0x20050080 0x000121a8 #關閉USB PHY的模擬電源:0x20050084 [22]bit配置爲1 himm 0x20050084 0x005d2188
解決:
註釋掉這兩個寫寄存器的操作:
#關閉USB PHY的總電源:0x20050080 [12]bit配置爲0 #himm 0x20050080 0x000121a8 #關閉USB PHY的模擬電源:0x20050084 [22]bit配置爲1 #himm 0x20050084 0x005d2188