Thinkpad X250, X201s, T430s上のUbuntu 14.04に対して、lm-sensorsとthinkfanを用いて熱対策を行う方法

しばらく前から気になっていたのですが、Thinkpad X201sやThinkpad X250にUbuntu 14.04を入れると、妙に熱くなる時がありました。
lm-sensorsをインストールして、温度を見たところ、CPUの温度が77℃に達していました!これは大変と思いました。
調べたところ、”Thinkpad overheating with Ubuntu”といった感じの記事がいろいろ見つかりました。
それらを見てみると、どうもファンの制御がうまくいっていないようです。

そんな中、”Ubuntu 11.10 on ThinkPad X220 でファン制御“という投稿を見つけました。

Thinkfanというプログラムがあること、そして、ファン制御はどうもできそうだということがわかりました。しかし、Ubuntu 11.10だとちょっと情報が古くて心もとなかったのでもう少し調べました。

そうすると、”Thinkpad T430 fan control – Ubuntu 14.04” という投稿を見つけました。私はT430sも使っていますので、願ったりかなったりの記事です。

そこの記事を元に、実際に設定してみました。いくつか工夫することでうまくできたので、備忘録もこめて記載しておきます。Thinkpad X250, X201s, T430sのいずれでもうまくいきました。

  1. lm-sensorsのインストール
  2. 温度をモニターするためのプログラムであるlm-sensorsをインストールします。

    $ sudo apt-get install lm-sensors
    
  3. lm-sensorsの設定
  4. lm-sensorsに入っているsensors-detectを用いて、センサーを検出します。

    $ sudo sensors-detect
    

    すると、以下のような表示がなされました。

    # sensors-detect revision 6170 (2013-05-20 21:25:22 +0200)
    # System: LENOVO 20CMCTO1WW [ThinkPad X250] (laptop)
    
    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): 
    

    これは、基本的にデフォルト通り、選んでいけば大丈夫です。つまり、Enterを押していきます。センサーで重要なものはYESとなっています。

    そうすると、

    Now follows a summary of the probes I have just done.
    Just press ENTER to continue: 
    

    となりますので、Enterを押します。

    すると、次のような画面が出ます。

    Driver `coretemp':
      * Chip `Intel digital thermal sensor' (confidence: 9)
    
    To load everything that is needed, add this to /etc/modules:
    #----cut here----
    # Chip drivers
    coretemp
    #----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)
    

    翻訳すると、以下のようになりますね。

    ドライバ `coretemp':
      * Chip `Intel digital thermal sensor' (confidence: 9)
    
    必要なものすべてを読み込むには、/etc/modulesに以下を追加してください。
    #----cut here----
    # Chip drivers
    coretemp
    #----cut here----
    もし、カーネルにいくつかのドライバが組み込まれているようならば、上記のリストには多すぎるモジュールが入っているかもしれません。
    適切なものをスキップしてください!
    
    これらの行を自動的に/etc/modulesに追加しますか? (yes/NO)
    

    ということですので、ここで、yesと入力します。

    そうすると、/etc/modulesの最後に、

    # Generated by sensors-detect on Sun Oct 25 22:23:59 2015
    # Chip drivers
    coretemp
    

    といったものが追加されます。

  5. thinkfanのインストール
  6. 続いて、Thinkpadのファン制御プログラムであるThinkfanをインストールします。apt-getで簡単にインストールできます。

    $ sudo apt-get install thinkfan
    
  7. coretemp モジュールの読み込み
  8. 以下のコマンドにより、coretempモジュールを読み込みます。

    $ sudo modprobe coretemp
    
  9. 温度入力ファイルの検出
  10. 以下のコマンドにより、温度入力ファイルを見つけます。

    $ sudo find /sys/devices -type f -name "temp*_input"
    

    Thinkpad X250の場合、上記コマンドにより、以下が見つかりました。

    /sys/devices/virtual/hwmon/hwmon0/temp1_input
    /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input
    /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp1_input
    /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input
    

    この情報を次に使います。

  11. /etc/thinkfan.confの編集
  12. /etc/thinkfan.confを編集します。汎用性を考えて、nanoで編集することにします。

    $ sudo nano /etc/thinkfan.conf
    

    そうすると、コメント行がずっと続きます。

    コメント行の最後の2行が以下のようになっています。

    # I use this on my T61p:
    #sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3)
    

    この下に、先ほど得られた温度入力ファイルの情報を記載します。その際に、一番最初にsensorとつけます。
    私の場合は、以下のようになりました。
    各自の情報にあわせて修正してください。

    sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
    sensor /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input
    sensor /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp1_input
    sensor /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input
    
  13. 温度によるファン設定
  14. 次に、温度によってどの程度ファンをまわすのかの設定がきます。
    これは、いろいろな方がいろいろ設定されていますが、
    今回、私はファンの音を静かにするよりは、確実にCPUがオーバーヒートしないことを第一に置くので、
    保守的に行くことにしました。/etc/thinkfan.confに記載されているデフォルトの値で十分です。

    つまり、以下のとおりです。

    (0,     0,      55)
    (1,     48,     60)
    (2,     50,     61)
    (3,     52,     63)
    (4,     56,     65)
    (5,     59,     66)
    (7,     63,     32767)
    

    これは、
    ファンレベル、最低温度、最高温度

    の順番に記載されていますので、

    温度が0℃〜55℃の時はファンレベル0
    48℃〜60℃の時はファンレベル1
    50℃〜61℃の時はファンレベル2

    という意味です。ポイントは、温度はオーバーラップさせなければいけないとのことです。

    好みで修正したら保存します。

  15. /etc/modprobe.d/thinkpad.confの作成
  16. 次に、/etc/modprobe.dディレクトリ下にthinkpad.confを作成します。

    $ sudo nano /etc/modprobe.d/thinkpad.conf
    

    ここに、以下の1行を記載します。

    options thinkpad_acpi fan_control=1
    
  17. /etc/default/thinkfanの設定
  18. 最後に、/etc/default/thinkfanの設定を変えて起動時に自動的にthinkfanが起動するようにします。

    $ sudo nano /etc/default/thinkfan
    

    とし、START=noを

    START=yes
    

    とします。

  19. 再起動とsensorsでの温度とファン回転数の確認
  20. ここまでできたら、再起動します。

    そして、いろいろなプログラムを立ち上げてみたり、PCに負荷をかけてみた状態で、ターミナルから

    $ sensors
    

    とタイプしてみてください。

    acpitz-virtual-0
    Adapter: Virtual device
    temp1:        +50.0°C  (crit = +128.0°C)
    
    coretemp-isa-0000
    Adapter: ISA adapter
    Physical id 0:  +52.0°C  (high = +105.0°C, crit = +105.0°C)
    Core 0:         +51.0°C  (high = +105.0°C, crit = +105.0°C)
    Core 1:         +52.0°C  (high = +105.0°C, crit = +105.0°C)
    
    thinkpad-isa-0000
    Adapter: ISA adapter
    fan1:        5535 RPM
    

    といった表示が出るかと思います。

    しばらくアイドリングしたところ、

    acpitz-virtual-0
    Adapter: Virtual device
    temp1:        +48.0°C  (crit = +128.0°C)
    
    coretemp-isa-0000
    Adapter: ISA adapter
    Physical id 0:  +48.0°C  (high = +105.0°C, crit = +105.0°C)
    Core 0:         +48.0°C  (high = +105.0°C, crit = +105.0°C)
    Core 1:         +47.0°C  (high = +105.0°C, crit = +105.0°C)
    
    thinkpad-isa-0000
    Adapter: ISA adapter
    fan1:           0 RPM
    

    となりました。
    温度が48℃を下回ったので、ファンが回転をやめたわけですね。
    きちんと、設定通り動いていることがわかります。

    これで、ThinkpadでUbuntuを使用する際の熱対策ができたように思います。一安心です。

Print Friendly, PDF & Email

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください