【问题标题】:How to read Binary Device Object Store (BOS) descriptor of USB Device on Linux如何在 Linux 上读取 USB 设备的二进制设备对象存储 (BOS) 描述符
【发布时间】:2020-01-16 17:18:22
【问题描述】:

我需要以编程方式读取插入 Linux 系统 (Ubuntu 18.04) 的 USB 设备的设备描述符。我可以通过解析lsusb 输出或直接从/sys/bus/usb/devices/usbfs 文件中读取我需要的大部分描述符(iSerial、iProduct 等)。但是,无论使用哪种方法,我都无法找到二进制设备对象存储 (BOS) 描述符。

我想我可以使用 libusb 查询 BOS,但似乎因为这是一个 USB 规范标准描述符,可能有更简单的方法。是否可以直接从 usbfs 中读取,或者从 lsusb 等标准实用工具中查询?

【问题讨论】:

  • 我确实在这里看到了使用 libusb(版本 007,Ubuntu 18.04)的 USB 3 设备的 BOS。

标签: linux usb device lsusb


【解决方案1】:

BOS 描述符可以通过控制转移获得。控制传递参数为:

bmRequestType: 0x80, b请求:0x06, wValue: 0x0F00, wIndex: 0x0000,

头BOS描述符是:

struct usb_bos_descriptor_header {
    u8_t bLength;
    u8_t bDescriptorType;
    u16_t wTotalLength;
    u8_t bNumDeviceCaps;
};

我们也可以使用https://github.com/libusb/libusb/blob/master/examples/xusb.c来获取BOS描述符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    相关资源
    最近更新 更多