Hi all.
Just a few minutes ago my picture of the world broke ![]()
From everything I’ve read (including this newsgroup) I got the
understanding, that when a USB device has a serial number (iSerialNumber
descriptor != 0), it would get a unique instance ID that is not
dependent on the port to which the device is connected.
However, this seems to be wrong.
I have a memory stick (from Lexar; the present from last year’s WinHEC
) that according to DDK’s usbview has a serial number descriptor.
According to what I believed to be true, it should always get the same
instance ID, no matter in which port of my USB hub I put it. But that’s
not what happens. After removing all traces of the device from the
system (with ‘devcon remove @instanceid’), I’ve plugged it into two of
the ports of my hub. Now devcon reports two instance IDs:
devcon findall @*lexar*:
USBSTOR\DISK&VEN_LEXAR&PROD_DIGITAL_FILM&REV_/W1.\7&12A5B146&0&K105572224030314AA__0000000000000000000000000&0:
LEXAR DIGITAL FILM USB Device
USBSTOR\DISK&VEN_LEXAR&PROD_DIGITAL_FILM&REV_/W1.\7&258760A9&0&K105572224030314AA__0000000000000000000000000&0:
LEXAR DIGITAL FILM USB Device
2 matching device(s) found.
Here’s the data displayed by usbview:
For one port:
Device Descriptor:
bcdUSB: 0x0110
bDeviceClass: 0x00
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x08 (8)
idVendor: 0x05DC (Lexar Media, Inc.)
idProduct: 0x0080
bcdDevice: 0x0001
iManufacturer: 0x01
iProduct: 0x01
iSerialNumber: 0x02
bNumConfigurations: 0x01
ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: Full
Device Address: 0x04
Open Pipes: 2
Endpoint Descriptor:
bEndpointAddress: 0x82
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00
Endpoint Descriptor:
bEndpointAddress: 0x03
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00
For the other port:
Device Descriptor:
bcdUSB: 0x0110
bDeviceClass: 0x00
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x08 (8)
idVendor: 0x05DC (Lexar Media, Inc.)
idProduct: 0x0080
bcdDevice: 0x0001
iManufacturer: 0x01
iProduct: 0x01
iSerialNumber: 0x02
bNumConfigurations: 0x01
ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: Full
Device Address: 0x04
Open Pipes: 2
Endpoint Descriptor:
bEndpointAddress: 0x82
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00
Endpoint Descriptor:
bEndpointAddress: 0x03
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00
Here’s some additional info that I extracted under Linux (btw., is there
an easy way to get the same info on Windows?):
Host scsi1: usb-storage
Vendor: LEXR PLUG DRIVE?K10557222403031
Product: LEXR PLUG DRIVE?K10557222403031
Serial Number: K105572224030314AA 00000000000
Protocol: Transparent SCSI
Transport: Bulk
GUID: 05dc0080ffff900000000000
Attached: Yes
If anyone could put some light on this and explain why this device
doesn’t get a location-independent instance ID, I would appreciate that
very much.
Best regards
Rolf Schaeuble