解决ubuntu22.04上因特尔11代JasperLake芯片搭配音频芯片顺芯ESSX8336驱动问题的办法
发表于 : 2022-06-24 17:16
上个月我入手一台因特尔11代处理器N5100的笔记本电脑,搭载的音频处理芯片是顺芯ESSX8336,装上ubuntu22.04后我发现没有声音,多方求助无果。最后求助yangxiaohua2009@github.com,经过多次提交内核log数据和alsa调试数据,这位高人yangxiaohua2009@github.com帮我找到了解决问题的办法。不少廉价笔记本都采用了这个芯片组合,所以我共享一下这个解决方案。
内核版本
我使用的内核是官方源提供的5.17,通过安装linux-oem-22.04a,其他版本也许不行。安装方法:
sudo apt install --install-recommends linux-oem-22.04a
固件
要安装来自https://github.com/yangxiaohua2009/custom-kernel的最新固件。
下载方法: git clone https://github.com/yangxiaohua2009/custom-kernel
安装过程:
cd custom-kernel
cp ./tplg/* /lib/firmware/intel/sof-tplg/
cp sof-jsl.ri /lib/firmware/intel/sof/
cp -r sof-essx8336 /usr/share/alsa/ucm2
复制 sof-jsl-es8336.tplg(关键之一)
因为linux 5.17内核驱动模块的错误,无法加载正确的alsa固件,我们只能把该芯片对应的固件文件sof-jsl-es8336-ssp1.tplg复制为sof-jsl-es8336.tplg。具体做法是:
cd /lib/firmware/intel/sof-tplg
cp sof-jsl-es8336-ssp1.tplg sof-jsl-es8336.tplg
修改驱动模块加载参数(关键之二)
经过yangxiaohua2009@github.com的研究,linux 5.17内核驱动模块错误识别了ESSX8336的驱动参数quirk,必须在加载驱动模块时指定该参数值为1,具体做法是修改/etc/modprobe.d/alsa-base.conf文件,增加一行:
options snd_soc_sof_8336 quirk=0x01
完成上面几步后重启,就能听到声音了!
内核版本
我使用的内核是官方源提供的5.17,通过安装linux-oem-22.04a,其他版本也许不行。安装方法:
sudo apt install --install-recommends linux-oem-22.04a
固件
要安装来自https://github.com/yangxiaohua2009/custom-kernel的最新固件。
下载方法: git clone https://github.com/yangxiaohua2009/custom-kernel
安装过程:
cd custom-kernel
cp ./tplg/* /lib/firmware/intel/sof-tplg/
cp sof-jsl.ri /lib/firmware/intel/sof/
cp -r sof-essx8336 /usr/share/alsa/ucm2
复制 sof-jsl-es8336.tplg(关键之一)
因为linux 5.17内核驱动模块的错误,无法加载正确的alsa固件,我们只能把该芯片对应的固件文件sof-jsl-es8336-ssp1.tplg复制为sof-jsl-es8336.tplg。具体做法是:
cd /lib/firmware/intel/sof-tplg
cp sof-jsl-es8336-ssp1.tplg sof-jsl-es8336.tplg
修改驱动模块加载参数(关键之二)
经过yangxiaohua2009@github.com的研究,linux 5.17内核驱动模块错误识别了ESSX8336的驱动参数quirk,必须在加载驱动模块时指定该参数值为1,具体做法是修改/etc/modprobe.d/alsa-base.conf文件,增加一行:
options snd_soc_sof_8336 quirk=0x01
完成上面几步后重启,就能听到声音了!