You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为指定厂商ID和产品ID的USB设备修改默认驱动程序?

如何为指定厂商ID和产品ID的USB设备修改默认驱动程序?

嗨,这个问题我之前帮朋友处理过类似的,正好给你捋捋可行的办法!你说的旧版PlayStation Buzz!手柄被识别成故障USB Hub、手动装HID驱动重启就失效的情况,核心就是要让系统开机时自动给指定VID/PID的设备绑定正确的驱动,分两种常见系统给你说:

Linux 系统操作步骤

  1. 先确认设备的VID和PID
    咱们得先精准定位目标设备,打开终端输入lsusb命令,找到那台被识别成Hub的Buzz手柄,输出里会类似这样:
Bus 001 Device 005: ID 054c:0268 Sony Corp. Buzz! Controller

这里的054c就是厂商ID(VID),0268是产品ID(PID),记下来。

  1. 创建udev规则实现持久化绑定
    udev是Linux里管理设备的工具,咱们写个规则让系统每次检测到这个设备时,自动切换到HID驱动:
  • 用文本编辑器创建规则文件,比如sudo nano /etc/udev/rules.d/99-buzz-controller.rules
  • 把下面的内容粘贴进去,注意把idVendoridProduct换成你刚才查到的数值:
SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", RUN+="/bin/sh -c 'echo -n %k > /sys/bus/usb/drivers/hub/unbind && echo -n %k > /sys/bus/usb/drivers/hid-generic/bind'"

这个规则的意思是:匹配到指定VID/PID的USB设备后,先把它从默认的hub驱动解绑,再绑定到hid-generic驱动上。

  1. 让规则立即生效
    保存文件后,执行下面两条命令重载udev规则并触发设备重新识别,不用重启就能生效,而且重启后也会自动应用:
sudo udevadm control --reload-rules
sudo udevadm trigger

Windows 系统操作步骤

如果是Windows环境,咱们可以通过自定义inf文件来关联驱动:

  1. 获取设备硬件ID
    打开设备管理器,找到那个被标记为故障的USB Hub,右键→属性→详细信息→下拉选“硬件ID”,你会看到类似USB\VID_054C&PID_0268的内容,复制下来。

  2. 创建自定义inf文件
    新建一个文本文档,把后缀改成.inf,比如BuzzController.inf,然后粘贴下面的内容,注意替换硬件ID和厂商名称:

[Version]
Signature="$Windows NT$"
Class=HIDClass
ClassGuid={745a17a0-74d3-11d0-b6fe-00a0c90f57da}
Provider=%ManufacturerName%
CatalogFile=BuzzController.cat
DriverVer=06/21/2023,1.0.0.0

[Manufacturer]
%ManufacturerName%=Standard,NTamd64

[Standard.NTamd64]
%BuzzController.DeviceDesc%=BuzzController_Install, USB\VID_054C&PID_0268

[BuzzController_Install]
Include=input.inf
Needs=HID_Inst.NT

[BuzzController_Install.Services]
Include=input.inf
Needs=HID_Inst.NT.Services

[Strings]
ManufacturerName="Sony"
BuzzController.DeviceDesc="PlayStation Buzz! Controller"
  1. 安装自定义驱动
    右键这个inf文件,选择“安装”,系统会自动完成驱动关联。之后重启电脑,你的旧版Buzz手柄就会默认被识别成HID设备了。

备注:内容来源于stack exchange,提问作者Marvin-wtt

火山引擎 最新活动