Closed katsar0v closed 4 years ago
@katsar0v I assume you meant you have Ubuntu 19.10 with its v5.3 kernel, yes?
In that case you should only need firmware and topology files. If I am correct, would you be willing to test some of our install procedures, we are still in need of downstream beta testers.
Thanks!
@plbossart I rolled back to Ubuntu 18.04 LTS but have 5.3.0-40-generic
(from uname -r
)
I tried building from scratch - https://thesofproject.github.io/latest/getting_started/build-guide/build-from-scratch.html but it is really complicated and I would like something more simpler.
As for beta testers - I can do this, as long as I don't have to re-install my whole Ubuntu on a daily basis, it is fine for me
I have also read that the kernels from 5.2+ also support SOF, but am not sure what that means. (link)
ok, let's try to help, one step at a time.
Step1: make sure the SOF driver is selected:
with 5.3, you need to do this:
gedit /etc/modprobe.d/alsa-base.conf
add blacklist snd-hda-intel blacklist snd-soc-skl
reboot and share the alsa-info.sh link
Here you go: http://alsa-project.org/db/?f=6112e1ee9ab2014a99f3cc1c4a726575ad104943
I see this now (which I did not before):
Edit: I also see this in pavucontrol
:
(seems like a white noise, but when I tap on the laptop, it goes up, so the mic kind of works, but does not react on my voice)
ok, so the driver is already loaded and the card created.
IIRC with older solutions based on the 1.3 firmware we had a very low gain for the dmic, and it was barely usable. can you play with alsamixer and boot the gains for PGA10.0 and PGA11.0 by 20dB?
https://github.com/thesofproject/sof/issues/1675#issuecomment-519915444
This is what my alsamixer
shows. When I visit a voice recorder online, it records the taps on my laptop.
Edit: 3.5mm headphones work now, just mic does not
Edit 2: choosing "Stereo Output + Multichannel Input" allows Chrome to record sound. Choosing "Stereo Output + Stereo Input" gives me no microphone error in Chrome and other apps.
I also noticed that when I set "headset mic boost" to the max I can record the taps on the laptop, otherwise mic is silent:
@katsar0v F4 to select capture and scroll right until you see PGA10.0 and PGA11.0, then boost them to the max
this is what I could see, the 4 columns on the right were on 50%
Edit: the bar here increases, but it is all white noise I think:
Edit 2: here is a gif demo (no voice activity, just white noise from fan I think):
Edit 3: here is a pavucontrol
demo:
Edit 4: here is a video, that records when I tap on the laptop in multichannel duplex mode:
https://drive.google.com/file/d/1HTkASAtn39g3WHj38-Wiou1Mlk5aViVC/view?usp=sharing
forget PulseAudio, can you test with
arecord -Dhw:0,6 -c2 -r48000 -f S32_LE -d 10 mytest.wav
if this doesn't work try with -c4 and S24_LE, I don't recall the options
and input this into audacity
forget PulseAudio, can you test with
arecord -Dhw:0,6 -c2 -r48000 -f S32_LE -d 10 mytest.wav
if this doesn't work try with -c4 and S24_LE, I don't recall the options
and input this into audacity
Damn this worked! mytest.wav
recorded my voice. Should I upload the file? I am not sure what to do with it in audacity
forget PulseAudio, can you test with arecord -Dhw:0,6 -c2 -r48000 -f S32_LE -d 10 mytest.wav if this doesn't work try with -c4 and S24_LE, I don't recall the options and input this into audacity
Damn this worked!
mytest.wav
recorded my voice. Should I upload the file? I am not sure what to do with it in audacity
I meant look at the waveform, but if you can hear your voice then that's fine.
So what I think is happening is that your UCM file is wrong.
That should be in /usr/share/alsa/ucm/sof-hda something.
Can you attach the HiFi.conf it here?
forget PulseAudio, can you test with arecord -Dhw:0,6 -c2 -r48000 -f S32_LE -d 10 mytest.wav if this doesn't work try with -c4 and S24_LE, I don't recall the options and input this into audacity
Damn this worked!
mytest.wav
recorded my voice. Should I upload the file? I am not sure what to do with it in audacityI meant look at the waveform, but if you can hear your voice then that's fine.
So what I think is happening is that your UCM file is wrong.
That should be in /usr/share/alsa/ucm/sof-hda something.
Can you attach the HiFi.conf it here?
The quality from the .wav
is really good, I don't think audacity is needed. Here is a screenshot as I could not find sof-hda something:
Edit thesofproject/sof#2: just so that you know where I have HiFi.conf
(no idea what this file is):
ok, so you don't have a UCM file, that explains why things are broken.
I will have to include @juimonen on this one. Jaska, do you know where we can find a UCM file with hdaudio + mic support that would work with the 5.3 kernel, 1.3 firmware and Ubuntu 18.04 LTS?
@katsar0v please be patient until Monday, it's the week-end already in most parts of the world :-)
@plbossart thanks so much for the help! There is hope for my mic and I could hear my voice (in a super good quality)
Just guessing - https://github.com/plbossart/UCM/tree/master/skl_hda_card this has the same name as my card from here:
if you want to experiment before Monday, I took the last UCM file I could find
alsa-ucm-conf$ git checkout 3a2d80ecb74ee4cd02449873ece0407c7da0da4e
copy this to /usr/share/alsa/ucm and reboot, you should see the dmics. There might be a dependency on alsa-lib though
@plbossart thanks so much for the help! There is hope for my mic and I could hear my voice (in a super good quality)
Intel makes good products :-)
Just guessing - https://github.com/plbossart/UCM/tree/master/skl_hda_card this has the same name as my card from here:
don't use this, I no longer maintain it.
Nothing changed after reboot. Do you think I should install alsa-lib
?
@katsar0v we'd need to see the pulseaudio logs then.
The best would be to edit /etc/pulse/client.conf (or daemon.conf), then set autospawm = no
then reboot, open a terminal, and kill all pulse audio instances, if any
then run pulseaudio -vvv &> log.txt, and attach the log.txt. That should tell us what's wrong in the UCM file.
Here you go:
This looks interesting:
I: [pulseaudio] (alsa-lib)utils.c: could not open configuration file /usr/share/alsa/ucm/DellInc.-Inspiron7590--0JKGD4/DellInc.-Inspiron7590--0JKGD4.conf
I: [pulseaudio] (alsa-lib)parser.c: error: could not parse configuration for card DellInc.-Inspiron7590--0JKGD4
I: [pulseaudio] (alsa-lib)utils.c: could not open configuration file /usr/share/alsa/ucm/sof-skl_hda_card/sof-skl_hda_card.conf
I: [pulseaudio] (alsa-lib)parser.c: error: could not parse configuration for card sof-skl_hda_card
I: [pulseaudio] (alsa-lib)main.c: error: failed to import sof-skl_hda_card use case configuration -2
I: [pulseaudio] alsa-ucm.c: UCM not available for card sof-skl_hda_card
D: [pulseaudio] conf-parser.c: Parsing configuration file '/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf'
I: [pulseaudio] (alsa-lib)utils.c: could not open configuration file /usr/share/alsa/ucm/DellInc.-Inspiron7590--0JKGD4/DellInc.-Inspiron7590--0JKGD4.conf I: [pulseaudio] (alsa-lib)parser.c: error: could not parse configuration for card DellInc.-Inspiron7590--0JKGD4
this is fine, not a real error since there's a fallback
I: [pulseaudio] (alsa-lib)utils.c: could not open configuration file /usr/share/alsa/ucm/sof-skl_hda_card/sof-skl_hda_card.conf I: [pulseaudio] (alsa-lib)parser.c: error: could not parse configuration for card sof-skl_hda_card I: [pulseaudio] (alsa-lib)main.c: error: failed to import sof-skl_hda_card use case configuration -2 I: [pulseaudio] alsa-ucm.c: UCM not available for card sof-skl_hda_card D: [pulseaudio] conf-parser.c: Parsing configuration file '/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf'
ok so this is likely because there's a name mismatch. I know there were changes in the _ and - used for the card name, so you probably need to match the name of the card with the name of the UCM file.
That's just silly I know :-)
Make sure all files match the card name
This is what I see after changing the files:
Log.txt - https://file.io/v2XXbM / https://justpaste.it/1q08a
Interesting:
I: [pulseaudio] alsa-ucm.c: UCM available for card sof-skl_hda_card
I: [pulseaudio] alsa-ucm.c: Set UCM verb to HiFi
I: [pulseaudio] (alsa-lib)main.c: unable to open ctl device 'hw:sofhdadsp'
I: [pulseaudio] (alsa-lib)main.c: error: failed to initialize new use case: HiFi
E: [pulseaudio] alsa-ucm.c: Failed to get the verb HiFi
I: [pulseaudio] alsa-ucm.c: Set UCM verb to Hdmi
D: [pulseaudio] alsa-ucm.c: Got PlaybackPCM for device HDMI3: hw:sofhdadsp,5
D: [pulseaudio] alsa-ucm.c: Got PlaybackChannels for device HDMI3: 2
D: [pulseaudio] alsa-ucm.c: Got JackControl for device HDMI3: HDMI/DP,pcm=5 Jack
D: [pulseaudio] alsa-ucm.c: No _conflictingdevs for device HDMI3
D: [pulseaudio] alsa-ucm.c: No _supporteddevs for device HDMI3
D: [pulseaudio] alsa-ucm.c: Got PlaybackPCM for device HDMI2: hw:sofhdadsp,4
D: [pulseaudio] alsa-ucm.c: Got PlaybackChannels for device HDMI2: 2
D: [pulseaudio] alsa-ucm.c: Got JackControl for device HDMI2: HDMI/DP,pcm=4 Jack
D: [pulseaudio] alsa-ucm.c: No _conflictingdevs for device HDMI2
D: [pulseaudio] alsa-ucm.c: No _supporteddevs for device HDMI2
D: [pulseaudio] alsa-ucm.c: Got PlaybackPCM for device HDMI1: hw:sofhdadsp,3
D: [pulseaudio] alsa-ucm.c: Got PlaybackChannels for device HDMI1: 2
D: [pulseaudio] alsa-ucm.c: Got JackControl for device HDMI1: HDMI/DP,pcm=3 Jack
D: [pulseaudio] alsa-ucm.c: No _conflictingdevs for device HDMI1
D: [pulseaudio] alsa-ucm.c: No _supporteddevs for device HDMI1
I: [pulseaudio] module-alsa-card.c: Found UCM profiles
ok let's see on Monday what @juimonen thinks. Have a nice week-end.
@katsar0v, we should have some working ucm for 18 LTS ubuntu's here: https://github.com/thesofproject/alsa-ucm-conf/tree/sof_ucm1
It should at least get the ucm loaded, if you could try that, let's see after that what happens :)
Your Pulseaudio will use software volumes, which should work (I think). If you want hw volumes and possible mute leds blinking you need to update pulseaudio and sof topology, but that's another story then.
@juimonen I can see the input now (and it reacts on my voice):
Recording voice works in firefox:
Edit: my laptops fan tends to be noisy, and the mic catches the fan's noise, is there a way to somehow filter it out? If I decrease mic's volume it is okay, but I have to scream, so the mic can hear me.
Edit 2: nevermind, the mic is on the display and I have to open the lid to isolate fan noise
So I think we solved this! For some reason it does not work with Chrome, but I will inspect this. Many many many thanks! I assume SOF was already installed on Ubuntu, but not configured for my sound card, is this correct? I created the issue thinking that I dont have SOF at all, but correct me if I am wrong. I tried building it from scratch a couple of time before, but with no success.
Edit: had to do this - https://askubuntu.com/a/668329/590118 and run pulseaudio -k
after reboot, afterwards the mic was working on all apps. Thank you again!
Summary of the required changes:
update the kernel to v5.3
edit /etc/modprobe.d/alsa-base.conf to add
blacklist snd-hda-intel blacklist snd-soc-skl
@plbossart correct, 0. is done via just sudo apt update && sudo apt upgrade
. 1. and 2. were somehow unclear (or undocumented) for me. I also wasn't aware if sof was properly (or at all) installed. Let me know if I can help you further here.
This solution worked wonderfully until yesterday on my Dell Inspiron 7590, Ubuntu 18.04 LTS and kernel v5.3.0-42. Today, on startup the sound stopped working altogether and Ubuntu was not detecting any soundcard (I could only see "Dummy output" in the settings). I don't recall doing anything particularly nor updating anything. I couldn't even open alsamixer (with error "cannot open mixer").
I had to remove the blacklist from /etc/modprobe.d/alsa-base.conf and add the option snd-hda-intel dmic_detect=0
. Now I have the sound back but the internal microphone is not detected again (it is shown as unplugged in pavucontrol and no input is present in the settings). So it's back to square one.
If I blacklist snd-hda-intel
and snd-soc-skl
and run lspci -nnk | grep -A2 audio
the kernel driver in use is sof-audio-pci, but I get only the dummy output, no sound nor mic and pavucontrol/Consiguration returns "no cards available for configuration".
I'm far from being an expert, so any help would be greatly appreciated. Thanks.
@giorgionicoletti wrote:
I don't recall doing anything particularly nor updating anything. I couldn't even open alsamixer (with error "cannot open mixer").
That hints at a problem in driver probe. Can you share output of alsa-info.sh (instructions https://wiki.ubuntu.com/Audio/AlsaInfo) when the problem happens?
@kv2019i Sure, there you go: http://alsa-project.org/db/?f=b72bcfd31ec3695aa4bf23f28edc7408975f397a. This is the output I get when I add the two blacklist lines to alsa-base.conf and sounds stop working.
This solution worked wonderfully until yesterday on my Dell Inspiron 7590, Ubuntu 18.04 LTS and kernel v5.3.0-42. Today, on startup the sound stopped working altogether and Ubuntu was not detecting any soundcard (I could only see "Dummy output" in the settings). I don't recall doing anything particularly nor updating anything. I couldn't even open alsamixer (with error "cannot open mixer").
I had to remove the blacklist from /etc/modprobe.d/alsa-base.conf and add the option
snd-hda-intel dmic_detect=0
. Now I have the sound back but the internal microphone is not detected again (it is shown as unplugged in pavucontrol and no input is present in the settings). So it's back to square one.If I blacklist
snd-hda-intel
andsnd-soc-skl
and runlspci -nnk | grep -A2 audio
the kernel driver in use is sof-audio-pci, but I get only the dummy output, no sound nor mic and pavucontrol/Consiguration returns "no cards available for configuration".I'm far from being an expert, so any help would be greatly appreciated. Thanks.
I also see "dummy output" from times to times, but a reboot usually fixes it. Am using 5.3.0-40-generic
though
I also see "dummy output" from times to times, but a reboot usually fixes it. Am using
5.3.0-40-generic
though
Nope, unfortunately a reboot does not fix it. I think that I had 5.3.0-42-generic
all along though (I tried this solution no later than six days ago), so I can't really get my head around to what happened.
I have this laptop too, tried many times all the fixes available in arch linux (manjaro) with the latest kernel but no hope. The internal microphone is working unstably and all the issues are still not fixed as mentioned in https://bugzilla.redhat.com/show_bug.cgi?id=1772498#c209 (view other comments). I think we'll have to wait for the update of sof-firmware and related ucm stuffs.
@giorgionicoletti wrote:
@kv2019i Sure, there you go: http://alsa-project.org/db/?f=b72bcfd31ec3695aa4bf23f28edc7408975f397a.
Aa, ok. So this is something else, there's actually kernel error hit when registering the card:
RIP: 0010:skl_hda_hdmi_jack_init 0x3f/0x110 [snd_soc_skl_hda_dsp]
Could you post full dmesg and your kernel config (.config or config file in /boot your distro has shipped)? The oops is on a code path related to the hdac-hdmi driver. We switched to different codec driver in 5.5. So it could be a bug specific to 5.3/5.4. With dmesg+config I can confirm this.
@giorgionicoletti looks like an ubuntu kernel update gone wrong. Can you try and boot from a previous version with the "advanced options" grub menu and select 5.3.0-40-generic which seemed to work before?
@plbossart you're right! I thought I checked and did not update the kernel, but apparently I was wrong. Booting 5.30.0-40 seems to work as before.
ok it's probably an Ubuntu kernel update that's missing backported patches or not using the right configuration. @jason77-wang is this something you can help with?
Aa, ok. So this is something else, there's actually kernel error hit when registering the card:
RIP: 0010:skl_hda_hdmi_jack_init 0x3f/0x110 [snd_soc_skl_hda_dsp]
Could you post full dmesg and your kernel config (.config or config file in /boot your distro has shipped)? The oops is on a code path related to the hdac-hdmi driver. We switched to different codec driver in 5.5. So it could be a bug specific to 5.3/5.4. With dmesg+config I can confirm this.
In case you still need them, I'm uploading both the full dmesg and the config file of 5.30.0-42.
@giorgionicoletti it's pretty clear it's an issue with HDMI, but we'd need to see what changed in the Ubuntu kernel tree between 5.30.0-40 and 5.30.0-42. I don't know where the git tree is personally.
@giorgionicoletti it's pretty clear it's an issue with HDMI, but we'd need to see what changed in the Ubuntu kernel tree between 5.30.0-40 and 5.30.0-42. I don't know where the git tree is personally.
I think I will roll back to 5.30.0-40 for the time being since I'm also noticing other weird things going on (the system hangs on reboot most of the time). However, if you need anything please ask. I really appreciate your help!
Ok thanks @giorgionicoletti . It seems 5.30.0-42 enables the common HDMI driver (i.e. backports the patchset from upstream 5.5):
http://changelogs.ubuntu.com/changelogs/pool/main/l/linux/linux_5.3.0-42.34/changelog
alsa/sof: change to use hda hdmi codec driver to make hdmi audio on the docking station work (LP: #1855666)
I can see also that in the kconfig you uploaded, the COMMON_HDMI_CODEC option is correctly set:
kernel-config.txt: CONFIG_SND_SOC_SOF_HDA_COMMON_HDMI_CODEC=y
But in the kernel oops, code hits a path that is only run if the new HDMI codec is disabled (which should not happen). Let me dig this a bit.
@giorgionicoletti Ok, problem rootcaused. I took the same Ubuntu-5.3.0-42.34 kernel and could reproduce it on of my test devices.
Rootcause for failure is this missing patch from the backport: 8ce1cbd6ce0 ASoC: topology: fix soc_tplg_fe_link_create() - link->dobj initialization order
Essentially ASoC core did not call "add_dai_link" callbacks, so the HDMI PCM nodes did not get added. The error was made worse by a missing check on existance of PCM nodes. This too is fixed in Linux upstream (with upstream, a similar bug would have just disabled HDMI).
So in short, this is a bug specific to Ubuntu kernels. I can see this is fixed eoan kernel Ubuntu-5.3.0-43.36 (https://bugs.launchpad.net/bugs/1864061).
@Jeff406 wrote:
I have this laptop too, tried many times all the fixes available in arch linux (manjaro) with the latest kernel but no hope. The internal microphone is working unstably and all the issues are still not fixed as mentioned in https://bugzilla.redhat.com/show_bug.cgi?id=1772498#c209 (view other comments). I think we'll have to wait for the update of sof-firmware and related ucm stuffs.
It's a bit hard to act on this info. There are a number of things out of our control in SOF, including the audio codec drivers, pulseaudio integration and packaging of the firmware files for each kernel version. But in general, if a laptop works with one distro, it really should work with others as well, or there is some distro specific issue (that should be fixable by copying the solution from other distros). Based on your info, you have a laptop that should work now. The Redhat/Fedora bug you refer to is closed as fixed. Similarly for Ubuntu, based on above latest 19.10 kernel will work with SOF. For Arch/Manjaro, I found at least this: https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_7)#Audio .. stating it is working.
If there is a specific problem in SOF drivers or firmware, we can try to help, but without specifics, we can't really do that.
@giorgionicoletti Ok, problem rootcaused. I took the same Ubuntu-5.3.0-42.34 kernel and could reproduce it on of my test devices.
Rootcause for failure is this missing patch from the backport: 8ce1cbd ASoC: topology: fix soc_tplg_fe_link_create() - link->dobj initialization order
Essentially ASoC core did not call "add_dai_link" callbacks, so the HDMI PCM nodes did not get added. The error was made worse by a missing check on existance of PCM nodes. This too is fixed in Linux upstream (with upstream, a similar bug would have just disabled HDMI).
So in short, this is a bug specific to Ubuntu kernels. I can see this is fixed eoan kernel Ubuntu-5.3.0-43.36 (https://bugs.launchpad.net/bugs/1864061).
Great. Thank you very much!
Is there a way to install SOF under Debian Bullseye (5.4.0-4-amd64) ? I would like to participate as a tester if possible. Device info:
00:1f.3 Multimedia audio controller [0401]: Intel Corporation Cannon Lake PCH cAVS [8086:a348] (rev 10) DeviceName: Onboard - Sound Subsystem: Dell Cannon Lake PCH cAVS [1028:0924]
@armantorkzaban do you have DMICs available on this device? You should see something in the dmesg log related to microphones.
If yes, you will need to install the firmware and topology (from https://github.com/thesofproject/sof-bin/tree/stable-v1.4.2) and see how this works.
So I got the kernel 5.3.0-42-generic
as well and see only this, just to confirm. Is there 43 for Ubuntu 18?
Hi, I am experiencing the same issues on LM 19.3 (based on 18.04) with kernel 5.3.0-40 (5.3.0-42 causes many other issues hence I am sticking with -40 for now) I have followed the suggested steps by blacklisting the two drivers and copying the SOF files in the appropriate directory - this results in no sound and no mic. However there may be a hint here, blacklisting and removing the folder with the SOF files brings sound back but no mic. Does this mean that something goes belly up when these files are loaded by the kernel?
DMESG with the files: https://pastebin.com/uPvLv8St
DMESG without the files: https://pastebin.com/7uwYxKDj
alsa-info output: https://alsa-project.org/db/?f=164f61033f3d90808c4f7f072c4e234628e8a9ff
I wish I was better at troubleshooting these things. Thanks for your help,
Matt
@katsar0v @mattmax42 Probably in both of your cases, you now have the kernel drivers correctly loading, but you are missing the ALSA UCM files, so Pulseaudio cannot find the sound devices. Please see https://github.com/thesofproject/linux/issues/1877#issuecomment-596600017 for how to do this on older distros.
@mattmax42 That is expected. When you remove the blacklisting, your system goes back to using the older snd-hda-intel driver where the audio DSP is bypassed (the hardware supports usage with and without the DSP). This drive does not support directly connected digital microphones, and on a system like yours, this means microphone won't work. Your system has UCM files for this driver, so Pulseaudio otherwise works.
When you add the blacklist rule, the DSP-enabled SOF driver is loaded (your alsa-info log shows the driver is ok), but as you don't have the UCM files installed, Pulseaudio cannot find the sound devices.
HI, sorry maybe I wasn't quite clear enough: I have blacklisted the two drivers and copied the UCM files as suggested in the post. lscpi reports sof-audio-pci as the Kernel driver in use, however no sound, no mic. I get a dummy output and no input devices. If I keep the blacklisting but remove the files, I get at least my output back.
The relevant lines in the dmesg output for the situation with the blacklisting and the files in place:
Thanks,
Matt
Ok, having just rebooted with the files deleted but the blacklist in place: It loads the sof-audio-pci driver, I have a working output device ('sof-skl_hda_card' and 'Multichannel Output sof-skl_hda_card') an input device is listed as 'Multichannel Input sof-skl_hda_card' but does not work. To me this looks like it must be loading the UCM files from somewhere else but maybe hasn't got the right files for the mic?
This not a bug, but rather a feature request (maybe for docs). I have Dell Inspiron 7590 which has no microphone working when a fresh Ubuntu is installed (the 3.5mm jack does not work as well). ArchLinux -https://wiki.archlinux.org/index.php/Dell_Inspiron_15_(7590) says it works with the newest sof firmware, but how do I install it under Ubuntu? I hope not every new Dell user has to clone this repo and clone it in order to get the mic working, but it would be much easier to install it via ppa or a .deb file. Thanks in advance, in case somebody decides to help me out here!