You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyUSB可获取idVendor/idProduct但dev返回None问题求助

解决PyUSB的usb.core.find()返回None的问题

针对你能获取到设备的idVendor(34148/0x8564)和idProduct(4096/0x1000)但usb.core.find()返回None的问题,按以下步骤排查:

1. 确认参数格式与调用方式

检查find()的参数是否正确传递,PyUSB支持十进制或十六进制的vid/pid值,两种写法都有效,需确保无拼写错误:

# 十进制写法
dev = usb.core.find(idVendor=34148, idProduct=4096)
# 十六进制写法(与设备管理器显示格式一致,更常用)
dev = usb.core.find(idVendor=0x8564, idProduct=0x1000)

如果设备连接在特定总线或地址,可指定参数缩小查找范围:

# 先遍历所有设备获取bus和address
for device in usb.core.find(find_all=True):
    print(f"Bus: {device.bus}, Address: {device.address}, VID: {device.idVendor}, PID: {device.idProduct}")
# 再用bus和address精准查找
dev = usb.core.find(bus=xxx, address=xxx)

2. 解决权限问题(Linux/macOS)

Linux和macOS下普通用户默认无USB设备访问权限,会导致find()返回None:

  • Linux:创建udev规则文件(如/etc/udev/rules.d/50-usb-device.rules),添加内容:
    SUBSYSTEM=="usb", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", MODE="0666"
    
    重新加载udev规则并触发生效:
    sudo udevadm control --reload-rules
    sudo udevadm trigger
    
    拔插设备后重新运行代码。
  • macOS:可临时用sudo运行Python脚本,或通过系统权限设置给当前用户分配USB设备访问权限。

3. 解除内核驱动占用(Linux/Windows)

如果设备被系统内核驱动占用,PyUSB无法获取设备控制权:

  • Linux:先查看设备绑定的驱动模块:
    lsusb -t
    
    解除绑定(以usb-storage驱动为例):
    echo -n "总线号-设备号" | sudo tee /sys/bus/usb/drivers/usb-storage/unbind
    
    例如总线号为1、设备号为5,执行echo -n "1-5" | sudo tee /sys/bus/usb/drivers/usb-storage/unbind。
  • Windows:打开设备管理器,找到目标USB设备,右键选择「更新驱动程序」→「浏览我的计算机以查找驱动程序」→「让我从计算机上的可用驱动程序列表中选取」,选择libusb-win32或WinUSB驱动(需提前用驱动替换工具配置)。

4. 验证设备是否真的存在

运行以下代码遍历所有USB设备,确认目标vid/pid的设备是否在系统识别列表中:

import usb.core
import usb.util

for device in usb.core.find(find_all=True):
    try:
        print(f"VID: {device.idVendor} (0x{device.idVendor:04x}), PID: {device.idProduct} (0x{device.idProduct:04x})")
        print(f"设备名称: {usb.util.get_string(device, device.iProduct)}")
    except:
        # 跳过无法读取字符串的设备异常
        continue

如果列表中没有目标设备,说明设备未正确连接或系统未识别。


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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:50:27