Linux – How to you identify the chipset of a usb device in Linux


I'd like to be able to identify the chipset a particular USB device is using. I know about lsusb (and now /proc/bus/usb/devices), but they don't provide as much information as lspci.

Here is an example of how I use lsusb:

(laptop:/proc/bus/usb) # lsusb -v -d 050d:805c

Bus 001 Device 008: ID 050d:805c Belkin Components
Device Descriptor:
  idVendor           0x050d Belkin Components
  idProduct          0x805c
  bcdDevice            0.01
  iManufacturer           1 Ralink
  iProduct                2 802.11 n WLAN

… and /proc/bus/usb/devices (thanks to a comment on this thread):

T:  Bus=01 Lev=02 Prnt=03 Port=02 Cnt=01 Dev#=  8 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=050d ProdID=805c Rev= 0.01
S:  Manufacturer=Ralink
S:  Product=802.11 n WLAN
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=  4mA

Although I can see that I'm looking at the right USB device (Belkin USB 801.11n with Ralink chipset), I still can't determine the exact chipset version. The "0x805c" doesn't match a chipset number I'd expect ( 2500 – 2900 ).

I'm thinking that perhaps it isn't even possible to query this information across the usb bus?

Thanks in advance for any help.

Best Solution

There is no general way to determine the chipset unless the manufacturer changes the ProductID for each different chipset, or updates the revision number. And even then you would need to know how the ProductID maps to the chipset.