1

I am having problems related to audio settings on my notebook with all distros, since I used Ubuntu and Xubuntu (14 and 16), Kubuntu 16, Ubuntu Studio (14 and 15), Elementary (0.32) and MINT (17.3 Cinnamon and MATE), and all distros showed problems relating to analog audio, since only HDMI works after login (On systems with login sound, the sound works when I login, but a few moments after, analog sound no longer works.

My notebook is an Acer E1 421 with AMD APU, and both analog output and HDMI output seems to use the same audio module, and HDMI, being the 0 card with ALSA, only it works.

My lspci audio

lspci | grep Audio
00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Wrestler HDMI Audio
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 01)

My aplay -l

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic_1 [HD-Audio Generic], device 0: CX20584 Analog [CX20584 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0

I even found some workarounds to "fix" the issue, but I had no luck, since the "fix" was temporary or things got worse, like removing pulseaudio and lose the volume icons at the task bar...

So, is there a way to revert the devices ? It looks like the system is sending audio direct to card 0 (HDMI) So would it be possible to fix it so it can revert device order ?

I even found a script to change the device order here (at Stackexchange) Sound not working when both the sound card and HDMI use the Intel HDA driver. How to exchange their device loading order?

It would look like

alias char-major-116 snd
alias snd-card-0 snd-hda-intel
alias snd-card-1 snd-hda-intel

options snd cards_limit=2

options snd-hda-intel id=SB index=0
options snd-hda-intel id=HDMI index=1

But I don't know how it would apply on my scenario, and even using a script to revert the order, analog audio does not work at all

It shows on the sound config, but testing it show there is no audio, despite, the sound config showing audio activity, there is no sound on the speakers.

If there is no way, is there a way to block only the HDMI output ? Remember both outputs use the same module, so it's impossible to blacklist the module it self.

I saw some people saying about recompiling the kernel with no HDMI support by changing the menu config.

If it is possible could some one tell me what I can to do recompile and use a new kernel ? At least how to recompile on Mint and Elementary, since they are my prefered distros.

Tks

2
  • Did you actually manager to change the device order? If yes, you have another problem (probably wrong mixer settings).
    – CL.
    Jan 21, 2016 at 14:10
  • i was able to revert, but the OS after a few seconds only used HDMI as sound output I tried this with a lot of distros (even Fedora to check if the problem was related to Ubuntu flavors) and all had the same problem and my other device with Linux (Elementary on a netbook) which also has AMD/Radeon chips the problem does not happen, since audio works fine) but has different chipsets and use different modules Jan 24, 2016 at 5:42

2 Answers 2

0

I believe you need to change your default ALSA sound device.

I had a similar problem with my Sound Blaster Audigy 2 a while back.

Put this in your /etc/asound.conf (or ~/.asoundrc for just your user), creating the file if it doesn't exist:

pcm.!default {
    type plug
    slave.pcm {
        @func getenv
        vars [ ALSAPCM ]
        default "hw:Generic_1"
    }
}

That should set the second device (the analog CX20584, named Generic_1) as the default, and it will look for that name, which won't change, even if the device ID does change.

It'll also allow you to change what device you want to use for output by setting the environment variable ALSAPCM before starting a program.

8
  • Hi Tks for the help, but HDMI sound still appears as 1st device and analog loses sound after a few seconds Tks Jan 22, 2016 at 11:04
  • huh? analog works but only temporarily? Could that be something pulse is doing to mangle with it? I've never had anything but problems with pulseaudio installed.
    – Wyatt Ward
    Jan 23, 2016 at 3:57
  • Audio works only on boottime and for a few moments after I boot, and I tested a lot of Linux distros, and even Fedora had the same issue. And I use elementary in another device (netbook) which also has AMD Radeon chipset, and audio works fine, since they use different modules to each output, and the notebook were audio is not working uses the same module for HDMI and analog output Jan 24, 2016 at 5:44
  • So it is analog at first but then switches to HDMI... I'm suspecting that's when pulse gets started up; I don't use pulse anymore (removed it out of frustration), but I'll investigate how to configure it.
    – Wyatt Ward
    Jan 24, 2016 at 21:05
  • Hi But the problem is that I tried to uninstall pulseaudio but that removed the sound icons from the taskbar from all distros and I could not change volume anymore Do you know how I can restore volume buttons after removing pulse or a way to keep the tray icon after removing pulse ? Tks Jan 25, 2016 at 18:47
0

I used to use an /etc/modprobe.d/-based solution myself, but found it extremely finicky to set up and sensitive to updates and other configuration changes. Then I found a better way.

You can use udev rules to order your sound devices, even though both are using the same driver. The required rules would look like this:

# Make the HDMI audio the second sound device...
ACTION=="add", SUBSYSTEM=="sound", DRIVERS=="snd_hda_intel", KERNEL=="card*", KERNELS=="0000:00:01.1", ATTR{number}="1", ATTR{id}="HDMI"
# ... and the analog audio chip the first one.
ACTION=="add", SUBSYSTEM=="sound", DRIVERS=="snd_hda_intel", KERNEL=="card*", KERNELS=="0000:00:14.2", ATTR{number}="0", ATTR{id}="Analog"

If you want PulseAudio to completely ignore the HDMI audio, add a comma and ENV{PULSE_IGNORE}="1" to the end of the first udev rule.

Put these rules to e.g. /etc/udev/rules.d/51-local-sound.rules, then update your initramfs with sudo update-initramfs -u, and reboot. You should now find your ALSA sound devices ordered so that the analog audio chip will be device #0, and in the aplay -l listing, they should now be named "Analog" and "HDMI" rather than "Generic_1" and "Generic", respectively.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.