Sunday, 24 March 2013

How to read ACPI table in Windows

This post is about a general info on how can we read the Advance Configuration and Power Interface (ACPI) which contain various tables (DSDT, APIC, RSDP, RSDT, etc) which tell the OS what they can take control over the system (usually on Power).

For BIOS, we usually care most is the DSDT table - Differentiate System Description Table which is part of ACPI. DSDT provide the interface or supply info on what is supported by the system for the OS to control.

This post is not to explain on every table. It is about how we can read the ACPI table out from our system. We usually call it "how can we dump ACPI table out from out system"
They are different ways to do in Windows and Linux. This post will focus only on Windows for now. I'll write about Linux next time.

In Windows, there are couple of tools we can use to read these tables. I'll share 2:

1) You can download and install R/W Everything. It is the simplest method to read ACPI table. Click on the ACPI and it will show you all the tables information
   http://rweverything.com/

2)
 a) Download and unzip the IASL tools from https://www.acpica.org/
 b) Using command prompt run the following command
     i) iasl -g
    ii) iasl -d ***.dat
  c) The "-g" is to all dump the ACPI table into a *.dat file which contain the machine code.
  d) the -d option is to dissemble the machine code back to asl or dsl code. (ACPI Machine Language)


Hope this post helps.. :) I will share on how to do it in Linux next time.


2 comments:

  1. Is it possible to extract the ACPI tables from windows and use them in linux?

    ReplyDelete
    Replies
    1. Sorry, I didn't explain: I think I'm having issues with ACPI, like fans are not working properly and my laptop gets hot (50-65 C). I filed a bug to my distribution (fedora), but still no reply. I don't have windows on this laptop, but if I install it and see that the fans are working, can I extract the ACPI tables from windows and use them in linux somehow to make the fan work?

      Delete