LACT
LACT copied to clipboard
RX 6900XT - cannot change OC settings
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
Could you post the output of cat /sys/class/drm/card*/device/pp_od_clk_voltage
?
Could you post the output of
cat /sys/class/drm/card*/device/pp_od_clk_voltage
?
As requested!
cat /sys/class/drm/card*/device/pp_od_clk_voltage
OD_SCLK: 0: 500Mhz 1: 2499Mhz OD_MCLK: 0: 97Mhz 1: 1000MHz OD_VDDGFX_OFFSET: 0mV OD_RANGE: SCLK: 500Mhz 3000Mhz MCLK: 674Mhz 1075Mhz
It looks like big navi GPUs use a different format for the overclocking table compared to earlier generations, which is currently not supported. I will probably have to do a major rewrite in order to support the different formats in a generic manner.
For now you can try CoreCtrl and see if that works for you instead.
I won't use corectrl again, not that it's a bad bit of software but because it has to be running all the time, I much prefer your method of creating a daemon, very impressive stuff.
I will use the manual overlclock method for now but continue using your daemon for fan control, it works very well
Keep up the good work, and if you need any bits of info from my rig to help you with the rewrite, please let me know!
Thanks
Andrew
@MrWissenschaft sorry for the very long delay, but the rewrite is now out and supports the new format. While I don't have a GPU to test it on, there are software tests using the table you provided, so it should work.
strange I'm running a RX 6700XT and I still only have Highest, lowest and auto here the cat output for my card
OD_SCLK:
0: 500Mhz
1: 2725Mhz
OD_MCLK:
0: 97Mhz
1: 1000MHz
OD_VDDGFX_OFFSET:
0mV
OD_RANGE:
SCLK: 500Mhz 2800Mhz
MCLK: 674Mhz 1075Mhz
strange I'm running a RX 6700XT and I still only have Highest, lowest and auto here the cat output for my card
OD_SCLK: 0: 500Mhz 1: 2725Mhz OD_MCLK: 0: 97Mhz 1: 1000MHz OD_VDDGFX_OFFSET: 0mV OD_RANGE: SCLK: 500Mhz 2800Mhz MCLK: 674Mhz 1075Mhz
Could you run
RUST_LOG=debug lact gui
And post the logs?
[paehyr@paehyr-ms7c02 ~]$ RUST_LOG=debug lact gui
2023-02-26T09:58:11.381254Z INFO lact_client: connecting to service at "/var/run/lactd.sock"
2023-02-26T09:58:11.401051Z DEBUG lact_gui::app: GPU Selection changed
2023-02-26T09:58:11.434104Z DEBUG lact_gui::app: could not extract clocks info: Got error from daemon: Clocks table not available: parse error: parse error: Could not parse level number with value od_vddgfx_offset: invalid digit found in string at line 7 at line 1
2023-02-26T09:58:11.434132Z DEBUG lact_gui::app: Updated current GPU id
(lact:13318): Gtk-WARNING **: 03:58:17.205: GtkGizmo 0x5587613e2a00 (slider) reported min width -2, but sizes must be >= 0
(lact:13318): Gtk-WARNING **: 03:58:17.205: GtkGizmo 0x5587613e26c0 (slider) reported min height -2, but sizes must be >= 0
[paehyr@paehyr-ms7c02 ~]$ RUST_LOG=debug lact gui 2023-02-26T09:58:11.381254Z INFO lact_client: connecting to service at "/var/run/lactd.sock" 2023-02-26T09:58:11.401051Z DEBUG lact_gui::app: GPU Selection changed 2023-02-26T09:58:11.434104Z DEBUG lact_gui::app: could not extract clocks info: Got error from daemon: Clocks table not available: parse error: parse error: Could not parse level number with value od_vddgfx_offset: invalid digit found in string at line 7 at line 1 2023-02-26T09:58:11.434132Z DEBUG lact_gui::app: Updated current GPU id (lact:13318): Gtk-WARNING **: 03:58:17.205: GtkGizmo 0x5587613e2a00 (slider) reported min width -2, but sizes must be >= 0 (lact:13318): Gtk-WARNING **: 03:58:17.205: GtkGizmo 0x5587613e26c0 (slider) reported min height -2, but sizes must be >= 0
Could you post /sys/class/drm/card0/device/pp_od_clk_voltage
as a file attachment, as opposed to printing it out to console and copying it? It looks like there might be some invalid characters in there that get skipped when you cat
it.
Edit: you might have to create an archive with zip -r pp_od_clk_voltage.zip /sys/class/drm/card0/device/pp_od_clk_voltage
, as Github doesn't allow uploading files of unknown formats
This zip was extremely helpful, for some reason the clocks table file has null bytes around some lines, and they're not shown when posting as text. I've updated the parser to handle this.
Please try running the latest git version now (lact-git
on Arch or package from this release for deb/rpm) and tell me if it fixes the problem.
I have an RX6800 and I'm facing the same issue. I've tried lact-git-r303.72cd453-1 on ARCH.
my pp_od_clk_voltage shows next
OD_SCLK:
0: 500Mhz
1: 2314Mhz
OD_MCLK:
0: 97Mhz
1: 1000MHz
OD_VDDGFX_OFFSET:
0mV
OD_RANGE:
SCLK: 500Mhz 2600Mhz
MCLK: 674Mhz 1075Mhz
Also if I try to write changes to vram clock next error pops up
DEBUG lact_gui::app: applying thermal settings: ThermalsSettings { manual_fan_control: false, curve: Some({30: 0.0, 40: 0.2, 50: 0.35, 60: 0.5, 70: 0.75, 80: 1.0}) } 2023-02-26T11:44:30.226458Z WARN lact_gui::app: Could not apply settings
Caused by: 0: Could not set the maximum memory clock 1: Got error from daemon: Could not apply settings: Could not write clocks table: io error: Invalid argument (os error 22)
https://pastebin.com/qLnFCbgR new logs gui is also incorrect: gpu clock has nothing, gpu voltage also has nothing, VRAM looks like it would work but it doesn't apply see error in logs
I've got access to an RX 6000 series GPU, and there are several problems with some weird behaviour from the driver's side which prevent tweaking from working. Hopefully I will be able to resolve them over the next few days.
amazing!
I just pushed some changes which I've tested to work on a 6900XT, please test again and tell me if it works on other models.
Thanks for the fix! Sadly it doesn't fully solve my problem.
Now LACT correctly reports all the gpu related (voltage an clock) stuff but still refuses to allow OC\undervolt with the next error
Caused by: 0: Could not set the maximum core clock 1: Got error from daemon: Could not apply settings: not allowed: GPU does not report allowed OD ranges
I'm on 6.2.0-arch1-1 and rx 6800 with next mesa libs
lib32-mesa 22.3.6-1 mesa 23.0.0-1 mesa-demos 8.5.0-2 mesa-utils 8.5.0-2 mesa-vdpau 22.3.6-1
If any additional info is required - feel free to ask.
One again - thank you!
hmm it works for me have you restarted the daemon?
Thanks for the fix! Sadly it doesn't fully solve my problem.
Now LACT correctly reports all the gpu related (voltage an clock) stuff but still refuses to allow OC\undervolt with the next error
Caused by: 0: Could not set the maximum core clock 1: Got error from daemon: Could not apply settings: not allowed: GPU does not report allowed OD ranges
I'm on 6.2.0-arch1-1 and rx 6800 with next mesa libs
lib32-mesa 22.3.6-1 mesa 23.0.0-1 mesa-demos 8.5.0-2 mesa-utils 8.5.0-2 mesa-vdpau 22.3.6-1
If any additional info is required - feel free to ask.
One again - thank you!
That is weird, as local tests with the file you provided pass fine. Have you restarted the daemon after updating (sudo systemctl restart lactd
)?
If so, please update again and post the output when running RUST_LOG=debug lact
@ilya-zlobintsev I've restarted the daemon - it didn't help immediately. I've re-enabled the daemon and then restarted my pc. Now everything works perfect.
Alright, I'm closing this as multiple people with RX 6000 series GPUs have confirmed it working.