Bug #13186
openRegression: MATE Desktop Volume slider stopped working after git commit #6093
0%
Description
After the recent change for pulse to support an oss device that isn't the first one, the main MATE volume control no longer changes the volume. This happens on both a system where pulse audio worked prior to this pulse change and on a system which needed to this patch (prior to this patch, there was no audio, after patch, audio work, but no volume control with master slider.
I can confirm that on the system where audio worked prior to this change, I can change the volume on the Applications tab of the Sound Preferences (find the running application and change the volume slider for that application). This is a work-around as long as OI applications have been ported to use pulse instead of OSS.
It should be noted that the behavior I see on OI now matches the behavior of Solaris 11.4.
I am using MATE 1.24.1.
Updated by Andreas Wacknitz almost 2 years ago
In order to investigate further we need more information. Eg., can you tell us more about your hardware?
Are there more than one instance of the audio device? If so, which one is being used?
This: http://jamesdeagle.blogspot.com/2017/09/openindiana-hipster-console-workaround.html blog post provides a script for changing the volume on instance 0 (you can adapt it for other instances):
read a
audioctl set-control -d /dev/sound/audiohd:0mixer volume $a
audioctl set-control -d /dev/sound/audiohd:0mixer headphones $a:$a
audioctl set-control -d /dev/sound/audiohd:0mixer speaker $a:$a
Does this work for you?
Updated by Gary Mills almost 2 years ago
There are two mouse-driven audio controls on OI's Mate desktop. Last time I checked, they both worked. If you are reporting trouble with one, please let us know which one. The more detailed your description is, the easier it will be for us to solve the problem.
You can also help us by doing some debugging of pulseaudio on your hardware. First of all, check if you have AUDIODEV set in the environment. Here's how:
$ env | grep AUDIODEV AUDIODEV=/dev/sound/1
Make this change in /etc/pulse/daemon.conf to enable debugging:
< ; log-level = notice --- > log-level = debug
Also, make this change in /etc/syslog.conf:
< *.err;kern.debug;daemon.info;mail.crit /var/adm/messages --- > *.err;user.debug;kern.debug;daemon.info;mail.crit /var/adm/messages
And make it take effect, like this, as root:
# pgrep syslogd NNNN # kill -HUP NNNN
You have to log out and log in again to restart the pulseaudio deamon. After that, all the pulseaudio messages should appear in /var/adm/messages .
Updated by Gary Mills almost 2 years ago
One thing about pulseaudio that I forgot to mention is that it stores information in each user's home directory. If you look in your .pulse directory, you will see several gdm database files. It uses this information to set many things, volume control for example, so that it behaves the same on each login. Old information can confuse pulseaudio. If necessary, you can rename the .pulse directory. On the next logout and login, pulseaudio will create a new directory and new databases. They might work better. If not, you can undo your change.
Updated by Geoff Weiss almost 2 years ago
I will go through everything listed here on each system, but there will be a several day gap between systems.
Since the time I opened this ticket, I updated a third OI system and the problems I saw on the first two systems did not occur on the third (everything worked as usual on the third system). I suspect that if I GUI logout, then blow away the ~/.audioctl and ~/.config/pulse directories, and then reboot, the problem may be resolved. But, I want to go through all the steps outlined here just to see if I can get better understanding of the different layers.
I will provide updates in the upcoming days.
Updated by Geoff Weiss almost 2 years ago
On the both systems with problems, I can do the following to set volume levels:
audioctl set-control -d audiohd#0 volume 50
audioctl set-control -d audiohd#0 volume 100
All of the troubleshooting from this point onwards is only on the system which MATE's volume controls worked before getting the update last week.
I can change the volume with this control as well:
audioctl set-control -d audiohd#0 front 50
audioctl set-control -d audiohd#0 front 100
The complete list of controls on my audio device:
audioctl show-control -d audiohd#0
CONTROL VALUE
volume 100
speaker 75:75
headphones 75:75
mic 50:50
front 100:100
monitor-gain 0:0
loopback off
record-source mic
My audio device from ddu is listed as "6 Series/C200 Series Chipset Family High Definition Audio Controller" from the vendor Intel Corporation.
The audio does not change if I move the slider up and down with the volume control in the MATE panel (click on speaker icon in MATE top panel) nor does it change the volume with the "Output Volume" at the top of the Sound Preferences (accessed by right clicking on the speaker icon in the MATE top panel). I do not believe there are any other volume controls with MATE.
I enable the requested debugging in pulse and syslog.conf. When I move the slider in the volume control in the panel, this is a snippet from what shows up in the logs:
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] oss-util.c: got value 0x00004242 from volume
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] sink.c: The reference volume of sink oss_output.dsp0 changed from front-left: 43909 / 67%, front-right: 43909 / 67% to front-left: 43253 / 66%, front-right: 43253 / 66%.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] oss-util.c: got value 0x00004242 from volume
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.info] [(null)] module-device-restore.c: Storing volume/mute for device+port sink:oss_output.dsp0:null.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] oss-util.c: got value 0x00004242 from volume
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] protocol-native.c: Client changes volume of sink oss_output.dsp0.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] sink.c: The reference volume of sink oss_output.dsp0 changed from front-left: 43253 / 66%, front-right: 43253 / 66% to front-left: 39321 / 60%, front-right: 39321 / 60%.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] oss-util.c: set value 0x0000003b on volume
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] oss-util.c: got value 0x00003b3b from volume
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] sink.c: The reference volume of sink oss_output.dsp0 changed from front-left: 39321 / 60%, front-right: 39321 / 60% to front-left: 38666 / 59%, front-right: 38666 / 59%.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] core-subscribe.c: Dropped redundant event due to change event.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.info] [(null)] module-device-restore.c: Storing volume/mute for device+port sink:oss_output.dsp0:null.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] oss-util.c: got value 0x00003b3b from volume
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] protocol-native.c: Client changes volume of sink oss_output.dsp0.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] sink.c: The reference volume of sink oss_output.dsp0 changed from front-left: 38666 / 59%, front-right: 38666 / 59% to front-left: 38631 / 59%, front-right: 38631 / 59%.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] oss-util.c: set value 0x0000003a on volume
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] oss-util.c: got value 0x00003a3a from volume
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] sink.c: The reference volume of sink oss_output.dsp0 changed from front-left: 38631 / 59%, front-right: 38631 / 59% to front-left: 38010 / 58%, front-right: 38010 / 58%.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] core-subscribe.c: Dropped redundant event due to change event.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.info] [(null)] module-device-restore.c: Storing volume/mute for device+port sink:oss_output.dsp0:null.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] protocol-native.c: Client changes volume of sink oss_output.dsp0.
Oct 1 00:15:15 oibox pulseaudio3128: [ID 295310 user.debug] [(null)] sink.c: The reference volume of sink oss_output.dsp0 changed from front-left: 38010 / 58%, front-right: 38010 / 58% to front-left: 38666 / 59%, front-right: 38666 / 59%.
I followed the steps I outlined to rename .audioctl and .config/pulse. The behavior remains the same.
Updated by Geoff Weiss almost 2 years ago
I forget to note that I do not have the AUDIODEV environment variable set.
Geoff
Updated by Gary Mills almost 2 years ago
This is certainly peculiar behavior. It seems that there is a communications error between the Mate Sound Preferences application (the one you access from the System menu) and pulseaudio. For example, pulseaudio may be ignoring some mixer controls, and only using others. They behave normally for me.
What could be different between your systems and mine? I tested the new pulseaudio package on two systems, one intel with one audio device, and the other ryzen with two audio devices. The intel system used an ASUS PRIME B360M-A motherboard with an Intel Core i3-9100 CPU. The audio device was a Realtek ALC887 HD Audio CODEC. The ryzen system used an ASUS PRIME B350M-A motherboard with an AMD Ryzen 3 1200 CPU. The audio device was a Realtek ALC887-VD2 HD Audio CODEC. Both of them used the audiohd driver.
For the intel system, scanpci -v showed the PCI connection to the audio device this way:
pci bus 0x0000 cardnum 0x1f function 0x03: vendor 0x8086 device 0xa348 Intel Corporation Cannon Lake PCH cAVS CardVendor 0x1043 card 0x86c7 (ASUSTeK Computer Inc., Card unknown) STATUS 0x0010 COMMAND 0x0146 CLASS 0x04 0x03 0x00 REVISION 0x10 BIST 0x00 HEADER 0x00 LATENCY 0x20 CACHE 0x10 BASE0 0x0000000093210000 SIZE 16384 MEM64 BASE4 0x0000000093000000 SIZE 1048576 MEM64 MAX_LAT 0x00 MIN_GNT 0x00 INT_PIN 0x01 INT_LINE 0x0b
For the ryzen system, it was like this:
pci bus 0x000a cardnum 0x00 function 0x03: vendor 0x1022 device 0x1457 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller CardVendor 0x1043 card 0x86c7 (ASUSTeK Computer Inc., Card unknown) STATUS 0x0010 COMMAND 0x0047 CLASS 0x04 0x03 0x00 REVISION 0x00 BIST 0x00 HEADER 0x80 LATENCY 0x00 CACHE 0x10 BASE0 0xfce00000 SIZE 32768 MEM MAX_LAT 0x00 MIN_GNT 0x00 INT_PIN 0x03 INT_LINE 0x05
As you can see, the audio hardware on both systems was quite similar.
Updated by Gary Mills almost 2 years ago
I updated both my test systems to the current OI version, just to be sure that the pulseaudio package from OI behaved the same as the package I had developed. The compiler might have been different, for example. They behaved exactly the same. The volume control slider (the one you get by clicking on the speaker icon in the top bar) worked correctly on both systems. As far as I can tell, there's no difference between the packages.
In cases where the slider doesn't work, there must be some difference between those systems and mine.
Updated by Gary Mills almost 2 years ago
I reviewed the syslog debugging messages posted above. I got the same messages on both of my test systems. The volume slider works there. For example, I got these messages:
Oct 5 08:44:06 intel pulseaudio[4047]: [ID 295310 user.debug] [(null)] oss-util.c: set value 0x00000042 on volume Oct 5 08:44:06 intel pulseaudio[4047]: [ID 295310 user.debug] [(null)] oss-util.c: got value 0x00004242 from volume
The only difference is that the values were lower in the messages posted above. They seem to be one byte. I also got this message:
Oct 5 08:44:05 intel pulseaudio[4047]: [ID 295310 user.debug] [(null)] sink.c: The reference volume of sink oss_output.dsp0 changed from front-left: 61603 / 94%, front-right: 61603 / 94% to front-left: 60948 / 93%, front-right: 60948 / 93%.
Again, the outstanding difference was that the numbers and percentages were lower in the messages posted above. Other than that, the slider appears to work. There is a big difference, more that I would expect, between 50% and 95%. At 50%, the sound is very weak. At 95%, it is low but acceptable. I assume that the driver is responsible for the low volume, not pulseaudio.