gstreamer alsa mixer renders gnome volume controls useless
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gst-plugins-base |
Fix Released
|
Undecided
|
Unassigned | ||
gst-plugins-base0.10 (Ubuntu) |
Fix Released
|
Low
|
Unassigned | ||
Bug Description
SRU Info
1. This bug is persistent and annoying because users cannot control the volume without it randomly going to zero. They may be unable to use their keyboard volume controls and/or the display for the volume popup that appears through gnome-settings-
2. It hasn't been addressed upstream yet, but was reported a while ago.
3. Patch is available below.
4. Not everyone can reproduce it; that's why it's tricky. The bug is sneaky. For a lot of us, simply using the keyboard volume controls will reveal a blank volume popup and not the actual volume. Or, adjusting the volume slider in the mixer will uncover the problem in a very short time.
TEST CASE:
-open gnome-volume-
-Adjust master or PCM mixers with the left/right channels locked. Watch the sliders desynchronize as you move at a slow speed or really fast speed.
-OR-
-use keyboard volume controls and observe that the volume popup reports incorrect or no volume-
5. I could not see possible regressions. This patch reverts a commit which seemed to make controlling volume an asynchronous operation or something of the matter, but introduced issues on many systems. It used to work fine for everyone (to my knowledge) before the commit. So really, a regression is being reversed. I wasn't able to pinpoint exactly why that commit was added in to the gstreamer code.
-------
Primary example (only GNOME affected, focus of this bug, prelim. patch for it below)
1. Open gnome-volume-
2. option a. Use keyboard to control volume. It is immediately messed up and the progress bar on the volume control disappears. You can see with alsamixer that one channel is randomly muted now and then.
2. option b. Rapidly adjust PCM volume with the channels locked. The channels will eventually loosen up or one will go to 0.
GNOME without pulseaudio and without software mixing still has the problem. The problem seems DIRECTLY related to GNOME, but it's also possible this bug is similar to the one below. The first problem is MUCH worse and ruins daily, practical use of the OS. The second is an observation and not intended to be the focal point of this bug report. I didn't see random muting with the second bug (that I can remember) but I saw a ton with the first.
-------
Secondary example (all desktops):
1. Open gnome-alsamixer
2. Open gnome-volume-
3. Open alsamixer
Adjust PCM volume with text-mode alsamixer. The two channels get out of sync very quickly.
sudo sh -c "echo 0 > /sys/devices/
This command actually fixes the GNOME volume control on one of my dual-core systems (Intrepid/emu10k1). It is consistently reproducible and directly related to that command. On the other system (Hardy custom 2.6.26/cmipci), the command seems to have no effect and the problem remains.
Something is wrong with the locking or mutexing of the volume controls in an underlying component of Ubuntu. For some people, that means even rudimentary volume control with the keyboard is problematic.
Affected drivers:
- cmipci
- emu10k1
- possibly every audio driver
The second example happens on systems even with the 2nd cpu disabled, just a little less. With the first example it doesn't seem to matter.
Intrepid as of 7/24/2008 is affected.
I was not able to demonstrate any inconsistencies with the text-mode alsamixer when GNOME or KDE was not open, but that does not mean the race is not somewhere in the kernel either. Moving the volume controls with keys is a lot less stressful on the drivers than using a smooth slider or running apps that monitor the volume in real-time.
I have tried every fix I have seen, and none have fixed the problem.
Possibly related bugs:
- Bug 126333
From my debugging, a zero is first being written to a volume channel for some reason. I am not sure why or the source of it. Mixers then read this zero and the mistake carries on from there.
I will attach some library call logs from my debugging, but I can not say that they are reliable. "workinglogs" is from adjusting it slowly up and then slowly down in the text-mode alsamixer program with no desktop environment loaded, only a TTY.
"brokenlogs" shows what happens when I use my keyboard to do the same thing. The volume is jumping down periodically or going to zero.
_snd_mixer_
elem_write_volume s->str[0].vol[0] = 0
elem_write_volume s->str[0].vol[1] = 18
The second write command giving alsa a zero makes no sense, and completely destroys the linearity of the adjustment. But I don't know where it's coming from. I don't know if it's adjusting the same track number even or if it is the cause of the problem, but it seems to correlate.
Each log file (mylogn) in the archives is tracking a different part of the sound control subsystem. mylog5 is the lowest level and mylog1/
Both machines were dual-core Intel Core 2 running x86_64 architecture Ubuntu with 4GB of RAM. All tracing was done on the first system (cmipci).
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Changed in gst-plugins-base0.10: | |
status: | Incomplete → New |
description: | updated |
Changed in gst-plugins-base: | |
status: | Unknown → New |
Changed in gst-plugins-base0.10: | |
status: | New → Triaged |
description: | updated |
description: | updated |
I tried four Ubuntu LiveCDs:
- 8.04.1 Live Ubuntu (32-bit)
- 8.04.1 Live Kubuntu (32-bit)
- 8.04.1 Live Ubuntu (64-bit)
- 8.04.1 Live Kubuntu (64-bit)
While all of them may have exhibited the second problem to some extent, the first, more serious problem for all practical purposes did not exist on the KDE CDs.
I installed kubuntu-desktop on my normal GNOME Ubuntu machine. When I go into KDE, the problem no longer happens. Killing the mixer applet and closing volume control programs on GNOME doesn't help the problem. (gnome- settings- daemon obviously is still running to handle keyboard volume controls, my best demonstration of the issue.)