Bugzilla – Bug 1224457
Kernel: Sound: AMD cpu with graphics + ASUS motherboard with ALC 887
Last modified: 2024-07-18 12:38:59 UTC
Installation of Leap 15.5 or Tumbleweed on a machine with an AMD APU on an ASUS Prime B550-Plus (uses Realtek ALC 887 for sound) results in no sound from the motherboard. This is discussed in a thread on openSuSE forums: English language, Hardware forum, "5700G+ALC887" thread title. This has been explored with aplay -l, inxi -Axx, dmesg | grep snd_hda, lsmod and modprobe. It is apparently a matter of detection of the motherboard sound "card" in the presence of the CPU's integrated sound "card". This is apparently a bug in the kernel, not openSuSE, since installation of Linux Mint on the same hardware causes exactly the same problem, including identical output from aplay -l, inxi -Axx and dmesg | grep snd_hda.
Could you try the Leap 15.6 kernel? It can be installed on the Leap 15.5 system without problems. The very latest kernel is found in OBS Kernel:SLE15-SP5 repo, http://download.opensuse.org/repositories/Kernel:/SLE15-SP6/pool/
(In reply to Takashi Iwai from comment #1) > Could you try the Leap 15.6 kernel? It can be installed on the Leap 15.5 > system without problems. The very latest kernel is found in OBS > Kernel:SLE15-SP5 repo, > http://download.opensuse.org/repositories/Kernel:/SLE15-SP6/pool/ I tested this on a separate installation of 15.6. The problem persists. The output of aplay -l, inxi -Axx and dmesg | grep snd_hda was the same. The kernel version in the 15.6 installation was 6.4.0. As mentioned in the bug report, this has also been tested on Tumbleweed, kernel version 6.8.x. Again, the same problem and aforementioned output is identical.
OK, then could you get alsa-info.sh output and the dmesg output on the installed Leap 15.6 system? Run alsa-info.sh with --no-upload option as root, and upload the output to Bugzilla as an attachment. Ditto for the output of dmesg, too.
Created attachment 874978 [details] alsa-info + dmesg output Leap 15.6
Thanks. It shows the error [ 6.448531] snd_hda_intel 0000:07:00.6: no codecs found! and that's the crucial error. It means that, by some reason, HD-audio controller didn't get the codec information. Possibly related with some power management stuff. Did the sound work on Leap 15.4 in the past? If it's a regression, it'd be helpful to narrow down the regression range.
> Thanks. It shows the error > [ 6.448531] snd_hda_intel 0000:07:00.6: no codecs found! > and that's the crucial error. Yes. The same conclusion was reached in the openSUSE hardware forum. > Did the sound work on Leap 15.4 in the past? If it's a regression, it'd be > helpful to narrow down the regression range. This is a new machine. I've never faced the situation where the CPU and the motherboard both have sound hardware.
The behavior difference can come from a subtle thing like BIOS, so no wonder. If it were a regression, you can try the old kernels. e.g. there are tons of old kernels in my OBS projects (in "backport" repo), e.g. for 5.14, http://download.opensuse.org/repositories/home:/tiwai:/kernel:/5.14/backport/ and you can install kernel-default.rpm from there with zypper install (or rpm -i) with --oldpackage option. Once after testing, uninstall that kernel with "zypper rm kernel-default-x.y" with the exact package version to uninstall, too. In that way, you can test old kernels until certain time. If all those don't work, you can try with the recent kernel (e.g. Leap 5.16) probing forcibly the target codec. Pass "snd_hda_intel.probe_mask=,0x101" boot option and see whether it changes the situation. (The comma before 0x101 is no typo, it's intentional.) If this doesn't work, try with 0x102, 0x104, 0x108, 0x110, until 0x180.
(In reply to Takashi Iwai from comment #7) I did the easy thing first. Starting with a new Leap 15.6 install, I tried all 8 bitmaps as a command line parameter: snd_hda_intel.probe_mask=,0x101 through ,0x180. There was no difference in the output of aplay -l, inxi -Axx, sudo dmesg | grep shd_hda. The dmesg output all contained: snd_hda_intel 0000:07:00.6: no codecs found! I will proceed to testing of older kernels. I have been advised to limit the trials to those kernels released after 4/13/2021, since that is the date the Ryzen 7 5700G became available.
"grep shd_hda" typo should read "grep snd_hda"
(In reply to Takashi Iwai from comment #7) Trials of older kernels: 5.11.16 dated 4/28/2021 shortly after the 5700G was released: gem300@opensuse15dot6:~> zypper install --oldpackage https://download.opensuse.org/repositories/home:/tiwai:/kernel:/5.11/standard/x86_64/kernel-default-5.11.16-1.1.ge06d321.x86_64.rpm (reboot) gem300@opensuse15dot6:~> uname -r 5.11.16-1.ge06d321-default gem300@opensuse15dot6:~> sudo dmesg | grep snd_hda [sudo] password for root: [ 6.998919] snd_hda_intel 0000:07:00.1: enabling device (0000 -> 0002) [ 6.999014] snd_hda_intel 0000:07:00.1: Handle vga_switcheroo audio client [ 6.999109] snd_hda_intel 0000:07:00.6: enabling device (0000 -> 0002) [ 7.003242] snd_hda_intel 0000:07:00.6: no codecs found! [ 7.006023] snd_hda_intel 0000:07:00.1: bound 0000:07:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu]) Trial of 5.14.15 from Leap 15.3 dated 3/5/2022: gem300@opensuse15dot6:~> sudo zypper install --oldpackage https://download.opensuse.org/repositories/home:/tiwai:/kernel:/5.14/backport/x86_64/kernel-default-5.14.15-lp153.1.1.g2ba76d0.x86_64.rpm (reboot) gem300@opensuse15dot6:~> uname -r 5.14.15-lp153.1.g2ba76d0-default gem300@opensuse15dot6:~> sudo dmesg | grep snd_hda [sudo] password for root: [ 6.521311] snd_hda_intel 0000:07:00.1: enabling device (0000 -> 0002) [ 6.521420] snd_hda_intel 0000:07:00.1: Handle vga_switcheroo audio client [ 6.521526] snd_hda_intel 0000:07:00.6: enabling device (0000 -> 0002) [ 6.525854] snd_hda_intel 0000:07:00.6: no codecs found! [ 6.528648] snd_hda_intel 0000:07:00.1: bound 0000:07:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu]) I can continue testing other kernels, but this samples the time from introduction of the 5700G to the present.
I have done additional testing on older kernels. I tried: 5.11.16, 5.12.13, 5.13.13, 5.14.15, 5.15.13, 5.16.16, 5.17.9, 5.18.15, 5.19.12, 6.0.12, 6.1.12, 6.2.12, 6.3.9 . The error message is the same in all cases: gem300@opensuse15dot6:~> sudo dmesg | grep snd_hda [sudo] password for root: [ 7.152649] snd_hda_intel 0000:07:00.1: enabling device (0000 -> 0002) [ 7.152777] snd_hda_intel 0000:07:00.1: Handle vga_switcheroo audio client [ 7.152914] snd_hda_intel 0000:07:00.6: enabling device (0000 -> 0002) [ 7.157150] snd_hda_intel 0000:07:00.6: no codecs found! [ 7.159760] snd_hda_intel 0000:07:00.1: bound 0000:07:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
Also, updated to the latest BIOS #3607 dated March 3 2024. The same error messages continue to occur in Leap 15.5 and the current Tumbleweed, kernel 6.8.9.
Could you give the dmesg and alsa-info.sh output with the probe_mask option set? To see whether the has the right effect.
The test files including a no bitmask example are attached as 9 attachments. Testing was done on Leap 15.6 RC kernel 6.4.0-150600.21-default .
Created attachment 875082 [details] dmesg+alsa-info_00000_no_bitmask
Created attachment 875083 [details] dmesg+alsa-info_0x101
Created attachment 875084 [details] dmesg+alsa-info_0x102
Created attachment 875085 [details] dmesg+alsa-info_0x104
Created attachment 875086 [details] dmesg+alsa-info_0x108
Created attachment 875087 [details] dmesg+alsa-info_0x110
Created attachment 875088 [details] dmesg+alsa-info_0x120
Created attachment 875089 [details] dmesg+alsa-info_0x140
Created attachment 875090 [details] dmesg+alsa-info_0x180
Judging from the log, you didn't pass the boot parameter properly. e.g. the comment 16 shows: [ 0.000000] Linux version 6.4.0-150600.21-default (geeko@buildhost) (gcc (SUSE Linux) 7.5.0, GNU ld (GNU Binutils; SUSE Linux Enterprise 15) 2.41.0.20230908-150100.7.46) #1 SMP PREEMPT_DYNAMIC Thu May 16 11:09:22 UTC 2024 (36c1e09) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.4.0-150600.21-default root=UUID=48e62d84-a4a0-4199-8288-08257581c820 splash=silent preempt=full quiet security=apparmor mitigations=auto
Those results were generated by editing the grub kernel command line on-the-fly at boot time. As you say, the probe bitmask does not show up. If I add it to the YAST boot loader it does show up but there is an error message. For example: [ 6.515532] snd_hda_intel: `' invalid for parameter `probe_mask' The file with the 0x101 bitmask is attached. Should I generate the results for 0x102 - 0x180 despite the error?
Created attachment 875105 [details] dmesg+alsa-info_0x101_2024-05-26
Hm, you might need to pass with quotes, e.g. "snd_hda_intel.probe_mask=,0x101" Alternatively, create a file /etc/modprobe.d/60-hda.conf containing the line options snd-hda-intel probe_mask=,0x101 and reboot / retest.
Using quotes is ignored. Same error message: snd_hda_intel: `' invalid for parameter `probe_mask' Using a file in modprobe.d: gem300@opensuse15dot6:~> cd /etc/modprobe.d gem300@opensuse15dot6:/etc/modprobe.d> ll total 12 -rw-r--r-- 1 root root 0 2024-05-23 10:55 50-yast.conf -rw-r--r-- 1 root root 40 2024-05-26 09:21 60-hda.conf -rw-r--r-- 1 root root 395 2024-03-08 12:47 README -rw-r--r-- 1 root root 674 2019-01-08 09:07 tuned.conf gem300@opensuse15dot6:/etc/modprobe.d> cat 60-hda.conf options snd-hda-intel probe_mask=,0x101 Same error message: `' invalid for parameter `probe_mask' Full output of both cases attached as: dmesg+alsa-info_0x101_quotes dmesg+alsa-info_60-hda.conf_0x101 At least things are consistent!
Created attachment 875106 [details] dmesg+alsa-info_0x101_quotes
Created attachment 875107 [details] dmesg+alsa-info_60-hda.conf_0x101
OK, then the handling of module options has been changed. It doesn't accept an empty argument any longer, as it seems. Try to pass like snd_hda_intel.probe_mask=-1,0x101 instead.
Even I could tell that this was working, so I generated a full set 0x101-0x180 . Attached.
Created attachment 875108 [details] dmesg+alsa-info_-1,0x101
Created attachment 875109 [details] dmesg+alsa-info_-1,0x102
Created attachment 875110 [details] dmesg+alsa-info_-1,0x104
Created attachment 875111 [details] dmesg+alsa-info_-1,0x108
Created attachment 875112 [details] dmesg+alsa-info_-1,0x110
Created attachment 875113 [details] dmesg+alsa-info_-1,0x120
Created attachment 875114 [details] dmesg+alsa-info_-1,0x140
Created attachment 875115 [details] dmesg+alsa-info_-1,0x180
Thanks. Now the parameter is passed properly, and the driver tries forcibly probing a codec at each given slot, but all failed. It means that the codec is disabled by some reason; either a full power-off that doesn't react to the normal codec probe procedure, or disabled in BIOS somehow. An abnormal situation, in anyway.
As far as BIOS goes, there is nothing further I can do with the firmware; it is the latest package. Now that the probing works, I could try Tumbleweed again, just for the sake of completeness. I doubt it will make a difference. The same error occurs with Fedora40, which uses kernel 6.8.9 . I think the latest Tumbleweed is 6.9.1 .
Here are the 9 Tumbleweed kernel 6.9.1 probe mask results.
Created attachment 875189 [details] dmesg+alsa-info_TW_6.9.1_00000_no_bitmask
Created attachment 875190 [details] dmesg+alsa-info_TW_6.9
Created attachment 875191 [details] dmesg+alsa-info_TW_6.9.1_-1,0x101
Created attachment 875192 [details] dmesg+alsa-info_TW_6.9.1_-1,0x102
Created attachment 875193 [details] dmesg+alsa-info_TW_6.9.1_-1,0x104
Created attachment 875194 [details] dmesg+alsa-info_TW_6.9.1_-1,0x108
Created attachment 875195 [details] dmesg+alsa-info_TW_6.9.1_-1,0x110
Created attachment 875196 [details] dmesg+alsa-info_TW_6.9.1_-1,0x120
Created attachment 875197 [details] dmesg+alsa-info_TW_6.9.1_-1,0x140
Created attachment 875198 [details] dmesg+alsa-info_TW_6.9.1_-1,0x180
Results of aplay -Ll on Leap 15.5 show the motherboard sound *is* detected. Also I now have a HDMI audio/video splitter. There is no audio coming from the CPU/GPU or the motherboard. Results of aplay -Ll: gem300@leap15dot5:~> aplay -Ll null Discard all samples (playback) or generate zero samples (capture) speexrate Rate Converter Plugin Using Speex Resampler pulse PulseAudio Sound Server upmix Plugin for channel upmix (4,6,8) default Default ALSA Output (currently PulseAudio Sound Server) hdmi:CARD=Generic_1,DEV=0 HD-Audio Generic, LG FHD HDMI Audio Output hdmi:CARD=Generic_1,DEV=1 HD-Audio Generic, LG FHD HDMI Audio Output front:CARD=Generic Front output / input surround21:CARD=Generic 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=Generic 4.0 Surround output to Front and Rear speakers surround41:CARD=Generic 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=Generic 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=Generic 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=Generic 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers **** List of PLAYBACK Hardware Devices **** card 0: Generic_1 [HD-Audio Generic], device 3: HDMI 0 [LG FHD] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: Generic_1 [HD-Audio Generic], device 7: HDMI 1 [LG FHD] Subdevices: 1/1 Subdevice #0: subdevice #0 gem300@leap15dot5:~>
(In reply to wlms from comment #54) > Results of aplay -Ll on Leap 15.5 show the motherboard sound *is* detected. > Also I now have a HDMI audio/video splitter. There is no audio coming from > the CPU/GPU or the motherboard. > > Results of aplay -Ll: > > gem300@leap15dot5:~> aplay -Ll > null > Discard all samples (playback) or generate zero samples (capture) > speexrate > Rate Converter Plugin Using Speex Resampler > pulse > PulseAudio Sound Server > upmix > Plugin for channel upmix (4,6,8) > default > Default ALSA Output (currently PulseAudio Sound Server) > hdmi:CARD=Generic_1,DEV=0 > HD-Audio Generic, LG FHD > HDMI Audio Output > hdmi:CARD=Generic_1,DEV=1 > HD-Audio Generic, LG FHD > HDMI Audio Output > front:CARD=Generic > Front output / input > surround21:CARD=Generic > 2.1 Surround output to Front and Subwoofer speakers > surround40:CARD=Generic > 4.0 Surround output to Front and Rear speakers > surround41:CARD=Generic > 4.1 Surround output to Front, Rear and Subwoofer speakers > surround50:CARD=Generic > 5.0 Surround output to Front, Center and Rear speakers > surround51:CARD=Generic > 5.1 Surround output to Front, Center, Rear and Subwoofer speakers > surround71:CARD=Generic > 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers > **** List of PLAYBACK Hardware Devices **** > card 0: Generic_1 [HD-Audio Generic], device 3: HDMI 0 [LG FHD] > Subdevices: 1/1 > Subdevice #0: subdevice #0 > card 0: Generic_1 [HD-Audio Generic], device 7: HDMI 1 [LG FHD] > Subdevices: 1/1 > Subdevice #0: subdevice #0 > gem300@leap15dot5:~> Is this output from Leap 15.5 kernel? If so, the onboard sound device wasn't detected. Those card 0 device 3 and 7 are for HDMI/DP audio, not the onboard audio.
(In reply to Takashi Iwai from comment #55) > Is this output from Leap 15.5 kernel? If so, the onboard sound device > wasn't detected. Those card 0 device 3 and 7 are for HDMI/DP audio, not the > onboard audio. It is the Leap 15.5 kernel in a standard Leap 15.5 installation. I haven't upgraded yet. I suppose I should do that as soon as possible to bring the kernel to 6.4 level. I thought a second 'card' was detected. The first listed as 'Generic_1' feeding HDMI/DP (presumably stereo) to my LG monitors and the second listed as 'Generic' feeding 'front' the 2.1 - 7.1 signals. However there is no device name. As I mentioned there is no audio from a HDMI audio/video splitter in the path to the monitors.
(In reply to wlms from comment #56) > (In reply to Takashi Iwai from comment #55) > > > Is this output from Leap 15.5 kernel? If so, the onboard sound device > > wasn't detected. Those card 0 device 3 and 7 are for HDMI/DP audio, not the > > onboard audio. > > It is the Leap 15.5 kernel in a standard Leap 15.5 installation. I haven't > upgraded yet. I suppose I should do that as soon as possible to bring the > kernel to 6.4 level. > > I thought a second 'card' was detected. The first listed as 'Generic_1' > feeding HDMI/DP (presumably stereo) to my LG monitors and the second listed > as 'Generic' feeding 'front' the 2.1 - 7.1 signals. However there is no > device name. The only detected card is card#0 and it's for HDMI/DP audio. It can't output to the analog onboard. So the situation is very same as Leap 15.6. > As I mentioned there is no audio from a HDMI audio/video splitter in the > path to the monitors. It's likely a different problem. For the HDMI output, it often requires to set up the proper IEC958 bits beforehand, in addition to the choice of the right device, and it might be missing in your case.
(In reply to Takashi Iwai from comment #57) > The only detected card is card#0 and it's for HDMI/DP audio. It can't > output to the analog onboard. So the situation is very same as Leap 15.6. I have since upgraded the machine in question to Leap 15.6 with no change as expected. > > As I mentioned there is no audio from a HDMI audio/video splitter in the > > path to the monitors. > It's likely a different problem. For the HDMI output, it often requires to > set up the proper IEC958 bits beforehand, in addition to the choice of the > right device, and it might be missing in your case. I will investigate. Any suggestions? Getting *any* sound would be a big improvement!
Created attachment 875926 [details] kernel 6.9.7-1-default: output of alsa-info.sh
Tumbleweed kernel 6.9.9-1 no change
This bug has now been reported by another user. He has an AMD 2200G CPU, Gigabyte B450M S2H mobo with Realtek ALC887-VD running Arch Linux. Same exact problem, no detecting the ALC887. Same error message from dmesg: snd_hda_intel 0000:09:00.6: no codecs found! https://bbs.archlinux.org/viewtopic.php?pid=2184257 So this is not an ASUS firmware bug.