8

I'm not sure what is causing this problem, but as I solved it (or rather worked around it) I decided to share my discoveries, to spare your time and for the future reference.

So the story goes like this:

I bought a new Gigabyte's X570 Aorus Master motherboard and installed Arch Linux there. Audio was not outputted by the rear 3.5 mm socket, something was wrong.

The process of getting to the solution is described below, in the answer. The details there may let you know if you are in the same situation.

Also, if you have better solution, that would fix the unerlying issue, and not just work around it at the cost of the digital output, feel free to post your answer! I won't be accepting my answer in hope that someone will come up with something better.

1
  • The problem seems to be fixed in newer kernels or distributions. I had this problem in Ubuntu 18.04 however in Ubuntu 20.04 the rear jack worked out of the box.
    – Greg Dan
    Commented Oct 7, 2020 at 7:45

5 Answers 5

8

I installed pavucontrol and I discovered that in configuration tab, analog output profile is unavailable for my audio controller. The only profile available was the digital one.

Then I discovered another thing: If I will force-select this Analog Stereo Output (unplugged) (unavailable) profile and in Output Devices tab I will choose Line Out (unplugged) port, the sound will be outputted to the speakers, even if speakers are not actually connected to the Line Out socket.

Something is buggy here. But now we have at least something. The issue is that as this device is perceived as unplugged and unavailable by the system, so that's why (I think) this setting is being reset to (not working) defaults after rebooting or connecting and disconnecting headphones etc.

hdajackretask to the rescue. In Arch Linux this tool is available in alsa-tools package. It will allow us basically to remap shit, to work as expected.

  1. Open hdajackretask.
  2. Select Realtek ALC1220 codec.
  3. Select Advanced override option.
  4. Override your SPDIF Out, Rear side pin (the only one that works in pavucontrol)
  5. Set settings as in the below screenshot. I'm not sure if anything other than "Device" matters.

Configuration

Basically override it to be a speaker.

  1. Now click Apply now, then click Install boot override, make sure in pavucontrol you have selected Analog output profile, and Speaker port, reboot.

Audio should work, also connecting/disconnecting headphones doesn't mess anything up (works like expected), so it should be good enough solution for most people. The only negative side effect that I'm aware of is that you won't have Digital output available so if you need it, you'll probably need to play with it more. I'm too tired fighting this to check other configurations at this moment. Good luck!

Edit:

It looks like any Line Out pin can be overrode with Device "Speaker", and Analog output will be restored then. Also, I posted a bug report here: https://bugzilla.kernel.org/show_bug.cgi?id=205275 .

Edit 29/11/2020:

At the currently newest Linux Kernel versions, it looks like "Line Out" port works fine, BUT there still can be an issue when having a dual boot setup with Windows. In this situation, the Windows' Realtek driver seems to be at fault - it leaves the device in a strange state after the reboot, which makes it not working on Linux. The solution here is to NOT USE the dedicated Realtek Driver, but the Windows' default one instead. To fix this you need to uninstall the Realtek Driver from Windows and perform a cold boot. Windows' default driver should work just fine.

1
  • Thank you! this jack doesn't even on (gasp!) Windows 10, so I'm glad this works. I just tested with "Boot Override", all is well.
    – Xenhat
    Commented May 6, 2020 at 14:54
2

I encountered a slightly different (but likely related) version of this problem. While setting up my audio on the Aorus Matster, I noticed that my speakers were not producing audio while my subwoofer (plugged into the C.Sub jack) was. Oddly enough, if I unplugged the speakers, the subwoofer would stop too.

In my case, using hdajackretask to change the SPDIF output settings did not help anything, instead I fixed it by going through all of the surround output pins (Green, Orange, Black) and changing them from Line Out to Speaker. Be sure to keep all of them in the same group.

One thing of note: in the audio mixer's output panel, prior to making this change, the choices for port were "Speaker (unavailable)" and "Line Out", after making this change, the port is now "Analog Output".

Finally, if you attempt to apply the settings in hdajackretask and get an error that the device or resource is busy, be sure that you are running it as root AND that you have stopped all of the audio programs in the user account as well. You may also need to stop the user's copy of pulseaudio using

systemctl --user stop pulseaudio.socket
systemctl --user stop pulseaudio.service

You can then apply it, start pulseaudio in the user's account (substituting start for stop) and test before installing it to the boot override. Note that if you have stopped VLC before but left it open, it will not play audio even after you've restarted pulseaudio, you will need to completely exit it and restart it to test.

1
  • When i try to do this I get "tee:/sys/class/sound/hwC1D0,reconfig: Device or resource busy"
    – rwilliams
    Commented Dec 23, 2019 at 3:22
0

I was dealing with this for a while as well... Too long in fact. I'm using i3 so configuration is pretty bare bones.

Reading on the level1forums Gigabyte X570 Aorus Master Linux spit & polish thread: there is a post regarding the auto-mute option in alsamixer. For me it was enabled for everything. Disabling it and replugging my headphones to the rear line out port is currently working! Make sure it is selected in pavucontrol.

1
  • More to the point, you can increase the "Headphones" volume under alsamixer to control the line out port. It seems to forget the configuration every reboot/suspend however.
    – user161703
    Commented Feb 18, 2020 at 2:21
0

I created and submitted a kernel patch that fixes the line-out problem of the x570 aorus master. You can test it if you want: [PATCH 1/1] ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master.

2
  • Somebody tested your patch in this thread: forum.level1techs.com/t/…. It's having some issues in combination with Nvidia GPUs.
    – Hubro
    Commented Mar 5, 2020 at 9:52
  • Hi @Christian, I don't have an account on the level1techs, so I posted some of my findings as an answer to my own question here: askubuntu.com/a/1232053/1044471. TLDR, it seems that even Microsoft HDA driver has a problem with Realtek driver - after switching from Realtek's driver to Microsoft's one and rebooting, I had no sound in Windows. I had to cold-boot as well. Commented Apr 27, 2020 at 17:31
0

Was it detected by the kernel?

# dmesg | grep 'ALC1220'
[   85.701194] snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC1220: line_outs=3 (0x1b/0x15/0x16/0x0/0x0) type:line

Which card number is it?

# grep -l ALC1220 /proc/asound/card*/codec*
/proc/asound/card1/codec#0

Hence, card1.

Create ~/.asoundrc making card 1 the default:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw
    card 1
}

Install alsa-utils:

# pacman -S alsa-utils

Check if your ~/.asoundrc worked by running:

# alsamixer

Initial screenshot of alsamixer

And notice how in the top-left corner is says "Chip: Realtek ALC1220". You can just press ESC and unmute from the command line:

# amixer -- sset Master playback -6dB unmute
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 87
  Mono: Playback 79 [91%] [-6.00dB] [on]

I'm actually not sure why it says 'Mono' here, but I think because you can't change the volume of left and right channels separately. I get the same output on my other linux box (while listening to stereo music on it).

Run a speaker test:

# speaker-test -c 2

speaker-test 1.2.2

Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 64 to 8544000
Period size range from 32 to 4272000
Using max buffer size 8544000
Periods = 4
Unable to set hw params for playback: Cannot allocate memory
Setting of hwparams failed: Cannot allocate memory

Oh - that turns out to be broken in kernel 5.6. Might be fixed in 5.7-rc2 and up (I didn't test that; if anyone knows when it is fixed please add in a comment). EDIT: currently on 5.6.13 and this works again.

Instead I ran aplay on some wav. And it worked. Or no, it did not.

I got:

# aplay Checkmate.wav
Playing WAVE 'Checkmate.wav' : Unsigned 8 bit, Rate 48000 Hz, Stereo
aplay: set_params:1343: Sample format non available
Available formats:
- S16_LE
- S32_LE

I am not happy with this, but in the meantime worked around whatever is the issue by changing my ~/.asoundrc to:

pcm.!default {
    type plug
    slave {
        pcm "hw:1,0"
    }
}

ctl.!default {
    type hw
    card 1
}

And then it worked.

EDIT: currently using instead the following ~/.asoundrc:

# Convert alsa API over jack API.
# For use with for example,
#   aplay foo.wav
# or running flash.

# Use this as default.
pcm.!default {
    type plug
    slave { pcm "jack" }
}

ctl.mixer0 {
    type hw
    card 1
}

# pcm type jack
pcm.jack {
    type jack
    playback_ports {
        0 system:playback_1
        1 system:playback_2
    }
    capture_ports {
        0 system:capture_1
        1 system:capture_2
    }
}

which is what you want to use when you use JACK to connect to ALSA. This makes other applications that normally connect to ALSA connect to JACK instead. Using JACK is a whole new can of worms though, so don't do that until you have everything working smoothly with just pulseaudio.

--End of EDIT

As I am running 5.6.10-arch1-1 my guess is that Christian's patch already made it into my kernel (thanks!).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .