# lm sensors (日本語)

lm_sensors (Linux monitoring sensors) は温度、電圧、ファンを監視するフリーでオープンソースなツールとドライバです。 このドキュメントでは lm_sensors のインストール・設定の方法と、CPU 温度やマザーボードの温度、ファンスピードを監視する方法を説明します。

## 使い方

### インストール

lm_sensors を公式レポジトリからインストールします。

### lm_sensors の設定

検出とカーネルモジュールのリストを作成するために sensors-detect を使用します。

    # sensors-detect

上のコマンドを実行すると、`sensors` デーモンが起動時に自動的にカーネルモジュールを読み込むためのファイル `/etc/conf.d/lm_sensors` が作成されます。どのハードウェアを検索したいかどうか質問されるでしょう。デフォルトが "安全" な答えに設定されているので大抵の場合、全ての質問に `Enter` を押すだけでかまいません。

一連の検出が終わったら検出の結果が提示されます。例:

    # sensors-detect

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

もしあなたがデーモンを使う気でいるなら、`/etc/conf.d/lm_sensors` を作成するかどうか聞かれた時に YES と答えてください。

起動時に自動的にカーネルモジュールを読み込むには、次を実行する必要があります:

    systemctl enable lm_sensors.service

また、デーモンを使う代わりに、モジュールを `/etc/modules-load.d/lm_sensors.conf` の `MODULES` 配列に追加することもできます:

    coretemp
    it87
    acpi-cpufreq

### 自動的に lm_sensors を展開する

If you wish to deploy lm-sensors on multiple diferent linux machines issue is that sensors-detect ask you quite a few questions. There are few tricks that you can use to automate replies. First one is if you wish to accept defaults which sensors-detect suggest you need just to press [ENTER] all the time. To automate this use this one liner:

    # yes "" | sensors-detect

If you wish to override defaults and answer YES to all questions then use this oneliner:

    # yes | sensors-detect

### lm_sensors をテストする

セットアップをテストするには、手動で、もしくは systemd のサービスファイルを利用し、カーネルモジュールを読み込む必要があります。両方使用してはいけません。

例: 手動で読み込む方法

    # modprobe it87
    # modprobe coretemp

例: スクリプトを利用する方法

    # systemctl enable lm_sensors
    # systemctl start lm_sensors

sensors を実行するとこのようなものが表示されるはずです。

    $ sensors

    coretemp-isa-0000
    Adapter: ISA adapter
    Core 0:      +30.0°C  (high = +76.0°C, crit = +100.0°C)

    coretemp-isa-0001
    Adapter: ISA adapter
    Core 1:      +30.0°C  (high = +76.0°C, crit = +100.0°C)

    coretemp-isa-0002
    Adapter: ISA adapter
    Core 2:      +32.0°C  (high = +76.0°C, crit = +100.0°C)

    coretemp-isa-0003
    Adapter: ISA adapter
    Core 3:      +30.0°C  (high = +76.0°C, crit = +100.0°C)

    it8718-isa-0290
    Adapter: ISA adapter
    in0:         +1.17 V  (min =  +0.00 V, max =  +4.08 V)
    in1:         +1.31 V  (min =  +1.28 V, max =  +1.68 V)
    in2:         +3.28 V  (min =  +2.78 V, max =  +3.78 V)
    in3:         +2.88 V  (min =  +2.67 V, max =  +3.26 V)
    in4:         +2.98 V  (min =  +2.50 V, max =  +3.49 V)
    in5:         +1.34 V  (min =  +0.58 V, max =  +1.34 V)   ALARM
    in6:         +2.02 V  (min =  +1.04 V, max =  +1.36 V)   ALARM
    in7:         +2.83 V  (min =  +2.67 V, max =  +3.26 V)
    Vbat:        +3.28 V
    fan1:       1500 RPM  (min = 3245 RPM)  ALARM
    fan2:          0 RPM  (min = 3245 RPM)  ALARM
    fan3:          0 RPM  (min = 3245 RPM)  ALARM
    temp1:       +18.0°C  (low  = +127.0°C, high = +64.0°C)  sensor = thermal diode
    temp2:       +32.0°C  (low  = +127.0°C, high = +64.0°C)  sensor = thermistor
    temp3:       +38.0°C  (low  = +127.0°C, high = +64.0°C)  sensor = thermistor
    cpu0_vid:   +2.050 V

    acpitz-virtual-0
    Adapter: Virtual device
    temp1:       +18.0°C  (crit = +64.0°C)

### SPD の値をメモリーモジュールから読み込む (任意)

SPD タイミングの値をあなたのメモリーモジュールから読み込むには、i2c-tools を公式リポジトリからインストールします。 i2c-tools をインストールしたら、`eeprom` カーネルモジュールを読み込む必要があります。

    # modprobe eeprom

最後に、あなたのメモリー情報を `decode-dimms` で見る事ができます。

以下はあるマシンの出力の一部です:

    $ decode-dimms

    # decode-dimms version 5733 (2009-06-09 13:13:41 +0200)

    Memory Serial Presence Detect Decoder
    By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
    Jean Delvare, Trent Piepho and others

    Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0050
    Guessing DIMM is in                             bank 1

    ---=== SPD EEPROM Information ===---
    EEPROM CRC of bytes 0-116                       OK (0x583F)
    # of bytes written to SDRAM EEPROM              176
    Total number of bytes in EEPROM                 512
    Fundamental Memory type                         DDR3 SDRAM
    Module Type                                     UDIMM

    ---=== Memory Characteristics ===---
    Fine time base                                  2.500 ps
    Medium time base                                0.125 ns
    Maximum module speed                            1066MHz (PC3-8533)
    Size                                            2048 MB
    Banks x Rows x Columns x Bits                   8 x 14 x 10 x 64
    Ranks                                           2
    SDRAM Device Width                              8 bits
    tCL-tRCD-tRP-tRAS                               7-7-7-33
    Supported CAS Latencies (tCL)                   8T, 7T, 6T, 5T

    ---=== Timing Parameters ===---
    Minimum Write Recovery time (tWR)               15.000 ns
    Minimum Row Active to Row Active Delay (tRRD)   7.500 ns
    Minimum Active to Auto-Refresh Delay (tRC)      49.500 ns
    Minimum Recovery Delay (tRFC)                   110.000 ns
    Minimum Write to Read CMD Delay (tWTR)          7.500 ns
    Minimum Read to Pre-charge CMD Delay (tRTP)     7.500 ns
    Minimum Four Activate Window Delay (tFAW)       30.000 ns

    ---=== Optional Features ===---
    Operable voltages                               1.5V
    RZQ/6 supported?                                Yes
    RZQ/7 supported?                                Yes
    DLL-Off Mode supported?                         No
    Operating temperature range                     0-85C
    Refresh Rate in extended temp range             1X
    Auto Self-Refresh?                              Yes
    On-Die Thermal Sensor readout?                  No
    Partial Array Self-Refresh?                     No
    Thermal Sensor Accuracy                         Not implemented
    SDRAM Device Type                               Standard Monolithic

    ---=== Physical Characteristics ===---
    Module Height (mm)                              15
    Module Thickness (mm)                           1 front, 1 back
    Module Width (mm)                               133.5
    Module Reference Card                           B

    ---=== Manufacturer Data ===---
    Module Manufacturer                             Invalid
    Manufacturing Location Code                     0x02
    Part Number                                     OCZ3G1600LV2G

    ...

## センサーデータの利用

### グラフィカルフロントエンド

センサーデータのフロントエンドが多数あります。

- xsensors - lm_sensors の X11 インターフェースです。
- xfce4-sensors-plugin - lm_sensors を Xfce パネルへ追加するためのプラグインです。
- conky - Conky は高度で設定を行うことができる torsmo ベースの X 向けシステムモニターです。
- kdeutils-superkaramba - Superkaramba は KDE デスクトップのためのウィジェット作成をできるようにするツールです。

詳しくは karamba section on kde-look.org を見てください。例えばセンサーデータのための karamba フロントエンドがあります。

- sensors-applet - GNOME パネルにハードウェアセンサーからの情報、CPU 温度・ファンスピード・電圧などを表示するためのアプレットです。

### sensord

sensord (lm_sensors パッケージの中に入っています) と呼ばれるオプショナルデーモンが存在し、ラウンドロビンデータベース (rrd) にデータを記録して後で視覚化することができます。詳細は sensord の man ページを読んでください。

## トラブルシューティング

### マルチ CPU 環境でコアの番号を再定義する

稀に、マルチ CPU マザーボードでは実際の物理コアのナンバリングが間違っていることがあります。 Xeon を2個搭載した HP Z600 ワークステーションの例を示します:

    $ sensors

    coretemp-isa-0000
    Adapter: ISA adapter
    Core 0:       +65.0°C  (high = +85.0°C, crit = +95.0°C)
    Core 1:       +65.0°C  (high = +85.0°C, crit = +95.0°C)
    Core 9:       +66.0°C  (high = +85.0°C, crit = +95.0°C)
    Core 10:      +66.0°C  (high = +85.0°C, crit = +95.0°C)

    coretemp-isa-0004
    Adapter: ISA adapter
    Core 0:       +54.0°C  (high = +85.0°C, crit = +95.0°C)
    Core 1:       +56.0°C  (high = +85.0°C, crit = +95.0°C)
    Core 9:       +60.0°C  (high = +85.0°C, crit = +95.0°C)
    Core 10:      +61.0°C  (high = +85.0°C, crit = +95.0°C)

    smsc47b397-isa-0480
    Adapter: ISA adapter
    fan1:        1730 RPM
    fan2:        1746 RPM
    fan3:        1224 RPM
    fan4:        2825 RPM
    temp1:        +46.0°C
    temp2:        +37.0°C
    temp3:        +23.0°C
    temp4:       -128.0°C

コアの番号が 0,1,9,10 となっていて、2番目の CPU でも同じ番号が繰り返されていることに注意してください。多くのユーザーは 0,1,2,3,4,5,6,7 といった順番でコアの温度を表示してほしいでしょう。２段階でこの問題を解決します。

#### ステップ 1. どのようなIDがチップから報告されているか

物理チップに対してどのようなオプションが利用できるか `sensors` に `-u` スイッチをつけて調べてください:

    $ sensors -u coretemp-isa-0000

    coretemp-isa-0000
    Adapter: ISA adapter
    Core 0:
      temp2_input: 61.000
      temp2_max: 85.000
      temp2_crit: 95.000
      temp2_crit_alarm: 0.000
    Core 1:
      temp3_input: 61.000
      temp3_max: 85.000
      temp3_crit: 95.000
      temp3_crit_alarm: 0.000
    Core 9:
      temp11_input: 62.000
      temp11_max: 85.000
      temp11_crit: 95.000
    Core 10:
      temp12_input: 63.000
      temp12_max: 85.000
      temp12_crit: 95.000

    $ sensors -u coretemp-isa-0004

    coretemp-isa-0004
    Adapter: ISA adapter
    Core 0:
      temp2_input: 53.000
      temp2_max: 85.000
      temp2_crit: 95.000
      temp2_crit_alarm: 0.000
    Core 1:
      temp3_input: 54.000
      temp3_max: 85.000
      temp3_crit: 95.000
      temp3_crit_alarm: 0.000
    Core 9:
      temp11_input: 59.000
      temp11_max: 85.000
      temp11_crit: 95.000
    Core 10:
      temp12_input: 59.000
      temp12_max: 85.000
      temp12_crit: 95.000

#### Step 2. コアナンバーを再定義する

ステップ1の結果を元に、新しい定義を`/etc/sensors.d/cores.conf`に作成します:

    /etc/sensors.d/cores.conf

    chip "coretemp-isa-0000"

        label temp2 "Core 0"
        label temp3 "Core 1"
        label temp11 "Core 2"
        label temp12 "Core 3"

    chip "coretemp-isa-0004"

        label temp2 "Core 4"
        label temp3 "Core 5"
        label temp11 "Core 6"
        label temp12 "Core 7"

問題は解決しました。これらのステップが完了した結果を示します:

    $ sensors

    coretemp-isa-0000
    Adapter: ISA adapter
    Core0:        +64.0°C  (high = +85.0°C, crit = +95.0°C)
    Core1:        +63.0°C  (high = +85.0°C, crit = +95.0°C)
    Core2:        +65.0°C  (high = +85.0°C, crit = +95.0°C)
    Core3:        +66.0°C  (high = +85.0°C, crit = +95.0°C)

    coretemp-isa-0004
    Adapter: ISA adapter
    Core4:        +53.0°C  (high = +85.0°C, crit = +95.0°C)
    Core5:        +54.0°C  (high = +85.0°C, crit = +95.0°C)
    Core6:        +59.0°C  (high = +85.0°C, crit = +95.0°C)
    Core7:        +60.0°C  (high = +85.0°C, crit = +95.0°C)

    smsc47b397-isa-0480
    Adapter: ISA adapter
    fan1:        1734 RPM
    fan2:        1726 RPM
    fan3:        1222 RPM
    fan4:        2827 RPM
    temp1:        +45.0°C
    temp2:        +37.0°C
    temp3:        +23.0°C
    temp4:       -128.0°C

### Linux 2.6.31 から Sensors が動きません

2.6.21 の変更でいくつかの sensors が動かないようになりました。詳しい説明とエラーの例が この FAQ エントリ にあります。これを修復するには、カーネルパラメータに以下を追加してください:

    acpi_enforce_resources=lax

Warning: In some situations, this may be dangerous. Consult the FAQ for details.

Note that in most cases the information is still accessible via other modules (e.g. via ACPI modules) for the hardware in question. Many utilities and monitors (e.g. `/usr/bin/sensors`) can gather information from either source. Where possible, this is the preferred solution.

### K10Temp Module

Some K10 processors have issues with their temperature sensor. From the kernel documentation (`linux-<version>/Documentation/hwmon/k10temp`):

  All these processors have a sensor, but on those for Socket F or AM2+, the sensor may return inconsistent values (erratum 319). The driver will refuse to load on these revisions unless you specify the `force=1` module parameter.

  Due to technical reasons, the driver can detect only the mainboard's socket type, not the processor's actual capabilities. Therefore, if you are using an AM3 processor on an AM2+ mainboard, you can safely use the `force=1` parameter.

On affected machines the module will report "unreliable CPU thermal sensor; monitoring disabled". If you still want to use the module you can:

    # rmmod k10temp
    # modprobe k10temp force=1

Confirm with Lm_sensors#Testing your lm_sensors that the sensor is in fact valid and reliable. If it is, you can edit `/etc/modprobe.d/k10temp.conf` and add:

    options k10temp force=1

This will allow the module to load at boot.

## 関連項目

- hddtemp - Software to read temperatures of hard drives.
- monitorix - Monitorix is a free, open source, lightweight system monitoring tool designed to monitor as many services and system resources as possible.

Categories:

- Status monitoring and notification (日本語)
- CPU (日本語)