Linux AMDGPU Control Application

This application allows you to control your AMD GPU on a Linux system

.

Current features:

  • Viewing information about the GPU
  • Power/thermals monitoring
  • Fan curve control
  • Basic overclocking

Currently missing:

  • Voltage control on Vega20+ GPUs
  • Precise clock/voltage curve manipulation (currently can only set the maximum values)
  • Multi-GPU system support Should work now

Installation

  • Arch Linux: Install the AUR Package (or the -git version)
  • Debian/Ubuntu/Pop_OS: Download a .deb from releases. Warning: it has not been tested heavily
  • Otherwise, build from source:

Building from source

  • Install dependencies:

    • Ubuntu/Debian: sudo apt install cargo rustc libvulkan-dev git libgtk-3-dev make
    • Fedora: sudo dnf install git gtk3-devel rust cargo vulkan-headers perl-FindBin perl-File-Compare
  • git clone https://github.com/ilyazzz/LACT && cd LACT

  • ./deploy.sh

Usage

Enable and start the service (otherwise you won't be able to change any settings):

sudo systemctl enable --now lactd

You can now use the application.

CLI

There is also a cli available.

  • Getting basic information:

    lact-cli info

    Example output:

    GPU Model: Radeon RX 570 Pulse 4GB
    GPU Vendor: Advanced Micro Devices, Inc. [AMD/ATI]
    Driver in use: amdgpu
    VBIOS Version: 113-1E3871U-O4C
    VRAM Size: 4096
    Link Speed: 8.0 GT/s PCIe
    
  • Getting current GPU stats:

    lact-cli metrics

    Example output:

    VRAM Usage: 545/4096MiB
    Temperature: 46°C
    Fan Speed: 785/3200RPM
    GPU Clock: 783MHz
    GPU Voltage: 0.975V
    VRAM Clock: 1750MHz
    Power Usage: 38/155W
    
  • Showing the current fan curve:

    lact-cli curve status

    Example output:

    Fan curve:
    20C°: 0%
    40C°: 0%
    60C°: 50%
    80C°: 88%
    100C°: 100%
    

Reporting issues

When reporting issues, please include your system info and GPU model.

If there's a crash, run lact-gui from the command line to get logs, or use journalctl -u lactd to see if the daemon crashed.

If there's an issue with GPU model identification please report it here, include your GPU model and the output of cat /sys/class/drm/card*/device/uevent.

Issues

Collection of the latest Issues

MrWissenschaft

MrWissenschaft

4

Hello there!

When trying to edit OC settings, I only have power cap and Automatic/Lowest Clocks/Highest Clocks available to me.

I have the ppfeaturemask set as a boot parameter correctly, and have been using a manual overclock for some time now, wanted to try out your software but I'm running into this issue

Is it because lact-gui needs to be run as sudo? I have initiated lact-gui from root using su but the issue still persists.

Any help would be greatly appreciated, my specs are below :)

Thanks!

OS: Arch Linux x86_64 Kernel: 5.15.11-230-tkg-pds-llvm Shell: fish 3.3.1 Resolution: 2560x1440 WM: sway Theme: Adwaita [GTK2], dracula [GTK3] Icons: Adwaita [GTK2], Tela-circle-purple-dark [GTK3] Terminal: kitty CPU: AMD Ryzen 9 3900X (24) @ 3.800GHz GPU: AMD ATI Radeon RX 6800/6800 XT / 6900 XT Memory: 2316MiB / 32084MiB

EDIT: just in case, here is the output for "/sys/class/drm/card*/device/uevent"

MAJOR=226 MINOR=0 DEVNAME=dri/card0 DEVTYPE=drm_minor MAJOR=226 MINOR=0 DEVNAME=dri/card0 DEVTYPE=drm_minor MAJOR=226 MINOR=0 DEVNAME=dri/card0 DEVTYPE=drm_minor MAJOR=226 MINOR=0 DEVNAME=dri/card0 DEVTYPE=drm_minor DRIVER=amdgpu PCI_CLASS=30000 PCI_ID=1002:73BF PCI_SUBSYS_ID=148C:2408 PCI_SLOT_NAME=0000:2f:00.0 MODALIAS=pci:v00001002d000073BFsv0000148Csd00002408bc03sc00i00

EDITEDIT: lact-cli info shows GPU as blank, see below:

GPU Model: GPU Vendor: Advanced Micro Devices, Inc. [AMD/ATI] Driver in use: amdgpu VBIOS Version: 113-D41201-XT VRAM Size: 16368 Link Speed: 16.0 GT/s PCIe

However, lact-gui confirms it to be a Navi21 [Radeon RX 6800/6800 XT / 6900 XT] (it even confirms the brand of my GPU, Powercolor)

LAST EDIT I PROMISE: just to confirm journalctl shows no errors for lactd and lact-gui has no errors whatsoever when run from terminal

Big-FG

Big-FG

2

I noticed in the readme that nothing about doing finer control of the fan curve is mentioned. The daemon seems to have no problem with doing this if you manually create fan speed and temp targets in the Json and works well for creating specific temp/fan targets. I havent tested beyond adding just one step fyi but fan control seems to work much better than radeon-profile and corectrl which both seem to cause the fan to get stuck in higher speed modes

I.E

default

edited to add 0rpm fan mode below 50c

Big-FG

Big-FG

bug
4

Ive noticed that on my 5700xt the values for core/mem freq arent restored by the daemon upon returning from system suspend state. The power limit and fan curves work as desired but not the clocks.

The core/mem freq also arent written to the json file by the gui which im not sure if thats intentional. If you manually edit the json its fine.

ilyazzz

ilyazzz

help wanted
3

There is a .deb package for LACT now that was created using this tool, it can be downloaded from the releases page. I've tested it on a pop_os VM and it seems to work fine, however I'd like to receive feedback on how it works on other debian-based systems.

murlakatamenka

murlakatamenka

2

Hi, I have R9 290 GPU and it doesn't support fine tuning Polaris+ cards have, i.e. setting precise clocks and voltages via /sys/class/drm/card0/device/pp_od_clk_voltage SysFS, it simply doesn't exist for my GPU.

However, I can still control the card via enabling specific p-states (#404):

Do you think you can support GPU control in such way?

ilyazzz

ilyazzz

9

It would be nice for LACT to have an icon. If anyone wants to make one or finds one with a license that allows it's usage, suggest it here.

Alexander-LIT

Alexander-LIT

kernel bug
5

After my comment on Reddit the 6900XT Red 'Devil is now correctly identified. Thank you!

Another issue that I found is that while the slider to control the fans do seem to work perfectly, the reported Fan Speed is always 0 RPM and 0%. I am not sure if this is an issue with the application or whether the feature is not fully supported in the kernel yet? It "sort of" works in CoreCtl where it will sometimes show fanspeed, and no fanspeed at others.

I am on Manjaro with Kernel 5.11.1-1 with Mesa 20.3.4-3 if that helps.

Edit: Additional feedback would be that it might be nice to be able to see the current temperture and perhaps fan speed in the OC tab. Generally, if I am overclocking something, I also monitor the temperature. This would remove the need to switch back and forth between tabs. Maybe renaming the "Thermals" tab to something like "Fancontrol" would make sense in that case.

Cheers!

Full blast fans at 0% 2021-03-02_13-06

WyekS

WyekS

good first issue
25

System:

  • Manjaro Linux
  • Kernel 5.10.7 (Mirrorlist from Arch)
  • Asus Radeon ROG Strix RX5700 XT

Steps:

  • Install from AUR this package
  • Enable and start service
  • Run application

Trace error:

Versions

Find the latest versions by id

Information - Updated Mar 31, 2022

Stars: 64
Forks: 2
Issues: 13

Repositories & Extras

pancurses is a curses library for Rust that supports both Linux and Windows

by abstracting away the backend that it uses

pancurses is a curses library for Rust that supports both Linux and Windows

Native Rust library for managing Linux Control Groups (cgroups)

This crate, curently, only supports the original, V1 hierarchy

Native Rust library for managing Linux Control Groups (cgroups)

The Rust spidev seeks to provide full access to the Linux spidev

The following is not an exhaustive demonstration of the Spidev

The Rust spidev seeks to provide full access to the Linux spidev

a minimal Linux kernel module written in rust

A recent build of Rust (latest nightly)

a minimal Linux kernel module written in rust

Rust Linux Worker

The Service executes arbitrary Linux commands on behalf of clients

Rust Linux Worker

Direct, unsafe Rust bindings for Linux's perf_event_open system call

This crate exports unsafe Rust wrappers for Linux system calls for accessing

Direct, unsafe Rust bindings for Linux's perf_event_open system call

A safe, sane Rust interface to libseccomp on Linux

Note: This is not a high-level interface; most functions/methods in this library directly correspond to a libseccomp function

A safe, sane Rust interface to libseccomp on Linux

A transparent TCP to SOCKSv5/HTTP proxy on Linux written in Rust

Transparent TCP proxy with iptables -j REDIRECT or nft redirect to

A transparent TCP to SOCKSv5/HTTP proxy on Linux written in Rust

Linux-Device-Driver-Rust

This is a twain Repo of Linux-Device-Driver is a long time work in which I rewrite all examples in

Linux-Device-Driver-Rust

Simple, performant hot-reloading for Rust

Requires Rust nightly and only works on Linux and Windows for now

Simple, performant hot-reloading for Rust
Facebook Instagram Twitter GitHub Dribbble
Privacy