【问题标题】:How to write dummy ALSA compliant device driver?如何编写符合 ALSA 的虚拟设备驱动程序?
【发布时间】:2017-06-29 22:46:50
【问题描述】:

我想将虚拟 ALSA 兼容驱动程序编写为可加载的内核模块。当通过 ALSA-lib 通过 aplay/arecord 访问它时,假设它必须像普通的 7.1 声道音频设备一样至少提供所有基本控制 - 采样率、声道数、格式等...... 下面它只会从音频流中获取每个通道,并将其作为 UDP 数据包流通过网络发送。 它必须能够被多次加载,最终它会在 /dev 下暴露尽可能多的音频设备。这样我们系统中就会有多个虚拟声卡。

这样一个内核模块的最小结构应该是什么? 你能给我一个 100% 符合 ALSA 的示例框架(至少是接口)吗? ALSA 驱动示例太差劲了……

【问题讨论】:

  • 您可能不需要创建内核模块。您想要的是编写一个 alsa 插件,该插件将创建一个 alsa 设备并将任何频道放在网络上。你可以看看pulseaudio在做什么,或者简单地配置pulse音频来做你想要的。
  • 我明白了。但我真的很想把它放在内核空间中,以便将它用于其他任何事情。我也打算用这个驱动来控制 LED。
  • 您也可以从用户空间执行此操作
  • 实际上,LED 是用于传输音频的激光,作为备用通信通道。所以有时间限制,不适合用户空间...

标签: linux audio linux-kernel linux-device-driver alsa


【解决方案1】:

我想我刚刚找到了我需要的东西。 没有比内核树中 sound/drivers 目录下的“dummy”和“aloop”模板更好的 ALSA 接口示例了:

https://alsa-project.org/main/index.php/Matrix:Module-dummy

https://www.alsa-project.org/main/index.php/Matrix:Module-aloop

我只需要实现网络部分。

编辑: 为一个非常简单但必不可少的虚拟 ALSA 驱动程序添加另一个项目:

https://alsa-project.org/main/index.php/Minivosc

编辑 2020_09_25: 又一个伟大的 ALSA 例子:

https://www.openpixelsystems.org/posts/2020-06-27-alsa-driver/

【讨论】:

    【解决方案2】:
    • 安装alsa-basealsa-util
    • modprobe snd-dummy
    • 使用alsamixer 或使用mocp(需要安装moc)配置添加虚拟音频成功

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      相关资源
      最近更新 更多