Script to generate a SSDT for Power Management
Shell C Makefile
Latest commit 50e1b0d Dec 24, 2016 Pike R. Alpha Remove the illegal characters for issue #308

You can download the latest Beta of by entering the following command in a terminal window:

curl -o ~/

You can verify the size of the downloaded file with:

wc -c

That should match with what you see here. Right now that is 142KB. A failed download is usually much smaller (like 447 bytes or so).

This will download to your home directory (~) and the next step is to change the permissions of the file (add +x) so that it can be run.

chmod +x ~/

Note: v15.1 and greater require a working Internet connection so that it can download configuration data and command line tools. You can also download a complete zip archive by entering the following commands in a terminal window:

curl -o ~/Library/
unzip -qu ~/Library/ -d ~/Library/
mv ~/Library/ ~/Library/ssdtPRGen
rm ~/Library/

Help Information

$ ~/ -h

Usage: ./ [-abcdefghiklmnoprsutwx]
       -acpi Processor name (example: CPU0, C000)
       -acpi Processor name (example: CPU0, C000)
       -bclk frequency (base clock frequency)
       -board-id (example: Mac-F60DEB81FF30ACF6)
       -cpus number of physical processors [1-4]
       -debug output [0-3]
          0 = no debug injection/debug output
          1 = inject debug statements in: ssdt_pr.dsl
          2 = show debug output
          3 = both
       -developer mode [0-1]
          0 = disabled – Use files from: /Users/[username]/Library/ssdtPRGen
          1 = enabled  – Use files from: /Users/[username]/Projects/
       -extract ACPI tables to [target path]
       -frequency (clock frequency)
       -help info (this)
       -lfmode, lowest idle frequency
       -logical processors [2-128]
       -mode script mode [normal/custom]:
          normal – Use ACPI/IOREG data from the host computer
          custom – Use ACPI data from: /Users/[username]/Desktop
          –                          : /Users/[username]/Desktop
       -model (example: MacPro6,1)
       -open the previously generated SSDT
       -processor model (example: 'E3-1285L v3')
       -show supported board-id and model combinations:
          Sandy Bridge
          Ivy Bridge
       -target CPU type:
          0 = Sandy Bridge
          1 = Ivy Bridge
          2 = Haswell
          3 = Broadwell
          4 = Skylake
          5 = Kabylake
       -turbo maximum (turbo) frequency:
          6300 for Sandy Bridge and Ivy Bridge
          8000 for Haswell, Broadwell and greater
       -tdp [11.5 - 150]
       -compatibility workarounds:
          0 = no workarounds
          1 = inject extra (turbo) P-State at the top with maximum (turbo) frequency + 1 MHz
          2 = inject extra P-States at the bottom
          3 = both
       -xcpm mode:
          0 = XCPM mode disabled
          1 = XCPM mode enabled

Note: This is the output of version 20.4

User Defined Processor Data

The script was initially written for Intel Core processors and the processor data for (most) Intel processors should be readily available, but I have no intention to add the processor data for older processors. No worries. You can add the data yourself to: ~/Library/ssdtPRGen/Data/User Defined.cfg A few examples are there to help you.

Unknown CPU error

The processor data for your processor may not (yet) be available, and this is – most likely – why you get the error. The other problem is a common user-error where people use the wrong processor label i.e. i76850k/i7-6850k instead of i7-6850K. If the latter is not the problem that you are facing, and you known that the data for a new processors is missing, then please open a Github issue with the missing processor data (link to data). For older pre-Core I Intel processors see: ~/Library/Data/User Defined.cfg


All bugs, so called 'issues', should be filed here. If the script fails to generate a SSDT then please attach the output of: ./ -d 2 and compressed: ~/Library/ssdtPRGen/ACPI folder. If you are using processor data from Data/User Defined.cfg then I also need to know what that data is.

Please do not use my blog for this. Thank you!