[pulseaudio-discuss] padevchooser replacement

Victor Mataré matare at lih.rwth-aachen.de
Thu Dec 15 15:56:54 PST 2011



On 15.12.2011 22:41, Victor Mataré wrote:
>
>
> On 15.12.2011 14:39, Colin Guthrie wrote:
>> 'Twas brillig, and Victor Mataré at 14/12/11 23:12 did gyre and gimble:
>>> On Wednesday, 14.12.2011 21:24:45 Colin Guthrie wrote:
>>>> 'Twas brillig, and Victor Mataré at 14/12/11 19:59 did gyre and gimble:
>>>>> Hey,
>>>>>
>>>>> Am I right in that there's currently (after padevchooser deprecation) no
>>>>> GUI way of choosing the server to use? That's a real problem for me
>>>>> since I frequently switch between local and networked servers, as do
>>>>> other users on my network who can't be expected to use the console for
>>>>> that task.
>>>>> Any idea how to switch servers conveniently without padevchooser?
>>>> We generally recommend always using your local PA daemon and using Avahi
>>>> and similar auto discover to automatically add tunnel sinks to remote
>>>> machines you want to use. This way you can move streams from local to
>>>> remote and back again as needed rather than restarting applications
>>>> every time you switch servers.
>>>>
>>> OK that's nice, but it's not
>>> working:
>>>
>>> $ avahi-browse -l -t _pulse-server._tcp
>>> +   eth0 IPv6 jana at wiese    _pulse-server._tcp   local
>>> +   eth0 IPv6 ich at horst     _pulse-server._tcp   local
>>> +   eth0 IPv4 jana at wiese    _pulse-server._tcp   local
>>> +   eth0 IPv4 ich at horst     _pulse-server._tcp   local
>>>
>>> $ pacmd list-sinks
>>> Welcome to PulseAudio! Use "help" for usage information.
>>>>>> 1 sink(s) available.
>>>   * index: 0
>>>         name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
>>>         driver: <module-alsa-card.c>
>>>         flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY
>>>         state: SUSPENDED
>>>         suspend cause: IDLE 
>>> [...]
>>>
>>> So it lists only the local sinks, although module-zeroconf-discover is loaded:
>>>
>>> $ pacmd list-modules | grep -B1 -A7 zeroconf-discover
>>>     index: 19
>>>         name: <module-zeroconf-discover>
>>>         argument: <>
>>>         used: -1
>>>         load once: yes
>>>         properties:
>>>                 module.author =Lennart Poettering"
>>>                 module.de
>>> cription =mDNS/DNS-SD Service Discovery"
>>>                 module.version =0.9.23"
>>>
>>> Am I supposed to do anything else to make it work?
>> The only other bit that I can think off of the top of my head is the
>> name resolving bits.
>>
>> Check your /etc/nsswitch.conf file and make sure your hosts line
>> contains the mdns stuff for "hosts":
>>
>> hosts:           mdns4_minimal files nis dns mdns4  wins myhostname
>>
>> (yours may not look exactly like this)
>>
>>
>> Assuming that is working it should "Just Work(tm)"
>>
>> If it doesn't work, try loading the tunnel module manually and see if it
>> works. Perhaps module-tunnel-sink is actually in a different package on
>> your distro and it's just that whoever packaged it up didn't appreciate
>> that the zeroconf-discover module needs the tunnel module?
>>
>> Col
> Okay, did some more debugging and it looks like I'm being bitten by bug
> #694:
> http://pulseaudio.org/ticket/694
>
> I do have both IPv4 and IPv6 addressing enabled (see avahi-browse above)
> and pulseaudio tries to register two sinks with the same name which
> apparently causes the entire tunnel module to fail && unload:
>
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio]
> module-zeroconf-discover.c: Loading module-tunnel-sink with arguments
> 'server=[fe80::219:99ff:fe7e:d60e]:4713
> sink=alsa_output.pci-0000_00_14.2.analog-stereo format=s16le channels=2
> rate=96000
> sink_name=tunnel.horst.local.alsa_output.pci-0000_00_14.2.analog-stereo
> channel_map=front-left,front-right'
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio]
> module-device-restore.c: Restoring volume for sink
> tunnel.horst.local.alsa_output.pci-0000_00_14.2.analog-stereo.
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] sink.c: Created sink
> 2 "tunnel.horst.local.alsa_output.pci-0000_00_14.2.analog-stereo" with
> sample spec s16le 2ch 96000Hz and channel map front-left,front-right
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] sink.c:    
> device.description = "alsa_output.pci-0000_00_14.2.analog-stereo on
> [fe80::219:99ff:fe7e:d60e]:4713"
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] sink.c:    
> tunnel.remote.server = "[fe80::219:99ff:fe7e:d60e]:4713"
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] sink.c:    
> tunnel.remote.sink = "alsa_output.pci-0000_00_14.2.analog-stereo"
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] sink.c:    
> device.icon_name = "audio-card"
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] source.c: Created
> source 3
> "tunnel.horst.local.alsa_output.pci-0000_00_14.2.analog-stereo.monitor"
> with sample spec s16le 2ch 96000Hz and channel map front-left,front-right
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] source.c:    
> device.description = "Monitor of
> alsa_output.pci-0000_00_14.2.analog-stereo on
> [fe80::219:99ff:fe7e:d60e]:4713"
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] source.c:    
> device.class = "monitor"
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] source.c:    
> device.icon_name = "audio-input-microphone"
> Dec 15 22:14:15 wald pulseaudio[3583]: [module-tunnel] module-tunnel.c:
> Thread starting up
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] protocol-dbus.c:
> Interface org.PulseAudio.Core1.Device added for object
> /org/pulseaudio/core1/source3
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] protocol-dbus.c:
> Interface org.PulseAudio.Core1.Source added for object
> /org/pulseaudio/core1/source3
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio]
> module-device-restore.c: Could not set format on sink
> tunnel.horst.local.alsa_output.pci-0000_00_14.2.analog-stereo
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio]
> module-suspend-on-idle.c: Sink
> tunnel.horst.local.alsa_output.pci-0000_00_14.2.analog-stereo becomes
> idle, timeout in 5 seconds.
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] protocol-dbus.c:
> Interface org.PulseAudio.Core1.Device added for object
> /org/pulseaudio/core1/sink2
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] protocol-dbus.c:
> Interface org.PulseAudio.Core1.Sink added for object
> /org/pulseaudio/core1/sink2
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] module.c: Loaded
> "module-tunnel-sink" (index: #25; argument:
> "server=[fe80::219:99ff:fe7e:d60e]:4713
> sink=alsa_output.pci-0000_00_14.2.analog-stereo format=s16le channels=2
> rate=96000
> sink_name=tunnel.horst.local.alsa_output.pci-0000_00_14.2.analog-stereo
> channel_map=front-left,front-right").
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] socket-client.c:
> connect(): Invalid argument (22)
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] module-tunnel.c:
> Connection established, authenticating ...
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] protocol-dbus.c:
> Interface org.PulseAudio.Core1.Module added for object
> /org/pulseaudio/core1/module25
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio]
> module-zeroconf-discover.c: Loading module-tunnel-sink with arguments
> 'server=[192.168.10.155]:4713
> sink=alsa_output.pci-0000_00_1f.5.analog-stereo format=s16le channels=2
> rate=44100
> sink_name=tunnel.wiese.local.alsa_output.pci-0000_00_1f.5.analog-stereo
> channel_map=front-left,front-right'
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] sink.c: Failed to
> register name tunnel.wiese.local.alsa_output.pci-0000_00_1f.5.analog-stereo.
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] module-tunnel.c:
> Failed to create sink.
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] module.c: Failed to
> load module "module-tunnel-sink" (argument:
> "server=[192.168.10.155]:4713
> sink=alsa_output.pci-0000_00_1f.5.analog-stereo format=s16le channels=2
> rate=44100
> sink_name=tunnel.wiese.local.alsa_output.pci-0000_00_1f.5.analog-stereo
> channel_map=front-left,front-right"): initialization failed.
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] module-tunnel.c:
> Stream died.
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] socket-client.c:
> connect(): Invalid argument (22)
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] module-tunnel.c:
> Connection established, authenticating ...
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] module.c: Unloading
> "module-tunnel-sink" (index: #24).
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] protocol-dbus.c:
> Interface org.PulseAudio.Core1.Device removed from object
> /org/pulseaudio/core1/sink1
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] protocol-dbus.c:
> Interface org.PulseAudio.Core1.Sink removed from object
> /org/pulseaudio/core1/sink1
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio]
> module-rescue-streams.c: No sink inputs to move away.
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] protocol-dbus.c:
> Interface org.PulseAudio.Core1.Device removed from object
> /org/pulseaudio/core1/source2
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] protocol-dbus.c:
> Interface org.PulseAudio.Core1.Source removed from object
> /org/pulseaudio/core1/source2
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio]
> module-rescue-streams.c: No source outputs to move away.
> Dec 15 22:14:15 wald pulseaudio[3583]: [module-tunnel] module-tunnel.c:
> Thread shutting down
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] sink.c: Freeing sink
> 1 "tunnel.wiese.local.alsa_output.pci-0000_00_1f.5.analog-stereo"
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] source.c: Freeing
> source 2
> "tunnel.wiese.local.alsa_output.pci-0000_00_1f.5.analog-stereo.monitor"
> Dec 15 22:14:15 wald pulseaudio[3583]: [pulseaudio] module.c: Unloaded
> "module-tunnel-sink" (index: #24).
>
> Considering this bug is over two years old and pulseaudio probably runs
> on 99% of all Linux desktops on the planet I'm a bit confused as to how
> this can be such a non-issue. Anyways, I can disable IPv6 on avahi as a
> workaround, although to me it looks like that bug should be trivially
> fixable by simply adding a v4/v6 suffix to the sink name. Also the
> tunnel module shouldn't fail entirely just because a duplicate sink name
> is requested. Instead I should be notified of the conflict by a log
> message on the ERROR level.

So now I disabled IPv6 on avahi and module-zeroconf-discover works as
expected. The tunnel sink to the networked server however doesn't. E.g.
with Xine, I get severe synchronization problems (stuttering and
skipping sound). Sometimes I can switch from local to networked playback
no problem, but when I switch back to local the playback halts for ~10
seconds. Repeat and Xine freezes entirely.
The Youtube player doesn't even work at all when using the networked
sink. Sound is played fine, but video is frozen.
All this used to work nicely when the client connects to the networked
server directly. Now I'm not sure if these are client implementation
problems or pulseaudio bugs. Any idea how to investigate further?

I remember reading some advice against module-tunnel-sink which said
that you lose buffer control and that glitches became more likely. Seems
like this hasn't changed. But then why is the direct connection way
being deprecated?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4512 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20111216/f8f87d4a/attachment-0001.bin>


More information about the pulseaudio-discuss mailing list