*********************************************************
    Mother Board Monitor Program for X Window System

        XMBmon ver.1.05

    for FreeBSD (Linux with ISA IO port access).
 *********************************************************

 最近はマザーボードに CPU の温度や CPU Fan の回転数などをモニター
する機能がついたものが増えて来ています。Windows95/98/NT 上ではこの
モニター機能を使ってリアルタイムに CPUの温度などをグラフ化する
プログラムがありますが、X 上でそのような機能を持ったプログラムが
ないようなので最低限の機能を持たせて作ってみました。

  ./configure & make すれば

      mbmon      Mother Board Monitor for tty-terminal
      xmbmon     Mother Board Monitor for X

の二つのバイナリができます。両方とも SMBus または ISA IO port に
アクセスするので setuid root してパスの通ったところに置いておく
必要があります。Makefile の make install を参考にしてください。
Linux の場合は ISA IO port のみサポートされています。その場合は
Makefile の DEFS 変数に -DLINUX を付けてコンパイルして下さい。

(((注意))) このプログラムは SMBus または ISA IO port に問答無用で
   アクセスし、場合によってはシステムを crash させる場合があります。
   特に、IO port 0x295, 0x296 へのアクセスは NE2000 互換ボードと
   重なる場合がありますので、これらの port への書き込みが許されるか
   チェックしてください。私はこのプログラムによって起きた如何なる
   問題にも責任は取れません。

 このプログラムはマザーボードに積まれているハードウエアモニターチップ
として Winbond の W83781D chip をメインに考えられています。このチップ
では、温度が 3つ(Temp0, Temp1, Temp2)、電圧が 7つ(V0 - V6)、および
FAN の回転数が 3つ(Fan0, Fan1, Fan2) 測定できるようになっています。
mbmon ではすべての情報をテキストで xmbmon では Temp0-2 および V0(Vcore)
の情報をグラフで表示します。単位は温度については摂氏(C)、電圧については
ヴォルト(V)、FAN の回転数については 回/分 (rpm) です。別のチップでは
これらの情報のうちいくつかはサポートされていません。xmbmon の場合
Temp0,1,2 をそれぞれ "MB", "CPU", "chip" という項目で示しますが、
それらは X の resource として変更可能です(xmbmon.resources 参照)。
場合によっては適切な項目名になっていないと思いますので、適宜変更して
ください。また、3つ目の温度センサーがない、または、繋がっていない場合は
これを表示させないようにできます。その時は Makefile の DEFS 変数に
-DNO_TEMP3 を付け加え、xmbmon.resources.no_temp3 を使ってください。

 自分のマザーボードでどのようなハードウエアモニターチップが使われて
いるかわからない場合は

      mbmon -d
     xmbmon -debug

という option でハードウエアモニターチップの情報を得ることができます。
これによって、これらが使えるかどうかがある程度判断できるでしょう。
なお、もしあれば SMBus によるアクセスを default としていますので、

      InitMBInfo: Device not configured

と出た場合は

      mbmon -d -I
     xmbmon -debug -method I

で、ISA IO port によるアクセスの方法を試してみてください。

 一般に最近のマザーボードではハードウエアモニターチップにアクセス
する方法として、SMBus (System Management Bus)と 古い ISA の IO port
による方法がありますが、新しいチップ(例えば ASUS の P3B-F mother に
使われている AS99127F など)は SMBus のみでしか使えないようです。
FreeBSD 3.3-Stable 以上ではこの SMBus によるアクセスが device driver
(intpm device) でサポートされています。3.3RELEASE 以前の場合はこの
intpm device を CVS tree から取ってきて入れなければ SMBus の方法は
使えません。詳しくは 渡辺尊紀@神戸大 さんのページを御覧ください。

      http://www.planet.sci.kobe-u.ac.jp/~takawata/smbus/

このように、SMBus が使えない場合(特に FreeBSD 2.2.x の場合は絶望的)、
ISA IO port が使えるマザーボードの時は上記の "I" option を使って
ください。もし、/usr/include/machine/smb.h が configure 時にない場合
は自動的に ISA access の方が default になります。

 開発は FreeBSD 3.3R上で上記の intpm device を付け加えた環境で行ない
ましたが SMBus および ISA IO port にアクセスする部分を書き換えれば、
他の PC-UNIX でも動作させれられると思います。詳しくはプログラムを
御覧下さい。また、私が開発に使ったマザーボードは ASUS の P2B/P2B-F
ですが、ハードウエアモニターチップとして、

     WinBond社                    W83781D, W83782D, W83783S
     ASUSTek社                    AS99127F
     National Semiconductor社     LM78/LM79

が使われていれば、使用できると思います。ここで、LM78/79 はマザーボード
の温度 Temp0 のみで、W83783S は Temp3 がありません。また、マザーボード
によってはモニターチップがサポートしていてもその機能を生かしていない
ものもあるようです。なお、通常 Temp0 がマザーボードの温度で、これは
ほとんど室温に近く変化に乏しいようです。Temp1,2 は温度センサーチップを
繋いで始めて有効になる場合が多いのですが、最近のマザーボード(例えば
ASUS P3B-F)では PentiumII/III の CPU 内部にある温度センサーに Temp1 が
繋がれていることもあるようです。私の試してみたマザーボードとその
"debug" の結果については DEBUG_info ファイルに載せてあります。

 なお、これらチップの制御情報は Windows95/98/NT 上の

    Mother Board Monitor

というプログラムの開発者 Alex van Kaam 氏の WWW

    http://members.brabant.chello.nl/~a.vankaam/mbm/

の情報を参考にさせていただきました。なお、このホームページにはどの
マザーボードがどのハードウエアモニターチップを使っているかの包括的
リストもあります。また、Winbond の chip の詳しい情報は以下の pdf
ファイルにあります。

	http://www.winbond.com.tw/sheet/w83781d.pdf
	http://www.winbond.com.tw/sheet/w83782d.pdf
	http://www.winbond.com.tw/sheet/w83783s.pdf

または、linux での hardware monitor のホームページにもこれらの多くの
チップの pdf ファイルが集めてあります。

    http://www.netroedge.com/~lm78/pdfs.html

 version 1.05 の作成に当たり、SMBus 対応および configure への対応に
ついては 渡辺尊紀@神戸大さん、linux への部分的対応は 岡村耕二@九大
さん、の寄与によるものです。また、ASUS の chip AS99127F の制御情報
については Windows 上のモニターソフト LM78mon の作者である 米谷紀幸
(:p araffin.) (http://www.infoaomori.ne.jp/~paraffin/) さんに教えて
いただきました。以上の方々に感謝いたします。

 このプログラムは完全にフリーソフトです。どのように改変・変更
してもかまいませんし、コピー・配布も自由です。また、このプログラム
を使ったために何か不都合なことが起きても作者は一切の責任を負い
ません。今のところ、このプログラムをより一層発展させるつもりは
ありません。ただ、もしこのプログラムを元によりよいものができた時
には作者にフィードバックしていただければ嬉しいです(もちろん全然
義務ではありません)。

 1999年11月24日 九州大学大学院理学研究科基礎粒子系科学専攻 清水良文

  e-mail:yrsh2scp@mbox.nc.kyushu-u.ac.jp
  http://www.nt.phys.kyushu-u.ac.jp/shimizu/index.html