web-dev-qa-db-ja.com

Pulseaudio:デバイスの起動を待ちますか?

このガイド に基づいて、RaspberryPiで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

ただし、音が出ません。ログによると、pulseaudioが起動すると、udev-detectは「0枚のカードが見つかりました」と報告します。そして私はヌルシンクしか得られません。ランニング systemctl --system restart pulseaudio.serviceこれを修正し、オーディオデバイスが正しく検出されます。

デバイスが検出されるまで待つようにpulseaudioに指示する方法はありますか?

4
fstanis

PulseAudioはあまり役に立たないだろうと言う。ホットプラグされたデバイスは、それ自体ですでに問題なく検出できます。ただし、--disallow-module-loadingが原因で、デバイスが検出された後にmodule-alsa-cardをロードすることが禁止されているため、デバイスを使用できなくなりました。 (おそらくmodule-udev-detectはこの制限から免除されるべきです…)

このユニットの.deviceに対応するAfter=ユニット名をリストすることで、特定のデバイスの準備ができるまでpulseaudio.serviceの開始を遅らせるようにsystemdに指示できます。例:

[Unit]
After=sys-devices-pci0000:00-0000:00:1b.0-sound-card0.device
6
user1686