This documention is in the process of being updated for ODrive Pro


This page documents the low level USB configuration. If you’re looking for a higher level protocol documentation see Native Protocol and ASCII Protocol.

This page assumes that you are familiar with the general USB architecture, in particular with terms like “configuration”, “interface” and “endpoint”.

On USB the ODrive provides a single configuration which is a composite device consisting of a CDC device (virtual COM port) and a vendor specific device.

The following interface groups are present:

  • Interface Association: Communication Device Class (CDC)
    • Interface 0:
      • Endpoint 0x82: CDC commands

    • Interface 1:
      • Endpoint 0x01: CDC data OUT

      • Endpoint 0x81: CDC data IN

  • Interface Association: Vendor Specific Device Class
    • Interface 2:
      • Endpoint 0x03: data OUT

      • Endpoint 0x83: data IN

The CDC interface (endpoint pair 0x01, 0x81) runs the ASCII Protocol by default (see odrv0.config.enable_ascii_protocol_on_usb). The vendor specific interface (endpoint pair 0x03, 0x83) runs the Native Protocol (the packet based variant).

The two interfaces can not (yet) be used simultaneously.