Skip to content

Instantly share code, notes, and snippets.

@b00t0x
Last active April 9, 2024 16:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save b00t0x/c2b940a4a7a05c7169b54aa0a1be8cd3 to your computer and use it in GitHub Desktop.
Save b00t0x/c2b940a4a7a05c7169b54aa0a1be8cd3 to your computer and use it in GitHub Desktop.
RyzenAdj for macOS

Description

How to build RyzenAdj for macOS

Limitations

  • Monitoring functions like ./ryzenadj --info not working
    • adjustment only

Prerequisite

  • cmake (via Homebrew)

Environment

  • macOS Monterey 12.4
  • Xcode 13.4.1 (to build DirectHW)

Build

DirectHW

https://github.com/vampirecat35/DirectHW-BigSur

git clone https://github.com/vampirecat35/DirectHW-BigSur.git
cd DirectHW-BigSur/DirectHw

# using prebuilt binaries
mkdir -p /tmp/include/DirectHW
cp DirectHW.h /tmp/include/DirectHW
cp build/Release/libDirectHW.a /tmp/include
cp -r build/Release/DirectHW.kext /path/to/EFI/OC/Kexts/
Build your own (Xcode required)
sed -i -e 's/Apple Development/-/' DirectHW.xcodeproj/project.pbxproj
make build
cp build/Release/libDirectHW.a /tmp/include
cp -r build/Release/DirectHW.kext /path/to/EFI/OC/Kexts/

pciutils

https://github.com/vampirecat35/pciutils-osx

git clone https://github.com/vampirecat35/pciutils-osx.git
cd pciutils-osx

sed -i -e 's/Frameworks/Frameworks -I\/tmp\/include/' Makefile
sed -i -e 's/usr\/local\/lib/tmp\/include/' lib/configure
make

mkdir -p /tmp/include/pci
cp lib/*.h /tmp/include/pci
cp lib/libpci.a /tmp/include

RyzenAdj

https://github.com/FlyGoat/RyzenAdj

git clone https://github.com/FlyGoat/RyzenAdj.git
cd RyzenAdj

sed -i -e 's/${INC_DIR}/\/tmp\/include/' CMakeLists.txt
sed -i -e 's/ pci/ pci DirectHW/' CMakeLists.txt
sed -i -e 's/${OS_LINK_DIR}/\/tmp\/include/' CMakeLists.txt

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

How to use

Preparation

  • Add DirectHW.kext to config.plist
  • Add debug=0x44 boot-args to config.plist

Run manually

sudo ./ryzenadj --tctl-temp=70

Run at startup

sudo mkdir -p /usr/local/bin
sudo cp ./ryzenadj /usr/local/bin

sudo cp org.b00t0x.ryzenadj.plist /Library/LaunchDaemons/
sudo chmod 644 /Library/LaunchDaemons/org.b00t0x.ryzenadj.plist
sudo chown 0:0 /Library/LaunchDaemons/org.b00t0x.ryzenadj.plist
sudo launchctl load /Library/LaunchDaemons/org.b00t0x.ryzenadj.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.b00t0x.ryzenadj</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/ryzenadj</string>
<string>--tctl-temp</string>
<string>75</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/ryzenadj.txt</string>
<key>StandardErrorPath</key>
<string>/tmp/ryzenadj.err</string>
</dict>
</plist>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment