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

lsusb命令无法显示部分USB游戏手柄设备详情的问题求助

lsusb命令无法显示部分USB游戏手柄设备详情的问题求助

我正在开发一个桌面应用,需要用到游戏手柄,目前用lsusb命令来检测手柄是否连接。正常情况下,连接手柄后lsusb会显示设备的型号名称,比如我常用的SHANWAN Android GamepadDragonRise Inc. PC TWIN SHOCK Gamepad

但遇到了一个奇怪的问题:当同时连接这两个手柄时,有些系统上lsusb能正常显示所有设备的完整信息:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 413c:2113 Dell Computer Corp. Dell KB216 Wired Keyboard
Bus 001 Device 002: ID 413c:301a Dell Computer Corp. Dell MS116 USB Optical Mouse
Bus 001 Device 028: ID 2563:0526 SHANWAN Android Gamepad
Bus 001 Device 029: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

但在另一些系统上,SHANWAN Android Gamepad的型号名称却不显示,输出变成了这样:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 413c:2113 Dell Computer Corp. Dell KB216 Wired Keyboard
Bus 001 Device 002: ID 413c:301a Dell Computer Corp. Dell MS116 USB Optical Mouse
Bus 001 Device 028: ID 2563:0526
Bus 001 Device 029: ID 0079:0006 DragonRise Inc. PC TWIN SHOCK Gamepad
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

明明两个手柄都连接正常,但SHANWAN的型号名称缺失了,有没有办法解决这个问题?


可能的解决方案:

  • 检查并更新USB设备ID数据库
    lsusb显示的设备名称是从系统的usb.ids数据库获取的,这个文件通常在/usr/share/hwdata/usb.ids或者/var/lib/usbutils/usb.ids路径下。你可以搜索这个文件里有没有2563:0526这个VID/PID组合:

    grep -A 1 "2563" /usr/share/hwdata/usb.ids
    

    如果找不到对应的SHANWAN设备名称,说明数据库里没有收录这个设备。这时候可以更新数据库:

    • Debian/Ubuntu系系统可以直接运行sudo update-usbids命令,自动下载最新的usb.ids文件。
    • 其他系统可以手动替换最新的usb.ids文件(从Linux USB项目的官方维护源获取)。
  • 查看设备的详细USB描述符
    有些设备本身可能没有正确返回产品字符串,导致lsusb无法显示名称。你可以用lsusb -v命令查看该设备的详细信息,重点看iProduct字段:

    lsusb -v -d 2563:0526
    

    如果输出里iProduct的值是0,或者对应的字符串为空,那说明这个手柄硬件本身没有提供产品名称,这种情况下lsusb确实没法显示,你只能通过VID/PID(2563:0526)来识别这个设备。

  • 更新usbutils工具包
    lsusb是usbutils包的一部分,旧版本的工具可能对新设备的兼容性不好。可以尝试重新安装或更新这个包:

    # Debian/Ubuntu系
    sudo apt update && sudo apt install --reinstall usbutils
    # Fedora/RHEL系
    sudo dnf reinstall usbutils
    
  • 检查udev规则
    少数情况下,udev规则可能影响设备信息的显示。可以查看/etc/udev/rules.d//lib/udev/rules.d/下的规则文件,看有没有针对USB游戏手柄的特殊规则,不过这种情况比较少见。

备注:内容来源于stack exchange,提问作者rootone

火山引擎 最新活动