Аудиоустройство занято службой в systemd против командной строки

Аудиоустройство занято службой в systemd против командной строки

Для меня особой проблемой является использование Snapclient на Raspberry Pi.

У меня есть snapclient, работающий вместе с голосовым помощником. Если я запускаю snapclient с помощью командной строки

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

тогда мой голосовой помощник может выводить сигнал на тот же аудиовыход, и я слышу оба потока.

Если я использую запуск systemd

sudo systemctl start snapclient.service

затем звук голосового помощника блокируется из-за занятости устройства/ресурса.

Используя htop (вероятнее всего, есть лучший способ сделать это), я могу видеть пользователя и полный список аргументов, когда он запускается через systemd, и я повторяю это в точности, когда запускаю из командной строки, но безрезультатно.

Может ли кто-нибудь посоветовать, что мне нужно изучить, чтобы иметь возможность запустить это так же из systemd или, возможно, лучше сделать это через rc.local? Любые рекомендации о том, как это изучить, приветствуются.

Я уверен, что это проблема с разрешениями, но я не знаю, как искать дальнейшие действия.

решение1

У меня была похожая проблема при использовании ALSA для воспроизведения звука из службы на Ubuntu/Orangepi: «Не удается открыть аудиоустройство: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

Связанный контент