Code Monkey home page Code Monkey logo

simpledeckytdp's Introduction

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.

simpledeckytdp's People

Contributors

aarron-lee avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.