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.
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