You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Windows下STM32 USB CDC自定义厂商与串口名称显示问题求助

解决Windows下STM32 USB CDC自定义设备信息的简化方案

方案1:注册表脚本修改设备显示信息

无需驱动签名,用户只需导入注册表文件即可生效:

  • 设备连接Windows后,打开设备管理器,找到目标USB串口,右键→属性→详细信息→硬件ID,复制完整的硬件ID(格式如USB\VID_xxxx&PID_xxxx&MI_xx
  • 创建后缀为.reg的注册表文件,替换其中的硬件ID和自定义信息:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_xxxx&PID_xxxx&MI_xx\0000]
"FriendlyName"="你的自定义设备名称"
"Manufacturer"="你的自定义厂商名称"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_xxxx&PID_xxxx&MI_xx\0000\Device Parameters]
"PortName"="你的自定义串口名称"
  • 用户双击导入注册表,拔插设备后即可看到自定义名称。注意:此方法针对单设备实例,多台同PID/VID设备需分别处理,但操作门槛极低。

方案2:用DPInst简化未签名.inf安装

微软官方的DPInst工具可自动匹配设备并安装未签名驱动,简化用户操作:

  • 编写匹配你VID/PID的.inf文件:
[Version]
Signature="$Windows NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%ManufacturerName%
DriverVer=01/01/2024,1.0.0.0

[Manufacturer]
%ManufacturerName%=DeviceList,NTamd64,NTx86

[DeviceList.NTamd64]
%DeviceName%=USB_SERIAL, USB\VID_xxxx&PID_xxxx

[DeviceList.NTx86]
%DeviceName%=USB_SERIAL, USB\VID_xxxx&PID_xxxx

[USB_SERIAL]
Include=mdmcpq.inf
Needs=UsbSerial_Install

[USB_SERIAL.Services]
Include=mdmcpq.inf
Needs=UsbSerial_Install.Services

[Strings]
ManufacturerName="你的厂商名称"
DeviceName="你的自定义串口名称"
  • 将.inf文件与对应系统版本的DPInst.exe放在同一文件夹,用户双击DPInst.exe即可自动安装。Windows会弹出未签名提示,用户只需临时开启"允许未签名驱动"(Windows 10/11可在设置→更新和安全→恢复→高级启动→启动设置里开启),完成后即可显示自定义信息。

方案3:修改USB描述符匹配兼容已签名驱动

通过调整STM32的USB设备描述符,让Windows加载会读取设备字符串的已签名CDC驱动:

  • 在STM32的USB CDC初始化代码中,添加兼容ID描述符,将设备标记为与某款已被Windows原生支持且允许自定义名称的串口设备兼容(例如部分第三方USB转串口芯片的兼容ID)
  • 确保设备的字符串描述符(厂商名、产品名)已正确配置,Windows加载兼容驱动后会自动读取这些自定义字符串并显示。此方法无需修改VID/PID或申请签名,但需要具备基础的USB协议调试能力。

内容的提问来源于stack exchange,提问作者durukan oktay

火山引擎 最新活动