ThinkPad Fan Controller Readme 日本語訳

2007年夏(そう、よりにもよって夏)から使い始めた X31。世間の噂通りファンから出てくる風の熱さは相当なものである。google で見つけたのが Markus Schmidt 氏作の ThinkPad Fan Control である。

http://sourceforge.net/projects/tp4xfancontrol/

ドキュメントにも書かれている通り、元々作者さんは ThinkPad T43 で動かすツールとして作成されたようだが、多くの ThinkPad シリーズで動作していて、私の X31 でもしっかり動いて重宝している。

感謝の意味もこめつつ、Readme を日本語訳して公開しておこうと思う。


-------------------------------------------------------
 ThinkPad で目玉焼を作りたくなかったらちゃんと読むこと 
-------------------------------------------------------

-------------------------------
 ライセンスについて:
-------------------------------

このプログラムとソースコードは public domain として公開します。
(訳注:日本においてはPublic Domain Softwareというのは著作権法上
存在しないのでフリーソフトとして公開という意味でとらえてください)

作者は、(訳注:このプログラムの動作に必要な)WinIO の部分を除き、
著作権やライセンスの類いを一切主張するつもりはありません。
バイナリ・ソースを問わず、このプログラムを(再)利用したり、
どのような形態で再配布して構いません。利用者の自己責任において
使用してください。

ただし WinIO の部分については WinIO のライセンスに従います。
WinIO は Yariv Kaplan 氏の著作物で www.internals.com で
公開されています。ライセンスについては 
http://www.internals.com/utilities_main.htm
に記述がある通りです。

-------------------------------
 序文:
-------------------------------

このプログラムは ThinkPad T43 などのモデルでファンを制御する
まだまだ試作段階のプログラムです。主に作者が所有するマシン
(Model. 2668-97G) でテストしています。他の形式の ThinkPad では
ちゃんと動かないものもあるでしょう。動作報告は後述しますが
これで動く・動かないリスト決定ということではありません。



このプログラムはまだまだ実験段階です。一切保証はありません。
例外なくあくまで自己責任で使用してください。


もし絶対にこのプログラムのせいで調子が悪いというなら
こんなプログラムを使わずに 「このヘタレなファンを
なんとかせんかい!」と IBM に文句をつけてください。

もしこれが原因かどうかはっきりしないのならドキュメントを
注意深く読んで考え直してください。

さらにそれでもなんとかしたいというなら、その結果をみんなで
共有するこができればと思います(後述のリンクを参照)

みなさん、分かりましたよね?
いいお返事ですね。

-------------------------------
 さらなる注意:
-------------------------------

このプログラムで考えられる注意点を示します。
数日や数週間うまく動いたからといって油断はしないでください。

- アクティブモードで動作中は、エンベッデッド・コントローラ(EC)
  の特定の領域にデータを書き込みます。もしマシンによって
  そのアドレスの持つ機能が変わっていると予期せぬ動作を起こします。
  特に EC の仕様が変わっていると痛いことになるでしょう。

- ACPI との干渉: ACPI を利用しているソフト(例えば Windows XP,
  ThinkPad ツール、ドライバなど)は EC を通じて状態を取得します。
  このファンコントローラを動かすとACPIに影響が出て、予期せぬ
  動作をするかも知れません。

- もしファンを制御している間にアプリケーションがクラッシュ
  した場合、以後は制御ができなくなります。もしファンが止まった
  状態でクラッシュすると温度がいくらになろうがずっと止まった
  ままになりますので注意が必要です。

- ま、他にもいろいろと。

-------------------------------
 テストした機種:
-------------------------------

今の所以下の機種で動いたとの報告があります。
勇気ある方々に感謝いたします。

- Series (Model)
- T23 (2647)
- T40 (2373)
- T41p (2373), 
- T42 (2373)
- T43 (1871 and 2668)
- T43p (2668)
- A31p (2653)
- R50 (1829)
- R50e (1834)
- X41 (tablet 1866)

これらの機種で必ず動くという保証はありませんが
T4X 系列ではそんなにひどいことにはならないと
思われます。

他のシリーズ (R, A, X, Z, など) でも同様かと。

ただし、X20 ではうまく動かないものがあるようです。

-------------------------------
 リンク:
-------------------------------

(訳注:言うまでもなくすべて英語の情報です)

ダウンロード:
- http://sourceforge.net/project/showfiles.php?group_id=153962


このツールについての話題:
- http://forum.thinkpads.com/viewtopic.php?t=17715


温度変化についての報告や比較:
- http://forum.thinkpads.com/viewtopic.php?t=17733


技術情報:
- http://www.thinkwiki.org/wiki/Patch_for_controlling_fan_speed
- http://www.thinkwiki.org/wiki/Talk:Problem_with_fan_noise
- http://www.thinkwiki.org/wiki/Talk:ACPI_fan_control_script


WinIO ドライバ:
- http://www.internals.com/utilities/utilities.htm

-------------------------------
 実装:
-------------------------------

このプログラムはファン制御関連のレジスタや温度センサーの
値を読み取っています。アクティブモードでは、ファンコントロール
レジスタの値を変更できるようにし、温度センサーの目盛りによって
ファンの回転数をコントロールしています。

ファン制御の実装については、エンベッデッド・コントローラ(EC)に
対して I/O ポートの 0x62 と 0x66 を Windows ドライバ(WinIO。
前述のリンクを参照)を経由して操作することで直接制御しています。


-------------------------------
インストール:
-------------------------------

ZIP ファイルの中身をローカルディスクの適当なフォルダに
展開してください。以下のファイルがあるはずです:

fancontrol.exe
fancontrol.ini
readme.txt
WinIo.dll
WinIo.sys

(WinIO はサードパーティのドライバです。ライセンスなどについては
 リンクの項目から確認してください)

-------------------------------
 Test "互換性があるか?":
-------------------------------

では、本当にこれまで書いた無保証などの内容を読んで、それでも
使ってみたいということでいいですね? いきなり実行するのではなく
ちゃんとこの項目を最後まできっちり読んでください。

ZIP ファイルを展開したフォルダを開いてください。fancontrol.ini 
ファイルがあるので、右クリックしてメモ帳で開いてください。
"active" スイッチが 0 になっているのを確認してファイルを
保存します。

この状態ではプログラムは温度などの情報を読むだけで、設定を
変えたりはしません。この状態でも他のプログラムに干渉する可能性は
なくはないですが、マシンに深刻なダメージを与えるようなことは
ないはずです。何かおかしなことがあれば再起動で直るでしょう。

CPU や BIOS を操作する可能性のあるプログラムはすべて終了してください。
特に温度や CPU 速度を操作したり監視するソフト、Over(Under)clockや
喝入れ(電圧を操作する)などもその代表です。"Notebook Hardware Control" などのユーティ
リティもそうです。これらは EC の値を利用していて、プログラム間で 
EC へのアクセスを同期させる方法が今の所ないからです。

落ち着いて FanControl.exe のアイコンをダブルクリックしましょう。

"Thinkpad T43 Fan Control" というタイトルのウインドウが開きます。
WINIO ドライバのメッセージが出る場合には、ちゃんと同じフォルダに
WINIO のファイルが揃っていること、そしてローカルのドライブに
置かれていること(ネットワーク上ではダメ)を確認してください。
また動作には管理者権限が必要です。  

それでもまだ WINIO が怒ってくる場合には、私はそれほどこのドライバに
精通しているわけではないので、WINIO の開発者といろいろ調べないと
いけないかも知れません (http://www.internals.com/utilities/utilities.htm).

めでたく "Thinkpad T43 Fan Control" ウインドウが出てくれば
以下の画面に表示されている値がまともなものかどうかチェックします。

Check 1: "Fan State"
最初のフィールドは次のどちらかになっているかと思います。
"0x80 (BIOS Controlled)" または "0x0Y (Fan Level Y, Non Bios)"
Y の部分には 0 - 7 の数字が入ります。最初の数値は 0x80 なら
望ましい値です。

Check 2: "Temp."

2つ目のフィールドは
"Highest 47ーC" 
などのようになっていて、一覧が以下のように出ているはずです。

  CPU 41ーC (0x78) 
  APS 38ーC (0x79) 
  X7A 31ーC (0x7A) 
  GPU 40ーC (0x7B) 
  BAT 32ーC (0x7C) 
  BAT 30ーC (0x7E) 
  XC0 36ーC (0xC0) 
  PCI 43ーC (0xC1) 
  PWR 41ーC (0xC2) 

ここには実際の温度がセ氏で表示されます。カ氏温度に慣れている方の
ために説明すると、通常は 25度から60度の間です。(20度は室温、37度
が体温、60度は触るとちと熱い、100度は水の沸点)
センサーのそれぞれの意味は後述します。

もし CPU 温度を計るツールをお持ちなら、このファンコントロールを
起動してからそのツールを実行し(最初のテストでは止めておくように
言いましたよね)、温度がだいたい一致するかどうか見てください。

Check 3: "Status"

その下のリストは設定値(デフォルトではActive= 0, Cycle= 5)(訳注:
デフォルトでは温度などのポーリングを5秒間隔で行います。)や
レベルなどを表示しています。スクロールして画面を下げればさらに
メッセージを見ることができます。
(訳注:私の手元の V0.18 では1行だけ表示されるようになっていて
スクロールのコントロールは有効になっていません。)
そうでなければ "Can't read status!" と出ます。
(これは EC からデータを取れない時にでます。例えば他のプログラムと
同時に EC からデータを読みだそうとした場合などです)

もしこの時点で問題が出ているなら、これ以上動かそうとはせずに
フォーラムへレポートしてもらえれば、対応可能かどうか調べます。

-------------------------------
 Test "Active で実行":
-------------------------------

前にも書いた通りこのプログラムはまだまだ初期の段階で、極少数の
テストしかできていません。
中にはけったいな動きをしたり、バグを抱えているものもあるでしょう。
消火器を側においておくとか、目玉焼を作るための生卵を用意するとか
それぐらいの心構えでいてください。
(ひょっとすると ThinkPad があなたの家にある一番高級なトーストに
なるかもしれません。)(訳注:最初から黒いから気にならないかも)

真面目な話に戻りましょうか。fancontrol.ini を開いて、"active"
の値を 1 に変えて保存してください。FanControl.exe を再起動します。
同じようなウインドウが開いて温度が表示されますが、モードを選択できる
ようになり、最初は BIOS が選択されているはずです。

まず試しに "Manual" モードにして、数値を 0 から 7 の間で適当に変えて
ください。(空白などの文字は受け付けません)
短いビープ音とともにウインドウの下段に "RESULT: OK!" などと出れば成功
です。もしファンをオフ(数値を "0" にセット)すると、一瞬ファンが回り
ますがすぐにファンは止まるはずです。


-------------------------------
 Test "Active状態から終了":
-------------------------------

プログラム終了時には、ファンの制御は BIOS に戻るはずです。
これを確認するには、manual モードで数値を 0 にしてファンを
止めてプログラムを終了すればいいでしょう。短いビープ音のあと
ファンが回り始めるはずです。(もし本体が冷たいのならファンは
回らないかも知れませんから、熱いときに試してください。あくまで
このテストはちゃんとプログラムが BIOS 制御に戻しているか
どうかの確認のために行うものです。)

*** 注意!  もしファンを停止させた状態でプログラムが不正終了 
*** すると、BIOS 制御に戻せないかもしれません。つまりファンは
*** その状態をずーっと維持したまま(止まったまま)です。 
*** これは非常に危険です。プログラムが再起動できて制御できれば
*** いいのですが、そうでないならすぐさまリブートしてください。


-------------------------------
 Smart モード
-------------------------------

Smart モードとはそのまんまなベタな名前です。プログラムは各種
温度センサーのうち最高のものを拾って、fancontrol.ini にある
表と見比べて動作を決めます。温度の値が変わればすぐにファンの
回転数も変えることができます。温度が下がれば回転もやっぱり
下がります。例えば、デフォルトの表では 50度 になると回りますが
48度以下になればまた止まります。

*** 注意!! むやみにこの値を増やすとえらいことになります。
*** たとえば 80度でファン停止とかいう設定にしたらそれはもう
*** 水ぶくれか焼鳥でも作ることになります。

この表は fanctonrol.ini で編集することができます。いきなり
危ない設定をするのではなく、最初は fan level が 0 のところ
だけ(つまりここまで下がれば安全という温度)というように
順序を踏むほうがよいでしょう。

あと、あるユーザが言っていたのですが、1と2、3-5、6-7 は
それぞれ同じファンの回転数になるようです。

また T40/R50 シリーズのユーザが 0/1/2(はちょっと怪しい)/3
しかレベルが存在しないという報告をしています。

-------------------------------
 温度センサー:
-------------------------------

まず一番に CPU の温度ですね。それ以外のセンサーの意味は正直
あまり分かっていません。もし冷却スプレーを撒いてでも調べる
という人が居たら教えてください。

以下の項目は現時点で分かっている(中には経験則や
http://www.thinkwiki.org/wiki/Talk:Problem_with_fan_noise
などの情報に基づいたものもあります)各種センサーです。

  CPU: まあ文字どおり CPU の温度です

  APS: CPU と PC カードスロットの間にあるセンサー
       (左 Alt キーの下あたり) (T43 2668)

  PCM: PCカードスロットの下 (前面左側)

  GPU: グラフィックボード…というか、チップ

  BAT: バッテリー (T43 の前/左側)

  BAT: バッテリー (T43 の後ろ/右側)

  BUS: Northbridge と DRAM の間 (R/T/Y キーの下あたり)

  PCI: タッチパッド下の Southbridge チップ付近 (無線LANを使うと
       反応するので、mini-PCI カードの下あたりか)

  PWR: 電源ユニット Acess-IBM ボタンの下あたり.
       (充電中に発熱することが多い)


-------------------------------
 EC のポート/その他
-------------------------------

以前からファンコントロールと他の同様のプログラムとを同居させる
のに苦労しています。特に NHC (Notebook Hardware Control)との
相性が悪いです。なんとなく EC のレジスタを読み出す時に衝突が
おきるようです。そういうわけで、唯一の解決策はそのプログラムを
起動しないことです。


-------------------------------
 バージョン履歴:
-------------------------------

V0.10 - 2005-11-27
 - 最初のリリースバージョン


V0.11 - 2005-11-28
 - 温度とセンサー(分かっているもの)を表示
 - コマンドでモード変更したときの数値を表示
 - ウインドウを最小化したときにも状態を表示
 - 状態変更字のビープ音をオプションとして追加
 - 一部 GUI 回りを変更

V0.12 - 2005-11-29
 - ファンの回転数を表示
 - 一定温度になると自動的に smart モードから BIOS 
   モードへ変更

V0.13 - 2005-11-29
 - ログを詳細に表示
 - ログは最大100行まで表示
 - ログをファイル (fancontrol.log) に落とすよう変更


V0.14 - 2005-11-30
 - タスクバーアイコンを追加 (fancontrol.ini を参照)
 - 起動時から smart モードにできるようにした (fancontrol.ini
   の active ディレクティブ)

V0.15 - 2005-11-30
 - IconLeves は ini を見なくなりました
 - 起動時から最小化するオプションを新設
 - センサーの中の最高温を無視するオプションを追加
 - EC の read error が一定以上発生すると終了する機能を追加 

V0.16 - 2005-12-04
 - ウインドウの処理を高速化
 - smart モードから 0x80/128 モードへの変更をできるようにした
 - close ボタンで最小化するようなオプションを追加

V0.17 - 2005-12-05
 - 内部処理でバグのため動作せず

V0.18 - 2005-12-08
 - バッファオーバーランなどの問題も修正
 - センサーにすべて名前が付いた
 - T43 でのセンサーの場所を示した図も追加
 - ドイツ語の readme を追加
 - fancontrol.ini のサンプルもドイツ語版を追加。



-------------------------------
 今考えていること:
-------------------------------


- Run as service としての動作
- ファンの pusing (訳注:一瞬ファンが過大に回ったりすること)
  への対応.
- CPU/GPU に対しては別のしきい値を設けれないか



-------------------------------
 謝辞:
-------------------------------

開発に協力頂いた各位に感謝します

- www.thinkpads.com forum の参加者(Thinkerer)の
  みなさんには温度センサーに関する情報をたくさん
  いただきました。

- www.thinkpad-forum.de forum の Sebume 氏には 
  readme のドイツ語訳にご協力頂きました

- www.thinkpad-forum.de forum の mANoLo27 氏には
  fancontrol.ini のコメントのドイツ語訳にご協力
  いただきました。