WARNING: This might mess up your operating system. Even if you have zero errors after fixing the DSDT, it may still cause you to not be able to boot your OS. It will not harm your PC or hardware.
The first thing we need to do is install the Intel DSDT compiler. Open a terminal and run
Code: Select all
sudo apt-get install iasl
Then we need to get a copy of your current DSDT and save it in your home folder with this command
Code: Select all
sudo cat /proc/acpi/dsdt > dsdt.dat
Code: Select all
iasl -d dsdt.dat
You should now have a file called dsdt.dsl in your home folder. This is the file you will be editing. Once you are done making changes, we will use it to make a new DSDT file. The next step is to use iasl to recompile the dsdt.dsl file to see any errors/warnings/optimizations with this command. Replace <yourusername> with your username.
Code: Select all
iasl -tc /home/<yourusername>/dsdt.dsl
Code: Select all
dsdt.dsl 349: Method (\_WAK, 1, NotSerialized)
Warning 1079 - ^ Reserved method must return a value (_WAK)
Code: Select all
iasl -tc /home/<yourusername>/dsdt.dsl
http://forums.opensuse.org/how-faq-read ... -dsdt.html
https://wiki.edubuntu.org/LaptopTestingTeam/HPdv5z
http://forums.opensuse.org/archives/sf- ... -dsdt.html
http://forums.gentoo.org/viewtopic.php?t=122145
You might get lucky and find one already fixed for your make/model here: http://acpi.sourceforge.net/dsdt/view.php If so then you can skip to the last two commands.
Once you have successfully edited the dsdt.dsl file, we should have a dsdt.aml in your home folder. This was the goal of the how to.
WARNING: The commands up till this point have not made any changes to your system. You can simply delete the files that have been created. After the last two commands, you will be using a custom DSDT at boot. This is the point of no return.
These commands will rename the dsdt.aml file and copy it to your /etc/initramfs-tools folder. Then we will update the initrd image to include the DSDT override at boot. The very last command will update the initrd image. You need to replace "kernel version" with your kernel version. You can see it by running
Code: Select all
uname -r
Code: Select all
sudo cp dsdt.aml /etc/initramfs-tools/DSDT.aml
Code: Select all
sudo update-initramfs -u -k kernel-version
Code: Select all
dmesg > /home/yourusername/Desktop/dmesg
Code: Select all
[ 0.020495] ACPI: Checking initramfs for custom DSDT
[ 0.353464] ACPI: Found DSDT in DSDT.aml.
[ 0.353470] ACPI: Override [DSDT- MCP67], this is unsafe: tainting kernel
[ 0.353478] ACPI: Table DSDT replaced by host OS
[ 0.353482] ACPI: DSDT 00000000, 7CB3 (r1 NVIDIA MCP67 6040000 INTL 20061109)
[ 0.353487] ACPI: DSDT override uses original SSDTs unless "acpi_no_auto_ssdt"
Code: Select all
acpi_osi="Linux"
EDIT: I forgot to mention that if you get a satisfactory DSDT, save the DSDT.aml file copied to /etc/initramfs-tools somewhere so it won't get lost. You can reuse it for any Linux OS on the same machine.