This guide assumes you are using up-to-date ArchLinux
Note: on kernel >= 5.4.arch1-1
, module snd-soc-skl
needs to be manually built by setting CONFIG_SND_SOC_INTEL_SKYLAKE=m
to get audio working.
- On an up-to-date ChromeOS, open the terminal and copy the firmware files to somewhere convenient to use. e.g.
sudo mkdir /mnt/stateful_partition/cros-firmware-75.0.3770.19 sudo cp -r /lib/firmware/ /mnt/stateful_partition/cros-firmware-75.0.3770.19/
- Download this repo and extract the files
-
Copy the firmware files from ChromeOS to
/lib/firmware/intel
in ArchLinux. Make sure the symlinks are pointing to the correct filessudo cp -r cros-firmware-75.0.3770.19/lib/firmware/intel /lib/firmware/intel
Note: as of ChromeOS 75.0.3770.19,
/lib/firmware/intel/dsp_fw_release.bin
should point todsp_fw_release_v969.bin
. -
Copy
dfw_sst.bin
to/lib/firmware/
sudo cp dfw_sst.bin /lib/firmware/
-
Copy
Google-Cave-1.0-Cave
to/usr/share/alsa/ucm/
sudo cp -r Google-Cave-1.0-Cave /usr/share/alsa/ucm/
-
Create a symbolic link for
Google-Cave-1.0-Cave
folder.sudo ln -s /usr/share/alsa/ucm/Google-Cave-1.0-Cave/ /usr/share/alsa/ucm/sklnau8825max
-
Blacklist
snd_hda_intel
module by putting the following in/etc/modprobe.d/c302ca-audio.conf
blacklist snd_hda_intel
-
The following steps may reduce popping sound (YMMV)
https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting#Glitches,_skips_or_crackling https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting#Pops_when_starting_and_stopping_playback
-
Reboot and audio should be working now
Note: You may need to repeat step 1 every time the package linux-firmware
gets updated.
The following method is just a workaround because it only works with one user. Ideally pulseaudio
should take care of this. (Need more research on alsa ucm
)
-
Install the
acpid
package -
Put the following in
/etc/acpi/events/plugheadphone
event=jack/headphone HEADPHONE plug action=sudo -u YOUR_USER_NAME XDG_RUNTIME_DIR=/run/user/YOUR_USER_ID pactl set-card-profile 0 Headphone
and put the following in
/etc/acpi/events/unplugheadphone
event=jack/headphone HEADPHONE unplug action=sudo -u YOUR_USER_NAME XDG_RUNTIME_DIR=/run/user/YOUR_USER_ID pactl set-card-profile 0 Speaker
replace
YOUR_USER_NAME
andYOUR_USER_ID
accordingly. -
Enable and start
acpid
servicesudo systemctl enable --now acpid