gnickm / sof-essx8336-debian-fix

Fixes to get ESSX8336 audio working for Intel Geminilake systems in Debian
Apache License 2.0
36 stars 6 forks source link

sof-essx8336-debian-fix

Fixes to get ESSX8336 audio working for Intel Gemini Lake systems in Debian

Problem

I found myself needing to support a new hardware platform for our GrandCare devices. Everything was working fine, except that I simply could not get the audio to work. The more I dug into the issue, the more people I found with the exact same problems. They seem to stem from a very new sound device from Everest Semiconductor called the ESSX8336 for the Intel Gemini Lake chipset. This device apparently has flawless Windows drivers, but Linux not so much. After a few days of google and getting in the weeds with the SOF folks, I was able to boil the issue down to a few main points:

Fix

Most of the fixes came courtesy of yangxiaohua2009 (who seems to have some insight into the underlying hardware) in the repo custom-kernel. I have tweaked them a bit to make them a little more Debian friendly, namely by using the sid kernel source to build the updated kernel. Here are the details of what worked:

Installation

WARNING - You are about to install a new kernel from the unstable branch of Debian. This may render your system unusable if something doesn't like your hardware. Make sure you do proper backups and know how to boot from an older kernel before you proceed.

These instructions were tested on Debian 10 (buster). This might work for other versions (bullseye) or Debian derivs (mint, ubuntu, etc), but YMMV.

  1. Install some packages you'll need for installation:

    sudo apt-get install git rsync
  2. Clone this repository:

    git clone https://github.com/gnickm/sof-essx8336-debian-fix
  3. Install the new kernel:

    cd sof-essx8336-debian-fix
    sudo dpkg -i dist/linux*
  4. Install correct sof firmware and topologies

    sudo ./setup-sof.sh
  5. Reboot into the new kernel:

    sudo shutdown -r now
  6. Set some legit ASLA levels using the provided script. Depending on your OS setup, you may need to run this after every reboot:

    cd sof-essx8336-debian-fix
    ./setup-alsa.sh
  7. If you're using pulseaudio, make it use the ESSX8336 as the default device:

    sudo ./setup-pulseaudio.sh