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

Windows下Pyusb调用is_kernel_driver_active报NotImplementedError求助

解决pyusb在Windows下调用is_kernel_driver_active时的NotImplementedError问题

问题场景

  • 操作系统:Windows
  • Python版本:3.7
  • 使用库:pyusb
  • 设备:普通光电鼠标
  • 报错代码行:
    if dev.is_kernel_driver_active(0):
    
  • 错误信息:

    NotImplementedError: Operation not supported or unimplemented on this platform

原因分析

pyusb的is_kernel_driver_active方法是为类Unix系统(如Linux)设计的,用于检查内核驱动是否绑定了指定USB接口。由于Windows的USB驱动模型与Linux差异较大,该方法在Windows平台上并未实现,因此调用时会抛出NotImplementedError——这和设备本身的驱动是否正常无关,更换其他USB设备也会出现同样问题。

解决方案

1. 替换设备驱动为libusb兼容版本

Windows下pyusb需要依赖libusb驱动才能直接访问USB设备,你可以通过Zadig工具将鼠标的默认驱动替换为libusb-win32或libusbK:

  • 打开Zadig工具,在设备列表中找到你的光电鼠标
  • 将驱动替换为libusb-win32(或libusbK)
  • 重启设备后,pyusb就能直接与设备通信,无需再检查内核驱动状态

2. 修改代码移除不支持的方法调用

移除is_kernel_driver_active的检查逻辑,直接进行设备操作。修改后的示例代码如下:

import usb.core

vid = 0x1C4
pid = 0x002

dev = usb.core.find(idVendor=vid, idProduct=pid)

if dev is None:
    raise ValueError("未找到目标USB设备")

interface_0 = dev[0].interfaces()[0]
intf_num = interface_0.bInterfaceNumber

# 重置设备并配置
dev.reset()
dev.set_configuration()

# 此处添加后续的设备读写操作代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:57:09