Ambiguous USB ID causes probe failure

Live forum: http://rt2x00.serialmonkey.com/viewtopic.php?t=5502

Xobs

01-08-2009 08:09:30

I'm using compat-wireless-20090728 on an ARM running a modified Linux 2.6.26.3 that includes some patches to get more recent compat packages to compile. The setup seems to work well for most wireless cards I've tried, but I'm running into problems with a new RT73 USB device.

It has an idVendor of 148f, and an idProduct of 2573. Since I have both the rt2500usb and rt73usb cards enabled, and that Vendor and Product ID are valid for both, the rt2500usb seems to detect the card first and then reject it

[code3524fqok]
[ 14.470000] usb 1-1.1: new high speed USB device using fsl-ehci and address 4
[ 14.720000] usb 1-1.1: configuration #1 chosen from 1 choice
[ 14.870000] phy1 -> rt2x00_set_chip: Info - Chipset detected - rt: 1201, rf: 0000, rev: 00000000.
[ 14.880000] phy1 -> rt2500usb_init_eeprom: Error - Invalid RT chipset detected.
[ 14.890000] phy1 -> rt2x00lib_probe_dev: Error - Failed to allocate device.
[ 14.990000] usb 1-1.1: New USB device found, idVendor=148f, idProduct=2573
[ 14.990000] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 15.030000] usb 1-1.1: Product: 54M.USB.......
[ 15.030000] usb 1-1.1: Manufacturer: Ralink
[/code3524fqok]

After inserting the card, I don't get any additional network devices. However, if I remove the line from rt2500usb.c indicating that it knows how to deal with that particular vendor / product pair, the rt73usb driver will happily take over and drive the card

[code3524fqok]
[ 33.190000] usb 1-1.1: new high speed USB device using fsl-ehci and address 3
[ 33.440000] usb 1-1.1: configuration #1 chosen from 1 choice
[ 33.460000] usb 1-1.1: New USB device found, idVendor=148f, idProduct=2573
[ 33.470000] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 33.510000] usb 1-1.1: Product: 54M.USB.......
[ 33.510000] usb 1-1.1: Manufacturer: Ralink
[ 33.830000] cfg80211: Calling CRDA to update world regulatory domain
[ 34.630000] phy0 -> rt2x00_set_chip: Info - Chipset detected - rt: 1300, rf: 0002, rev: 0002573a.
[ 34.670000] Registered led device: rt73usb-phy0::radio
[ 34.680000] Registered led device: rt73usb-phy0::assoc
[ 34.680000] Registered led device: rt73usb-phy0::quality
[ 34.700000] usbcore: registered new interface driver rt73usb
[/code3524fqok]

After this, I get a wlan0 that works (aside from having a tendency to disconnect due to missed IEEE80211_STA_CONNECTION_POLL, but that's a topic for another post.)

Is this Vendor / Product ID pair really valid for both the rt2500usb and rt73usb drivers? If so, how can I have it try the rt73usb card when the rt2500usb rejects it?

IvD

01-08-2009 20:35:54

You have to blacklist the rt2500usb module if you don't need it. This is a known problem and is the fault of hardware manufacturers who label their hardware incorrectly.
More recent kernels have a fallback approach which tries to load the second module if the first one indicates it cannot handle the hardware.