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
signature.asc
Description: This is a digitally signed message part

