跳到主要内容

VID/PID 与 Serial 使用约定

XRUSB 通过 MCS 申请了一组 USB 设备 VID/PID(16D0:1492),用于示例代码与通用开发板固件。

在满足以下约定的前提下,任何基于 XRUSB 协议栈的固件,都可以复用这组 VID/PID,而不必另外购买 PID:

  1. 必须通过 Serial 区分不同设备 / 厂商。

  2. Serial 的厂商品牌前缀需要向本项目贡献者申请,并显式添加到本文档(申请不收取任何费用)。

  3. Serial 生成规则为:

    <厂商品牌前缀>-<产品/项目前缀>-<UID_HEX>

    详细要求见下文。

Serial 规则

1. 厂商品牌前缀

  • 厂商品牌前缀用于标识「谁」在使用这组 VID/PID。
    • 前缀长度 不少于 6 个字符
    • 前缀 只能包含可见 ASCII 字符,不允许空格和控制字符。
    • 不对大小写做限制,但是建议同一个前缀只使用一种写法:全大写、全小写或首字母大写。
  • 建议:
    • 使用能够明显代表团队 / 公司 / 学校的缩写或名称,例如:XRobotQDU-Future 等。
    • 不建议使用过短或含义不明的前缀(例如单字符 XA 等)。

2. 产品/项目前缀

  • 由该厂商自行定义,用于区分不同产品或项目线。
  • 也应仅使用可见 ASCII 字符,推荐长度 1–16 字符。
  • 示例:CDCIMUMainCtrlRobotArm 等。

3. UID_HEX

  • 从芯片的硬件 UID 读取原始字节,并转换为十六进制字符串。
  • 推荐直接使用完整 UID:
    • 例如 STM32 / CH32 常见 UID 为 96bit(12 字节),对应 24 个十六进制字符。
  • 实现上通常表现为在构造函数中传入 {addr, size},如:
    • STM32:{reinterpret_cast<void*>(UID_BASE), 12}
    • CH32V2/V3:{reinterpret_cast<void*>(0x1FFFF7E8), 12}

对同一块物理设备,Serial 应在固件升级、重刷时保持不变,通常意味着始终从同一硬件 UID 派生 Serial。

4. 示例

在遵守上述规则的前提下,一个合法的 Serial 示例为:

XRobot-CDC-0123456789ABCDEF01234567
QDU-Future-MainCtrl-89ABCDEF0123456701234567

其中:

  • XRobot / QDU-Future 为已申请并登记在本文档中的厂商品牌前缀;
  • CDC / MainCtrl 为产品/项目前缀;
  • 末尾为 UID_HEX。

允许场景

在遵守本文件约定的前提下,对于任何商用 / 个人用途均允许复用 VID/PID = 16D0:1492
本项目不对兼容性、驱动行为或各操作系统的识别结果做出任何保证。

尽管任何遵守约定的 (VID, PID, Serial) 组合在全局范围内都是唯一的,对于大型商用项目仍然建议申请独立的 VID/PID,以获得更强的可控性和品牌独立性。

如何申请厂商品牌前缀

你可以通过以下任意一种方式申请厂商品牌前缀(免费):

  1. 在 GitHub 仓库提交 issue,说明希望申请的前缀和用途;
  2. Fork 仓库,修改本文档,在「分配列表」中添加你的厂商品牌前缀,然后提交 Pull Request;
  3. 通过本项目提供的邮箱 / 社区 / 交流群联系维护者(见项目首页说明)。

申请通过后,你的厂商品牌前缀将被添加到下面的分配列表中,并可按本文件的约定复用 VID/PID。

分配列表

XRobot 项目团队

  • XRUSB-DEMO:用于 XRUSB 演示 / 例程
  • XRobot:用于 XRobot 发布的产品

青岛大学 RoboMaster 未来战队

  • QDU-Future:用于机器人主控