-3
\$\begingroup\$

Can you change an USB device's descriptors? My boss wants to change a USB diagnostic device's name. I thought changing the USB Device Description would be sufficient, but I don't know if it is possible to do. Thank you for helping!

Clarification: I don't have the mentioned device right now, so let's say I want to change my pendrive's name. (I attach a few screenshot instead describing it more) How would You do it (if it is even possible without messing up something seriously)? All I know is that I should do something with the device descriptors.

Device manager shows the device's name Device properties Safe remove displays the same name

\$\endgroup\$
  • 1
    \$\begingroup\$ This might be better on stack exchange (programming question), I suspect that's why it was down voted.. \$\endgroup\$ – Spoon Jun 27 '14 at 11:44
  • \$\begingroup\$ I tried to explain it more, but I don't know the exact device model's name right now. \$\endgroup\$ – appl3r Jun 27 '14 at 13:40
  • 2
    \$\begingroup\$ You need to know which usb chip is being used. Once you know that, you can look for a datasheet or programming application. Some usb drives use generic usb ics, with the usb descriptor information on a programable eeprom. Others are not programable. \$\endgroup\$ – Passerby Jun 27 '14 at 23:28
  • \$\begingroup\$ This question appears to be off-topic because it is about a stanard USB "thumb" drive. \$\endgroup\$ – Brian Carlton Oct 28 '14 at 21:43
4
\$\begingroup\$

USB device descriptors are contained within the USB devices themselves. For example the following code is taken from USB device code written using the Atmel Sofware Framework:

#define  USB_DEVICE_VENDOR_ID             USB_VID_ATMEL
#define  USB_DEVICE_PRODUCT_ID            USB_PID_ATMEL_ASF_CDC
#define  USB_DEVICE_MAJOR_VERSION         1
#define  USB_DEVICE_MINOR_VERSION         0
#define  USB_DEVICE_MANUFACTURE_NAME      "Peter Johnson"
#define  USB_DEVICE_PRODUCT_NAME          "IMP"

So I can easily change it by recompiling the program and writing it to the FLASH memory on the microcontroller because I have the source code. In your case however because the device has been developed by a third-party it leaves the following main possibilities I can think of:

  • The descriptor may be stored in ROM (read-only memory) or similar making it practically impossible to change. That's probably not that likely for a diagnostic type device.

  • The descriptor may be stored in FLASH or another style of non-volatile memory but might not have any form of bootloader, instead requiring attachment of a hardware programmer and depending on the device it may be hard to determine what's required.

  • It might have a bootloader allowing it to technically be changed, but the vendor might not be interested in assisting and/or providing the firmware binaries in an unencrypted form. Most production firmware is likely to have code protection enabled to prevent you reading it back.

  • The vendor might be very happy to assist and provide you with new firmware with the changes made for you.

  • The device may already have a documented / supported way to change the descriptor details.

The first thing I'd do is contact the vendor to ask them - if you're purchasing their hardware they might not be opposed to it being re-badged in some way. Failing that the next thing to do after you receive the device is to pop it open and see what sort of chip is used for the USB interface and doing a search for further details on the part number.

For a diagnostic tool which is presumably a relatively low-volume product it's likely to either be a microcontroller or some sort of USB bridge chip like a USB to serial converter. Some manufacturers like to remove part numbers to obfuscate their designs and the datasheets for some chips are only available under NDA, but there's not really any way to know until you receive the device.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.