masmu / pulseaudio-dlna

A lightweight streaming server which brings DLNA / UPNP and Chromecast support to PulseAudio and Linux
GNU General Public License v3.0
1.25k stars 161 forks source link

Per-user DBUS socket path (in Archlinux) #218

Open rshk opened 8 years ago

rshk commented 8 years ago

I'm opening this issue to let you know that on Archlinux (and possibly other distros) the pulseaudio dbus socket is located at /run/user/<uid>/pulse/dbus-socket; it might be worth probing for that as well, in https://github.com/masmu/pulseaudio-dlna/blob/2592cce6dbe59260ee8d519a11d4d0e8df3259bd/pulseaudio_dlna/pulseaudio.py#L79

In the meantime, I'm using:

PULSE_DBUS_SERVER=unix:path=/run/user/1000/pulse/dbus-socket

Cheers!

yfyf commented 8 years ago

Can confirm, and this is not ArchLinux specific -- had the same issue on Debian. Note that /run/user/$uid is simply $XDG_RUNTIME_DIR, so you could just query for that I guess. Relevant discussion on SE: http://unix.stackexchange.com/questions/162900/what-is-this-folder-run-user-1000

pmithrandir commented 7 years ago

Same issue on mageia.

Anyone would be able to do a pull request with this test added ? I don't have python knowledge neither python installed to develop that other if. Should look like that...

Pierre

    def _get_bus_address(self):
        server_address = os.environ.get('PULSE_DBUS_SERVER', None)
        if server_address is None and \
           os.access('/run/pulse/dbus-socket', os.R_OK | os.W_OK):
            server_address = 'unix:path=/run/pulse/dbus-socket'
        if server_address is None and \
           os.access(os.environ.get('XDG_RUNTIME_DIR', None) + '/pulse/dbus-socket', os.R_OK | os.W_OK):
            server_address = 'unix:path='+os.environ.get('XDG_RUNTIME_DIR', None)+'/pulse/dbus-socket'
        if server_address is None:
            lookup_object = dbus.SessionBus().get_object(
                'org.PulseAudio1', '/org/pulseaudio/server_lookup1')
            server_address = lookup_object.Get(
                'org.PulseAudio.ServerLookup1',
                'Address',
                dbus_interface='org.freedesktop.DBus.Properties')
        return server_address
sim590 commented 7 years ago

Has this not been addressed? I feel like the debian package is not usable as I get this error message:

simon@haxorz:~/prog/ring-daemon$ pulseaudio-dlna --debug
01-04 09:45:43 pulseaudio_dlna.rules                          DEBUG    Loaded rules:
01-04 09:45:43 pulseaudio_dlna.rules                          DEBUG      DISABLE_DEVICE_STOP = <class 'pulseaudio_dlna.rules.DISABLE_DEVICE_STOP'>
01-04 09:45:43 pulseaudio_dlna.rules                          DEBUG      FAKE_HTTP_CONTENT_LENGTH = <class 'pulseaudio_dlna.rules.FAKE_HTTP_CONTENT_LENGTH'>
01-04 09:45:43 pulseaudio_dlna.rules                          DEBUG      REQUEST_TIMEOUT = <class 'pulseaudio_dlna.rules.REQUEST_TIMEOUT'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG    Loaded encoders:
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.avconv.AVConvAacEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.avconv.AVConvFlacEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.avconv.AVConvL16Encoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.avconv.AVConvMp3Encoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.avconv.AVConvOggEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.avconv.AVConvOpusEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.avconv.AVConvWavEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.ffmpeg.FFMpegAacEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.ffmpeg.FFMpegFlacEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.ffmpeg.FFMpegL16Encoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.ffmpeg.FFMpegMp3Encoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.ffmpeg.FFMpegOggEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.ffmpeg.FFMpegOpusEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.ffmpeg.FFMpegWavEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.generic.FaacAacEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.generic.FlacFlacEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.generic.LameMp3Encoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.NullEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.generic.OggencOggEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.generic.OpusencOpusEncoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.generic.SoxL16Encoder'>
01-04 09:45:43 pulseaudio_dlna.encoder.avconv                 DEBUG      <class 'pulseaudio_dlna.encoders.generic.SoxWavEncoder'>
01-04 09:45:43 pulseaudio_dlna.codecs                         DEBUG    Loaded codecs:
01-04 09:45:43 pulseaudio_dlna.codecs                         DEBUG      aac = <class 'pulseaudio_dlna.codecs.AacCodec'>
01-04 09:45:43 pulseaudio_dlna.codecs                         DEBUG      flac = <class 'pulseaudio_dlna.codecs.FlacCodec'>
01-04 09:45:43 pulseaudio_dlna.codecs                         DEBUG      l16 = <class 'pulseaudio_dlna.codecs.L16Codec'>
01-04 09:45:43 pulseaudio_dlna.codecs                         DEBUG      mp3 = <class 'pulseaudio_dlna.codecs.Mp3Codec'>
01-04 09:45:43 pulseaudio_dlna.codecs                         DEBUG      ogg = <class 'pulseaudio_dlna.codecs.OggCodec'>
01-04 09:45:43 pulseaudio_dlna.codecs                         DEBUG      opus = <class 'pulseaudio_dlna.codecs.OpusCodec'>
01-04 09:45:43 pulseaudio_dlna.codecs                         DEBUG      wav = <class 'pulseaudio_dlna.codecs.WavCodec'>
01-04 09:45:43 pulseaudio_dlna.application                    INFO     Using version: 0.5.2
01-04 09:45:43 pulseaudio_dlna.application                    INFO     Using localhost: 192.168.1.102:8080
01-04 09:45:43 pulseaudio_dlna.application                    INFO     Encoder settings:
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <AVConvAacEncoder available="False" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <AVConvFlacEncoder available="False">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <AVConvL16Encoder available="False" sample-rate="44100" channels="2">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <AVConvMp3Encoder available="False" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <AVConvOggEncoder available="False" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <AVConvOpusEncoder available="False" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <AVConvWavEncoder available="False">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FFMpegAacEncoder available="True" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FFMpegFlacEncoder available="True">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FFMpegL16Encoder available="True" sample-rate="44100" channels="2">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FFMpegMp3Encoder available="True" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FFMpegOggEncoder available="True" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FFMpegOpusEncoder available="True" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FFMpegWavEncoder available="True">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FaacAacEncoder available="False" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FlacFlacEncoder available="True">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <LameMp3Encoder available="True" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <NullEncoder available="True">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <OggencOggEncoder available="True" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <OpusencOpusEncoder available="True" bit-rate="192">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <SoxL16Encoder available="True" sample-rate="44100" channels="2">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <SoxWavEncoder available="True">
01-04 09:45:43 pulseaudio_dlna.application                    INFO     Codec settings:
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <AacCodec enabled="True" priority="12" mime_type="audio/aac" backend="generic">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <L16Codec enabled="True" priority="0" mime_type="audio/L16" backend="generic">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <OpusCodec enabled="True" priority="3" mime_type="audio/opus" backend="generic">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <Mp3Codec enabled="True" priority="18" mime_type="audio/mp3" backend="generic">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <FlacCodec enabled="True" priority="9" mime_type="audio/flac" backend="generic">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <WavCodec enabled="True" priority="15" mime_type="audio/wav" backend="generic">
01-04 09:45:43 pulseaudio_dlna.application                    INFO       <OggCodec enabled="True" priority="6" mime_type="audio/ogg" backend="generic">
01-04 09:45:43 pulseaudio_dlna.discover                       DEBUG    Binding socket to "" ...
Failure: Module initialization failed
01-04 09:45:43 pulseaudio_dlna.pulseaudio                     CRITICAL PulseAudio seems not to be running or PulseAudio dbus module could not be loaded. The application cannot work properly!
01-04 09:45:51 pulseaudio_dlna.discover                       DEBUG    SSDPDiscover.search() quit

notice the line

01-04 09:45:43 pulseaudio_dlna.discover                       DEBUG    Binding socket to "" ...

I'm running:

masmu commented 7 years ago

Well, I guess that issue slipped through. I am not experiencing any problems with Ubuntu. But the patch @pmithrandir provided seems good to me. Will add it in the next release.

sim590 commented 7 years ago

@masmu: I have just tried this again after two weeks and now it works. I can't explain it. Upgrading and/or restarting my system must have changed something in dbus state or something.

masmu commented 7 years ago

Well, I can't tell ... but I will add the mentioned patch in the next release. If you want to spent some time finding out what was happening... this would be great.

dony71 commented 7 years ago

I have rev.0.5.2 Is this issue not being patched yet? Still have this error below

04-03 11:13:44 pulseaudio_dlna.discover DEBUG Binding socket to "" ... Exception in thread Thread-2: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 810, in bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 763, in run self.target(*self.args, **self.__kwargs) File "/usr/lib/python2.7/dist-packages/pulseaudio_dlna/plugins/chromecast/init__.py", line 48, in discover mdns.run(ttl) File "/usr/lib/python2.7/dist-packages/pulseaudio_dlna/plugins/chromecast/mdns.py", line 54, in run self.zeroconf = zeroconf.Zeroconf() File "/usr/lib/python2.7/dist-packages/zeroconf.py", line 1336, in init self._listen_socket = new_socket() File "/usr/lib/python2.7/dist-packages/zeroconf.py", line 1303, in new_socket s.setsockopt(socket.SOL_SOCKET, reuseport, 1) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) error: [Errno 92] Protocol not available

Failure: Module initialization failed 04-03 11:13:44 pulseaudio_dlna.pulseaudio CRITICAL PulseAudio seems not to be running or PulseAudio dbus module could not be loaded. The application cannot work properly!

masmu commented 7 years ago

@dony71 : This is a completely different error. Please open a new issue and provide more information, like used OS and a complete debug.log. The error in that issue is talked about, is fixed in a branch. Testings welcome!