Skip to content

Simple TDP plugin for alternative PC handhelds

License

Notifications You must be signed in to change notification settings

gifter77/SimpleDeckyTDP

 
 

Repository files navigation

SimpleDeckyTDP

This is a very simple Linux TDP Decky Plugin that wraps ryzenadj

plugin image gpu settings

Compatibility

Tested on ChimeraOS Stable (44-1 and 43-1), ChimeraOS 45 unstable, NobaraOS 38, and Bazzite Deck Edition.

Other distros not tested.

Bazzite may require you to configure iomem=relaxed as an additional kernel parameter.

Requirements

WARNING: This plugin assumes you already have ryzenadj installed and can be located in your PATH

To check this, you can run which ryzenadj in a terminal/console, which should print out a path to a ryzenadj binary.

e.g.

$ which ryzenadj
/usr/bin/ryzenadj

If you do not have ryzenadj installed, you will need to get a working copy installed onto your machine.

To test your ryzenadj to make sure that it's functional, run the following:

$ sudo ryzenadj -i

This should print out a table that looks something like the following:

CPU Family: Rembrandt
SMU BIOS Interface Version: 18
Version: v0.13.0
PM Table Version: 450005
|        Name         |   Value   |     Parameter      |
|---------------------|-----------|--------------------|
| STAPM LIMIT         |     8.000 | stapm-limit        |
| STAPM VALUE         |     0.062 |                    |

If you see an error, you may need to set iomem=relaxed as a boot parameter for your kernel.

Install

Prerequisites

Decky Loader must already be installed.

Quick Install

run the following in terminal, then reboot:

curl -L https://github.com/aarron-lee/SimpleDeckyTDP/raw/main/install.sh | sh

Manual Install

Download the latest release from the releases page

Unzip the tar.gz file, and move the SimpleDeckyTDP folder to your $HOME/homebrew/plugins directory

then run:

sudo systemctl restart plugin_loader.service

then reboot your machine.

Manual build

Dependencies:

  • Node.js v16.14+ and pnpm installed
  • fully functional ryzenadj
git clone https://github.com/aarron-lee/SimpleDeckyTDP.git

cd SimpleDeckyTDP

# if pnpm not already installed
npm install -g pnpm

pnpm install
pnpm update decky-frontend-lib --latest
pnpm run build

Afterwards, you can place the entire SimpleDeckyTDP folder in the ~/homebrew/plugins directly, then restart your plugin service

sudo systemctl restart plugin_loader.service

sudo systemctl reboot

Advanced configuration

Custom TDP method

If you'd prefer to use something other than ryzenadj for to set TDP, you can opt to override ryzenadj with an alternative.

In the $HOME/homebrew/settings/SimpleDeckyTDP/settings.json, add an overrideRyzenadj value. Whatever value you set will be used as a command, with the tdp provided as a single additional arg

e.g.

# settings.json
{
    "overrideRyzenadj": "/path/to/script.sh",
    ...
}

# called later at app runtime, 15 = tdp value
sudo /path/to/script.sh 15

You can see how it's used in the code here

Custom Device settings

See device settings README

Troubleshooting

Buggy behavior after upgrading the plugin to a new version

If you see buggy behavior after upgrading to a new version of the plugin, it might be due to some bad values in an older settings file.

Try deleting the $HOME/homebrew/settings/SimpleDeckyTDP/settings.json file.

Note that this will delete any of your saved TDP profiles, so you could optionally copy it somewhere else to keep it as a backup instead.

About

Simple TDP plugin for alternative PC handhelds

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 63.0%
  • Python 32.4%
  • JavaScript 1.7%
  • Shell 1.6%
  • Dockerfile 0.7%
  • Makefile 0.5%
  • C 0.1%