Asus Zenbook No Sound Output

Hi everyone, I could use a bit of help here as I’m having a bit of a tricky issue. I have a Asus Zenbook 14 (Model: Q409ZA) which I’ve installed NixOS on and doesn’t have sound support out of the box. After some digging around I found this post: https://gist.github.com/lamperez/862763881c0e1c812392b5574727f6ff?permalink_comment_id=4522211 which describes and addresses the issue on linux, but I’m struggling to apply the fix on NixOS.

Essentially, the idea is to use the bootloader to load a SSDT file which will provide the necessary information my csc3551 driver needs for my sound card, like how is described in arch wiki: DSDT - ArchWiki. There are 3 ways to do this, one through GRUB, one through systemd-boot, and one through kernel packages but all have some challenges in NixOS:

The GRUB way: You take this script: https://github.com/thor2002ro/asus_zenbook_ux3402za/blob/655ae385d2e7b64fc068c01a6f1d61ba5fd1e194/Sound/01_acpi and load it into a file in grub directory (such as /etc/grub.d/01_acpi) then update-grub. Best I can tell NixOS uses GRUB2 in a weird way and this won’t work as advertised. I’ve tried using most of the options on nixos grub boot service, but none of them seem to work to load this script.

The systemd-boot way: You package the SSDT file into a CPIO archive (as described in option 3 of the arch wiki url above) and then load it into initrd by configuring the boot loader. This one seemed the most promising, but when I tried to use the “boot.initrd.prepend” NixOS option I always get an error like: cat: /efi/acpi_override: No such file or directory (where /efi/acpi_override is the CPIO archive I created)

The kernel patch: It’s described here: [ubuntu] No Sound at all on Asus Zenbook 14 OLED - Page 3 but I’m not sure how to even get started on this one before, the actually discussion is sparse and I’ve never patched the kernel on NixOS before.

I would really appreciate any feedback or guidance anyone could give me. I’m really stuck at this point.

1 Like

I’ve figured it out. For the next poor soul who might come across this issue, I found this thread: boot - Including a custom ACPI DSDT with (K)Ubuntu 18.04 (RC1) - Ask Ubuntu which recommends calling acpi command directly in grub.cfg. Below works for me once I installed the acpi package in system packages

boot = {
kernelPackages = pkgs.linuxPackages_latest;
loader.efi.canTouchEfiVariables = true;
loader.grub = {
enable = true;
devices = [“nodev”];
efiSupport = true;
configurationLimit = 10;
extraConfig = ‘’
acpi /ssdt-csc3551.aml
‘’;
};
};

1 Like