Fixing Linux Sound/Audio on Asus Chromebook C423N (codename: RABBID) with Celeron N3350 Apollo Lake chipset, DA7219 codec, and MAX98357A amplifier

on blog at

Getting sound working on an Asus Chromebook C423N (codename: RABBID) is hard. It took me 2 weeks and probably a dozen hours of trial and error. The normal chromebook sound fix scripts by Wierdtree at chromebook-linux-audio will give you very threatening warnings if you try to use them with this hardware. And of course they don't work.

The fix: sound-fix-script_asus-Chromebook-C423N-RABBID-ApolloLake-DA7219-MAX98357A.sh.txt

# This script configures audio (speakers and microphone) for Asus Chromebook C423N (RABBID)
# with Apollo Lake chipset, DA7219 codec, and MAX98357A amplifier.
# Using the ALSA + pulseaudio software stack with intel-sof audio drivers.

# ** THIS SCRIPT CREATES AND INSTALLS A SERVICE SCRIPT TO RESTART PULSEAUDIO 12s AFTER DESKTOP LOGIN FOR REASONS OF TIMING BEING HARD **
# ** 	~/.config/systemd/user/rabbid-audio-user.service	- calls rabbid-audio-fix.sh restarts pulseaudio
# ** You might not like the unintended consequences of that. 
# ** I personally have no problems beyond the *ding* of new audio devices being found each boot.

#  The other files it creates are: 
/usr/local/bin/rabbid-audio-fix.sh	- bring up the kernel modules in the right order with pauses, unmutes
/etc/systemd/system/rabbid-audio-fix.service - actually calls rabbid-audio-fix.sh
/etc/pulse/default.pa.d/rabbid-audio.pa	- sets the RABBID specific audio hardware id paths as pulse input/output devices
/lib/firmware/intel/sof-tplg/		- INSTALLS, contents replaced, contains: sof-apl-da7219.tplg topology
/lib/firmware/intel/sof/*		- INSTALLS, contents replaced, contains: sof firmware
/etc/modprobe.d/inteldsp.conf		- points kernel snd module at ./intel/sof/ firmware forcing SOF driver for Apollo Lake audio

It uses the apt repos to install various needed packages. Then it downloads the currently newest build of the intel firmware and topology files, puts them in their appropriate debian-alike place, creates a .conf that points the kernel snd module at them, then two systemd services are created. One calls a script that brings up the kernel modules in a specific order with pauses between and then unmutes the created alsa devices and saves the alsaconf. An earlier created pulseaudio configuration uses hard coded RABBID-specific ALSA hardware device addresses for pulseaudio input and output devices then unmutes the newly created devices. Then the second systemd service script restarts the entire pulseaudio service 12 seconds after the desktop environment boots in. Because I couldn't find a more reliable way.

User beware with the script. It does seem to just work and continue to work on reboot for I think the best way to use it is as a guide; going through and doing it manually line by line.

Do not try to use RABBID or other chromebooks with windows. The only audio drivers are *paid* and sold by an operation called "coolstar". But if you pay the small amount like I did to buy them you find out it's no longer in operation. The coolstar patreon just takes one's money while their backend system is broken and the drivers are inaccessible for download.

[comment on this post] Append "/@say/your message here" to the URL in the location bar and hit enter.

[webmention/pingback] Did you respond to this post? What's the URL?

Comments

17:35:24, Sun May 17, 2026 : /blog/2025-12-03-1.html/, did not work on my c423n, rabbid-audio-fix.sh1211: modprobe: FATAL: Module snd_soc_sst_bxt_da7219_max98357a not found

<superkuh> 14:38:50, Fri Aug 09, 2026 : /, Sorry it took so long to respond. For future people with the same problem: if you system is any different or newer than intel may have once again reorganized and renamed the audio friver modules and maybe intel sof doesn't work on newer kernels if that's what you have. Or maybe your kernel had it compiled with CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A=y so there's no separate module like from =m and that particular command is unnnnecessary, but I doubt it. Look around manually to see if you have it under a slightly different name,

find /lib/modules/$(uname -r) -iname "*da7219*"
find /lib/modules/$(uname -r) -iname "*bxt*"
find /lib/modules/$(uname -r) -iname "*max98357*"

# Check if it's built-in instead of a module
grep -i "da7219\|bxt_da7219" /lib/modules/$(uname -r)/modules.builtin