eraden / amdgpud Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
I get this message every time update my packages with yay or paru:
:: Synchronizing package databases... core is up to date extra is up to date multilib is up to date :: Searching AUR for updates... :: Searching databases for updates... -> amdfand-bin: local (1.0.13-4) is newer than AUR (1.0.11-2)
I guess it is problem with AUR package but is there anyway to fix that?
I am having issues installing and building amdfand version 1.0.12-1 from the aur on my arch linux build.
When updating the package, I run into the following error message:
Compiling unwinding v0.2.1
error[E0554]: `#![feature]` may not be used on the stable release channel
--> /tmp/makepkg/.cargo/registry/src/index.crates.io-6f17d22bba15001f/unwinding-0.2.1/src/lib.rs:2:1
|
2 | #![feature(c_unwind)]
| ^^^^^^^^^^^^^^^^^^^^^
error[E0554]: `#![feature]` may not be used on the stable release channel
--> /tmp/makepkg/.cargo/registry/src/index.crates.io-6f17d22bba15001f/unwinding-0.2.1/src/lib.rs:3:1
|
3 | #![feature(naked_functions)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0554]: `#![feature]` may not be used on the stable release channel
--> /tmp/makepkg/.cargo/registry/src/index.crates.io-6f17d22bba15001f/unwinding-0.2.1/src/lib.rs:4:1
|
4 | #![feature(non_exhaustive_omitted_patterns_lint)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For more information about this error, try `rustc --explain E0554`.
error: could not compile `unwinding` (lib) due to 3 previous errors
My setup:
Kernel: 6.7.0-arch3-1
DE: Plasma 5.27.10
I have strange behavior during boot with the new version.
service auto restarting provides the same result, but the system reboot has been successful.
it happened twice already. seems, it happens randomly
during boot. no service crash after boot.
it was linux-kernel update before. i am using manjaro-unstable (archlinux-stable).
but, strange that with the same software reboot helps after error during boot.
$ journalctl -xb -1 -u amdfand.service
Feb 12 10:29:16 dulia systemd[1]: Started AMD GPU fan daemon.
░░ Subject: A start job for unit amdfand.service has finished successfully
░░ Defined-By: systemd
░░ Support: https://forum.manjaro.org/c/support
░░
░░ A start job for unit amdfand.service has finished successfully.
░░
░░ The job identifier is 103.
Feb 12 10:29:16 dulia amdfand[664]: ERROR amdfand > LockExists
Feb 12 10:29:16 dulia systemd[1]: amdfand.service: Main process exited, code=exited, status=1/FAILURE
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://forum.manjaro.org/c/support
░░
░░ An ExecStart= process belonging to unit amdfand.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 1.
Feb 12 10:29:16 dulia systemd[1]: amdfand.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://forum.manjaro.org/c/support
░░
░░ The unit amdfand.service has entered the 'failed' state with result 'exit-code'.
Feb 12 10:29:20 dulia systemd[1]: amdfand.service: Scheduled restart job, restart counter is at 1.
░░ Subject: Automatic restarting of a unit has been scheduled
░░ Defined-By: systemd
░░ Support: https://forum.manjaro.org/c/support
░░
░░ Automatic restarting of the unit amdfand.service has been scheduled, as the result for
░░ the configured Restart= setting for the unit.
Feb 12 10:29:20 dulia systemd[1]: Stopped AMD GPU fan daemon.
~❯ pacman -Qi amdfand-bin
Name : amdfand-bin
Version : 1.0.9-3
~❯ inxi -G --display
Graphics:
Device-1: AMD Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] driver: amdgpu v: kernel
Display: x11 server: X.Org 1.21.1.3 driver: loaded: amdgpu resolution: 1920x1080~60Hz
OpenGL:
renderer: AMD Radeon RX 550 / 550 Series (POLARIS12 DRM 3.44.0 5.16.9-1-MANJARO LLVM 13.0.0)
v: 4.6 Mesa 21.3.5
@BoostCookie please elaborate
Currently the GPU fans are not ramping up when required on my system when they should be. Having a mechanism implemented that allows an bias/increase when the GPU has activity above a certain threshold would resolve this.
I have set the fan curves in amdfand
to be at ~700 RPM when the GPU is <40C doing mundane tasks like web browsing.
When I play CPU heavy games that don't load the GPU as much, the reported temperature of the GPU does not increase; while physically I can feel the lower part of the front panel (GPU location) getting hotter.
The reported GPU temperature not reflecting reality seems to only happen when the GPU isn't loaded as much. In more GPU heavy games the reported temperature of the GPU does go up.
Increasing the fan speed for all use cases is not something I'd like to do, as it'd increase wear and maintenance on the fans and build up dust unnecessarily.
Basicly I want the fans to only ramp up when truly required.
Having some configurable increase that gets added to each curve when the GPU activity peaked over e.g. >30% (configurable) in the last 60s (configurable) interval would help a ton in this regard and increase the CFM of the fans of the GPU to a point where it is not "hotboxing" the case.
I installed amdguid with
crate install amdguid
and in the same fashion I installed amdfand, amdvold and amdmond.
I ran amdguid from my terminal, and I see a window where GUI is tiny, in top left corner and other 3 fourths are blue with a red triangle in the middle??? and my terminal is mad btw:
WARN amdguid::app > Failed to load amd fan services pid list. GuiHelper(NoSockFile)
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
INFO winit::platform_impl::platform::x11::window > Guessed window scale factor: 2
DEBUG winit::platform_impl::platform::x11::window > Calculated physical dimensions: 1024x768
WARN amdguid::app > Failed to load amd fan services pid list. GuiHelper(NoSockFile)
WARN amdguid::app > Failed to load amd fan services pid list. GuiHelper(NoSockFile)
WARN amdguid::app > Failed to load amd fan services pid list. GuiHelper(NoSockFile)
WARN amdguid::app > Failed to load amd fan services pid list. GuiHelper(NoSockFile)
WARN amdguid::app > Failed to load amd fan services pid list. GuiHelper(NoSockFile)
WARN amdguid::app > Failed to load amd fan services pid list. GuiHelper(NoSockFile)
WARN amdguid::app > Failed to load amd fan services pid list. GuiHelper(NoSockFile)
...
I have an NVidia and an AMD card installed and every so often the mapping in /sys/class/drm
changes.
Sometimes card0
is the AMD card and another time it's the NVidia card.
As a workaround I added cards = ["card0", "card1"]
to the config.toml
As of now, I haven't found a way to always refer to the right card.
I guess this is more of a nitpick than an outright issue, but the two axes of the graph should be swapped. The independent variable which is temperature belongs on the x axis and the y axis should be speed since it's dependent on temperature.
Recently i've noticed that the fan speed sometimes doesn't increase + I get these errors (output from journalctl) when doing gpu intensive tasks:
Mar 08 14:50:49 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
Mar 08 14:52:49 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
Mar 08 14:52:53 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
Mar 08 14:52:57 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
Mar 08 14:53:01 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
Mar 08 14:53:05 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
Mar 08 14:55:53 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
Mar 08 14:55:57 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
Mar 08 14:56:05 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
Mar 08 14:56:09 [HostName] amdfand[448]: ERROR amdfand::service > Failed to change speed to 100. Fan(FailedToChangeSpeed { value: 255, error: Write { io: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }, path: "/sys/class/drm/card0/device/hwmon/hwmon0/pwm1" } })
When I manually su
into root and echo "1" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable
(enable manual fan control), the errors stop and my fan speed starts to change as usual.
This has been been happening more recently, but wasn't the case before.
Is this behaviour normal?
(If the issue is actually a bug in the code)
Implement a check to see if manual fan control is enabled when the above error occurs, and enable it if not.
A manual check can be performed by reading the file sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable
(1 = manual fan control)
OS: Arch linux
When I have a temperature followed by a lower temperature in my config then I expect to get this message
Lines 246 to 252 in 90e1dcd
Error: Kind(InvalidData)
.
I do have log_level = "Error"
in my config.toml.
The current build.tar.gz somehow doesn't have the current version of amdfand.service in it.
https://github.com/Eraden/amdgpud/releases/tag/1.0.5
Hi, first of all your project is awesome! Wanna report an issue.
I've build v1.0.8 tag and found an issue with config parsing. I used default example config from examples and got:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { inner: ErrorInner { kind: Custom, line: Some(24), col: 0, at: Some(268), message: "missing field `interval`", key: [] } }', /home/ab/repos/amdgpud/amdgpu/src/utils.rs:92:58 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace Aborted (core dumped)
I've made some research and know the point.
Here is a default values but it works if neither interval
nor log_level
are defined:
amdgpud/amdgpu-config/src/monitor.rs
Lines 22 to 29 in de5f2b7
But if I have config without interval
but log_level
and vice versa it fails. Looks like need to check unexciting values and define it with default.
Here is an error, config.interval doesn't exist:
amdgpud/amdgpu-config/src/monitor.rs
Lines 44 to 50 in de5f2b7
Amdfand service sometimes requires manual start (sudo amdfand in terminal) after system startup.
I have no idea why fans sometimes start spinning and other time doesn't.
I have this in a config file so temperature settings aren't an explanation to this problem.
[[speed_matrix]]
temp = 4.0
speed = 10.0
Services...
rc-update -a
amdfand | default
We should return to automatic mode pwm1_enable=2
when terminating the process. Also when catching an error before exiting the program.
Linux unfortunately does not assign card to same /sys/class/drm/card and for more than one card, card number will change.
Easiest fix without enforcing some changes on user operating system and without changing config files will be changing cards to
enum CardConfig {
All,
Specified(Vec<Card>>
}
Ahoj,
Build fails with
error[E0432]: unresolved imports `crate::app::ImageStorage`, `crate::app::ImageType`
and subsequent errors (E0061, E0277, E0308, E0432, E0433, E0599, E0659).
I am building this using the following recipe (inspired by ↗ this PKGBUILD
):
export CARGO_HOME=/tmp/cargo
export RUSTUP_HOME=/tmp/rustup
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR=target
export CARCH=x86_64
git clone --depth 1 --single-branch --shallow-submodules https://github.com/Eraden/amdgpud amdgpud
cd amdgpud
cargo fetch --locked --target "$CARCH-unknown-linux-gnu"
cargo build --release --frozen --all-features --target="$CARCH-unknown-linux-gnu"
My checkout of https://github.com/Eraden/amdgpud is at the following commit:
git log -n1
:
commit 9242681bb2726f41d867094f6c3e2b8a1447fa9d (grafted, HEAD -> main, origin/main, origin/HEAD)
Author: Adrian Woźniak <[email protected]>
Date: Thu Aug 25 15:12:11 2022 +0200
Change button to label
Terminal output from cargo fetch --locked --target "$CARCH-unknown-linux-gnu"
:
warning: some crates are on edition 2021 which defaults to `resolver = "2"`, but virtual workspaces default to `resolver = "1"`
note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
Updating crates.io index
Downloaded either v1.7.0
[...]
Downloaded 239 crates (34.4 MB) in 46.31s (largest was `shaderc-sys` at 6.8 MB)
Terminal output from cargo build --release --frozen --all-features --target="$CARCH-unknown-linux-gnu"
:
warning: some crates are on edition 2021 which defaults to `resolver = "2"`, but virtual workspaces default to `resolver = "1"`
note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
Compiling libc v0.2.132
[...]
Compiling nix v0.23.1
Compiling amdfan v0.1.0 (/tmp/makepkg/build/amdgpud-git/src/amdgpud/amdfan)
Compiling amdgui-helper v1.0.10 (/tmp/makepkg/build/amdgpud-git/src/amdgpud/amdgui-helper)
Compiling amdportsd v0.1.0 (/tmp/makepkg/build/amdgpud-git/src/amdgpud/amdportsd)
Compiling amdfand v1.0.13 (/tmp/makepkg/build/amdgpud-git/src/amdgpud/amdfand)
Compiling amdmond v1.0.10 (/tmp/makepkg/build/amdgpud-git/src/amdgpud/amdmond)
Compiling amdvold v1.0.10 (/tmp/makepkg/build/amdgpud-git/src/amdgpud/amdvold)
[...]
and then the next line is compilation of amdguid
which fails:
Compiling amdguid v1.0.12 (/tmp/makepkg/build/amdgpud-git/src/amdgpud/amdguid)
error[E0432]: unresolved imports `crate::app::ImageStorage`, `crate::app::ImageType`
--> amdguid/src/backend/glium_backend.rs:10:26
|
10 | use crate::app::{AmdGui, ImageStorage, ImageType};
| ^^^^^^^^^^^^ ^^^^^^^^^ no `ImageType` in `app`
| |
| no `ImageStorage` in `app`
|
= help: consider importing this enum instead:
vulkano::image::ImageType
error[E0433]: failed to resolve: could not find `EguiGlow` in `egui_glow`
--> amdguid/src/backend/glow_backend.rs:49:31
|
49 | let mut egui = egui_glow::EguiGlow::new(&gl_window, &gl);
| ^^^^^^^^ could not find `EguiGlow` in `egui_glow`
error[E0659]: `run_app` is ambiguous
--> amdguid/src/main.rs:28:14
|
28 | backend::run_app(amd_gui, receiver);
| ^^^^^^^ ambiguous name
|
= note: ambiguous because of multiple glob imports of a name in the same module
note: `run_app` could refer to the function imported here
--> amdguid/src/backend/mod.rs:13:9
|
13 | pub use glium_backend::*;
| ^^^^^^^^^^^^^^^^
= help: consider adding an explicit import of `run_app` to disambiguate
note: `run_app` could also refer to the function imported here
--> amdguid/src/backend/mod.rs:18:9
|
18 | pub use wayland_backend::*;
| ^^^^^^^^^^^^^^^^^^
= help: consider adding an explicit import of `run_app` to disambiguate
warning: unused import: `std::collections::HashMap`
--> amdguid/src/backend/glium_backend.rs:1:5
|
1 | use std::collections::HashMap;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: unused import: `std::rc::Rc`
--> amdguid/src/backend/glium_backend.rs:2:5
|
2 | use std::rc::Rc;
| ^^^^^^^^^^^
warning: unused import: `image::RgbaImage`
--> amdguid/src/backend/glium_backend.rs:6:5
|
6 | use image::RgbaImage;
| ^^^^^^^^^^^^^^^^
warning: use of deprecated associated function `glutin::event_loop::EventLoop::<T>::with_user_event`: Use `EventLoopBuilder::<T>::with_user_event().build()` instead.
--> amdguid/src/backend/glium_backend.rs:32:53
|
32 | let event_loop = glutin::event_loop::EventLoop::with_user_event();
| ^^^^^^^^^^^^^^^
|
= note: `#[warn(deprecated)]` on by default
error[E0308]: mismatched types
--> amdguid/src/backend/glium_backend.rs:35:47
|
35 | let mut egui = egui_glium::EguiGlium::new(&display);
| -------------------------- ^^^^^^^^ expected `glium::backend::glutin::Display`, found `glium::Display`
| |
| arguments to this function are incorrect
|
= note: `glium::Display` and `glium::backend::glutin::Display` have similar names, but are actually distinct types
note: `glium::Display` is defined in crate `glium`
--> /tmp/cargo/registry/src/index.crates.io-6f17d22bba15001f/glium-0.32.1/src/backend/glutin/mod.rs:36:1
|
36 | pub struct Display {
| ^^^^^^^^^^^^^^^^^^
note: `glium::backend::glutin::Display` is defined in crate `glium`
--> /tmp/cargo/registry/src/index.crates.io-6f17d22bba15001f/glium-0.31.0/src/backend/glutin/mod.rs:36:1
|
36 | pub struct Display {
| ^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate `glium` are being used?
note: associated function defined here
--> /tmp/cargo/registry/src/index.crates.io-6f17d22bba15001f/egui_glium-0.18.0/src/lib.rs:28:12
|
28 | pub fn new(display: &glium::Display) -> Self {
| ^^^
error[E0599]: no method named `begin_frame` found for struct `EguiGlium` in the current scope
--> amdguid/src/backend/glium_backend.rs:50:18
|
50 | egui.begin_frame(&display);
| ^^^^^^^^^^^ method not found in `EguiGlium`
|
help: one of the expressions' fields has a method of the same name
|
50 | egui.egui_ctx.begin_frame(&display);
| +++++++++
error[E0599]: no method named `ctx` found for struct `EguiGlium` in the current scope
--> amdguid/src/backend/glium_backend.rs:52:45
|
52 | create_ui(amd_gui.clone(), egui.ctx());
| ^^^ method not found in `EguiGlium`
error[E0599]: no method named `end_frame` found for struct `EguiGlium` in the current scope
--> amdguid/src/backend/glium_backend.rs:54:48
|
54 | let (needs_repaint, shapes) = egui.end_frame(&display);
| ^^^^^^^^^ method not found in `EguiGlium`
|
help: one of the expressions' fields has a method of the same name
|
54 | let (needs_repaint, shapes) = egui.egui_ctx.end_frame(&display);
| +++++++++
error[E0277]: the trait bound `glium::Frame: glium::Surface` is not satisfied
--> amdguid/src/backend/glium_backend.rs:69:38
|
69 | egui.paint(&display, &mut target, shapes);
| ----- ^^^^^^^^^^^ the trait `glium::Surface` is not implemented for `glium::Frame`
| |
| required by a bound introduced by this call
|
help: trait impl with same name found
--> /tmp/cargo/registry/src/index.crates.io-6f17d22bba15001f/glium-0.32.1/src/lib.rs:1285:1
|
1285 | impl Surface for Frame {
| ^^^^^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate `glium` are being used?
= help: the following other types implement trait `glium::Surface`:
glium::framebuffer::default_fb::DefaultFramebuffer
glium::framebuffer::SimpleFrameBuffer<'a>
glium::framebuffer::MultiOutputFrameBuffer<'a>
glium::framebuffer::EmptyFrameBuffer
glium::Frame
note: required by a bound in `EguiGlium::paint`
--> /tmp/cargo/registry/src/index.crates.io-6f17d22bba15001f/egui_glium-0.18.0/src/lib.rs:79:21
|
79 | pub fn paint<T: glium::Surface>(&mut self, display: &glium::Display, target: &mut T) {
| ^^^^^^^^^^^^^^ required by this bound in `EguiGlium::paint`
error[E0061]: this method takes 2 arguments but 3 arguments were supplied
--> amdguid/src/backend/glium_backend.rs:69:22
|
69 | egui.paint(&display, &mut target, shapes);
| ^^^^^ ----------
| |
| unexpected argument of type `&glium::Display`
| help: remove the extra argument
|
note: method defined here
--> /tmp/cargo/registry/src/index.crates.io-6f17d22bba15001f/egui_glium-0.18.0/src/lib.rs:79:12
|
79 | pub fn paint<T: glium::Surface>(&mut self, display: &glium::Display, target: &mut T) {
| ^^^^^
error[E0599]: no method named `is_quit_event` found for struct `EguiGlium` in the current scope
--> amdguid/src/backend/glium_backend.rs:79:25
|
79 | if egui.is_quit_event(&event) {
| ^^^^^^^^^^^^^ method not found in `EguiGlium`
error[E0308]: mismatched types
--> amdguid/src/backend/glium_backend.rs:83:31
|
83 | egui.on_event(&event);
| -------- ^^^^^^ expected `winit::event::WindowEvent<'_>`, found `glutin::event::WindowEvent<'_>`
| |
| arguments to this method are incorrect
|
= note: `glutin::event::WindowEvent<'_>` and `winit::event::WindowEvent<'_>` have similar names, but are actually distinct types
note: `glutin::event::WindowEvent<'_>` is defined in crate `winit`
--> /tmp/cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.27.2/src/event.rs:319:1
|
319 | pub enum WindowEvent<'a> {
| ^^^^^^^^^^^^^^^^^^^^^^^^
note: `winit::event::WindowEvent<'_>` is defined in crate `winit`
--> /tmp/cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.26.1/src/event.rs:211:1
|
211 | pub enum WindowEvent<'a> {
| ^^^^^^^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate `winit` are being used?
note: method defined here
--> /tmp/cargo/registry/src/index.crates.io-6f17d22bba15001f/egui_glium-0.18.0/src/lib.rs:48:12
|
48 | pub fn on_event(&mut self, event: &glium::glutin::event::WindowEvent<'_>) -> bool {
| ^^^^^^^^
warning: use of deprecated associated function `glutin::event_loop::EventLoop::<T>::with_user_event`: Use `EventLoopBuilder::<T>::with_user_event().build()` instead.
--> amdguid/src/backend/glow_backend.rs:46:53
|
46 | let event_loop = glutin::event_loop::EventLoop::with_user_event();
| ^^^^^^^^^^^^^^^
Some errors have detailed explanations: E0061, E0277, E0308, E0432, E0433, E0599, E0659.
For more information about an error, try `rustc --explain E0061`.
warning: `amdguid` (bin "amdguid") generated 5 warnings
error: could not compile `amdguid` (bin "amdguid") due to 11 previous errors; 5 warnings emitted
and the build process terminates with exitcode 101
.
Software versions:
cargo --version
: cargo 1.73.0
rustc --version
: rustc 1.73.0 (cc66ad468 2023-10-03) (Arch Linux rust 1:1.73.0-1)
Regards!
version used: git head 2c7dd81
toolchain used: stable-x86_64-unknown-linux-gnu
os: Linux Mint 20.2
$ cargo build --release
Downloaded gumdrop v0.8.0
Downloaded gumdrop_derive v0.8.0
Downloaded pretty_env_logger v0.4.0
Downloaded libc v0.2.97
Downloaded 4 crates (555.3 KB) in 0.68s
Compiling proc-macro2 v1.0.27
Compiling unicode-xid v0.2.2
Compiling syn v1.0.73
Compiling memchr v2.4.0
Compiling libc v0.2.97
Compiling serde_derive v1.0.126
Compiling log v0.4.14
Compiling cfg-if v1.0.0
error[E0463]: can't find crate for `core`
|
= note: the `x86_64-unknown-linux-musl` target may not be installed
= help: consider downloading the target with `rustup target add x86_64-unknown-linux-musl`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0463`.
error: could not compile `cfg-if`
To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed
Most likely a copypaste typo, as both crates are made by you.
Version 1.0.5 was working flawlessly and thank you for such practical service.
But, with version 1.0.6 i have following issue:
$ amdfand
ERROR amdfand > No hwmod has been found in sysfs
$ amdfand available
Available cards
* card0 -
$ cat /sys/class/hwmon/hwmon4/name
amdgpu
$ cat /sys/class/hwmon/hwmon4/temp1_input
26000
let me know, if you need more info
Hi there
I tried to follow the instruction but getting error on startup Error: Kind(InvalidData)
This project is missing a license file, so technically no one can use it.
You can pick one out from here.
Hello, been messing with amdgpufand daemon to run custom fan curve but it seems 0 rpm mode doesnt work for me at least with ref 6900 xt.
this is my config
#temp_input = "temp1_input"
log_level = "Info"
[[speed_matrix]]
temp = 50.0
speed = 0.0
[[speed_matrix]]
temp = 60.0
speed = 45.0
[[speed_matrix]]
temp = 65.0
speed = 50.0
[[speed_matrix]]
temp = 70.0
speed = 60.0
[[speed_matrix]]
temp = 80.0
speed = 70.0
[[speed_matrix]]
temp = 90.0
speed = 90.0
With certain clocks, voltages and power levels on a Vega 64, sometimes the VRAM temperature is falsely reported as 1 °C, in some scenarios even for prolonged periods of time.
I use the VRAM temperature as the value to regulate the fan speed as in most of (if not all) the time the VRAM is up to 10 °C hotter than the Core.
The temperature being reported as 1 °C means that the fans will stay turned off even if the VRAM (and maybe the core) are heating up to death, causing instability issues. To combat this, I'd like to set the fan speed to 100 % when temp <= 2 °C just to be on the safe side.
It would be nice to be able to do something like this:
temp_input = "temp3_input"
log_level = "Error"
[[speed_matrix]]
temp = 0.0
speed = 100.0
[[speed_matrix]]
temp = 2.0
speed = 100.0
[[speed_matrix]]
temp = 3.0
speed = 0.0
# and all the rest
However, this causes following error:
ERROR amdfand > Fan speed 1.0 for config entry 2 is lower than previous value 100.0. Entries must be sorted
ERROR amdgpu_config::fan > Curve fan speeds should be monotonically increasing, found 100 then 1
Error comes from https://github.com/Eraden/amdgpud/blob/main/crates/amdgpu-config/src/fan.rs#L300
Or, if you want to add new configs:
temp_input = "temp3_input"
log_level = "Error"
turn_off_below = 3.0
force_full_speed_at = [1.0, 80.0]
# and all the rest
Edit:
To clarify, what I want is to be able to set 100% fan speed when VRAM temp < 2 °C but still use the normal fan curve otherwise.
Given the AUR package has GPG key issues, I decided to try building from source, so I cloned the repository, ran rustup target add x86_64-unknown-linux-musl
, and ./scripts/build.sh
. However, I got this compilation error:
error[E0432]: unresolved imports `crate::app::ImageStorage`, `crate::app::ImageType`
--> amdguid/src/backend/glium_backend.rs:10:26
|
10 | use crate::app::{AmdGui, ImageStorage, ImageType};
| ^^^^^^^^^^^^ ^^^^^^^^^ no `ImageType` in `app`
| |
| no `ImageStorage` in `app`
warning: unused import: `std::collections::HashMap`
--> amdguid/src/backend/glium_backend.rs:1:5
|
1 | use std::collections::HashMap;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: unused import: `std::rc::Rc`
--> amdguid/src/backend/glium_backend.rs:2:5
|
2 | use std::rc::Rc;
| ^^^^^^^^^^^
warning: unused import: `image::RgbaImage`
--> amdguid/src/backend/glium_backend.rs:6:5
|
6 | use image::RgbaImage;
| ^^^^^^^^^^^^^^^^
warning: use of deprecated associated function `glium::glutin::event_loop::EventLoop::<T>::with_user_event`: Use `EventLoopBuilder::<T>::with_user_event().build()` instead.
--> amdguid/src/backend/glium_backend.rs:32:53
|
32 | let event_loop = glutin::event_loop::EventLoop::with_user_event();
| ^^^^^^^^^^^^^^^
|
= note: `#[warn(deprecated)]` on by default
error[E0308]: mismatched types
--> amdguid/src/backend/glium_backend.rs:35:47
|
35 | let mut egui = egui_glium::EguiGlium::new(&display);
| -------------------------- ^^^^^^^^ expected struct `glium::backend::glutin::Display`, found struct `glium::Display`
| |
| arguments to this function are incorrect
|
= note: struct `glium::Display` and struct `glium::backend::glutin::Display` have similar names, but are actually distinct types
note: struct `glium::Display` is defined in crate `glium`
--> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/glium-0.32.1/src/backend/glutin/mod.rs:36:1
|
36 | pub struct Display {
| ^^^^^^^^^^^^^^^^^^
note: struct `glium::backend::glutin::Display` is defined in crate `glium`
--> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/glium-0.31.0/src/backend/glutin/mod.rs:36:1
|
36 | pub struct Display {
| ^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate `glium` are being used?
note: associated function defined here
--> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/egui_glium-0.18.0/src/lib.rs:28:12
|
28 | pub fn new(display: &glium::Display) -> Self {
| ^^^
error[E0599]: no method named `begin_frame` found for struct `EguiGlium` in the current scope
--> amdguid/src/backend/glium_backend.rs:50:18
|
50 | egui.begin_frame(&display);
| ^^^^^^^^^^^ method not found in `EguiGlium`
|
help: one of the expressions' fields has a method of the same name
|
50 | egui.egui_ctx.begin_frame(&display);
| +++++++++
error[E0599]: no method named `ctx` found for struct `EguiGlium` in the current scope
--> amdguid/src/backend/glium_backend.rs:52:45
|
52 | create_ui(amd_gui.clone(), egui.ctx());
| ^^^ method not found in `EguiGlium`
error[E0599]: no method named `end_frame` found for struct `EguiGlium` in the current scope
--> amdguid/src/backend/glium_backend.rs:54:48
|
54 | let (needs_repaint, shapes) = egui.end_frame(&display);
| ^^^^^^^^^ method not found in `EguiGlium`
|
help: one of the expressions' fields has a method of the same name
|
54 | let (needs_repaint, shapes) = egui.egui_ctx.end_frame(&display);
| +++++++++
error[E0277]: the trait bound `glium::Frame: glium::Surface` is not satisfied
--> amdguid/src/backend/glium_backend.rs:69:38
|
69 | egui.paint(&display, &mut target, shapes);
| ----- ^^^^^^^^^^^ the trait `glium::Surface` is not implemented for `glium::Frame`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `glium::Surface`:
glium::Frame
glium::framebuffer::EmptyFrameBuffer
glium::framebuffer::MultiOutputFrameBuffer<'a>
glium::framebuffer::SimpleFrameBuffer<'a>
glium::framebuffer::default_fb::DefaultFramebuffer
note: required by a bound in `EguiGlium::paint`
--> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/egui_glium-0.18.0/src/lib.rs:79:21
|
79 | pub fn paint<T: glium::Surface>(&mut self, display: &glium::Display, target: &mut T) {
| ^^^^^^^^^^^^^^ required by this bound in `EguiGlium::paint`
error[E0061]: this method takes 2 arguments but 3 arguments were supplied
--> amdguid/src/backend/glium_backend.rs:69:22
|
69 | egui.paint(&display, &mut target, shapes);
| ^^^^^ -------- argument of type `&glium::Display` unexpected
|
note: associated function defined here
--> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/egui_glium-0.18.0/src/lib.rs:79:12
|
79 | pub fn paint<T: glium::Surface>(&mut self, display: &glium::Display, target: &mut T) {
| ^^^^^
help: remove the extra argument
|
69 | egui.paint(shapes, &mut target);
| ~~~~~~~~~~~~~~~~~~~~~
error[E0599]: no method named `is_quit_event` found for struct `EguiGlium` in the current scope
--> amdguid/src/backend/glium_backend.rs:79:25
|
79 | if egui.is_quit_event(&event) {
| ^^^^^^^^^^^^^ method not found in `EguiGlium`
error[E0308]: mismatched types
--> amdguid/src/backend/glium_backend.rs:83:31
|
83 | egui.on_event(&event);
| -------- ^^^^^^ expected enum `egui_glium::egui_winit::winit::event::WindowEvent`, found enum `glium::glutin::event::WindowEvent`
| |
| arguments to this method are incorrect
|
= note: enum `glium::glutin::event::WindowEvent` and enum `egui_glium::egui_winit::winit::event::WindowEvent` have similar names, but are actually distinct types
note: enum `glium::glutin::event::WindowEvent` is defined in crate `winit`
--> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.27.2/src/event.rs:319:1
|
319 | pub enum WindowEvent<'a> {
| ^^^^^^^^^^^^^^^^^^^^^^^^
note: enum `egui_glium::egui_winit::winit::event::WindowEvent` is defined in crate `winit`
--> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.26.1/src/event.rs:211:1
|
211 | pub enum WindowEvent<'a> {
| ^^^^^^^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate `winit` are being used?
note: associated function defined here
--> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/egui_glium-0.18.0/src/lib.rs:48:12
|
48 | pub fn on_event(&mut self, event: &glium::glutin::event::WindowEvent<'_>) -> bool {
| ^^^^^^^^
Some errors have detailed explanations: E0061, E0277, E0308, E0432, E0599.
For more information about an error, try `rustc --explain E0061`.
warning: `amdguid` (bin "amdguid") generated 4 warnings
error: could not compile `amdguid` due to 9 previous errors; 4 warnings emitted
There was problem accessing hwmon4 and hwmon3, how can I solve this problem?
sudo amdfand set-automatic
INFO amdfand > Config { path: "/etc/amdfand/config.toml", temp_input: Some(TempInput(1)), log_level: Error, cards: None, speed_matrix: [MatrixPoint { temp: 4.0, speed: 4.0 }, MatrixPoint { temp: 30.0, speed: 33.0 }, MatrixPoint { temp: 45.0, speed: 50.0 }, MatrixPoint { temp: 60.0, speed: 66.0 }, MatrixPoint { temp: 65.0, speed: 69.0 }, MatrixPoint { temp: 70.0, speed: 75.0 }, MatrixPoint { temp: 75.0, speed: 89.0 }, MatrixPoint { temp: 80.0, speed: 100.0 }] }
ERROR amdfand::change_mode > Fan(AutomaticSpeedFailed(Write { io: Os { code: 13, kind: PermissionDenied, message: "Permission denied" }, path: "/sys/class/drm/card1/device/hwmon/hwmon4/pwm1_enable" }))
ERROR amdfand::change_mode > Fan(AutomaticSpeedFailed(Write { io: Os { code: 13, kind: PermissionDenied, message: "Permission denied" }, path: "/sys/class/drm/card0/device/hwmon/hwmon3/pwm1_enable" }))
fancontrol-gui is a very nice visual front-end to fancontrol.
fancontrol-kcm integrates fancontrol-gui with KDE Control Center which is even better, as it allows the user to have all the settings integrated in one place.
The problem is - fancontrol doens't allow specifying a curve. Only a linear function.
amdfand fills that gap, but I wasn't able to find a visual tool for it.
Maybe some collaboration between the projects could be done to integrate all the best features?
I'm getting the following error message if I run:
sudo amdguid
output:
ERROR amdgpu_config::fan > Curve fan temps should be monotonically increasing, found 70 then 60
thread 'main' panicked at 'No FAN config: UnsortedFanTemp { current: 60.0, index: 8, last: 70.0 }', amdguid/src/main.rs:22:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
may I ask what I should do here?
I'm running arch linux, the amdgui-helper.service
is enabled and running.
When setting a fan curve that allows the fans to turn off at a certain point it tends to "flap". It would be nice to have a range for the lower temperature value or some other clever way to avoid this problem.
Example curve on 5700XT:
temp_input = "temp1_input"
log_level = "Error"
[[speed_matrix]]
temp = 55.0
speed = 0.0
[[speed_matrix]]
temp = 56.0
speed = 8.0
[[speed_matrix]]
temp = 58.0
speed = 10.0
[[speed_matrix]]
temp = 60.0
speed = 15.0
[[speed_matrix]]
temp = 65.0
speed = 25.0
[[speed_matrix]]
temp = 70.0
speed = 45.0
[[speed_matrix]]
temp = 75.0
speed = 70.0
[[speed_matrix]]
temp = 80.0
speed = 100.0
Anything between 0-8 means the PWM is working but fan isn't moving hence not too healthy hence the 1c gap. It would be nice to have some logic that says something like "when temperature gets to 55c use 8% speed and keep 8% until 50c at which point use 0 and then stay at 0 until 55c again". Otherwise fan just stops and starts multiple times per minute no matter where you set the temperature for starting/stopping.
openrc does not want the service program to print out things. There are two options:
command_args_background="--background"
and we change the program to not print out anything when --background
is passedcommand_background=true
to the service file. Then openrc knows that the program isn't "well behaved" and openrc ignores the printoutsWhat platforms can we use this on?
I recommend specifying this in your readme.
The service doesn't run correctly if the PC starts. It seems that the card is not ready and can't be found. Maybe adding a second call to controllers(&config, true)?;
in service()
could help.
It needs higher version libraries than Ubuntu LTS can provide:
./amdfand: /lib/x86_64-linux-gnu/libc.so.6: version
GLIBC_2.33' not found (required by ./amdfand)`
The program controls the pwm values of the fans which usually go from 0 to 255. Restricting us to whole percentages makes some pwm values unavailable and the values unnecessarily granular.
It just came to me what you are having as an avatar.
As supporter of Ukraine freedom I refuse to help any Russia supporters.
No further help will be provided
Glory to Ukraine
Originally posted by @Eraden in #48 (comment)
Oh okay :D No wonder this software doesn't work when it was written by such a stupid person :D
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.