Universal Serial Bus

Speed: Rate: 1.5k to VDD Keep Alive Power
LOW 1.50Mb/s ±1.5% D- 1ms EOP 100mA @4.40 - 5.25v
FULL 12.000Mb/s ±0.25% D+ 1ms ±500ns frame 100mA @4.40 - 5.25v
HIGH 480.00Mb/s ±0.25% D+ & negotiate 125.0µs ±62.5 ns micro-frame 150mA @4 - 5.25v

Michael Hetherington's USB Keyboard demo and his the EXCELLENT Atapchi: World's Smallest Low-speed USB Analyzer

Making a USB A Male connection from PCB stock only.

RLC-3 USB to TTL serial converter

When using a generic USB serial adapter, the only reliable way to identify the device is to look for the new port to show up when the device is connected.

HTML 5 Web Apps can access the USB port.


USB OTG (making a USB perhiperal, such as a cell phone or tablet, into USB host)

USB Power

Device Identification

USB devices are identified by a VID (Vendor ID) and then by a PID (Product ID) under that VID. No other information about the device is transmitted to the computer from the device.

VID (Vender ID)

VID's are $5500

It MIGHT be possible to get a unique PID under someone elses VID. For example,
offers PIDs, under their VID for nothing, if your project qualifies. All hardware and software must be open source and present with a specific license file.

In the past, companies who have purchased a VID and then tried to re-sell PID's under it, have had the VID revoked by the usb.org. It's specifically prohibited without prior written approval. However, this pid.codes outfit seems to have been getting away with it for a long time, probably because they are open source and giving them out.

It also appears that SiLabs, the mfgr of the CP2104 has started selling PIDs under their VID!

But the key point is this: The VID PID tell the OS which driver to install. With a custom VID or even just a new PID under SiLabs, the driver no longer matches. SiLabs has a tool to make a custom version of the driver, but then you must distribute that with the product, and the user must pre-install the driver before Dexter is connected. And... and this is a really important issue... your driver is no longer certified by the OS vendor. E.g. it's an unsigned driver which Windows 8 and 10 will NOT let you install without disabling protection on the computer, which many large organizations will not allow. Adafruit users run into this all the time.

Debug / Sniffing

Xiaofan says:

USB sniffers:
  1. sniffusb 0.12 and 0.13. http://www.wingmanteam.com/usbsnoopy/
    • + logs in text format (for easy perl processing).
    • - does not work with windows xp
    • - chokes sometimes on large USB bulk transfers.
      Most perl scripts were made to parse the format of the logs created by this program.
  2. usb snoopy pro. http://sourceforge.net/projects/usbsnoop/
    • - logs in binary format (-> no further discussion necessary)
  3. sniff-bin . http://benoit.papillault.free.fr/usbsnoop/  This program looks similar to sniffusb
    • + logs in plain text (although slightly different format from sniffusb)
    • + works under windows xp
  4. Try DebugView as well. It is very useful for USB debugging.
  5. Under Linux, http://people.redhat.com/zaitcev/linux/ there are some work as well but it is quite new.

USB sniff log parser:

  1. usb snoopy pro
  2. usbsnoopy or sniff-bin
    There is a perl-script to generate the corresponding libusb call. I just read this recently in the Linux libusb mailing list.
    There are some other tools to read usbsnoop log file as well. Here is one of them.

See also:


Test of the WebUSB system for access to USB devices from the browser.