【问题标题】:Is it possible to set up a USB audio device to look like more than one device?是否可以将 USB 音频设备设置为看起来像多个设备?
【发布时间】:2021-04-27 02:48:41
【问题描述】:

我正在开发基于 iMXRT1060 的 USB 音频设备,目前可配置为 2-spkr/2-mic 设备或 6 通道 mic-array。对于任何一种情况,我都可以使用“arecord -l”(在 Linux 主机上)来显示卡/设备信息,如下所示:

card 1: Text [MoreText], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

这很好用,但我的目标是让这个设备显示为两个虚拟 INPUT 设备(设备 0:2-mic 和设备 1:6-mic),如下所示:

card 1: Text [MoreText], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Text [MoreText], device 1: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

这样两个不同的 Linux 程序就可以使用 ALSA 独立连接到两个不同的输入设备。我一直认为这主要只是正确设置描述符的问题,但由于我已经有几天无法做到这一点,我现在想知道我是否试图在 USB 中做一些非法的事情。 有什么想法吗?

【问题讨论】:

    标签: usb audio-streaming


    【解决方案1】:

    我在这里回答我自己的问题... 显然,从 UAC2 开始,就有了“音频接口集合”的概念。 以下是“音频设备的 USB 设备类定义”文档中的 sn-p:

    单个 AudioControl 接口的集合和 AudioStreaming 和 MIDIStreaming 接口属于同一个 音频函数称为音频接口集合 (AIC)。一个 设备可以有多个激活的音频接口集合 同时。这些集合用于控制多个独立的 位于同一复合设备中的音频功能。音频 接口集合通过标准USB接口描述 表示接口绑定的关联机制 接口关联描述符 (IAD)。

    IAD 是完成这项工作的关键,在这一点上,我可以说具有两个 IAD(和相应的 AIC)的描述符实际上会导致 Linux 在单个声卡中显示两个设备。

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2023-03-25
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多