2020-10-30 02:12:15 -05:00
# Linux AMDGPU Control Application
2023-02-19 13:35:07 -06:00
< img src = "res/io.github.lact-linux.png" alt = "icon" width = "100" / >
2023-02-19 13:21:16 -06:00
2020-10-30 02:12:15 -05:00
This application allows you to control your AMD GPU on a Linux system.
2023-02-25 06:47:57 -06:00
| GPU info | Overclocking | Fan control |
2020-11-20 03:04:05 -06:00
|----------------------------------------------|----------------------------------------------|---------------------------------------------|
2023-06-03 00:32:33 -05:00
||||
2020-10-30 02:12:15 -05:00
Current features:
- Viewing information about the GPU
- Power/thermals monitoring
- Fan curve control
2023-07-02 00:11:16 -05:00
- Overclocking (GPU/VRAM clockspeed, voltage)
2020-10-30 02:12:15 -05:00
Currently missing:
2023-07-02 00:11:16 -05:00
- Power states configuration
2020-10-30 02:12:15 -05:00
# Installation
2021-03-24 11:18:54 -05:00
- Arch Linux: Install the [AUR Package ](https://aur.archlinux.org/packages/lact/ ) (or the -git version)
2023-10-21 06:39:38 -05:00
- Debian/Ubuntu/Derivatives: Download a .deb from [releases ](https://github.com/ilya-zlobintsev/LACT/releases/ ).
2023-02-25 05:28:27 -06:00
It is only available on Debian 12+ and Ubuntu 22.04+ as older versions don't ship gtk4.
- Fedora: an rpm is available in [releases ](https://github.com/ilya-zlobintsev/LACT/releases/ ).
2023-10-21 11:02:19 -05:00
- NixOS: There is a package available on the [unstable channel ](https://search.nixos.org/packages?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=lact )
2023-02-25 06:33:11 -06:00
- Otherwise, build from source.
2021-03-24 11:18:54 -05:00
2023-02-25 05:28:27 -06:00
**Why is there no AppImage/Flatpak/other universal format?**
See [here ](./pkg/README.md ).
2023-03-05 03:02:21 -06:00
# 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 GUI to change settings and view information.
2023-02-25 05:28:27 -06:00
# Configuration
There is a configuration file available in `/etc/lact/config.yaml` . Most of the settings are accessible through the GUI, but some of them may be useful to be edited manually (like `admin_groups` to specify who has access to the daemon)
2021-03-24 11:18:54 -05:00
2023-03-04 05:15:11 -06:00
# Overclocking
The overclocking functionality is disabled by default in the driver. There are two ways to enable it:
- By using the "enable overclocking" option in the LACT GUI. This will create a file in `/etc/modprobe.d` that enables the required driver options. This is the easiest way and it should work for most people.
- Specifying a boot parameter. You can manually specify the `amdgpu.ppfeaturemask=0xffffffff` kernel parameter in your bootloader to enable overclocking. See the [ArchWiki ](https://wiki.archlinux.org/title/AMDGPU#Boot_parameter ) for more details.
2023-11-04 02:18:29 -05:00
# Hardware support
Tested GPU generations:
- [X] Polaris (RX 500 series)
- [X] Vega
- [X] RDNA1 (RX 5000 series)
- [X] RDNA2 (RX 6000 series)
- [ ] RDNA3 (RX 7000 series) - overclocking is not available on stable kernel versions, and is [expected to land in Linux 6.7 ](https://gitlab.freedesktop.org/drm/amd/-/issues/2840#note_2079945 )
GPUs not listed here will still work, but might not have full functionality available.
Monitoring/system info will be available everywhere. Integrated GPUs might also only have basic configuration available.
2023-03-05 03:02:21 -06:00
# Suspend/Resume
As some of the GPU settings may get reset when suspending the system, LACT will reload them on system resume. This may not work on distributions which don't use systemd, as it relies on the `org.freedesktop.login2` DBus interface.
2021-03-24 11:18:54 -05:00
# Building from source
2023-02-25 05:28:27 -06:00
Dependencies:
- rust
- gtk4
- pkg-config
- make
- hwdata
2023-03-18 07:30:22 -05:00
- libdrm
2023-11-19 07:03:39 -06:00
- blueprint-compiler
2021-03-02 09:38:12 -06:00
2023-02-25 05:28:27 -06:00
Steps:
- `git clone https://github.com/ilya-zlobintsev/LACT && cd LACT`
- `make`
- `sudo make install`
2020-10-30 02:12:15 -05:00
2023-03-18 07:30:22 -05:00
It's also possible to build LACT without some of the features by using cargo feature flags.
This can be useful if some dependency is not available on your system, or is too old.
Build without DRM support (some GPU information will not be available):
```
cargo build --no-default-features -p lact --features=lact-gui
```
Minimal build (no GUI!):
```
cargo build --no-default-features -p lact
```
2023-02-25 06:31:51 -06:00
# API
2023-03-05 03:02:21 -06:00
2023-02-25 06:31:51 -06:00
There is an API available over a unix socket. See [here ](API.md ) for more information.
2021-02-27 23:59:00 -06:00
# CLI
There is also a cli available.
2023-02-25 06:47:57 -06:00
- List system GPUs:
2021-02-27 23:59:00 -06:00
2023-02-25 06:47:57 -06:00
`lact cli list-gpus`
2021-02-27 23:59:00 -06:00
Example output:
```
2023-02-25 06:47:57 -06:00
1002:687F-1043:0555-0000:0b:00.0 (Vega 10 XL/XT [Radeon RX Vega 56/64])
2021-02-27 23:59:00 -06:00
```
2023-02-25 06:47:57 -06:00
- Getting GPU information:
2021-02-27 23:59:00 -06:00
2023-02-25 06:47:57 -06:00
`lact cli info`
2021-02-27 23:59:00 -06:00
Example output:
```
2023-02-25 06:47:57 -06:00
lact cli info
GPU Vendor: Advanced Micro Devices, Inc. [AMD/ATI]
GPU Model: Vega 10 XL/XT [Radeon RX Vega 56/64]
Driver in use: amdgpu
VBIOS version: 115-D050PIL-100
Link: LinkInfo { current_width: Some("16"), current_speed: Some("8.0 GT/s PCIe"), max_width: Some("16"), max_speed: Some("8.0 GT/s PCIe") }
2021-02-27 23:59:00 -06:00
```
2023-02-25 06:47:57 -06:00
The functionality of the CLI is quite limited. If you want to integrate LACT with some application/script, you should use the [API ](API.md ) instead.
2021-03-03 00:21:29 -06:00
# Reporting issues
2023-02-25 05:28:27 -06:00
When reporting issues, please include your system info and GPU model.
2021-03-03 00:21:29 -06:00
2023-02-25 05:28:27 -06:00
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.
2021-03-03 00:21:29 -06:00
2022-01-02 00:48:10 -06:00
# Alternatives
2023-02-25 05:28:27 -06:00
If LACT doesn't do what you want, make sure to check out [CoreCtrl ](https://gitlab.com/corectrl/corectrl ).