[pulseaudio-discuss] PA 10 : paplay can't connect !

Tanu Kaskinen tanuk at iki.fi
Sat Jan 28 12:22:56 UTC 2017


On Thu, 2017-01-26 at 15:42 -0500, sean darcy wrote:
> On 01/26/2017 12:39 AM, Tanu Kaskinen wrote:
> > On Sat, 2017-01-21 at 16:18 -0500, sean darcy wrote:
> > > On Fedora 25, running PA 10.0.
> > > 
> > > [video at sixcore ~]$ ps aux |  grep pulse
> > > video     2319  0.0  0.0 433508 12212 ?        Ssl  15:51   0:00
> > > /usr/bin/pulseaudio --daemonize=no
> > > video     2358  0.0  0.0 130028  4892 ?        S    15:51   0:00
> > > /usr/libexec/pulse/gconf-helper
> > > 
> > > [video at sixcore ~]$ pacmd stat
> > > Memory blocks currently allocated: 1, size: 63.9 KiB.
> > > Memory blocks allocated during the whole lifetime: 35, size: 1.9 MiB.
> > > Memory blocks imported from other processes: 0, size: 0 B.
> > > Memory blocks exported to other processes: 0, size: 0 B.
> > > Total sample cache size: 0 B.
> > > Default sample spec: s16le 2ch 44100Hz
> > > Default channel map: front-left,front-right
> > > Default sink name:
> > > alsa_output.usb-AudioQuest_inc._AudioQuest_DragonFly-00.analog-stereo
> > > .....................
> > > 
> > > but
> > > 
> > > [video at sixcore ~]$ paplay /home/video/Music/Route_66.wav
> > > Connection failure: Connection refused
> > > pa_context_connect() failed: Connection refused
> > 
> > The paplay error looks like pulseaudio isn't running, but obviously it
> > is. So the problem appears to be that pulseaudio and paplay just don't
> > find each other, and that's probably because they disagree where the
> > communication socket should be.
> > 
> > What does "netstat -l -x -p | grep pulse" print? What does
> > "PULSE_LOG=99 pactl info" print? What does "echo $XDG_RUNTIME_DIR"
> > print?
> > 
> 
> Thanks for the response.
> 
> [video at sixcore ~]$ netstat -l -x -p | grep pulse
> (Not all processes could be identified, non-owned process info
>   will not be shown, you would have to be root to see it all.)
> unix  2      [ ACC ]     STREAM     LISTENING     51237 
> 7388/pulseaudio      /tmp/.esd-501/socket
> unix  2      [ ACC ]     STREAM     LISTENING     26773    - 
>         /run/user/0/pulse/native
> unix  2      [ ACC ]     STREAM     LISTENING     40938    7362/systemd 
>         /run/user/501/pulse/native
> 
> [video at sixcore ~]$ PULSE_LOG=99 pactl info
> Parsing configuration file '/home/video/.config/pulse/client.conf'
> /home/video/.config/pulse/client.conf.d does not exist, ignoring.
> Using shared memfd memory pool with 1024 slots of size 64.0 KiB each, 
> total size is 64.0 MiB, maximum usable slot size is 65472
> Trying to connect to 
> {fd19a5b3f9ab48aeae18d687a1e5c0cc}unix:/run/user/1001/pulse/native...
> Connection failure: Connection refused
> pa_context_connect() failed: Connection refused
> 
> 
> [video at sixcore ~]$ echo $XDG_RUNTIME_DIR
> /run/user/501
> 
> But it gets weirder.
> 
> This is from an ssh session from a fedora laptop client. The server is 
> headless (running Fedora 25). If I ssh into the server from chromebook 
> OR my android phone - paplay works !! In all cases I'm logging directly 
> into the user "video" at sixcore.
> 
> pactl from the android phone ssh session:
> 
> Parsing configuration file '/home/video/.config/pulse/client.conf'
> /home/video/.config/pulse/client.conf.d does not exist, ignoring.
> Using shared memfd memory pool with 1024 slots of size 64.0 KiB each, 
> total size is 64.0 MiB, maximum usable slot size is 65472
> Trying to connect to /run/user/501/pulse/native...
> ...........
> 
> Not at all like the odd connect I get when I ssh from the fedora laptop.
> 
>  From the fedora laptop ssh session:
> [video at sixcore ~]$ id video
> uid=501(video) gid=39(video) groups=39(video),10(wheel),63(audio)
> 
> There is no user 1001. At least not in /etc/passwd.
> 
> Very puzzled.

I suspect
{fd19a5b3f9ab48aeae18d687a1e5c0cc}unix:/run/user/1001/pulse/native
comes from the X server. On your Fedora laptop, module-x11-publish puts
the local pulseaudio socket addresses to X properties, and when you use
ssh with X forwarding, paplay takes the socket address from the X
server running on your laptop.

The intended purpose of this is that if you load module-native-
protocol-tcp  (notice the -tcp suffix) on the laptop, applications that
you use on the remote machine over ssh automagically connect to the
local pulseaudio server on your laptop. In this case, however, if my
guess is correct, paplay picks up a unix socket address from X, which
is not useful at all.

The {fd19a5b3f9ab48aeae18d687a1e5c0cc} part is supposed to be a filter
that tells paplay to use the address only if the machine that paplay
runs on has machine-id fd19a5b3f9ab48aeae18d687a1e5c0cc. What's the
machine-id of the Fedora laptop, and what's the machine-id of the
headless server? The machine-id is stored in /etc/machine-id. If
they're the same on the two machines for some reason, then that's the
problem.

"xprop -root | grep ^PULSE_" will show the stuff that pulseaudio has
stored in the X server.

-- 
Tanu

https://www.patreon.com/tanuk


More information about the pulseaudio-discuss mailing list