MacBook AirのCPU温度を取得する

Mac OS Xのバッテリー残量は

ioreg -n AppleSmartBattery

というコマンドで取得できるけど、CPUの温度については標準で付いてくるコマンドではどうやら取得できないらしい。

IOKitのインターフェイスを使ってCで持ってこれるんだけど、まさにそういうツールを公開してる人がいて、↓の smc.h と smc.c でOKみたい。(たぶんこのソースもどこかから持ってきたものみたいだけど)

ただし、Mac OS X 10.5 (Leopard) 以降ではIOConnectMethodStructureIStructureOIOConnectCallStructMethodに変わったことでコンパイルできなくなっていた。

で、その修正版も公開してる人がいた。

.app の中にソースが入ってるのだけど、面倒なので Gist に貼っておいた。(元々 GPL なので)

コンパイル

clang -framework IOKit -o smc smc.c

使い方

$ ./smc -h
Apple System Management Control (SMC) tool 0.01_2
Usage:
./smc [options]
    -f         : fan info decoded
    -h         : help
    -k <key>   : key to manipulate
    -l         : list all keys and values
    -r         : read the value of a key
    -w <value> : write the specified value to a key
    -v         : version
$ ./smc -f
Total fans in system: 1

Fan #0:
    Actual speed : 1997
    Minimum speed: 2000
    Maximum speed: 6500
    Safe speed   : 0
    Target speed : 2000
    Mode         : auto
    Temp         = 55.375
    Temp TB0T        = 32.6875
    Temp TC0D        = 55.375
    Temp TC0P        = 50.5
    Temp TM0P        = 46.875
    Temp TN0P        = 0
    Temp Th0H        = 0
    Temp Ts0P        = 30.625
    Temp TN1P        = 0
    Temp Th1H        = 35.375

現在のCPU温度は55.375度だそうな。

おまけ

GrowthForecastに送ってみた。