12
votes

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.

8

8 Answers

8
votes

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.

4
votes

Did you try

lsusb -v

When the verbose switch is used lsusb prints a lot of information.

1
votes

/proc/bus/usb/devices gives a lot more info than lsusb with basic options, and is easier to use from a program...

1
votes

The closest you can get to knowing about the product without opening the casing is the VID (Vendor ID) and (Product ID),

but AFAIK, many vendors use same VID, and PID (for driver compatibility) and change the chipset.

You can open the case, and wish the manufacturer did not erase the part number.

1
votes

Try

lspci -v 

you will have info on more things

0
votes

Get the ID with lsusb and search for it.

0
votes

I guess in depends case by case, with same factory, wifi usb dongle, I get

lsusb -v
Bus 001 Device 008: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
idVendor           0x148f Ralink Technology, Corp.
idProduct          0x3070 RT2870/RT3070 Wireless Adapter

which gives away 3070 as chipset.

Although, more search gives away your chip number listed in debian wiki as 2870,

USB: 050D:805C Belkin Components F5D8053 N Wireless Adapter v3000 [Ralink RT2870]

link

0
votes

You can also check with dmesg.

I have a USB BLE dongle and connecting it to my PC produces this:

[31254.130216] usb 1-4: USB disconnect, device number 5
[31305.979397] usb 1-4: new full-speed USB device number 6 using xhci_hcd
[31306.338254] usb 1-4: New USB device found, idVendor=0a12, idProduct=0001
[31306.338259] usb 1-4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[31306.338263] usb 1-4: Product: CSR8510 A10

From which I got the "CSR8510 A10" (which led me to the Qualcomm CSR8510 chipset).