问题标签 [usb-descriptor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
9071 浏览

linux - 如何唯一标识 USB 设备?

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

0 投票
1 回答
5113 浏览

iphone - HID report descriptor (with iPhone)

I am trying to send keystrokes via bluetooth to my iPhone4 from ubuntu. I.e., developing a very primitive virtual keyboard.

Problem Have my application talk to iPhone (i.e. using report protocol, that's all iPhone supports). As it is, my write(interruptChannelFD) calls return no errors, but no text appears on iPhone side. The l2cap channels have been opened using blueZ library.

Question 1: Given that no virtual keyboard exists that does that, just how hard is it?

I am at the stage where iPhone and my linux box connect and stay connected, no problem. Also, all the perror() calls are telling me that control and interrupt channel sockets connect just fine. (What I do is hciconfig my dongle to Keyboard device class and use the well-known code by Collin Mulliner with slight modification -- I had to enter a passcode once, as all smartphones require).

Question 2: I should be able to just write() into interrupt socket without worrying about encryption, right? I've entered the passcode and the phone trusts the keyboard. (Collin was pondering a possible hid attack, but I connect honestly)

Also, it is my understanding that in boot protocol of a HID device, the exact report descriptor specfied in SPD is hardly relevant -- the report format is fixed anyway. So...

Question 3: Do I miss something major about the report protocol. What I do is modify the Apple keyboard report descriptor and write into the socket (see below).

};

After this, I write the following 10 bytes into the interrupt channel:

0 投票
0 回答
4928 浏览

c# - C#读取USB描述符

如何通过 C# 读取 USB 描述符?我找到了LibUSB.NET,但我无法获得示例中的 USB 设备:

它返回计数 = 0

0 投票
1 回答
4911 浏览

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

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

和这个报告类型

但是当我让它变得更简单时:

Windows 一直无法安装我的游戏杆。它仍然可以识别它的名称,但无法完成安装。

我很困惑,因为 USB Hid Tool 验证了这个报告描述符。

请问有什么想法吗?

0 投票
1 回答
1087 浏览

usb - 了解与 LUFA 库相关的 USB 描述符

有人可以解释一下 LUFA 库如何处理 USB 描述符吗?我似乎无法追踪返回给库源的任何示例中的描述符。它们是如何工作的?它们是否被编程到给定位置的闪存中?

谢谢,乔治

0 投票
0 回答
6681 浏览

keyboard - 7 个键的 HID 键盘描述符

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

现在,我想将其从 6 键描述符更改为 7 键描述符。我相信这是描述符的相关部分:

因此,要将其更改为 7 键,我将 REPORT_COUNT 设置为 7:

现在继续测试它。以前,这将是使用 6 键描述符向计算机发送“;abcde”的 HID 报告:

由于我使用的是 7 键描述符,因此新的 HID 报告是这样的:

请注意,长度现在是 0x0b (11) 而不是 0x0a (10),我添加了 0x09。预期的键盘结果应该是“;abcdef”,但我只收到“;abcde”,就像以前一样。

为什么我的 7 键 HID 描述符不起作用?谢谢!

0 投票
2 回答
4378 浏览

windows - 如何获取 VCOM 设备 (Windows) 的 USB 字符串描述符?

我有各种各样的 VCOM 设备(FTDI、CP210x 等)与我的程序交互,但我需要在开始与它们交谈之前确认它们实际上是这些设备。FTDI 的 D2XX 库允许我将产品/序列号字符串与 COM 号配对,但我确实需要一个通用的解决方案。

需要明确的是,我还需要产品、序列以及理想情况下的制造商的 USB 字符串描述符。请注意,这些VID/PID 编号不同,而是实际的字符串。如果我必须先获取字符串,然后再找出它的 COM 号,那也没关系。

我正在使用使用 MingW 交叉编译的旧 C 语言,但实际上我对如何做到这一点感到不知所措,以至于任何语言的解决方案都是向前迈出的一步。

0 投票
3 回答
1224 浏览

linux - IOHIDManager OsX:HID 描述符和 HID 报告之间的匹配错误?

我正在尝试使用 IOHIDManager API 从 Mac OsX 上设备的 HID 报告中读取数据,例如鼠标的 X、Y、button1、Button2(Magic Apple Mouse)

使用 API,我可以动态读取描述符,但我有几个问题: - API 没有从描述符中提供我需要的所有信息:例如,我找不到有关填充位的信息!...我必须自己计算填充以正确构建我的结构。- API 没有按照描述符或 HID 报告的顺序为我提供特征(X、Y、btn1 ...)!!那我怎么知道阅读 HID 报告的正确顺序!?

所以我没有与 HID 报告数据正确匹配。

这是 OsX API 从描述符中提供给我的信息。

所以我建立了一个结构:X、Y、Z、Wheel、Btn1|Btn2|Btn3|Btn4、ARMD

这是从描述符中在 Linux 上给我的 RAW 信息。

所以我可以建立一个结构:Btn1|Btn2|Btn3|Btn4|0|0|0|0, X, Y, Z, Wheel, ARMD

从那里开始,基于 OsX API,我正在构建一个几乎相同的结构(包括填充位)以“匹配”HID 报告。所以我有:X、Y、Z、Wheel、Btn1|Btn2|Btn3|Btn4|0|0|0|0、ARMD

我订阅了 HID 报告并解析它,因为它应该适合我的结构......但它不

在这里,这是我在 OsX 上单击 Btn1 时所拥有的:

报告告诉我 X=1 !!!!

在这里,这就是我在 Linux 上所拥有的

该程序适用于除 Magic Apple Mouse 之外的一些设备作为鼠标,但我与其他设备有类似的问题...... API 以错误的顺序和部分信息为我提供了功能!

有什么我不明白的吗?有人有同样的问题或更好地理解你如何在 OSX 上使用 HID API 吗?

0 投票
1 回答
1100 浏览

usb - 创建 HID 描述符

我正在为我的设备创建自定义 HID 描述符。它仅从设备传输,并且只有一份报告。

数据是:

  • 64 位无符号整数
  • 16 位无符号整数
  • 16 位无符号整数
  • 16 位无符号整数
  • 16 位无符号整数

该设备是“供应商特定的”

我已经拉头发几个小时了!任何帮助,将不胜感激!

0 投票
1 回答
1985 浏览

windows - 24 位 USB 采样率支持

我的问题与这个问题非常相似:Link,但我不允许发表评论。

我将 PIC32 实现为声卡,现在我有一个工作的 USB 音频流,支持 16 位 32kHz 和 48kHz 采样率。我现在想将位深度更改为 24 位,因此我将 USB 描述符更改为:

当我这样做时,他的位分辨率会按预期更改,但是在麦克风的属性中,我可以更改采样频率的下拉菜单是灰色的。我没有更改端点描述符中的任何内容,仍然支持 32kHz 和 48kHz。

不能改变采样频率

我的 USB 拓扑有 1 个带有几个单元的音频控制接口和 2 个音频流接口,用于流式输入和输出。Marc O 回答他的问题时说他的输入终端中的某些内容,我尝试过更改wChannelConfig但我不工作。我已经尝试卸载和安装设备驱动程序,但不起作用。

为了能够选择采样频率,我还需要在描述符中进行哪些更改?

谢谢 :)

编辑:添加了描述符代码和描述的进度

当我将频道数更改为 2 并制作时wChannelConfig = 0x03 -> right + Left Front,我看到他图片上的字段更改为:“2 频道,24 位,48000 Hz(工作室质量)”,但它仍然没有制作下拉菜单白色,我无法更改采样率。

下面我添加了音频功能描述符: