systemd とコマンドラインのサービスでオーディオデバイスがビジー状態

systemd とコマンドラインのサービスでオーディオデバイスがビジー状態

私にとっての具体的な問題は、ラズベリーパイで snapclient を使用することです。

私は音声アシスタントと一緒にスナップクライアントを実行しています。コマンドラインを使用してスナップクライアントを起動すると

sudo snapclient -h 192.168.x.xxx -s 3 --player=alsa &

すると、音声アシスタントは同じオーディオ出力に出力でき、両方のストリームを聞くことができます。

systemdスタートアップを使用する場合

sudo systemctl start snapclient.service

デバイス/リソースがビジー状態のため、音声アシスタントのオーディオがブロックされます。

htop を使用すると (おそらくこれよりも良い方法があります)、systemd 経由で起動したときにユーザーと完全な引数リストを確認できます。コマンド ラインから実行すると、これを正確に再現できますが、効果はありません。

これを systemd から同じように実行できるようにするには、何を学ぶ必要があるか、あるいは rc.local 経由で実行したほうがよいかどうか、どなたかアドバイスをいただけませんか? これを学ぶ方法についてのあらゆるアドバイスを歓迎します。

おそらく権限の問題だと思いますが、次の手順をどのように調べればよいかわかりません。

答え1

Ubuntu/orangepi 上のサービスからオーディオを再生するために alsa を使用したときに、「オーディオ hw:0 を開けません: デバイスまたはリソースがビジーです」という同様の問題が発生しました。

ユニット設定に「Requires=dbus.service」と「Environment=DISPLAY=:0」を追加することで解決できました。

これが私の作業ユニット構成ファイルです:

[Unit]
Description=Buttons sound app
Requires=dbus.service

[Service]
ExecStart=/home/orangepi/runSoundServer.sh
User=orangepi
Environment=DISPLAY=:0

[Install]
WantedBy=multi-user.target

関連情報