On 3/20/23 21:37, Eyal Lebedinsky wrote:
On 21/03/2023 15.29, Samuel Sieb wrote:
> On 3/20/23 21:13, Eyal Lebedinsky wrote:
>> On 20/03/2023 17.22, Eyal Lebedinsky wrote:
>>> Fedora 36 up-to-date.
>>>
>>> $ uname -a
>>> Linux e4.eyal.emu.id.au 6.1.15-100.fc36.x86_64 #1 SMP
>>> PREEMPT_DYNAMIC Fri Mar 3 17:22:46 UTC 2023 x86_64 x86_64 x86_64
>>> GNU/Linux
>>>
>>> I have a script running as root (using sudo) and in it I play a sound
>>> paplay /audio/ogg/beginning.ogg
>>> and it always worked.
>>>
>>> Then a few days ago it stopped and I now get an error. Something
>>> changed.
>>>
>>> $ sudo paplay /audio/ogg/beginning.ogg
>>> Connection failure: Connection refused
>>> pa_context_connect() failed: Connection refused
>>>
>>> $ sudo ogg123 -q /audio/ogg/beginning.ogg
>>> ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect:
>>> Connection refused
>>>
>>> === Could not load default driver and no driver specified in config
>>> file. Exiting.
>>>
>>> Is there a simple way to allow playing sounds in this context?
>>>
>>> TIA
>>
>> Received a few replies that suggest it is not trivial to do so. Some
>> think it is also unwise.
>>
>> My current solution is to run the affected script as my non-root user
>> and in it run some parts with sudo
>> (set up to run without a sudo password to avoid script interruption).
>>
>> BTW: I did try to use su/sudo back to my user, to run from inside the
>> script (which is running as root) but it still fails.
>
> There used to be an environment variable that pointed to the
> pulseaudio socket, but that seems to have changed (at least in F37).
> Check that the XDG_RUNTIME_DIR variable is set. It wasn't when I
> tested going through root. It should point to /run/user/<pid> which
> is most likely /run/user/1000 unless you aren't the first user.
Yet, it is present and set up. I expect that it is lost by sudo... yes
it is.
I set it up manually and got a similar error:
[eyal@e7:~]$ sudo -i
[root@e7 ~]# set|grep XDG_RUNTIME_DIR
[root@e7 ~]# export XDG_RUNTIME_DIR=/run/user/500
[root@e7 ~]# paplay /audio/ogg/beginning.ogg
XDG_RUNTIME_DIR (/run/user/500) is not owned by us (uid 0), but by uid
500! (This could e.g. happen if you try to connect to a non-root
PulseAudio as a root user, over the native protocol. Don't do that.)
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
I didn't mean to use it as root. The sound system isn't going to let
you do that as you found out. I meant you need to set it up after you
su back to your user.