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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -2
  3. data/lib/amdgpu_fan_cli.rb +23 -4
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50dee1caaf6f26947eabb70a37b584ae8fc8c98b4a3cef1d26b19ef59aab2b1d
4
- data.tar.gz: 6e87eaffcffc5dce3a0a6c413f5848e9ada6490558e49d1d0e664e0672746688
3
+ metadata.gz: f5628dc7eec5a2fb4737be7e3f79cad3d51d1359457162568303a12f7f9886ee
4
+ data.tar.gz: 98ed0f072b9b8174b1160a4460bb80631c3e5c7263c244cf148dbb738a26fd16
5
5
  SHA512:
6
- metadata.gz: b20353e1b75b6ec79fad9a960a41795a4dff56aa8a22c484c502096cda365a698dade6bdb270c595e50a83bb6c61d3e3dd489017ac5e38c4cdaaca0cee4ccfe4
7
- data.tar.gz: 16b78ea4ecbc84afdfefce9d9b34c42ceef66b2e96ea3e6899e4c01fc5b159778dfc639655cdd776350dd6c164e41ac70dbf27aa4e32075d957b7363a319682d
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
  ```
@@ -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', 'set mode to automatic (requires sudo)'
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', 'set fan speed to PERCENTAGE (requires sudo)'
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', 'report the current status'
30
+ desc 'status', 'View device info, current fan speed, and temperature'
27
31
  def status
28
32
  puts device_info,
29
- "GPU fan in #{current_mode} mode running at #{current_percentage.round}% ~ #{rpm} rpm"
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amdgpu_fan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin McCormack