首页 > 解决方案 > USB 控制消息到 libusb-1 中的端点 0x80?

问题描述

USB 声卡 Creative X-Fi 在使用其专有的 windows 驱动程序时从 USB1.1 切换到 USB2.0,从而在其 USB2 配置中实现更快的采样率。Wireshark 捕获的 USB 数据包显示,在设备断开连接并重新连接到 USB2 之前,专有驱动程序发送了几个命令。我正在尝试将命令重播到 linux 中的设备,以便能够将相同的功能添加到现有的 linux usb-audio 驱动程序中。

我想使用 python,大概是 libusb-1 库周围的 libusb1 包装器。捕获的数据包显示驱动程序使用 wIndex 0 向端点 0x80 发送 USB 控制请求。请问有没有办法用 libusb-1 格式化和发送这样的数据包?我找到了这个答案https://stackoverflow.com/a/39343813/15717902但不知道它是否仍然有效。

捕获的数据包:

USB URB
    [Source: host]
    [Destination: 3.5.0]
    USBPcap pseudoheader length: 28
    IRP ID: 0xfffffa8009ebd3e0
    IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
    URB Function: URB_FUNCTION_VENDOR_OTHER (0x0020)
    IRP information: 0x00, Direction: FDO -> PDO
    URB bus id: 3
    Device address: 5
    Endpoint: 0x80, Direction: IN
    URB transfer type: URB_CONTROL (0x02)
    Packet Data Length: 8
    [Response in: 20]
    Control transfer stage: Setup (0)
    [bInterfaceClass: Unknown (0xffff)]
Setup Data
    bmRequestType: 0xc3
    bRequest: 42
    wValue: 0x0000
    wIndex: 0 (0x0000)
    wLength: 2

标签: usblinux-device-driverdevice-driverlibusb

解决方案


推荐阅读