问题标签 [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 投票
2 回答
707 浏览

windows - 适用于 Windows XP、7、8 应用程序的 USB 麦克风描述符

我正在尝试使用 STMicroelectronics 的 USB-FS 库在 STM32F103 上实现 USB 麦克风。

在 Windows XP、7 和 8 上检测到我的麦克风。当我尝试使用 Audacity 录制语音时,信号在 Windows XP 和 Windows 8 上是正确的,但在 Windows 7 上它被放大了。

有谁知道发生了什么?

这是描述符:

0 投票
1 回答
1484 浏览

usb - 如何分配 USB 的设备描述符“BCD 设备版本号”

这是USB描述符的代码(以设备描述符为例)。我了解除 BCD 设备版本号之外的这些设置。我阅读了几个不同项目的 USB 代码。他们的设备版本号都不同。什么决定了设备版本号?有清单吗?

0 投票
1 回答
3317 浏览

usb - USB:可以在一个接口上定义多个不同的 HID 游戏杆吗?

我正在构建一个适配器,通过 USB 将各种视频游戏控制器连接到 PC。它的核心是使用 Cortex-M4 处理器的 Teensy 3.1 微控制器。

M4 能够处理原始 USB 数据包,从而模拟任何类型的 USB 设备。我已成功对其进行编程以呈现复合 USB 设备:

  • 接口1,端点1:USB串口(用于调试)-状态接口
  • 接口 1、端点 2:USB 串行 TX/RX 接口
  • 接口 2,端点 3:HID 摇杆

现在的问题是,我希望能够同时连接几种不同类型的游戏控制器(例如 Nintendo 和 Super Nintendo)。我的适配器总共有超过 15 个端口,这意味着我不能只为每个端口分配一个端点,因为 USB 总共只允许 16 个端点。

阅读 HID 报告描述符规范,我得到的印象是可以在同一接口上定义多个独立设备。然而,尽管我尽了最大的努力,我似乎​​无法做到这一点。应用程序(例如jstest-gtk)只能看到一个巨大的操纵杆。

现在我正在使用这个报告描述符:

我曾希望提供一个带有 8 个按钮的操纵杆和一个带有 16 个按钮的操纵杆,但应用程序看到的是一个具有 24 个按钮的操纵杆。

真的可以这样定义多个独立的操纵杆吗?

0 投票
0 回答
92 浏览

usb - 如何给每个 USB 接口起一个唯一的名称?

我正在为可以同时连接 2 个扬声器的设备编写设备驱动程序。

这两个接口以相同的名称显示在主机(我使用的是 Windows 主机)上。我怎样才能给每个接口一个唯一的名字——比如扬声器 1 和扬声器 2?

0 投票
1 回答
649 浏览

usb - 如何更改 USB 小工具端点类型?

我知道 USB 端点有一些模式(控制、批量、中断和同步),它们可用于各种目的,但我不知道如何在小工具中将 USB 端点更改为这些模式?我已经阅读了 USB2.0 规范,然后我可以通过以下设置获取 USB 传输描述符:

但是我仍然不知道我应该怎么做才能改变USB传输模式?

0 投票
0 回答
232 浏览

usb - USB3.0超速设备描述符失败

我正在尝试将设备模拟为 USB3.0 超高速(我们的平台支持 USB3.0 集线器)。下面是我用于设备枚举的设备描述符。

我运行 USB3HWAnalyzer 工具来分析故障问题,下面是错误跟踪。13094733443.428871:(UsbHub3/176)事件消息:DescriptorValidationErrorDeviceInvalidBMaxPacketSize PortPath:0x1、0x0、0x0、0x0、0x0、0x0

基本上它失败是由于 -- 0x09, /* EP0 的 Maxpacket 大小:2^9 = 512 字节 */

我不明白为什么?这个问题有什么正当理由吗?

天呐!

0 投票
1 回答
881 浏览

stm32 - 如何仅使用一个 USB 连接器获得两个 VCP?

我试图用一个 USB 连接器(STM32F4 探索板中的 CN5)模拟两个虚拟 COM 端口,但徒劳无功。

我知道我必须将复合 CDC 类配置为具有多个接口,使用 ACM 功能描述符(抽象控制模型)进行虚拟 COM 端口通信,但是如何使它们成为两个 VCP?

我已经完成了一个 CCI(通信类接口)和一个 DCI(数据类接口),这让我在Device Manager中只有一个 VCP 。

我试过做两个 CCI 和两个 DCI,但是没有用!

这是我的接口关联描述符的设备描述符:

我的 CDC 配置有两个 IAD,每个 CCI 和一个 DCI:

如何将 CDC 类配置为具有两个 VCP?这些配置有什么问题?

0 投票
1 回答
848 浏览

linux-kernel - Linux USB 小工具自定义配置

我正在使用运行 Linux Kernel 3.14.18 的 i.Mx6 Sabre Lite 板,并且板应该充当 USB 设备(USB 小工具)。需要将一个供应商特定接口添加到 CDC/NCM 配置中。CDC/NCM 配置默认有两个标准接口——通信和数据。我在 CDC/NCM 配置中添加了第三个接口(特定于供应商)。该接口有两个 Bulk (IN & OUT) Endpoints。一旦板使用“lsusb”连接到 PC,我就可以验证这个新添加的接口。

问题:

  1. 我看不到新添加的接口暴露在 i.Mx Board 或 PC 上的用户空间,就像标准 NCM 接口可以看作是 i.Mx Board 和 PC 上的 usb0(以太网设备),我可以 PING 到/从板使用usb0。

  2. 如果我必须将这个新添加的接口与一些 g_“驱动程序”连接起来(就像标准 NCM 接口连接到 g_ether);那么 BULK I/O 的最佳选择是什么?

  3. 如何使这个新添加的供应商特定接口可用于 i.MX6 用户空间,以便从 Linux 应用程序对其进行读/写?我开始了解 GadgetFS;但任何例子都是

希望有人在Linux-USB中尝试过类似的事情并可以指导。

0 投票
1 回答
999 浏览

usb - USB CDC 仅工作一次,带中断 endp

我正在 STM32F4 MCU 上实现一个虚拟 COM 端口。

MCU 没有可用的端点,所以我必须取消中断端点/通知元素。问题是 MCU 只能向 pc 发送一次消息,之后 pc 将无法收到。

设备 USB 描述符:

0 投票
2 回答
8680 浏览

usb - 自定义 USB VID/PID - 使 Windows 7 和 8 自动选择 usbser.sys 驱动程序

我正在为带有STM32F070微控制器的 USB 设备开发固件。我使用STM32CubeMX生成了一个裸机(无操作系统)代码库,将设备设置为 USB CDC(通信设备类),以便 Windows 7、8 自动将其检测为 VCP(虚拟 COM 端口), 10. Driver Details 显示它正在使用 Windowsusbser.sys驱动程序。

STM32CubeMX 中的 USB CDC 配置

在 Windows 设备管理器中检测到 USB 串行设备

当我更改 USB 供应商 ID (VID) 或产品 ID (PID) 或制造商字符串时,Windows 10 设备管理器仍会快速将其检测为 USB 串行设备,但 Windows 7 或 8 不会。Windows 7 和 8 花费很长时间在 Windows 更新中搜索驱动程序,然后找不到驱动程序。

usbser.sys当设备具有 USB VID、PID 和制造商字符串的供应商特定值时,如何修改设备固件/描述符以使 Windows 7 和 8 主机能够自动安装设备驱动程序?