本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于树莓派Z2W的USB声卡

发布时间:2022-05-20
分享到:

基于树莓派Z2W的USB声卡

发布时间:2022-05-20
分享到:

该项目使用 Linux g_audio 驱动程序和 camillaDSP 使用 RPi Zero 2 W 和 Allo miniBOSS DAC 创建 USB 声卡。

该项目的目标是将 RPi Zero 2 W 用作功能齐全的 DAC 和 DSP。这将通过使用 CamillaDSP 以及其他一些有用的软件将 Pi 上的 USB 捕获设备连接到 Allo miniBOSS DAC 来实现。CamillaDSP 的 DSP 功能不会真正涵盖,但本文提供的基本配置可以很容易地扩展,以添加过滤器、混合器、处理管道等。基本配置也可以适用于其他输入/输出设备。

该项目还添加了从 USB 主机设备调整的音量和静音控制。在这种情况下,使用 Windows 计算机作为主机,可以使用 Windows 中的音量控制和静音按钮来调整 RPi 上的音量和静音。

一些假设:

  • 您拥有一个正常工作的 g_audio 设备
  • 您的用户名是“pi” :这可以更改,但您需要更改配置文件和 .service 文件中的每个“pi”实例
  • 您要用于 CamillaDSP websocket 的端口是“1234” :这也可以通过编辑各种配置文件和启动命令camilladsp.service以及 websocket 端口轻松更改usb-control.py
  • 您在 RPi 上运行内核 5.18-rc3 或更高版本:较旧的内核可能工作,但 5.18 包括对 g_audio 驱动程序的改进,并且根据我的测试,它在 Windows 主机上的工作比以前的版本好得多。

第 1 步:启用 Allo miniBOSS
首先,必须添加 Allo miniBOSS 作为叠加层:

  • sudo nano /boot/config.txt

更改dtparam=audio参数如下,禁用板载声卡:

  • dtparam=audio=off

然后将此行添加到文件末尾:

  • dtoverlay=allo-boss-dac-pcm512x-audio

现在重新启动您的 RPi 并检查 DAC 是否显示:

  • sudo reboot
  • aplay -l && arecord -l

输出应该与此类似:

您可能拥有更多或更少的设备,具体取决于当前插入到您 pi 的音频设备,但 BossDAC (pcm512x-hifi-0) 应该在播放设备列表中。

第 2 步:重新配置 g_audio

需要重新配置 UAC2 声卡。miniBOSS 是一个 384kHz/32 位 DAC,因此 USB 捕获设备将被设置为这样。为简单起见,仅使用一种采样率。

为 g_audio 创建一个新的配置文件,以便在启动时读取:

  • sudo nano /etc/modprobe.d/g_audio.conf

然后将适当的设置添加到文件中:

options g_audio c_srate=384000 c_ssize=4 p_chmask=0 iProduct="RPi USB DAC"

  • c_srate- 以赫兹为单位的捕获采样率
  • c_ssize- 样本的大小(以字节为单位)
  • p_chmask- 将播放通道掩码设置为 0 禁用 USB 播放
  • iProduct- 描述设备的字符串

这些可用于进一步定制 USB 音频设备以满足您的需求。

如果您想测试它是否正常工作,请重新启动并检查当前加载的设置:

grep -H '' /sys/module/g_audio/parameters/*

第 3 步:设置 CamillaDSP

首先,安装依赖项:

sudo apt install alsa-utils python3 python3-pip python3-websocket python3-aiohttp python3-jsonschema python3-numpy python3-matplotlib unzip git -y

创建文件夹结构:

mkdir camilladsp
cd camilladsp
mkdir coeffs configs

现在为此设备添加 CamillaDSP 配置文件:

wget https://raw.githubusercontent.com/Masonrf/RPi-Z2W-USB-Soundcard/main/camilladsp.yml -P configs

制作日志文件:

touch camilladsp.log

现在下载最新版本的 CamillaDSP。此命令取决于将在其上运行的设备的体系结构。

对于 64 位 RPi:

wget https://github.com/HEnquist/camilladsp/releases/latest/download/camilladsp-linux-aarch64.tar.gz

对于 32 位 RPi:

wget https://github.com/HEnquist/camilladsp/releases/latest/download/camilladsp-linux-armv7.tar.gz

提取压缩包:

tar -xvf camilladsp-linux-*.tar.gz

现在尝试启动 CamillaDSP:

./camilladsp -g-10 -p 1234 configs/camilladsp.yml

它应该(希望)在没有任何错误的情况下启动。如果您没有从主机播放任何音频,您可能会收到有关等待超时的警告:

如果您想做一些测试,但只需要错误,请将 start 命令更改为仅显示错误:

./camilladsp -g-10 -p 1234 configs/camilladsp.yml -l error

现在我们可以在启动时作为服务启动 CamillaDSP。

下载服务文件并在启动时启用它:

sudo wget https://raw.githubusercontent.com/Masonrf/RPi-Z2W-USB-Soundcard/main/camilladsp.service -P /lib/systemd/system
sudo systemctl enable camilladsp

确保你得到最后一行“创建的符号链接”

第 4 步:设置 CamillaGUI 服务器

安装 pycamilladsp 及其绘图功能:

sudo git clone https://github.com/HEnquist/pycamilladsp
cd pycamilladsp
sudo pip3 install .
cd ..
sudo git clone https://github.com/HEnquist/pycamilladsp-plot
cd pycamilladsp-plot
sudo pip3 install .
cd ..

安装 camillagui:

wget https://github.com/HEnquist/camillagui-backend/releases/latest/download/camillagui.zip
unzip camillagui.zip -d camillagui

接下来,我们需要重新配置 camillagui:

nano ~/camilladsp/camillagui/config/camillagui.yml

更改camillaDSP 设备配置的路径default_config:active_config

default_config: "~/camilladsp/configs/camilladsp.yml"
active_config: "~/camilladsp/configs/camilladsp.yml"

现在将 CamillaGUI 添加为服务并在启动时启用:

sudo wget https://raw.githubusercontent.com/Masonrf/RPi-Z2W-USB-Soundcard/main/camillagui.service -P /lib/systemd/system
sudo systemctl enable camillagui

现在重新启动并进入http://(your pi ip):5000/您的浏览器

您应该会看到 CamillaDSP 的 gui 界面

如果没有,请检查服务是否处于活动状态:

  • sudo systemctl status camilladsp.service
  • sudo systemctl status camillagui.service

第 5 步:添加主机音量控制/静音

最后一步是添加一个python程序,将主机发送的USB音量和静音控制信号连接到CamillaDSP。

安装依赖项:

sudo apt install libasound2-dev
pip install pyalsaaudio

下载python程序并测试它:

wget https://raw.githubusercontent.com/Masonrf/RPi-Z2W-USB-Soundcard/main/usb-control.py
python3 usb-control.py

当您更改主机音量和静音选择时,您应该会看到值发生变化。您还应该能够在 python 程序运行时听到更改,并且您可以通过 USB 连接播放声音。

现在将此功能添加为启动时的服务:

sudo wget https://raw.githubusercontent.com/Masonrf/RPi-Z2W-USB-Soundcard/main/usb-control.service -P /lib/systemd/system
sudo systemctl enable usb-control

最后,重新启动以使更改生效。

到这一步,您现在应该可以使您的主机静音和更改音量了!

本文中所用到的一些代码

如果您对此项目有任何想法、意见或问题,请在下方留言。

以上内容翻译自网络,原作者:Mason Fleck,如涉及侵权,可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论