标签: usb-descriptor

USB Audio Class 2.0 - 如何支持多比特率/采样率

我有点困惑如何在USB Audio Class 2.0中添加对多比特率/采样率的支持.与USB Audio Class 1.0(可以选择添加多种速率等)相比,USB Audio Class 2.0不提供该选项.我该怎么改变我的描述符呢?我在某处读到你使用更多备用设置,但我不知道这会有什么帮助......

这是我的音频格式描述符:

audioformat.bLength                 = sizeof(usb_audio_format_type_1_desc_t)
audioformat.bDescriptorType         = 0x01
audioformat.bDescriptorSubtype      = 0x02
audioformat.bFormatType             = 0x01
audioformat.bSubSlotSize            = 3
audioformat.bBitResolution          = 24
Run Code Online (Sandbox Code Playgroud)

谢谢!

audio usb usb-descriptor

9
推荐指数
1
解决办法
761
查看次数

HID报告描述符(带iPhone)

我正试图通过蓝牙将键盘从ubuntu发送到我的iPhone4.即,开发一个非常原始的虚拟键盘.

问题让我的应用程序与iPhone通信(即使用报告协议,这是所有iPhone支持).实际上,我的write(interruptChannelFD)调用没有返回任何错误,但iPhone端没有文字出现.已使用blueZ库打开l2cap通道.

问题1:鉴于没有虚拟键盘可以做到这一点,它有多难?

我正处于iPhone和我的linux盒连接并保持连接的阶段,没问题.此外,所有perror()调用都告诉我控制和中断通道套接字连接正常.(我所做的是hciconfig我的加密狗到键盘设备类,并使用Collin Mulliner的着名代码稍作修改 - 我必须输入一次密码,因为所有智能手机都需要).

问题2: 我应该能够在write()不担心加密的情况下进入插槽,对吧?我输入了密码,手机信任键盘.(科林正在考虑可能的隐藏攻击,但我诚实地联系)

另外,据我所知,在HID设备的启动协议中,SPD中指定的确切报告描述符几乎不相关 - 报告格式无论如何都是固定的.所以...

问题3:我是否会错过报告协议的主要内容.我所做的是修改Apple键盘报告描述符并写入套接字(见下文).

const uint8_t hid_spec[] = { 
    0x05, 0x01, // usage page
    0x09, 0x06, // keyboard
    0xa1, 0x01, // collection (Application)
    0x85, 0x01, // report id (0x01)
    0x05, 0x07, // usage page(keyboard)
    0x19, 0xe0, // usage min
    0x29, 0xe7, // usage max
    0x15, 0x00, // logical min
    0x25, 0x01, // logical max
    0x75, 0x01, …
Run Code Online (Sandbox Code Playgroud)

iphone usb bluetooth hid usb-descriptor

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

重新枚举USB设备,通过描述符的更改从旧设备升级到新固件

如果我将USB设备连接到主机,然后使用新固件升级USB设备,并更改设备的描述符.主机将使用旧描述符.

我知道我可以通过删除设备等的Windows初始化驱动程序来强制设备重新枚举自己.或者我可以在描述符中碰撞ProductId并且设备将重新枚举.

Windows兑现了有关设备等的信息,因此Windows永远不会要求设备在重新连接有关接口,配置,端点,HID描述符等时再次提供信息.

在此输入图像描述

idProduct - 更改此设置将重新枚举设备,因为Windows会认为它是一个不同的设备.

iSerialNumber - 更改此项将重新枚举,因为Windows需要区分两个相同的idProducts(两个相同的产品连接)

bcdDevice - 应该执行重新枚举的技巧,但它不能像USB规范中那样工作.

我的问题是如何在不删除驱动程序等或更改idProduct或iSerialNumber的情况下强制重新枚举USB设备?

任何帮助将不胜感激...

windows embedded usb enumeration usb-descriptor

5
推荐指数
1
解决办法
172
查看次数

如何唯一标识 USB 设备?

我想知道如何获得 USB 存储设备的唯一 ID。我已经知道如何从这篇文章中获取 SCSI 序列号:Linux C++ 下的 USB 驱动器序列号 这篇文章提到使用设备描述符来获取 ID。有人可以发布一些代码来确定Linux下的设备描述符信息吗?

linux usb device serial-number usb-descriptor

5
推荐指数
1
解决办法
8586
查看次数

7 个键的 HID 键盘描述符

我正在尝试制作 HID USB 键盘。默认 HID 描述符具有 6 键 HID 报告。这是描述符,我已经对其进行了测试:

static const uint8 hid_descriptor_keyboard[] = {
  /****/ 0x05, 0x01,     /* USAGE_PAGE (Generic Desktop) */
/****/ 0x09, 0x06,     /* USAGE (Keyboard) */
/****/ 0xa1, 0x01,     /* COLLECTION (Application) */
/******/ 0x05, 0x07,   /*   USAGE_PAGE (Keyboard) */
/******/ 0x85, 0x01,   /*   REPORT_ID (1) */
  /* Ctrl, Shift and other modifier keys, 8 in total */
/******/ 0x19, 0xe0,   /*   USAGE_MINIMUM (kbd LeftControl) */
/******/ 0x29, 0xe7,   /*   USAGE_MAXIMUM (kbd Right GUI) */ …
Run Code Online (Sandbox Code Playgroud)

keyboard usb hid usb-descriptor

5
推荐指数
0
解决办法
6409
查看次数

简单的操纵杆隐藏报告描述符不起作用

使用 atmega8 芯片和 V-USB 库,我做了一个小桥接器将我的 NES 游戏手柄连接到 USB。起初我使用了一个例子作为我的隐藏描述符,所以......当我将它设置为与这个 HID 报告描述符握手时,我在 Windows 中正确识别了我的设备

PROGMEM const char usbHidReportDescriptor[100] = {
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x15, 0x00,                    // LOGICAL_MINIMUM (0)
    0x09, 0x04,                    // USAGE (Joystick)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x05, 0x02,                    //   USAGE_PAGE (Simulation Controls)
    0x09, 0xbb,                    //   USAGE (Throttle)
    0x15, 0x81,                    //   LOGICAL_MINIMUM (-127)
    0x25, 0x7f,                    //   LOGICAL_MAXIMUM (127)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x95, 0x01,                    //   REPORT_COUNT (1)
    0x81, 0x02,                    //   INPUT (Data,Var,Abs)
    0x05, 0x01,                    //   USAGE_PAGE (Generic …
Run Code Online (Sandbox Code Playgroud)

usb report hid joystick usb-descriptor

4
推荐指数
1
解决办法
4758
查看次数