Dispositivo de audio ocupado por el servicio en systemd frente a la línea de comando

Dispositivo de audio ocupado por el servicio en systemd frente a la línea de comando

Un problema específico para mí es el uso de snapclient en una raspberry pi.

Tengo snapclient ejecutándose junto con un asistente de voz. Si inicio snapclient usando la línea de comando

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

entonces mi asistente de voz puede emitir a la misma salida de audio y escucho ambas transmisiones.

Si uso el inicio systemd

sudo systemctl start snapclient.service

entonces el audio del asistente de voz se bloquea con el dispositivo/recurso ocupado.

usando htop (lo más probable es que haya una mejor manera de hacer esto) puedo ver el usuario y la lista completa de argumentos cuando se inicia a través de systemd y replico esto exactamente cuando ejecuto desde la línea de comando sin éxito.

¿Podría alguien indicarme qué necesito aprender para poder ejecutar esto de la misma manera desde systemd o si sería mejor hacerlo a través de rc.local? Todas y cada una de las recomendaciones sobre cómo aprender esto son bienvenidas.

Estoy seguro de que probablemente se trate de un problema de permisos, pero no sé cómo buscar los siguientes pasos.

Respuesta1

Tuve un problema similar al usar alsa para reproducir audio desde un servicio en ubuntu/orangepi "No se puede abrir audio hw:0: dispositivo o recurso ocupado".

Pude resolverlo agregando "Requires=dbus.service" y "Environment=DISPLAY=:0" a la configuración de la unidad.

Aquí está el archivo de configuración de mi unidad de trabajo:

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

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

[Install]
WantedBy=multi-user.target

información relacionada