Ubuntu Weekly Recipe

第183回 ハードウェアから温度情報などを取得する

この記事を読むのに必要な時間:およそ 4 分

気温の上がる夏注1は,コンピューターの筐体内の温度も高くなりがちです。そこで今回は,温度監視のトピックをお届けします。

注1
とは言うものの,実は筆者の居住している青森県八戸市の夏は30度を超える日が数日しかないくらい涼しい気候だったりしますが。

Linux Hardware Monitoringプロジェクト

LinuxにはLm_sensors(Linux hardware Monitoring)というプロジェクトがあります。このプロジェクトは,コンピューターを構成する部品のうち,マザーボードやCPU,グラッフィックカードに搭載されているセンサーから各種情報を取得することを目的としています。取得することのできる情報は温度に限らず,稼働電圧,ファンの回転数なども含まれます。

Ubuntuに導入するには,UbuntuソフトウェアセンターやSynapticパッケージマネジャーでパッケージ「lm-sensors」をインストールしてください。

センサーに対応するカーネルモジュールの特定

lm-sensorsは,各種情報を取得するために各ハードウェアにアクセスします。この際,それぞれのハードウェアに応じたドライバーが有効となっている必要があります。Linuxの場合はドライバーがカーネルモジュールの形で実装されています。パッケージ「lm-sensors」をインストールした直後にするべきことは,お使いのハードウェアに対応するカーネルモジュールの特定です。

特定はコマンド操作で行います。Ubuntuのメニューから端末(gnome-terminal)を開き,以下のコマンドを実行します。

$ gksudo sensors-detect;

パスワードを入力すると,端末上にてハードウェアとカーネルモジュールを検出するプロセスが始まります。

$ gksudo sensors-detect;
# sensors-detect revision 5861 (2010-09-21 17:21:05 +0200)
# System: Gigabyte Technology Co., Ltd. X58A-UD5

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): Module cpuid loaded successfully.
...

それぞれの検出セクションでYES/noの選択を迫られます。そのままエンターキーを押すと大文字で表示されている選択肢が選ばれます。

...
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
Intel digital thermal sensor...                             Success!
    (driver `coretemp')
Intel AMB FB-DIMM thermal sensor...                         No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No
...

ハードウェアとそれに対応するカーネルモジュールが検出されていきます。なお,新しいマザーボードやグラフィックカードの場合は,対応するドライバーがまだ開発されておらず,特定に失敗することもあります。

カーネルモジュールの自動有効設定

検出プロセスをひと通り終えると,ハードウェアに対応するカーネルモジュールの一覧が表示されます。

...
Now follows a summary of the probes I have just done.
Just press ENTER to continue: 
Driver `it87':
  * ISA bus, address 0x290
    Chip `ITE IT8720F Super IO Sensors' (confidence: 9)

Driver `adt7475':
  * Bus `NVIDIA i2c adapter '
    Busdriver `nvidia', I2C address 0x2e
    Chip `Analog Devices ADT7473' (confidence: 5)

Driver `coretemp':
  * Chip `Intel digital thermal sensor' (confidence: 9)

To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
adt7475
coretemp
it87
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Do you want to add these lines automatically to /etc/modules? (yes/NO)
...

上の例では,マザーボードのセンサーに対して「it87」,NVIDIA社のグラッフィックカードのセンサーに対して「adt7475」,CPUのセンサーに対して「coretemp」の各カーネルモジュールが特定されています。lm-sensorsが情報を取得するためには,これらカーネルモジュールが有効化されている必要があります。

カーネルモジュールの作法として,ファイル「/etc/modules」に記述されているカーネルモジュールはシステム起動時に自動で有効化されというものがあり,出力の最後でこのファイルへの追記をするかしないかの選択を迫られます。追記をする場合はyesを入力してエンターキーを押してください。そのままエンターキーを押すとNOが選択されてしまいますが,この場合はテキストエディタを使って自分でファイル「/etc/modules」を編集する必要がありますので,yesを選択しておくほうが簡単でしょう。

ファイル「/etc/modules」への記述が終わったら,次回以降の起動から必要なカーネルモジュールが自動で有効化されるようになりますので,システムの再起動をしてください。

情報の表示

さて,情報を表示してみましょう。同じく端末で以下のコマンドを実行してください。

$ sensors;
coretemp-isa-0000
Adapter: ISA adapter
Core 0:      +47.0℃  (high = +80.0℃, crit = +100.0℃)  

coretemp-isa-0001
Adapter: ISA adapter
Core 1:      +48.0℃  (high = +80.0℃, crit = +100.0℃)  

coretemp-isa-0002
Adapter: ISA adapter
Core 2:      +48.0℃  (high = +80.0℃, crit = +100.0℃)  

coretemp-isa-0003
Adapter: ISA adapter
Core 3:      +49.0℃  (high = +80.0℃, crit = +100.0℃)  

it8720-isa-0290
Adapter: ISA adapter
in0:         +0.91 V  (min =  +0.00 V, max =  +4.08 V)   
in1:         +1.52 V  (min =  +0.00 V, max =  +4.08 V)   
in2:         +3.31 V  (min =  +0.00 V, max =  +4.08 V)   
+5V:         +2.99 V  (min =  +0.00 V, max =  +4.08 V)   
in4:         +0.35 V  (min =  +0.00 V, max =  +4.08 V)   
in5:         +3.18 V  (min =  +0.00 V, max =  +4.08 V)   
in6:         +0.40 V  (min =  +0.00 V, max =  +4.08 V)   
5VSB:        +3.06 V  (min =  +0.00 V, max =  +4.08 V)   
Vbat:        +3.25 V
fan1:       1360 RPM  (min =   10 RPM)
fan2:       1278 RPM  (min =    0 RPM)
fan3:       1061 RPM  (min =    0 RPM)
fan4:          0 RPM  (min =    0 RPM)
temp1:       +40.0℃  (low  = +127.0℃, high = +127.0℃)  sensor = thermistor
temp2:       +43.0℃  (low  = +127.0℃, high = +70.0℃)  sensor = thermal diode
temp3:       +50.0℃  (low  = +127.0℃, high = +127.0℃)  sensor = thermistor

温度に関しては,Core 0~3で4コアCPUの,temp1~3でマザーボードの情報が取得できています。temp1~3がマザーボードのどの箇所にあるセンサーを参照しているのかは,マザーボードのマニュアルを読んで推定する必要があります。

著者プロフィール

坂本貴史(さかもとたかし)

Ubuntuのマルチメディア編集環境であるUbuntu Studioのユーザ。主にUbuntu日本コミュニティとUbuntu Studioコミュニティで活動。いつかユーザ同士で合作するのが夢。

コメント

コメントの記入