VID/PID and Serial Number Policy
XRUSB has obtained a USB device VID/PID pair (16D0:1492) via MCS, used for example code and general-purpose development boards.
Under the following conditions, any firmware based on the XRUSB stack may reuse this VID/PID without purchasing an additional PID:
-
You must use the USB Serial Number to distinguish different devices / vendors.
-
The vendor prefix part of the Serial must be requested from the project maintainers and explicitly added to this document (there is no fee for this).
-
The Serial format is:
<VendorPrefix>-<ProductPrefix>-<UID_HEX>Detailed requirements are described below.
Serial Rules
1. Vendor Prefix
- The vendor prefix identifies who is using this VID/PID.
- The prefix length must be at least 6 characters.
- The prefix must consist only of visible ASCII characters, no spaces or control characters are allowed.
- There is no restriction on letter case, but it is recommended to stick to a single style for a given prefix: all-uppercase, all-lowercase, or Capitalized.
- Recommendations:
- Use a name or abbreviation that clearly represents your team / company / school, for example:
XRobot,QDU-Future, etc. - Very short or meaningless prefixes (e.g. a single letter like
X,A, etc.) are not recommended.
- Use a name or abbreviation that clearly represents your team / company / school, for example:
2. Product / Project Prefix
- Defined by the vendor, used to distinguish different products or project lines.
- Must also only use visible ASCII characters; recommended length is 1–16 characters.
- Examples:
CDC,IMU,MainCtrl,RobotArm, etc.
3. UID_HEX
- Read the raw bytes from the chip’s hardware UID and convert them to a hexadecimal string.
- It is recommended to use the full UID:
- For example, many STM32 / CH32 parts have a 96-bit UID (12 bytes), which corresponds to 24 hex characters.
- In code, this typically appears as passing
{addr, size}into the constructor, e.g.:- STM32:
{reinterpret_cast<void*>(UID_BASE), 12} - CH32V2/V3:
{reinterpret_cast<void*>(0x1FFFF7E8), 12}
- STM32:
For the same physical device, the Serial should remain unchanged across firmware updates / reflashes.
In practice this usually means always deriving the Serial from the same hardware UID.
4. Examples
With the above rules, valid Serial examples include:
XRobot-CDC-0123456789ABCDEF01234567
QDU-Future-MainCtrl-89ABCDEF0123456701234567
Where:
XRobot/QDU-Futureare vendor prefixes that have been requested and registered in this document;CDC/MainCtrlare product / project prefixes;- The trailing part is
UID_HEX.
Allowed Usage
As long as you follow this document, you may reuse VID/PID = 16D0:1492 for any commercial or personal project.
The XRUSB project does not provide any guarantees regarding compatibility, driver behavior, or how different operating systems treat this VID/PID.
Although any (VID, PID, Serial) combination that respects these rules should be globally unique,
for large-scale commercial products it is still recommended to obtain an independent VID/PID,
in order to have better control and brand independence.
How to Request a Vendor Prefix
You can request a vendor prefix (free of charge) in any of the following ways:
- Open a GitHub issue in the repository, describing the prefix you want and how you plan to use it;
- Fork the repository, edit this document to add your vendor prefix under Assigned Prefixes, and submit a Pull Request;
- Contact the maintainers via the project’s email / community / chat group (see the project homepage for details).
Once approved, your vendor prefix will be added to the list below, and you may use the shared VID/PID under the rules of this document.
Assigned Prefixes
XRobot Project Team
XRUSB-DEMO: Used for XRUSB demos / examplesXRobot: Used for products released by XRobot
Qingdao University RoboMaster Future Team
QDU-Future: Used for robot main controller