Skip to content

Instantly share code, notes, and snippets.

@lamperez
Last active November 14, 2024 16:20
Show Gist options
  • Save lamperez/d5b385bc0c0c04928211e297a69f32d7 to your computer and use it in GitHub Desktop.
Save lamperez/d5b385bc0c0c04928211e297a69f32d7 to your computer and use it in GitHub Desktop.
Load custom ACPI tables

ACPI DSDT/SSDT patching

These instructions are meant for a system with EFI, systemd-boot and deb based packages. Adjust them to your needs.

Reference: https://www.kernel.org/doc/Documentation/acpi/initrd_table_override.txt

See also https://github.com/lbschenkel/acer-sf314_43-acpi-patch

ACPICA tools: https://acpica.org/downloads

sudo apt install acpica-tools

Option 1: DSDT, extract and modify the tables

Extract the acpi tables

mkdir acpi && cd acpi
sudo acpidump -b

Disassemble the tables

iasl -d dsdt.dat

Modify or patch the tables

vim dsdt.dsl

Assemble the custom tables

iasl -sa dsdt.dsl

Generate the cpio file for initrd

cd ..
mkdir -p kernel/firmware/acpi
cp acpi/dsdt.aml kernel/firmware/acpi/
find kernel | cpio -H newc --create > patched_acpi_tables.cpio

Grub does not require a cpio file, you can directly provide the dsl file.

Option 2: SSDT, create the tables

SSDT tables add missing features to the existing ACPI, without requiring disassembling. They are created using the same tools and procedure.

Assemble the custom tables

iasl -sa ssdt.dsl

Generate the cpio file for initrd

cd ..
mkdir -p kernel/firmware/acpi
cp acpi/ssdt.aml kernel/firmware/acpi/
find kernel | cpio -H newc --create > patched_acpi_tables.cpio

Install the tables (systemd-boot)

Copy the cpio file with the custom tables where it can be addressed by the EFI boot

sudo mkdir /boot/efi/EFI/acpi
sudo cp patched_acpi_tables.cpio /boot/efi/EFI/acpi/

Edit the entry sudo vim /boot/efi/loader/entries/Pop_OS-current.conf

linux /EFI/...
initrd /EFI/acpi/patched_acpi_tables.cpio
initrd /EFI/Pop_OS-.../initrd.img
options ...
@Ben9986
Copy link

Ben9986 commented May 5, 2024

Let's go. My sound works perfectly. For NixOS people, I made a module that is very easy to integrate into your NixOS configuration : https://github.com/mrnossiom/dotfiles/blob/nixos/modules/nixos/asus-zenbook-ux3402za-sound.nix

THANK YOU! I couldn't figure out how to nixify the instructions to work with systemd-boot, but your config just worked!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment