Your message dated Sat, 26 Jan 2013 18:04:50 +0100
with message-id <1359219890.9989.7.camel@shepard>
and subject line Re: hotplugging devices doesn't work completely if PA was 
started during earlier X-session
has caused the Debian Bug report #593952,
regarding hotplugging devices doesn't work completely if PA was started during 
earlier X-session
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
593952: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593952
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: pulseaudio
Version: 0.9.21-3
Severity: normal

Hi,

To work around #593746 [1] I changed /usr/bin/start-pulseaudio-x11 like
this

        $ egrep -v '(^#|^$)' /usr/bin/start-pulseaudio-x11
        set -e
        [ -z "$PULSE_SERVER" ]
        if [ "$XAUTHORITY" ]; then
                cp "$XAUTHORITY" "$HOME/.Xauthority"
                export XAUTHORITY="$HOME/.Xauthority"
        fi
        /usr/bin/pulseaudio --start "$@"
        if [ x"$DISPLAY" != x ] ; then
            /usr/bin/pactl load-module module-x11-publish "display=$DISPLAY" > 
/dev/null
            /usr/bin/pactl load-module module-x11-cork-request 
"display=$DISPLAY" > /dev/null
            if [ x"$SESSION_MANAGER" != x ] ; then
                /usr/bin/pactl load-module module-x11-xsmp "display=$DISPLAY 
session_manager=$SESSION_MANAGER" > /dev/null
            fi
        fi

and to work around #593881 [2] I executed this

        $ sudo adduser $USERNAME audio
        Adding user `alexander' to group `audio' ...
        Adding user alexander to group audio
        Done.

I verified that both workarounds do their job:

 * PA now stores it's properties to the X root window even if it was 
   started during an earlier X-session:
   
        $ ps -C pulseaudio -C x-session-manager -f
        UID        PID  PPID  C STIME TTY          TIME CMD
        1000     20966     1  0 16:19 ?        00:00:00 /usr/bin/pulseaudio 
--start
        1000     21109 21076  0 16:20 ?        00:00:00 x-session-manager
        $ xprop -root | grep -q ^PULSE_SERVER
        $ echo $?
        0

 * and I can use a hotplugged audio device instantly:
 
        $ aplay -l
        **** List of PLAYBACK Hardware Devices ****
        [ ... my internal sound card ... ]
        card 1: default [C-Media USB Headphone Set  ], device 0: USB Audio [USB 
Audio]
          Subdevices: 1/1
          Subdevice #0: subdevice #0

So theoretically I should now be able to just plug my USB sound card in,
fire up `gnome-volume-control' and switch the output to the new sound
card.

However this actually only works if I'm in the same X-session where PA
was started. During any later X-session PA will recognize the new card
correctly but fail to detect its sinks and sources:

        $ pacmd list-cards
        Welcome to PulseAudio! Use "help" for usage information.
        >>> 2 card(s) available.
            index: 1
                [ ... my internal sound card ... ]
            index: 3
                name: <alsa_card.usb-0d8c_C-Media_USB_Headphone_Set-00-default>
                driver: <module-alsa-card.c>
                owner module: 24
                properties:
                        alsa.card = "1"
                        alsa.card_name = "C-Media USB Headphone Set  "
                        alsa.long_card_name = "C-Media USB Headphone Set   at 
usb-0000:00:0b.0-5, full speed"
                        alsa.driver_name = "snd_usb_audio"
                        device.bus_path = "pci-0000:00:0b.0-usb-0:5:1.0"
                        sysfs.path = 
"/devices/pci0000:00/0000:00:0b.0/usb2/2-5/2-5:1.0/sound/card1"
                        udev.id = 
"usb-0d8c_C-Media_USB_Headphone_Set-00-default"
                        device.bus = "usb"
                        device.vendor.id = "0d8c"
                        device.vendor.name = "C-Media Electronics, Inc."
                        device.product.id = "000c"
                        device.product.name = "Audio Adapter"
                        device.serial = "0d8c_C-Media_USB_Headphone_Set"
                        device.form_factor = "headphone"
                        device.string = "1"
                        device.description = "Audio Adapter"
                        module-udev-detect.discovered = "1"
                        device.icon_name = "audio-headphones-usb"
                profiles:
                        output:analog-stereo: Analog Stereo Output (priority 
6000)
                        output:analog-stereo+input:analog-mono: Analog Stereo 
Output + Analog Mono Input (priority 6001)
                        output:iec958-stereo: Digital Stereo Duplex (IEC958) 
(priority 5500)
                        output:iec958-stereo+input:analog-mono: Digital Stereo 
(IEC958) Output + Analog Mono Input (priority 5501)
                        input:analog-mono: Analog Mono Input (priority 1)
                        off: Aus (priority 0)
                active profile: <output:analog-stereo+input:analog-mono>
        >>> $

So I thought, maybe it's another environmental variable (like in
#593746[1]) which isn't correct anymore during the later X-session, so I
did this:

        $ pulseaudio --kill; sleep 1; env --ignore-environment DISPLAY=$DISPLAY 
XAUTHORITY=$XAUTHORITY HOME=$HOME start-pulseaudio-x11
        $ tr '\0' '\n' < /proc/`pidof pulseaudio`/environ
        HOME=/home/alexander
        DISPLAY=:0.0
        XAUTHORITY=/home/alexander/.Xauthority
        PWD=/home/alexander
        LD_BIND_NOW=1

But surprisingly hotplugging worked. So it can't be some environmental
variable which has changed.

My next thought was that maybe the connection to some session service
like Dbus wasn't valid anymore during the new X-session. So I logged
out of GNOME and logged into a VT and restarted pulseaudio:

        $ pulseaudio --kill; sleep 1; pulseaudio --start
        $

But even after several logouts/logins to the VT, hotplugging still
worked, although PA was started during an earlier session and there were
no additional services running:

        $ ps -fu 1000
        UID        PID  PPID  C STIME TTY          TIME CMD
        1000     24030     1  0 16:51 ?        00:00:00 pulseaudio --start
        1000     24405 24384  0 16:52 tty2     00:00:00 -bash
        1000     24559 24405  0 16:52 tty2     00:00:00 ps -fu 1000

Since I'm really running out of ideas now, I'm filing this bug report.
Maybe someone out there is more clever than I am.

Please report if you can confirm that hotplugging doesn't work
completely (i.e. including sinks/sources) if PA was started during an
earlier X-session, or if this is some problem which only occurs under
rare circumstances.

If you need more information/additional tests, just ask!

Thanks for your work!

Alexander Kurtz

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593746
[2] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593881


Attachment: signature.asc
Description: This is a digitally signed message part


--- End Message ---
--- Begin Message ---
Version: 2.0-6

Hi,

I haven't experienced this problem in a while now even though I'm using
external sound cards on a daily basis now. I'm therefore closing this
bug now.

Best regards

Alexander Kurtz

Attachment: signature.asc
Description: This is a digitally signed message part


--- End Message ---
_______________________________________________
pkg-pulseaudio-devel mailing list
pkg-pulseaudio-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-pulseaudio-devel

Reply via email to