My laptops internal microphone is not shown in linux, How can I make it work?
Linux - DesktopThis forum is for the discussion of all Linux Software used in a desktop context.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
My laptops internal microphone is not shown in linux, How can I make it work?
My laptops internal microphone is not shown in linux, How can I make it work?
I installed Fedora 38 and ubuntu 23.04 on my Acer Aspire 314-24p ( ryzen 5 7520u ) with latest Kernel 6.6rc . But none of the OSes detect my laptops microphone. on the gnome sound option, it just Show something called Analog input that does nothing. How can I make things work?
output of the command 'pactl list sources | grep Name ' is pasted bellow :
thanks for the resources but it seems complicated. But I came to know that realtek ALC256 codec had this problem since long ago . It should have solution by now. My bad luck.
Distribution: Slackware64 14.2 and current, SlackwareARM current
Posts: 1,647
Rep:
I had the same problem, but with a similar, not the same device. In my case a "lsmod" showed me that snd_soc_acp6x_mach was used (or at least it showed acp6x at that time). If your lsmod also shows some module like this used, you could try the following procedure.
After searching many threads the solution for me was to (a) get my model number and (b) add it manually to the kernel source before (c) recompiling the kernel. You can get the model number that I am talking of with "alsa-info.sh" (as root), in my case the important line reads "Board Name: 8B2F". (It's an HP with the same CPU but a ALC236 codec). I downloaded the newest 6.6.x kernel, patched it with the patch from https://git.kernel.org/pub/scm/linux...d6f0bca0eed92a (instead of 8B2F insert your Board Model). Then recompile and install your kernel. Since Pat provides kernel configs for 6.6.x in testing, grab his config, which makes it much easier.
After that at least the microphone was shown and working. For my laptop I had to find yet another patch (so that the headphone jack and switching between it and the laptop speaker works) and luckily since 6.6.4 kernel it is working fine right now.
In case you should try it: Good luck!
EDIT: You also need the line with "Board Vendor" from alsa-info.sh. In my case it obviously says "HP" which also resembles the mentioned kernel patch. So change your board vendor too, when adjusting the patch!
Last edited by titopoquito; 12-07-2023 at 02:40 PM.
I had the same problem, but with a similar, not the same device. In my case a "lsmod" showed me that snd_soc_acp6x_mach was used (or at least it showed acp6x at that time). If your lsmod also shows some module like this used, you could try the following procedure.
THANK YOU!
I ran in to the exact same problem on an Acer Aspire 315-24PT and I'd gotten from other threads that if I was going to make it work I'd probably have to compile a custom kernel for the very first time in 19 years of running Linux. Your comment was the first that made it feel like this was something I could really approach and have it be no big deal. And it was, in fact, no big deal.
To anyone else feeling intimidated by it, I followed this guide. The only change I had to make was that on Debian 12 "Bookworm," I also needed to install the pahole package for the build to complete.
Since we're currently on 6.8.2, I edited sound/soc/amd/yc/acp6x-mach.c using the patch in the link as a guide instead of going through the effort of verifying that it's still valid several versions later. Having finished that, I'm pretty sure using the patch file would still work, but I technically can't swear to that today and I certainly don't want to promise you that will stay true in the future. But following the formatting of the file adding my board to the top of static const struct dmi_system_id yc_acp_quirk_table[] did the trick. It's worth noting that all of the entries use DMI_BOARD_VENDOR, while some use DMI_BOARD_NAME and others use DMI_PRODUCT_NAME to identify the relevant hardware. Since the ones at the top are all DMI_PRODUCT_NAME, I was concerned that maybe the file format had changed. It has not. I scrolled for awhile and eventually found other files using DMI_BOARD_NAME, so that's what I used.
It worked perfectly. My microphone works. As a bonus, the Realtek Wi-fi/BT card that I moved over from my old laptop to replace the MediaTek MT7902 that came in this thing and apparently has no Linux drivers was working fine for Wi-fi, but that could see but not pair with my bluetooth headset is now fully functional. I don't know if the new kernel did it or if that was a coincidence, but either way, I now have a fully functional computer, and you can too!
Distribution: Slackware64 14.2 and current, SlackwareARM current
Posts: 1,647
Rep:
Quote:
Originally Posted by windowful
THANK YOU!
I ran in to the exact same problem on an Acer Aspire 315-24PT and I'd gotten from other threads that if I was going to make it work I'd probably have to compile a custom kernel for the very first time in 19 years of running Linux. Your comment was the first that made it feel like this was something I could really approach and have it be no big deal. And it was, in fact, no big deal.
To anyone else feeling intimidated by it, I followed this guide. The only change I had to make was that on Debian 12 "Bookworm," I also needed to install the pahole package for the build to complete.
Since we're currently on 6.8.2, I edited sound/soc/amd/yc/acp6x-mach.c using the patch in the link as a guide instead of going through the effort of verifying that it's still valid several versions later. Having finished that, I'm pretty sure using the patch file would still work, but I technically can't swear to that today and I certainly don't want to promise you that will stay true in the future. But following the formatting of the file adding my board to the top of static const struct dmi_system_id yc_acp_quirk_table[] did the trick. It's worth noting that all of the entries use DMI_BOARD_VENDOR, while some use DMI_BOARD_NAME and others use DMI_PRODUCT_NAME to identify the relevant hardware. Since the ones at the top are all DMI_PRODUCT_NAME, I was concerned that maybe the file format had changed. It has not. I scrolled for awhile and eventually found other files using DMI_BOARD_NAME, so that's what I used.
It worked perfectly. My microphone works. As a bonus, the Realtek Wi-fi/BT card that I moved over from my old laptop to replace the MediaTek MT7902 that came in this thing and apparently has no Linux drivers was working fine for Wi-fi, but that could see but not pair with my bluetooth headset is now fully functional. I don't know if the new kernel did it or if that was a coincidence, but either way, I now have a fully functional computer, and you can too!
Wonderful, glad I could help! And you compiled your first kernel, that's great too
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.