RT3070無線網卡分兩種驅動,分別是STA模式和軟AP模式。現將移植的過程記錄下來。
下載 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.bz2 , 這個是STA模式的RT3070網卡驅動。
# tar jxvf 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.bz2
#cd 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.bz2
修改Makefile
#vim Makefile
1.找到
RTMP_SRC_DIR = $(RT28xx_DIR)/RT$(CHIPSET)
#PLATFORM: Target platform
PLATFORM = PC
#PLATFORM = 5VT
#PLATFORM = IKANOS_V160
紅色的 PC 修改成你需要的目標機器,我的目標平台是arm SUMSUNG 2440,所以我們修改成SMDK。
2.找到
ifeq ($(PLATFORM),SMDK)
LINUX_SRC = /root/fuck/linux-2.6.28.7/
CROSS_COMPILE = /usr/local/arm/3.4.1/bin/arm-linux-
endif
紅字部分修改成你核心代碼的位置,同時指定你的編譯器位置。
3. make.
4.將rt3070sta.ko加入到檔案系統中,在目標板中運行 insmod rt3070sta.ko.
5.如果載入出現一下錯誤:
#insmod rt3070sta.ko
insmod: error inserting 'rt3070sta.ko': -1 Unknown symbol in module
[ 2443.154486] rt2070ap: Unknown symbol usb_alloc_urb
[ 2443.154628] rt2070ap: Unknown symbol usb_free_urb
[ 2443.155032] rt2070ap: Unknown symbol usb_register_driver
[ 2443.155324] rt2070ap: Unknown symbol usb_put_dev
[ 2443.155439] rt2070ap: Unknown symbol usb_get_dev
[ 2443.155652] rt2070ap: Unknown symbol usb_submit_urb
[ 2443.156164] rt2070ap: Unknown symbol usb_control_msg
[ 2443.156553] rt2070ap: Unknown symbol usb_deregister
[ 2443.157013] rt2070ap: Unknown symbol usb_kill_urb
[ 2443.157116] rt2070ap: Unknown symbol usb_buffer_free
[ 2443.157443] rt2070ap: Unknown symbol find_vpid
[ 2443.157675] rt2070ap: Unknown symbol usb_buffer_alloc
開始我也不知道為什麼會出現上面的這些問題,後來在網上找到了遇
到同一問題的一個開發人員,用下面這個辦法解決了這個問題。
需要在檔案os/linux/usb_main_dev.c檔案的開頭加上如下一行代碼:
MODULE_LICENSE(“GPL”);
然後重新編譯、重新載入,即可得到正確的結果。
7.ifconfig ra0 up
成功載入,不過這個是在你正確的將source目錄下的RT2870STA.dat複製到目標檔案系統的/etc/Wireless/RT2870STA/目錄下。
8.# ifconfig ra0 up
(Efuse for 3062/3562/3572) Size=0x2d [2d0-2fc]
RTMP_TimerListAdd: add timer obj c48d2288!
RTMP_TimerListAdd: add timer obj c48d22b4!
RTMP_TimerListAdd: add timer obj c48d22e0!
RTMP_TimerListAdd: add timer obj c48d225c!
RTMP_TimerListAdd: add timer obj c48d21d8!
RTMP_TimerListAdd: add timer obj c48d2204!
RTMP_TimerListAdd: add timer obj c489c81c!
RTMP_TimerListAdd: add timer obj c488bf44!
RTMP_TimerListAdd: add timer obj c488bf78!
RTMP_TimerListAdd: add timer obj c489c8b4!
RTMP_TimerListAdd: add timer obj c489c7c4!
RTMP_TimerListAdd: add timer obj c489c884!
-->RTUSBVenderReset
<--RTUSBVenderReset
Key1Str is Invalid key length(0) or Type(0)
Key2Str is Invalid key length(0) or Type(0)
Key3Str is Invalid key length(0) or Type(0)
Key4Str is Invalid key length(0) or Type(0)
1. Phy Mode = 5
2. Phy Mode = 5
NVM is Efuse and its size =2d[2d0-2fc]
phy mode> Error! The chip does not support 5G band 5!
RTMPSetPhyMode: channel is out of range, use first channel=1
(Efuse for 3062/3562/3572) Size=0x2d [2d0-2fc]
3. Phy Mode = 9
MCS Set = ff 00 00 00 01
<==== rt28xx_init, Status=0
0x1300 = 00064300
運行結果,預設的RT2870STA.DAT檔案設定的一些問題。修改檔案即可。
4. 建立檔案夾 /etc/Wireless/RT2870STA/ ,複製RT2870STA.DAT檔案到該檔案夾中。
總結,RT3070無線網卡的編譯折磨了我一整天,收穫還是很大的。