amdgpu_fan 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|