I have recently installed Xubuntu on my Asus C302C Chromebook. Everything works great except I don't have any sound, which seems to be a common problem on Chromebooks. I have read a lot of pages and tried a lot of solutions, but the problem seems to come down to the fact that the laptop is not recognizing the kernel module to load.
Here is a dump of sudo alsa-info from my laptop: https://pastebin.com/gGJ2mXmP
!!################################
!!ALSA Information Script v 0.5.1
!!################################
!!Script ran on: Tue Jan 10 02:34:56 UTC 2023
!!Linux Distribution
!!------------------
Ubuntu 22.04.1 LTS \n \l DISTRIB_ID=Ubuntu DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS" PRETTY_NAME="Ubuntu 22.04.1 LTS" NAME="Ubuntu" ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy
!!DMI Information
!!---------------
Manufacturer: Google
Product Name: Cave
Product Version: 1.0
Firmware Version:
System SKU:
Board Vendor: Google
Board Name: Cave
!!ACPI Device Status Information
!!---------------
/sys/bus/acpi/devices/10508825:00/status 15
/sys/bus/acpi/devices/ACPI0003:00/status 15
/sys/bus/acpi/devices/ACPI0008:00/status 15
/sys/bus/acpi/devices/ELAN0000:00/status 15
/sys/bus/acpi/devices/ELAN0001:00/status 15
/sys/bus/acpi/devices/GGL0001:00/status 11
/sys/bus/acpi/devices/GOOG0002:00/status 15
/sys/bus/acpi/devices/GOOGCB00:00/status 15
/sys/bus/acpi/devices/INT3400:00/status 15
/sys/bus/acpi/devices/INT3403:00/status 15
/sys/bus/acpi/devices/INT3403:01/status 15
/sys/bus/acpi/devices/INT3403:02/status 15
/sys/bus/acpi/devices/INT3403:03/status 15
/sys/bus/acpi/devices/INT3403:04/status 15
/sys/bus/acpi/devices/INT344B:00/status 15
/sys/bus/acpi/devices/MX98357A:00/status 15
/sys/bus/acpi/devices/PNP0103:00/status 15
/sys/bus/acpi/devices/PNP0303:00/status 15
/sys/bus/acpi/devices/PNP0C02:02/status 15
/sys/bus/acpi/devices/PNP0C02:03/status 15
/sys/bus/acpi/devices/PNP0C0A:00/status 31
/sys/bus/acpi/devices/PNP0C0F:00/status 11
/sys/bus/acpi/devices/PNP0C0F:01/status 11
/sys/bus/acpi/devices/PNP0C0F:02/status 11
/sys/bus/acpi/devices/PNP0C0F:03/status 11
/sys/bus/acpi/devices/PNP0C0F:04/status 11
/sys/bus/acpi/devices/PNP0C0F:05/status 11
/sys/bus/acpi/devices/PNP0C0F:06/status 11
/sys/bus/acpi/devices/PNP0C0F:07/status 11
/sys/bus/acpi/devices/PNP0C31:00/status 15
/sys/bus/acpi/devices/device:36/status 15
!!Kernel Information
!!------------------
Kernel release: 5.15.0-56-generic
Operating System: GNU/Linux
Architecture: x86_64
Processor: x86_64
SMP Enabled: Yes
!!ALSA Version
!!------------
Driver version: k5.15.0-56-generic
Library version: 1.2.6.1
Utilities version: 1.2.6
!!Loaded ALSA modules
!!-------------------
!!Sound Servers on this system
!!----------------------------
PipeWire:
Installed - Yes (/usr/bin/pipewire)
Running - Yes
Pulseaudio:
Installed - Yes (/usr/bin/pulseaudio)
Running - Yes
!!Soundcards recognised by ALSA
!!-----------------------------
--- no soundcards ---
!!PCI Soundcards installed in the system
!!--------------------------------------
00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d70] (rev 21)
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
!!Modprobe options (Sound related)
!!--------------------------------
snd_pcsp: index=-2
snd_usb_audio: index=-2
snd_atiixp_modem: index=-2
snd_intel8x0m: index=-2
snd_via82xx_modem: index=-2
snd_atiixp_modem: index=-2
snd_intel8x0m: index=-2
snd_via82xx_modem: index=-2
snd_usb_audio: index=-2
snd_usb_caiaq: index=-2
snd_usb_ua101: index=-2
snd_usb_us122l: index=-2
snd_usb_usx2y: index=-2
snd_cmipci: mpu_port=0x330 fm_port=0x388
snd_pcsp: index=-2
snd_usb_audio: index=-2
!!Loaded sound module options
!!---------------------------
!!Sysfs card info
!!---------------
!!Card: /sys/class/sound/card*
Driver:
Tree:
/sys/class/sound/card* [error opening dir]
!!ALSA Device nodes
!!-----------------
crw-rw----+ 1 root audio 116, 1 Jan 8 00:15 /dev/snd/seq
crw-rw----+ 1 root audio 116, 33 Jan 8 00:15 /dev/snd/timer
!!Aplay/Arecord output
!!--------------------
APLAY
aplay: device_list:274: no soundcards found...
ARECORD
arecord: device_list:274: no soundcards found...
!!Amixer output
!!-------------
!!Alsactl output
!!--------------
--startcollapse--
--endcollapse--
!!All Loaded Modules
!!------------------
8250_dw
ac97_bus
acpi_als
acpi_thermal_rel
aesni_intel
af_alg
algif_hash
algif_skcipher
autofs4
binfmt_misc
bluetooth
bnep
btbcm
btintel
btrtl
btusb
ccm
cec
cfg80211
chromeos_pstore
chromeos_tbmc
cmac
coretemp
cqhci
crc32_pclmul
crct10dif_pclmul
cros_ec
cros_ec_chardev
cros_ec_debugfs
cros_ec_dev
cros_ec_lpcs
cros_ec_sensorhub
cros_ec_sensors
cros_ec_sensors_core
cros_ec_sysfs
cros_kbd_led_backlight
cros_peripheral_charger
cros_usbpd_charger
cros_usbpd_logger
cros_usbpd_notify
cryptd
crypto_simd
drm
drm_kms_helper
ecc
ecdh_generic
efi_pstore
elan_i2c
fb_sys_fops
ghash_clmulni_intel
hid
hid_generic
hid_logitech_hidpp
i2c_algo_bit
i2c_i801
i2c_smbus
i915
icp
idma64
industrialio
industrialio_triggered_buffer
input_leds
int3400_thermal
int3403_thermal
int340x_thermal_zone
intel_cstate
intel_lpss
intel_lpss_pci
intel_pch_thermal
intel_powerclamp
intel_rapl_common
intel_rapl_msr
intel_soc_dts_iosf
intel_tcc_cooling
intel_xhci_usb_role_switch
ip_tables
iwlmvm
iwlwifi
joydev
kfifo_buf
kvm
kvm_intel
libarc4
lp
mac80211
mac_hid
mc
mmc_block
msr
nls_iso8859_1
parport
parport_pc
pinctrl_sunrisepoint
ppdev
processor_thermal_device
processor_thermal_device_pci_legacy
processor_thermal_mbox
processor_thermal_rapl
processor_thermal_rfim
pstore_blk
pstore_zone
ramoops
rapl
rc_core
reed_solomon
rfcomm
sch_fq_codel
sdhci
sdhci_pci
serio_raw
snd
snd_compress
snd_hda_codec
snd_hda_core
snd_hda_ext_core
snd_hwdep
snd_intel_dspcfg
snd_intel_sdw_acpi
snd_pcm
snd_pcm_dmaengine
snd_rawmidi
snd_seq
snd_seq_device
snd_seq_midi
snd_seq_midi_event
snd_skl_nau88l25_max98357a
snd_soc_acpi
snd_soc_acpi_intel_match
snd_soc_core
snd_soc_dmic
snd_soc_hdac_hda
snd_soc_hdac_hdmi
snd_soc_max98357a
snd_soc_nau8825
snd_soc_skl
snd_soc_skl_ssp_clk
snd_soc_sst_dsp
snd_soc_sst_ipc
snd_timer
soundcore
spl
syscopyarea
sysfillrect
sysimgblt
tls
ttm
uhid
uvcvideo
video
videobuf2_common
videobuf2_memops
videobuf2_v4l2
videobuf2_vmalloc
videodev
x86_pkg_temp_thermal
x_tables
xhci_pci
xhci_pci_renesas
zavl
zcommon
zfs
zlua
znvpair
zunicode
zzstd
!!ALSA/HDA dmesg
!!--------------
[ 0.131480] ACPI: Added _OSI(Linux-Dell-Video)
[ 0.131480] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[ 0.131480] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
--
[ 7.746350] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[ 7.848877] snd_soc_skl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[ 7.854879] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 7.864378] intel_tcc_cooling: Programmable TCC Offset detected
--
[ 8.109053] iwlwifi 0000:01:00.0 wlp1s0: renamed from wlan0
[ 8.218507] HDMI HDA Codec ehdaudio0D2: Max dais supported: 3
[ 8.245117] snd_soc_skl 0000:00:1f.3: ASoC: Parent card not yet available, widget card binding deferred
[ 8.264329] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 5:0
[ 8.264589] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 6:0
[ 8.264861] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 7:0
[ 8.265995] skl_n88l25_m98357a skl_n88l25_m98357a: ASoC: source widget Capture overwritten
--
[ 8.266024] skl_n88l25_m98357a skl_n88l25_m98357a: ASoC: Failed to add route iDisp3_out -> direct -> iDisp3 Tx
[ 8.266040] skl_n88l25_m98357a skl_n88l25_m98357a: snd_soc_bind_card: snd_soc_dapm_add_routes failed: -19
[ 8.676226] loop0: detected capacity change from 0 to 8
--
[ 918.921078] usb 1-7: reset high-speed USB device number 3 using xhci_hcd
[ 919.115391] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 5:0
[ 919.115405] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 6:0
[ 919.115413] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 7:0
[ 919.116033] OOM killer enabled.
--
[ 1441.795466] usb 1-7: reset high-speed USB device number 3 using xhci_hcd
[ 1441.991367] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 5:0
[ 1441.991377] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 6:0
[ 1441.991396] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 7:0
[ 1441.991978] OOM killer enabled.
!!Packages installed
!!--------------------
ii alsa-topology-conf 1.2.5.1-2 all ALSA topology configuration files
ii alsa-ucm-conf 1.2.6.3-1ubuntu1.1 all ALSA Use Case Manager configuration files
ii alsa-utils 1.2.6-1ubuntu1 amd64 Utilities for configuring and using ALSA
I kept hearing that Gallium OS had great Chromebook support, so I loaded a liveboot image to see if sound worked, and it did! I ran alsa-info there as well to see how it was working: https://pastebin.com/M1KYGkiZ
What stood out to me was that ALSA module loaded was snd_skl_nau88l25_max98357a. When I searched around I found someone else who hit the same problem on an older Kernel and Ubuntu version, and they said you need to compile your own kernel to enable the module.
So I compiled the Kernel and I can see the module available:
$ lsmod | grep nau8825
snd_soc_nau8825 57344 0
snd_soc_core 294912 2 snd_soc_max98357a,snd_soc_nau8825
snd_pcm 131072 4 snd_compress,snd_soc_core,snd_soc_nau8825,snd_pcm_dmaengine
But still no success. How can I force Alsa to use this module?
Update 1:
I noticed that lspci was showing that no kernel driver was being used for the sound card:
$ lspci -nnk | grep -A3 Audio
00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d70] (rev 21)
Kernel modules: snd_hda_intel, snd_soc_skl
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-LP SMBus [8086:9d23] (rev 21)
Subsystem: Intel Corporation Sunrise Point-LP SMBus [8086:9d23]
But on GalliumOS it is using snd_soc_skl:
$ lspci -nnk | grep -A2 Audio
00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d70] (rev 21)
Kernel driver in use: snd_soc_skl
Kernel modules: snd_hda_intel, snd_soc_skl
Update 2:
I realized that I had snd_soc_skl blacklisted in /etc/modprobe.d/blacklist.conf. I removed it and now lspci shows it being used by my sound card. Still no sound though.