我正在嘗試建立一個內核模組來使用雷凌RT5370Wi-Fi USB 設備,附 lsusb ID 148f:5370
。我的主機是一台NAS,Linux核心是基於2.6.33.2版本。
我從以下網站下載了驅動程式來源聯發科技網站我幾乎處於所描述的相同情況這裡;編譯後的核心模組rt5370sta.ko
似乎可以正確加載,因為:
[/share/Public/ralink/alt] # insmod rt5370sta.ko
[/share/Public/ralink/alt] # dmesg -c
rtusb init rt2870 --->
=== pAd = f9d70000, size = 511776 ===
<-- RTMPAllocAdapterBlock, Status=0
Efuse Size=0x2d [2d0-2fc]
NVM is EFUSE
usbcore: registered new interface driver rt2870
但是當建立介面時問題就開始了,特別是RTUSBBulkReceive:提交 Rx URB 失敗 -22訊息:
[/share/Public/ralink/alt] # ifconfig ra0 up
[/share/Public/ralink/alt] # dmesg -c
RtmpAsicLoadFirmware: ver 21/21, sum cdf7/cdf7, mac cdf72100
NICLoadFirmware: firmware loaded already
<-- RTMPAllocTxRxRingMemory, Status=0
RTMP_TimerListAdd: add timer obj f9db81c4!
RTMP_TimerListAdd: add timer obj f9db81f0!
RTMP_TimerListAdd: add timer obj f9db821c!
RTMP_TimerListAdd: add timer obj f9db8198!
RTMP_TimerListAdd: add timer obj f9db8114!
RTMP_TimerListAdd: add timer obj f9db8140!
RTMP_TimerListAdd: add timer obj f9d8295c!
RTMP_TimerListAdd: add timer obj f9d71f90!
RTMP_TimerListAdd: add timer obj f9d71fc0!
RTMP_TimerListAdd: add timer obj f9d829f4!
RTMP_TimerListAdd: add timer obj f9d82904!
RTMP_TimerListAdd: add timer obj f9d829c4!
-->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 15!
RTMPSetPhyMode: channel is out of range, use first channel=1
3. Phy Mode = 9
AntCfgInit: primary/secondary ant 0/1
NICInitRT5390RFRegisters: Initialize frequency - EEPROM = 46, RF_R17 = 46
AsicSetRxAnt, switch to main antenna
bAutoTxAgcG = 0
---> InitFrequencyCalibration
InitFrequencyCalibration: frequency offset in the EEPROM = 46
<--- InitFrequencyCalibration
MCS Set = ff 00 00 00 01
RTUSBBulkReceive: Submit Rx URB failed -22
<==== rt28xx_init, Status=0
0x1300 = 00064300
當然它不會掃描超支開始遞增:
[/share/Public/ralink/alt] # /usr/local/bin/iwlist ra0 scan
ra0 No scan results
[/share/Public/ralink/alt] # ifconfig ra0
ra0 Link encap:Ethernet HWaddr 1C:BF:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:1098 frame:1098
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:3400 (3.3 KiB)
在這種情況下,檢查訊息再次導致很多這樣的情況-22錯誤:
[/share/Public/ralink/alt] # dmesg -c
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
CMDTHREAD_RESET_BULK_IN: Submit Rx URB failed(-22), status=0
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
RTUSBBulkOutMLMEPacket: Submit MLME URB failed -22
CMDTHREAD_RESET_BULK_IN: Submit Rx URB failed(-22), status=0
CMDTHREAD_RESET_BULK_IN: Submit Rx URB failed(-22), status=0
所以我的問題是:什麼是RTUSBBulkOutMLMEPacket:提交 MLME URB 失敗 -22意思是如果可能的話如何解決?我無法在任何地方找到此資訊。