Files
wlan-lanforge-scripts/fanctl_lf0312.pl
Ben Greear 72712ff548 Add scripts from the tools directory in the private Candela repo.
These scripts will now be publicly available in a git repo for
easier shared development and change tracking.
2017-10-06 13:41:50 -07:00

69 lines
1.4 KiB
Perl
Executable File

#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
$|=1;
package main;
our $fan_util = "/usr/local/bin/f81866_fan";
if ( ! -x $fan_util ) {
die "f81866_fan utility $fan_util not found\n";
}
my @sensor_lines_a = `sensors`;
chomp(@sensor_lines_a);
my @sensor_lines_b = grep ! /^\s*$/, @sensor_lines_a;
@sensor_lines_a = grep ! /^(Physical id|Core|coretemp|Adapter: ISA adapter)/, @sensor_lines_b;
#print ("Found: ".join("\n", @sensor_lines_a));
my $found_a10k = 0;
my $temp = 0;
my $maxtemp = 0;
for my $line (@sensor_lines_a) {
if ($line =~ /^ath10k_hwmon-pci.*/) {
#print "found a10k! $line\n";
$found_a10k = 1;
}
if ($found_a10k && $line =~ /temp1:\s+([^ ]+).*$/) {
#print "found a10k: $line\n";
if ($1 ne "N/A") {
($temp) = $line =~ /[+](\d+\.\d+)/;
if (defined $temp && $temp > 40.0) {
$maxtemp = $temp if ($temp > $maxtemp);
#print "temp($temp) maxtemp($maxtemp)\n";
}
$temp = 0;
}
$found_a10k = 0;
}
}
my $duty = 0;
if ($maxtemp < 40) {
$duty = 0;
}
elsif ($maxtemp < 50) {
$duty = 50;
}
elsif ($maxtemp < 56) {
$duty = 55;
}
elsif ($maxtemp < 60) {
$duty = 60;
}
elsif ($maxtemp < 70) {
$duty = 70;
}
elsif ($maxtemp < 80) {
$duty = 80;
}
elsif ($maxtemp >= 80) {
$duty = 100;
}
#print "[$maxtemp]C -> duty[$duty]\n";
system("/usr/bin/logger -t fanctl_lf0312 'temp:$maxtemp C, duty:$duty'");
exec("$fan_util $duty");
#