标签: libusb

pyusb:无法设置配置

我正在尝试制作一个脚本(在Linux上),可以打开或关闭鼠标中的灯光.

这是我到目前为止的代码:

import usb.core
import usb.util
import sys
interface = 0
dev = usb.core.find(idVendor=0x1532, idProduct=0x0017)

def main():

        if dev is None:
            print "device not found"

        else:
        print "device found"
        if dev.is_kernel_driver_active(interface) is True:
            print "but we need to detach kernel driver"
            dev.detach_kernel_driver(interface)
            print "claiming device"
            usb.util.claim_interface(dev, interface)


            print "release claimed interface"
            usb.util.release_interface(dev, interface)
            print "now attaching the kernel driver again"
            dev.attach_kernel_driver(interface)
            print "all done"
return 0

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果我尝试做:dev.set_configuration()

claim_interface(dev,interface)之后

该脚本返回错误:usb.core.USBError:资源忙

在分离内核驱动程序后,为什么它仍然很忙?

python usb libusb pyusb

7
推荐指数
1
解决办法
1万
查看次数

知道USB设备的端点

是否有bash命令,程序或libusb函数(虽然我没有找到),它指示我是什么是usb设备的OUT或IN端点?

例如,libusb_interface_descriptor的bNumEndpoints(来自libusb1.0库)显示我的usb驱动器有3个端点,但我怎么知道它们的idnumber是多少?

libusb endpoint

7
推荐指数
2
解决办法
2万
查看次数

不调用libusb_exit()的后果是什么

我正在编写一个与USB视频播放控制器交互的用户空间程序.我使用C++编程,该程序旨在在Linux上运行.在研究libusb手册时,我遇到了这个void libusb_exit ( struct libusb_context * ctx )功能.

描述:

取消初始化libusb.

应在关闭所有打开的设备之后和应用程序终止之前调用.

手册没有解释为什么需要它.我对终止已经初始化并使用libusb而不调用的程序的后果感到好奇libusb_exit().如果由于某些原因我的程序libusb_exit()在终止之前无法调用,有人可以解释可能会发生什么坏事吗?它会导致系统资源泄漏吗?

c++ linux libusb c++14

7
推荐指数
1
解决办法
587
查看次数

Windows 7 上的 Pyusb 找不到任何设备

所以我安装了 Pyusb 1.0.0-alpha-1
在 Windows 下,我无法获得 USB 设备的任何句柄。

>>> import usb.core
>>> print usb.core.find()
None
Run Code Online (Sandbox Code Playgroud)

我确实插入了 1 个 USB 设备(idVendor=0x04d8,idProduct=0x0042),我尝试过,usb.core.find(idVendor=0x04d8, idProduct=0x0042)但也失败了。

在 Ubuntu 下,使用相同版本的 pyusb 和 python (2.6),我能够使用该代码成功找到我的设备,并与之通信。

那么如何让 pyusb 在 Windows 7 上找到 USB 设备呢?

python windows libusb pyusb libusb-1.0

6
推荐指数
2
解决办法
9693
查看次数

libusb中断传输

我需要对定制 HID USB 设备(控制面板上的一些按钮和 LED)驱动程序进行逆向工程。该驱动程序仅在 Windows 上可用,我们需要 *nix 实现。

该设备显然是 HID 设备,尽管不属于特定类别。它提供两个接口,每个接口都有一个中断端点。

我的设置当前涉及在 Ubuntu 主机上运行 Windows 的 VirtualBox,以通过 Wireshark 捕获 USB 流量。该协议相当简单,我已经有了很好的理解。

我在一个简单的 C++ 控制台程序中使用 libusb-1.0 进行原型设计。我已经设法通过发出 SET_REPORT 控制传输来切换 LED,但在通过传输中断接收按钮按下时遇到了困难。

事实上,以下调用将永远阻塞:

unsigned char bytes[8] = { 0 };
int len = 0;
int ret = libusb_interrupt_transfer(handle, 0x81, bytes, 8, &len, 0); 
Run Code Online (Sandbox Code Playgroud)

在 Wireshark 中检查生成的 URB 时,它看起来与在 Windows 会话中捕获的等效内容完全相同。但我仍然没有收到设备的回复。

我觉得我缺少一些设置。请注意,设备已正确打开,并且设备提供的两个接口已成功声明。即使在我的 Linux 应用程序中,通过控制传输的输入报告也会出现。

感谢您的指点!阿内

附录一:我想知道在使用时我应该如何指定我想要接收的报告ID libusb_interrupt_transfer()

附录二:将 Windows 驱动程序发出的请求与 Wireshark 中上述代码生成的请求进行比较时,我没有看到任何差异(URB 中的值相同)。但是,只有当 Windows 驱动程序发出中断传输时才会返回。

在 Wireshark 中检查 Windows 驱动程序通信时,除了各种GET_DESCRIPTOR(...). …

c c++ linux usb libusb

6
推荐指数
1
解决办法
2万
查看次数

模拟USB设备以实现自动化

我必须模拟USB设备以实现自动化和测试(在Linux中).此设备的原始驱动程序/应用程序使用"libusb"与其通信.

我在Linux和Simulation方面没有太多经验,经过一些搜索我已经明白我需要在用户空间中编写内核级驱动程序和应用程序来模拟该设备.这是正确的吗?如果是,如何做到这一点?

提前致谢.

linux simulation kernel driver libusb

6
推荐指数
1
解决办法
4686
查看次数

无法在 Mac OS X 上使用 C + libusb 声明 USB 接口

我有一个使用 PIC32 微控制器构建的复合 USB + CDC 设备,我正在尝试连接到该设备并将一些数据从我的 Mac 发送到 CDC 数据接口端点。

我知道电路可以 100% 工作,因为该设备同时注册为 HID 操纵杆,并且我能够使用 Zoc 终端在 /dev/tty.usbmodemfa132 上连接到该设备。我可以使用Zoc发送命令,并通过使电路上的一些 LED 闪烁来查看我的 MCU 对这些命令的响应。

我在 Mac OS X Mavericks 上运行它,但在几周前在 Mountain Lion 上我放弃了一个类似的例子时遇到了同样的问题。

我的代码如下所示:

// Includes -----------------------------------------------------------------------------------------------------------
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <libusb-1.0/libusb.h>
#include <unistd.h>

// Defines ------------------------------------------------------------------------------------------------------------
#define VID 0x04d8
#define PID 0x005e
#define CDC_DATA_INTERFACE_ID 2

// Function Declarations ----------------------------------------------------------------------------------------------
void print_device(libusb_device *device);
void send(libusb_context *usb_context, uint16_t vid, uint16_t pid);

// Function Definitions -----------------------------------------------------------------------------------------------

/** …
Run Code Online (Sandbox Code Playgroud)

c usb cdc libusb libusb-1.0

6
推荐指数
1
解决办法
1万
查看次数

使用python关闭Windows中的特定USB端口


这是我的第一篇文章,我已经看到越具体越好,所以我会尽量说得非常清楚,在此先感谢!

我想要什么:
我需要同时从 2 个或更多扫描仪扫描图像,这些扫描仪来自相同的品牌和型号,在这种情况下是Epson Perfection V600,我需要不同的时间间隔在一个过程中至少进行 40 次捕获20 小时。

我的方法
我决定使用 Windows,我已经有一个 Python 程序,它可以用一台扫描仪或两个来自不同型号的扫描仪来完成我想要的。但这是你们进来的地方:

问题
Windows 总是使用相同的扫描仪打印,因为它们来自相同的品牌和型号,所以它总是使用相同的扫描仪,我不能使用两个不同的扫描仪,因为这会导致图像无法比较。然而,当我使用两个不同的扫描仪时,我没有这样的问题。我需要找到一种使用每台扫描仪进行打印的方法。我想购买一个USB集线器并用python控制它,但显然在windows中实现了libsub,我将无法控制它。所以我目前正在寻找一种禁用特定 USB 端口的方法,以便程序只能识别一个设备,使用它进行扫描,禁用该设备,重新启用另一个设备,依此类推。


我可以访问的内容:

  • 现在我在 Conda 环境中的 python 3.5 版本中使用 Windows 10、64 位、python 内核 3,conda 版本 (4.5.11)。
  • Ubuntu 16.04,64 位,pyinsane 运行,在 conda 内的 python 3.5 环境中(手头没有 conda 版本)。
  • 一台爱普生完美V600。
  • 两个佳能Lide200,只能在windows下工作,因为在Ubuntu下没有驱动。

我也尝试过

  • 使用 Ubuntu
    我认为这是一个好主意,但是Epson 驱动程序网页无法连接到包含其余 Epson 文件的存储库,让我只能部分下载文件,我已经尝试联系 Docky 存储库的所有者,但他没有联系我。
    错误:

W:存储库“ http://ppa.launchpad.net/docky-core/ppa/ubuntu Xenial Release”没有发布文件。
N:来自此类存储库的数据无法进行身份验证,因此使用起来存在潜在危险。
N:有关存储库创建和用户配置详细信息,请参阅 apt-secure(8) 联机帮助页。
E:无法获取http://ppa.launchpad.net/docky-core/ppa/ubuntu/dists/xenial/main/binary-amd64/Packages 404 …

python windows libusb image-scanner pyinsane

6
推荐指数
0
解决办法
2517
查看次数

在Python中控制USB端口的电源

我想知道是否可以使用供应商 ID 和产品 ID 来控制 Python 中 USB 端口的电源。它应该控制电源,而不仅仅是启用和禁用端口。如果您能提供一些例子,我们将不胜感激。

python usb port libusb pyusb

6
推荐指数
1
解决办法
1万
查看次数

M1 MBP 上的 Python 尝试连接到 USB 设备 - NoBackendError:没有可用的后端

我正在尝试使用 Python 连接到我的 USB 设备。

最终结果应该是连接到我的血压计,但我已经无法连接到任何设备。

我在这里找到的简单代码如下。我从 Apple 菜单 > 关于本机 > 系统信息中获得的产品和供应商 ID

import usb.core
import usb.util

# find our device
dev = usb.core.find(idVendor=0x0781, idProduct=0x55a4)

# was it found?
if dev is None:
    raise ValueError('Device not found')

# set the active configuration. With no arguments, the first
# configuration will be the active one
dev.set_configuration()

# get an endpoint instance
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]

ep = usb.util.find_descriptor(
    intf,
    # match the first OUT endpoint
    custom_match = \ …
Run Code Online (Sandbox Code Playgroud)

usb backend libusb pyusb apple-m1

6
推荐指数
1
解决办法
3502
查看次数

标签 统计

libusb ×10

usb ×5

python ×4

pyusb ×4

linux ×3

c ×2

c++ ×2

libusb-1.0 ×2

windows ×2

apple-m1 ×1

backend ×1

c++14 ×1

cdc ×1

driver ×1

endpoint ×1

image-scanner ×1

kernel ×1

port ×1

pyinsane ×1

simulation ×1