VID/PID 与 Serial 使用约定
XRUSB 通过 MCS 申请了一组 USB 设备 VID/PID(16D0:1492),用于示例代码与通用开发板固件。
在满足以下约定的前提下,任何基于 XRUSB 协议栈的固件,都可以复用这组 VID/PID,而不必另外购买 PID:
-
必须通过 Serial 区分不同设备 / 厂商。
-
Serial 的厂商品牌前缀需要向本项目贡献者申请,并显式添加到本文档(申请不收取任何费用)。
-
Serial 生成规则为:
<厂商品牌前缀>-<产品/项目前缀>-<UID_HEX>详细要求见下文。
Serial 规则
1. 厂商品牌前缀
- 厂商品牌前缀用于标识「谁」在使用这组 VID/PID。
- 前缀长度 不少于 6 个字符。
- 前缀 只能包含可见 ASCII 字符,不允许空格和控制字符。
- 不对大小写做限制,但是建议同一个前缀只使用一种写法:全大写、全小写或首字母大写。
- 建议:
- 使用能够明显代表团队 / 公司 / 学校的缩写或名称,例如:
XRobot、QDU-Future等。 - 不建议使用过短或含义不明的前缀(例如单字符
X、A等)。
- 使用能够明显代表团队 / 公司 / 学校的缩写或名称,例如:
2. 产品/项目前缀
- 由该厂商自行定义,用于区分不同产品或项目线。
- 也应仅使用可见 ASCII 字符,推荐长度 1–16 字符。
- 示例:
CDC、IMU、MainCtrl、RobotArm等。
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}
- STM32:
对同一块物理设备,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,以获得更强的可控性和品牌独立性。
如何申请厂商品牌前缀
你可以通过以下任意一种方式申请厂商品牌前缀(免费):
- 在 GitHub 仓库提交 issue,说明希望申请的前缀和用途;
- Fork 仓库,修改本文档,在「分配列表」中添加你的厂商品牌前缀,然后提交 Pull Request;
- 通过本项目提供的邮箱 / 社区 / 交流群联系维护者(见项目首页说明)。
申请通过后,你的厂商品牌前缀将被添加到下面的分配列表中,并可按本文件的约定复用 VID/PID。
分配列表
XRobot 项目团队
XRUSB-DEMO:用于 XRUSB 演示 / 例程XRobot:用于 XRobot 发布的产品
青岛大学 RoboMaster 未来战队
QDU-Future:用于机器人主控