amdgpu_fan 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -2
- data/lib/amdgpu_fan_cli.rb +23 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5628dc7eec5a2fb4737be7e3f79cad3d51d1359457162568303a12f7f9886ee
|
4
|
+
data.tar.gz: 98ed0f072b9b8174b1160a4460bb80631c3e5c7263c244cf148dbb738a26fd16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ceed05049dd35db984ba670ad0bee7336c6693fb16a83c77bedebd8fa327ccff0b63bc84dde4436f9a2a9654f00f5284086a66aff8d6cd6f358760160865bbe9
|
7
|
+
data.tar.gz: ae319ad4e4acc088930b435f886527b0c226203ab3743e2794ae03f0f969178f51f9315cf4f28212f17a31c20daa1a52e2aa717495a1b23aed88d1d3809acb39
|
data/README.md
CHANGED
@@ -2,12 +2,15 @@
|
|
2
2
|
|
3
3
|
A Ruby CLI to read and set the fan speed for AMD Radeon graphics cards running on the AMDGPU Linux driver.
|
4
4
|
|
5
|
+
See https://wiki.archlinux.org/index.php/Fan_speed_control#AMDGPU_sysfs_fan_control
|
6
|
+
|
5
7
|
## Usage
|
6
8
|
|
7
9
|
```
|
8
|
-
bin/amdgpu_fan
|
10
|
+
➤ bin/amdgpu_fan
|
9
11
|
Commands:
|
12
|
+
amdgpu_fan auto # set mode to automatic (requires sudo)
|
10
13
|
amdgpu_fan help [COMMAND] # Describe available commands or one specific command
|
11
|
-
amdgpu_fan set PERCENTAGE # set fan speed to PERCENTAGE
|
14
|
+
amdgpu_fan set PERCENTAGE # set fan speed to PERCENTAGE (requires sudo)
|
12
15
|
amdgpu_fan status # report the current status
|
13
16
|
```
|
data/lib/amdgpu_fan_cli.rb
CHANGED
@@ -9,13 +9,17 @@ class AmdgpuFanCli < Thor
|
|
9
9
|
FAN_INPUT_FILE = Dir.glob("/sys/class/drm/card0/device/**/fan1_input").first
|
10
10
|
FAN_MODE_FILE = Dir.glob("/sys/class/drm/card0/device/**/pwm1_enable").first
|
11
11
|
FAN_MODES = { auto: '2', manual: '1' }.freeze
|
12
|
+
POWER_MAX_FILE = '/sys/class/drm/card0/device/hwmon/hwmon2/power1_cap'
|
13
|
+
POWER_AVG_FILE = '/sys/class/drm/card0/device/hwmon/hwmon2/power1_average'
|
14
|
+
TEMPERATURE_FILE = Dir.glob("/sys/class/drm/card0/device/**/temp1_input").first
|
15
|
+
VBIOS_VERSION = File.read('/sys/class/drm/card0/device/vbios_version').strip
|
12
16
|
|
13
|
-
desc 'auto', '
|
17
|
+
desc 'auto', 'Set mode to automatic (requires sudo)'
|
14
18
|
def auto
|
15
19
|
set_mode(:auto)
|
16
20
|
end
|
17
21
|
|
18
|
-
desc 'set PERCENTAGE', '
|
22
|
+
desc 'set PERCENTAGE', 'Set fan speed to PERCENTAGE (requires sudo)'
|
19
23
|
def set(percentage)
|
20
24
|
return puts "Invalid percentage" unless (0..100).cover?(percentage.to_i)
|
21
25
|
set_mode(:manual) unless in_manual_mode?
|
@@ -23,10 +27,13 @@ class AmdgpuFanCli < Thor
|
|
23
27
|
set_manual_speed setting_from_percent(percentage)
|
24
28
|
end
|
25
29
|
|
26
|
-
desc 'status', '
|
30
|
+
desc 'status', 'View device info, current fan speed, and temperature'
|
27
31
|
def status
|
28
32
|
puts device_info,
|
29
|
-
"
|
33
|
+
"Video BIOS version: #{VBIOS_VERSION}",
|
34
|
+
"🌀\tFan: #{current_mode} mode running at #{current_percentage.round}% ~ #{rpm} rpm",
|
35
|
+
"🌡\tTemp: #{current_temperature}°C",
|
36
|
+
"⚡\tPower: #{current_power} / #{power_max} Watts"
|
30
37
|
end
|
31
38
|
|
32
39
|
private
|
@@ -54,6 +61,14 @@ class AmdgpuFanCli < Thor
|
|
54
61
|
current.to_f / max.to_i * 100
|
55
62
|
end
|
56
63
|
|
64
|
+
def current_power
|
65
|
+
(File.read(POWER_AVG_FILE).strip.to_f / 1000000).round(2)
|
66
|
+
end
|
67
|
+
|
68
|
+
def current_temperature
|
69
|
+
(File.read(TEMPERATURE_FILE).to_f / 1000).round(1)
|
70
|
+
end
|
71
|
+
|
57
72
|
def max
|
58
73
|
@max ||= File.read(FAN_MAX_POWER_FILE).to_i
|
59
74
|
end
|
@@ -66,6 +81,10 @@ class AmdgpuFanCli < Thor
|
|
66
81
|
File.read(FAN_MODE_FILE).strip == '1'
|
67
82
|
end
|
68
83
|
|
84
|
+
def power_max
|
85
|
+
@power_max ||= (File.read(POWER_MAX_FILE).strip.to_f / 1000000).round(2)
|
86
|
+
end
|
87
|
+
|
69
88
|
def rpm
|
70
89
|
File.read(FAN_INPUT_FILE).strip
|
71
90
|
end
|