nadimkobeissi/16iax10h-linux-sound-saga: Actual, complete solution for Linux audio on the Lenovo Legion Pro 7i Gen 10 (16IAX10H)

This guide explains how to get audio working properly on the Lenovo Legion Pro 7i Gen 10 (16IAX10H).

Since this solution is still very new, it will take some time for all the components to be properly integrated into the Linux kernel. Until that happens, you can follow the steps below, which have been rigorously tested and confirmed to work.

This guide is currently for Linux kernel version 6.17.8. It will be updated as future kernel versions are released, until the fix is ​​fully integrated into the kernel.

Step 1: Install AW88399 Firmware

copy aw88399_acf.bin File provided in this repository /lib/firmware/aw88399_acf.bin,

If you’d prefer to get your own copy of this firmware blob, follow these instructions.

Step 2: Download Linux Kernel 6.17.8 Sources

Download the kernel sources by clicking here.

Step 3: Patch Linux Kernel Sources

copy 16iax10h-audio-linux-6.17.8.patch Put the file from this repository into the root of your Linux kernel source directory. Then run:

patch -p1 < 16iax10h-audio-linux-6.17.8.patch

The patch should be successfully applied to 10 files without any errors.

Step 4: Configure the kernel

To fix the problem, the following kernel configuration options must be enabled:

CONFIG_SND_HDA_SCODEC_AW88399=m
CONFIG_SND_HDA_SCODEC_AW88399_I2C=m
CONFIG_SND_SOC_AW88399=m
CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y
CONFIG_SND_SOC_SOF_INTEL_COMMON=m
CONFIG_SND_SOC_SOF_INTEL_MTL=m
CONFIG_SND_SOC_SOF_INTEL_LNL=m

Configure the remaining kernels appropriate for your machine.

Step 5: Compile and Install the Kernel

make -j24
make -j24 modules
sudo make -j24 modules_install
sudo cp -f arch/x86/boot/bzImage /boot/vmlinuz-linux-16iax10h-audio

Step 6: Install Nvidia DKMS Driver

To ensure proper graphics integration, you will need to install the Nvidia DKMS driver for your custom kernel.

Install Nvidia DKMS packages and headers:

sudo pacman -S nvidia-open-dkms

The DKMS system will automatically build the NVidia kernel module for your custom kernel. After installation, reboot to load new drivers.

If you need to recompile and reinstall the driver later, use dkms utility:

sudo dkms build nvidia/580.105.08 --force
sudo dkms install nvidia/580.105.08 --force

you may need to replace 580.105.08 With actual NVidia driver version.

Step 7: Generate initramfs

The process varies between distributions according to some uses dracut while others use mkinitcpioGeneral distribution instructions are given below,

First, create a new preset file for your custom kernel:

sudo cp /etc/mkinitcpio.d/linux.preset /etc/mkinitcpio.d/linux-16iax10h-audio.preset

edit /etc/mkinitcpio.d/linux-16iax10h-audio.preset To look like this:

# mkinitcpio preset file for the 'linux-16iax10h-audio' package

ALL_kver="/boot/vmlinuz-linux-16iax10h-audio"
PRESETS=('default')
default_image="/boot/initramfs-linux-16iax10h-audio.img"

Then generate initramfs:

sudo mkinitcpio -p linux-16iax10h-audio

Finally, update your bootloader configuration. For GRUB, run:

sudo grub-mkconfig -o /boot/grub/grub.cfg

For systemd-boot, create a new boot entry /boot/loader/entries/arch-16iax10h-audio.conf,

title   Arch Linux (16IAX10H Audio)
linux   /vmlinuz-linux-16iax10h-audio
initrd  /initramfs-linux-16iax10h-audio.img
options root=PARTUUID=your-root-partition-uuid rw snd_intel_dspcfg.dsp_driver=3

replace the your-root-partition-uuid with your actual root partition UUID (find it by running blkid,

Comment: you have to include snd_intel_dspcfg.dsp_driver=3 In your kernel boot parameters.

First, generate initramfs for your custom kernel:

sudo dracut --force /boot/initramfs-linux-16iax10h-audio.img --kver $(cat include/config/kernel.release)

Then update your bootloader configuration. For GRUB, run:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

For systemd-boot, create a new boot entry /boot/loader/entries/fedora-16iax10h-audio.conf,

title   Fedora Linux (16IAX10H Audio)
linux   /vmlinuz-linux-16iax10h-audio
initrd  /initramfs-linux-16iax10h-audio.img
options root=UUID=your-root-partition-uuid rw snd_intel_dspcfg.dsp_driver=3

replace the your-root-partition-uuid with your actual root partition UUID (find it by running blkid,

Comment: you have to include snd_intel_dspcfg.dsp_driver=3 In your kernel boot parameters.

Step 8: Reboot into the patched kernel

Reboot into the patched kernel. run after reboot uname -a To verify that you are running the correct kernel.

Step 9: Install the patched ALSA UCM2 configuration

This step is necessary for proper volume control.

copy HiFi-analog.conf file from this repository /usr/share/alsa/ucm2/HDA/HiFi-analog.confOverwriting an existing file:

sudo cp -f HiFi-analog.conf /usr/share/alsa/ucm2/HDA/HiFi-analog.conf

First, identify your sound card ID by running the following:

You should get something like this:

0: hw:0
  LENOVO-83F5-LegionPro716IAX10H-LNVNB161216

Then, if you found it then run the below commands hw:1 up, change hw:0 To hw:1 And -c 0 To -c 1,

alsaucm -c hw:0 reset
alsaucm -c hw:0 reload
amixer sset -c 0 Master 100%
amixer sset -c 0 Headphone 100%
amixer sset -c 0 Speaker 100%

Comment: The last three commands are for speaker calibration, not for setting your volume to maximum. They must be powered for the speakers to function properly, but they do not control your actual volume level.

Step 10: Enjoy Working Audio!

That’s it! Your audio should now work correctly and permanently. This fix will persist during a reboot and will not require any additional steps.

I, Nadim Kobeissi, certify that all components of the fix provided here have been tested and work without any harmful effects. Fixed components are provided in good faith. However, I (as well as the main fix author) disclaim all responsibility for any use of this fix and the guide:

THE PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

Fixing this problem required several weeks of intensive work by many people.

About 95% of the engineering work was done by Lippes. Lippus improved the incomplete kernel driver, wrote new kernel codecs and side-codecs, and contributed much more. I want to emphasize his incredible kindness and dedication to resolving this issue. He is the primary force behind this reform, and without him, it would never have been possible.

I (Nadim Kobeissi) conducted preliminary testing that identified the missing components required for audio to work on the 16IAX10H on Linux. Based on what I learned from Lipsas’s work, I helped debug and clean up his kernel code, tested it, and made minor improvements. I also contributed to the solution to the volume control problem documented in Step 8 and wrote this guide.

Gergo K. showed me how to extract the AW88399 firmware from the Windows driver package and install it on Linux, as described in Step 1.

Heartfelt thanks to everyone who pledged a bounty to solve this problem. The award goes to Laipus.



Leave a Comment