#!/bin/sh -e # # fan_speed: speed of the cpu or case fan # # Copyright (C) 2009 Canonical Ltd. # Copyright (C) 2011-2014 Dustin Kirkland # # Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . __fan_speed_detail() { # Nothing interesting to say here about fan speed return } __fan_speed() { local i="" speed=0 # Let's check a few different probes for fan speed # This seems to cover most of them: for i in $FAN /sys/class/hwmon/*/*/fan1_input /sys/class/hwmon/*/device/hwmon/*/fan1_input; do [ -f "$i" ] || continue read speed < "$i" if [ -n "$speed" ] && [ "$speed" -gt 0 ]; then color bold1; printf "%s" "$speed"; color -; color none; printf "rpm"; color -- return 0 fi done # But others (e.g. Dell Inspirons) seem to be here: if [ -r /proc/i8k ]; then local line="" read line < /proc/i8k set -- $line for speed in $7 $8; do if [ -n "$speed" ] && [ "$speed" -gt 0 ]; then # I8K_FAN_MULT defaults to 30 (buggy BIOS workaround?), # use `modprobe i8k fan_mult=1` to disable if unneeded, # resulting in nonsensical speeds [ "$speed" -gt 10000 ] && speed=$((${speed} / 30)) color bold1; printf "%s" "$speed"; color -; color none; printf "rpm"; color -- return 0 fi done fi } # vi: syntax=sh ts=4 noexpandtab