Pulseaudio:等待设备启动?

fst*_*nis 4 audio linux pulse-audio systemd

根据本指南,我在 Raspberry Pi 上设置了pulseaudio 以在系统模式下运行。这是我的 systemd 服务文件的样子:

[Unit]
Description=PulseAudio Daemon
After=sound.target
Requires=sound.target

[Install]
WantedBy=default.target

[Service]
Type=notify
ExecStart=/usr/bin/pulseaudio --disallow-exit --no-cpu-limit --daemonize=no --system --realtime --disallow-module-loading --log-target=journal -vvvv
Run Code Online (Sandbox Code Playgroud)

但是,我没有收到任何声音 - 根据日志,pulseaudio 启动时,udev-detect 报告“找到 0 张卡”。我只得到空接收器。运行systemctl --system restart pulseaudio.service修复了这个问题,我的音频设备被正确检测到。

有没有办法告诉pulseaudio等到检测到设备?

use*_*686 6

告诉 PulseAudio 不会很有用。它本身已经可以很好地检测热插拔设备;但是,由于--disallow-module-loading它不再能够使用设备,因为module-alsa-card在检测到设备后禁止加载。(可以说 module-udev-detect 应该不受此限制......)

您可以告诉systemd延迟启动 pulseaudio.service 直到特定设备准备就绪,方法是.device在该单元的 中列出相应的单元名称After=,例如:

[Unit]
After=sys-devices-pci0000:00-0000:00:1b.0-sound-card0.device
Run Code Online (Sandbox Code Playgroud)