Created attachment 282497 [details]
It seems like this device has 5.1 speaker configuration: Front Left, Front Center, Front Left and LFE in soundbar placed in hinge; Rear Left and Rear Right on device bottom. Only Front Left and Front Right speakers are working (tested with 5.1.0-rc6). Remapping pin 0x17 to Dock Headphone enables Front Center (or LFE, not sure) speaker and also makes overall speaker volume higher but headphone jack volume lower so there's a trade in. Randomly messing with pins in hdaanalyzer wont help. I can provide any additional logs on request.
Created attachment 282499 [details]
`pactl list` output
Created attachment 282501 [details]
`fwts --all` results.log
There is also some discussion here about this: https://mailman.alsa-project.org/pipermail/alsa-devel/2018-November/142369.html
I wasn't able to figure out a suitable workaround for the time being, but hopefully someone more knowledgeable can.
Same problem here with that configuration (ALC298 + Dolby configuration), but with diferrent laptop model, Lenovo S940.
Linux lnx 4.19.66-1-MANJARO #1 SMP PREEMPT Fri Aug 9 18:01:53 UTC 2019 x86_64 GNU/Lin
00:1f.3 Multimedia audio controller : Intel Corporation Cannon Point-LP High Definition Audio Controller [8086:9dc8] (rev 30)
card 0: PCH [HDA Intel PCH], device 0: ALC298 Analog [ALC298 Analog]
snd_hda_codec_hdmi 69632 1
snd_sof_intel_hda_common 73728 1 sof_pci_dev
snd_sof_intel_hda 20480 1 snd_sof_intel_hda_common
snd_sof 118784 4 snd_sof_intel_hda_common,snd_sof_intel_byt,snd_sof_intel_ipc,sof_pci_dev
snd_hda_codec_realtek 126976 1
snd_hda_codec_generic 94208 1 snd_hda_codec_realtek
snd_soc_hdac_hda 24576 2 snd_sof_intel_hda_common,snd_soc_skl
ledtrig_audio 16384 2 snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_ext_core 36864 4 snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_soc_skl,snd_sof_intel_hda
snd_soc_acpi_intel_match 28672 3 snd_sof_intel_hda_common,sof_pci_dev,snd_soc_skl
snd_soc_core 290816 4 snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_soc_skl
snd_hda_intel 49152 8
snd_hda_codec 159744 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda
snd_hda_core 102400 10 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_soc_skl,snd_sof_intel_hda
snd_hwdep 20480 1 snd_hda_codec
snd_pcm 139264 11 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_sof,snd_sof_intel_hda_common,snd_soc_core,snd_soc_skl,snd_hda_core,snd_pcm_dmaengine
snd 110592 25 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,snd_soc_core,snd_pcm
Any ideas to solve this problem? Regards
Same issue on a Lenovo Yoga S940, kernel 5.3.0-18-generic x86_64
Mic not working
Audio works but clearly not properly, volume is very low and feels like low-frequencies are not reproduced, as in "no subwoofer".
alsa-info -> http://alsa-project.org/db/?f=c74f7b1c3e266514faac4f90ec2f893a3bec1f98
Same issue on Lenovo Yoga C940, Ubuntu 19.10, kernel 5.3.0-23-generic x86_64. Mic not working, audio not working properly with missing speakers.
Alsa info -> http://alsa-project.org/db/?f=863a8059dba17f148fb2d3b5b1705d29bc900218
I have the same problem.
If someone tells me how to elicit the correct settings under Windows I can get them and try them out in Linux.
If someone tells me what possible settings might work under Linux (or tells me how to figure out what settings might work) I can try to find the right settings.
It seems that there are some I2S amplifiers on the path to speakers and the BIOS has only limited initialization. I will try to gather information for C930 from Lenovo, too.
I've got the same problem on a C940 with 5.4.3-050403-generic. Let me know if I can be of any help with details.
I was able to get sound working by adding `snd_hda_intel.dmic_detect=0` to grub command line, but still no microphone.
This issue persists for me, on a C930 with 5.4.21. Adding `snd_hda_intel.dmic_detect=0` has no effect for me: there is sound, but only from the two front speakers. The rest of the speakers don't work.
Here's my alsa info, if it helps: http://alsa-project.org/db/?f=ab906a5a6eeeddc4926a6ad543c2d42d7a21ecdf
Let me know if there's a way I can help debug this.
This issue persists even after the latest (March 2020) BIOS update from Lenovo. I posted about this here on the Lenovo forums:
Is our only hope getting the Lenovo BIOS devs to release a fix? Can we fix this in the BIOS ourselves?
I rate the probability of ever hearing from Lenovo about this at around 0%.
With all kernel versions shipped with Ubuntu 20.04 up to 5.4.0-29 but excluding 5.4.0-31, sound and mic work without problems on Lenovo S940 with Intel 10th gen.
The latest upgrade which is 5.4.0-31 breaks not only the mic but also the sound.
Yoga c930 Ubuntu20.10 and kernel 5.10.16
Microphone still doesn't work
Speakers are ok but not great.
The mic should work, but it doesn't, please fix mic.
In this thread there is some encouraging move on the DMIC issue
I have applied the suggested patch but no successful. The issue as far as i understand that all work on fixing is doing on the SOF driver, which is not working itself on C930 model, only HDA is working, but path is not for HDA. Some endless loop ((
The mic problem should be addressed by upgrades to the sof drivers. You may have to get some sort of quirk added for the C930.
The speaker problem is very likely an amp that is not turned on. See https://bugzilla.kernel.org/show_bug.cgi?id=205755 for more information and a partial fix for 14" C940s. The BIOS upgrade doesn't work for C930s. See the referenced thread on the Lenovo site.
I just checked the solution from this thread https://bugzilla.kernel.org/show_bug.cgi?id=201251 and it worked for DMIC, it appeared.
So what was needed in my case is
options snd_pcm max_alloc_per_card=41943040
I tried in ArchLinux 5.11.7.
Only issue is that the recording level too quiet and in fact is non operational ), but i think it is a great step forward any case. It is the first time when i saw microphone in Linux settings on my Lenovo Yoga C930 )
You should use no snd_intel_dspcfg dsp_driver options or use only
options snd_intel_dspcfg dsp_driver=2
Would be great to find solution to fix the level of recording now.
Two years and this is still a problem.
Yoga c930, running ubuntu 21.04 and 5.12.5
Microphone works in Win10, not in Linux. Speakers have issues also.
Adding Lenovo contacts to Cc...
The problem is that the BIOS doesn't activate the amplifiers on the bottom of the body. Someone sent in an unofficial BIOS for the C940 that fixes the problem for the C940 only. See https://bugzilla.kernel.org/show_bug.cgi?id=205755
There is a related problem with the 9i that has a proposed fix that appears to work. See https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1926165 This fix may not be enough for the C930 and C940 but it might be possible to get a fix for them that doesn't require a non-official BIOS.
By the way, I don't think that any of these laptops have five-channel sound. There is the soundbar with two or three speakers and the two lower-range (I hesitate to call them bass) speakers on the bottom of the laptop. I don't expect that sound under Linux is as good as sound under Windows as I believe Windows has a Dolby ATMOS sound driver for these laptops that probably does some special equalization.
The microphone should work in modern kernels. I'm running Fedora 5.11.20 but I think the microphone was fine throughout the 5.10 kernel and maybe even earlier.
In other words: We don't have enough information to support this hw (speakers). If vendor is not willing to add support to BIOS or give us necessary information to add the proper initialization for the I2C amplifiers to the driver, the only way is the reverse engineering (grab the initialization HDA verbs in qemu or so). The another problem is that the I2C master block in the Realtek codecs is not documented. Those registers are hidden as the vendor specific coefficient registers.
For the mic volume - you may try to play with PGA / Dmic volume controls in the native ALSA mixer application (like alsamixer). But it should work with latest pulseaudio / UCM configuration.
Agreed. I have no idea how the fix for the 9i speakers was engineered. It is in the form of a bunch of modifications to the 0x20 widget of the card using hda-verb.
Example "black magic" initialization of speakers for Lenovo Ideapad S740:
We confirmed a while back with the BIOS team that they weren't going to be able to do the changes needed on this platform unfortunately. Sorry
We weren't able to get any details on the initialization verbs either (tried). Are we able to reverse engineer it as was done on the S740. I believe the person who did that published the steps they followed...I thought I had them stashed somewhere, but can't find them right now :(
Created attachment 296927 [details]
I am on Holiday and will be returning on June 01 2021
The qemu information (link) is in the commit I mentioned in comment#23 :
I have followed the tutorial on sniffing verbs from a virtual machine and have managed to get a windows virtual machine outputting to all speakers, however running the dumped verbs don't output to the bottom speakers still.
I don't know much about audio drivers and such, so if anyone wants to try running the verbs I got from that tutorial and the unprocessed QEMU output, feel free to look them up in this github repo: https://github.com/joao99pacheco/c930-audio-verbs
Unfortunately I replicated those same failures. All five speakers work just fine in Windows (using qemu) although the played back verbs will only continue activating the same speakers. When I tested it I was able to "break" and "restore" the speakers using different verb-sets, so while it's definitely making some changes, it doesn't seem to be impacting the bottom speakers in the slightest.
Kernel 5.16.13 boots to dummy output. 5.16.11 seems to work sometimes. Mic also works with 5.16.11 sometimes.
(In reply to Josh from comment #29)
If you could git bisect the kernel and find out which commit breaks between 5.16.11 and 5.16.13 you might get some attention and keep the gains.
5.16.11 works, is there a reason you said to bisect between 5.16.11 and 5.16.13 and not 5.16.12?
Ahh, because I said 5.16.13 didn't work; sorry ;p
(In reply to C Sights from comment #30)
> (In reply to Josh from comment #29)
> If you could git bisect the kernel and find out which commit breaks between
> 5.16.11 and 5.16.13 you might get some attention and keep the gains.
Ok, so 5.16.11 is good, 5.16.12 is bad. I looked at the git bisect tool, but I don't know enough to say what commits are relevant and or bad/good.
This is still an issue; running pop_os with 5.18.15-051815-generic.
This is still an issue; running pop_os with 5.19.1-051901-generic
Created attachment 301570 [details]
Created attachment 301571 [details]
Created attachment 301572 [details]
Fresh install of Ubuntu with 5.19.0-23-generic.
Audio and mic are ok, and then at random times they just stop, and I have to do a cold reboot.
I'm now running 6.0.9 on Ubuntu. On a cold or warm boot, the sound works. When a system sound plays, all audio stops, and I have to logout and log back in to get the sound to work.
Created attachment 303351 [details]
I am currently out of the office on holiday I will be returning on Monday December 5, I will not have access to email so replies will be delayed
It also craps out sometimes during a VLC video, and I have to pkill pipewire
write(2, "\33[1;31m[E][07439.378862] mod.pro"..., 238[E][07439.378862] mod.protocol-native | [module-protocol-: 728 lock_socket()] server 0x556889a2b4f0: unable to lock lockfile '/run/user/1000/pipewire-0.lock': Resource temporarily unavailable (maybe another daemon is running)
) = 238
write(2, "\33[1;31m[E][07439.379911] pw.conf"..., 202[E][07439.379911] pw.conf | [ conf.c: 594 load_module()] 0x556889a10180: could not load mandatory module "libpipewire-module-protocol-native": Resource temporarily unavailable
) = 202
write(2, "\33[1;31m[E][07439.380799] default"..., 135[E][07439.380799] default | [ pipewire.c: 125 main()] failed to create context: Resource temporarily unavailable
) = 135