2004-06-17 .. 2006-02-06

Asus V9570 Hack

V9570 と VIA Apollo Pro 133T

環境
Video: Asus V9570/TD/128M; M/B: Gigabyte GA-6VTXE (Chipset: VIA Apollo Pro 133T); OS: Windows 2000 (SP4); Driver: 61.21; SmartDoctor: 4.54
症状
M/B のチップセットが AGP 4X に対応しているにも関わらず、nVIDIA の WHQL ドライバでは AGP 4X ではなく AGP 2X の設定になっている(ただし、Asus の拡張ドライバでは AGP 4X として認識されているようである)。またこのことが原因で、SmartDoctor の AGPVDDQ の値が AGP 2X の値である 3.30V を基準として計算されるので、実際には AGP 4X は 1.50V 近辺であるから、常に異常と認識されてしまう(SmartDoctor は、Asus 製であるにも関わらずAsus の拡張ドライバの AGP 設定を無視し、nVIDIA の WHQL ドライバの AGP 設定を参照して AGPVDDQ の値を決めているようである)。またさらに、WCPUID という検証ソフトを使ってみても、やはり AGP 2X として認識される。
原因
nVIDIA のドライバが、インストール時に VIA Apollo Pro 133 系のチップはすべからく AGP 4X 非対応として扱うのに原因があるようである。
解法
レジストリの [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nv\Device0] というキーに、"EnableVia4x"=dword:00000001 という値を追加する。
備考
レジストリパッチ:
viaagp4xon.reg (Windows 2000)
viaagp4xon.reg (Windows 9x)
※特に断るまでもありませんが、使用は自己責任にて

Win9x におけるこの症状は、一応、VIA Apollo Pro 133 系と nVIDIA ドライバの問題として FAQ になっているもののようである(VIA の サポートサイト の FAQ データベースを参照)。"EnableVia4x"=dword:00000001 というレジストリ値を追加する点は同じだが、Win9x の場合は追加するキーが [HKEY_LOCAL_MACHINE\Software\NVIDIA Corporation\Global\System] である点が違っている。

AGP 2X でも AGP 4X でもそれほど深刻なパフォーマンス上の差異は生じないというような話だが、SmartDoctor の AGPVDDQ に関する動作が正常に行われないというのが気になり、Google, Yahoo 等で日本国内・海外の情報を調べまくり、試行錯誤の上、やっと解決方法を見出すことができた。何しろ、VRAM 256MB 版の V9570/TD/256M を買わずに、VRAM 128MB 版の V9570/TD/128M を買うことに決めた大きなきっかけは、VRAM が半分しかない分だけ割安ということの他に、逆に SmartDoctor は割安の V9570/TD/128M にしか対応していないという情報が目に入ったからである。何となく、お得な感じがして、割安版を買うのに抵抗が少なくなり、食指を動かしたという次第だった。そんな経緯だから、SmartDoctor がちゃんと動かないのは、余計に気にかかることだったのである。

そもそも AGP の転送モード設定に原因があるとははじめは気づかず、SmartDoctor が異常警報を発するのを見て、むしろ買ったばかりのビデオカードがハード的に不良なのではないかと、かなり不安になった。保証期間は 3 年らしいので十分にあるが、初期不良交換期間はギリギリ過ぎている可能性があるし、(購入した)九十九電機の保証規定を見ると、サポートで動作チェック時に異常が発見されなかった場合、手間賃として¥ 1000 だか¥ 2000 だかを請求するというようなことが書かれていて、当初はかなり暗惨たる気持ちになった。

それで Google, Yahoo 等でよくよく調べてみると、VDDQ という値は、AGP 2X の時は 3.30V、AGP 4X の時は 1.50V だということを知った。SmartDoctor の設定基準値は 3.30V で、実計測値は約 1.50V であった。そこでやっと AGP の設定に何やら原因があるらしいと勘付いたわけである。

Win9x の場合の解決方法は、上記のように VIA のサポートサイトにも載っている FAQ だったが、Win2000/XP の場合の解決方法は、どうにかこうにか探して、海外のサイトに掲載されていたものを実践してみたらその通り上手く行ったので、レジストリパッチを自作してみた次第である。

AGP 4X になると、SmartDoctor もちゃんと AGPVDDQ の値も含めて動作させられるようになるし、SmartCooling 機能の方も SmartDoctor の異常監視機能があるおかげで安心して利用できる。SmartCooling 機能は、動的に GPU 冷却ファンの回転数を変化させて、最小限のファン動作で温度を一定以下に保つ機能だが、おかげでファンの動作音も比較的静かになる(これでこそ V9570/TD/128M の方を買った甲斐があったというものだ)。ただし、SmartCooling 機能を使うときは、SmartDoctor のファンの回転数に関する監視機能は off にしておくべきだろう。

あと余談に、BIOS の設定項目に AGP Aperture Size というものがあったので僕はこれを(この M/B の BIOS で設定できる値としては最大値の)256MB に設定している。海外サイトで「物理メモリの容量の半分を超えない範囲内で、VRAM の2倍程度に設定するのが目安」と書かれていたコメントがあった。僕のマシンの物理メモリは 512MB だからその半分は 256MB。ビデオカードの VRAM は 128MB だから2倍は 256MB で、ちょうど 256MB がいいということになるので、そのまま設定値として採用したというわけ。

追記 (2006-02-06):残念ながら、WinXP では AGP 4X 化をすることができない。Win2000 の AGP 関連ドライバファイルを取り出して強引に上書きコピーしてみたりもしたが、どうやっても 4X 化することができない。海外サイトの情報を検索してみても、「どうやっても無理だ」というような話しか見つからない。Win2000 で可能なのに、WinXP で不可能というのは、ひとえに VIA のドライバがそうなっているからだろう。実はこの M/B の Apollo Pro 133T という VIA 社製チップセットは、AGP 4X 以外にも、UltraATA-100 対応を謳い文句にしていて、そもそもそれらが理由で購入したのだが、UltraATA-100 は Win2000 でも WinXP でも有効にならずに UltraATA-66 でしか動作しないし、これらの件で VIA 社は信頼できない会社だという印象を強く抱くに至った。M/B に限らず VIA 社製チップの載った PC 機器(LAN カード等も存在する)は二度と買うまいと思う(Intel 製のチップセットは割高で好きじゃないけど、VIA のように信頼できないというのは好き嫌い以前の話)。

SmartDoctor の設定

ちなみに、SmartDoctor は、下のような設定で使っている(下記以外は off)。

  1. polling time: 5 seconds
  2. overheat protection: enable
  3. minimize smartdoctor after running 3D games
  4. voltage alarm: all (error bound: 15%=default)
  5. temperature alarm: all (70℃&80℃=default)
  6. fan control: manual (5% @ 冬期で GPU と VRAM はオーバークロックしない状態)

SmartDoctor と Win2000

V9570 のようなゲーム用途を主眼に置いたビデオカードの場合、静音性などは二の次なので、ビデオカードの空冷ファンの音がとてもうるさい。VRAM が 256M のものではなくわざわざ 128M の安い方を買ったのは、単に安価に済ませたかったわけではなくて、SmartDoctor というファンの回転数などを操作できるツールが添付されていたからだ。これで、ビデオカードが熱暴走しない程度に、ファンの回転数を最少限のスピードまで落とすことができる。

ところが、SmartDoctor がバージョンアップしていって、4.56 以降から、インストールできなくなった。仕方がないので、4.55 でインストールしてから、新しいバージョンの Data1.cab の中身のファイルを手動で上書きコピーするという方策で凌いでいた。しかしようやく(今さら)、現時点で最新の 4.80 では問題なくインストールできるようになり、多言語化もされたようだ。

V9570 と DirectX9.0b

環境
OS: Windows 2000/XP; Video: Asus V9570/TD/128M
症状
Direct3D を利用するプログラムを動かそうとすると、すぐに不安定になり、OS ごと(システム全体が)フリーズしてしまう。Direct3D を利用するプログラムは、例えば、「DirectX 診断ツール」の「Direct 3D のテスト」や、「QuickTime VR ムービー」を使った 3D 視点のゲーム「Myst III: Exile」、Windows Media Player によるストリーミング動画の再生などである。
原因
DirectX9.0b 版の、「Direct3D 7 インターフェイス」を使ったハードウェアアクセラレーションにバグがある。同じ DirectX9.0b 版の Direct3D でも「Direct3D 8 インターフェイス」「Direct3D 9 インターフェイス」については問題がない。
解法
この「Direct3D 7 インターフェイス」の正体は「d3dim700.dll」という \WINNT\SYSTEM32(もしくは \WINDOWS\SYSTEM32)の中に存在するファイルなので、これを古いバージョンの「d3dim700.dll」に置き換えると解消できる。また、応急処置的には、このファイルを削除してしまうという方法もある。どちらの作業の場合も、Windows を再起動しないと書き換えが反映されないので、注意する。
備考
書き戻した古い「d3dim700.dll」の詳細:
d3dim700.dll (Windows 2000, 5.00.2180.0001, 最終 製品, 英語, 1999-12-18 06:00:00, 584976 bytes)
d3dim700.dll (Windows XP, 5.01.2600.0000, 最終 製品, 英語, 2001-08-23 21:00:00, 791040 bytes)
※これらのファイルへのリンクは筆者が個人的に利用するためのものであり、ファイルにパスワード(pass: ****)がかけられていますので他の人はご利用になれません。
追記 (2004-11-07)
後になって Microsoft はこの問題に気付いたらしく、次のバージョン DirectX9.0c においては、d3dim700.dll が更新されており、症状が解消されている。

《以上》