YSFLIGHT.COM - Saving Dell Latitude XT

Saving Dell Latitude XT - YSFLIGHT.COM

(*) このページには、Dell初のタブレットPC、Latitude XTを受け取ってから、Blue Screen Of Death (BSOD、例の真っ青な画面でWindowsが固まるやつ)が発生する問題を解決するまでの流れを書いて見ました。ひょっとすると、同じATIのRadeon ExpressまたはMobile Radeonを搭載するラップトップで、バッテリー使用時にBSODが出る問題には同じ方法で対応できるかもしれません。どうやって解決したかはページの一番下に書いてありますが、同じ方法を試す場合は自己責任でお願いします。問題をさらに悪化させても僕は責任を負えませんので。

Blue Screen Of Death! (「死の青画面」とか訳す?)

DellのLatitude XTは、間違いなく、去年最も注目されていたタブレットPCだと思う。Latitude XTでDellがついにタブレットPC市場に参入した。値段が他のタブレットPCよりも飛びぬけて高いという難点があるものの、二点大きなアドバンテージがある。ひとつは、グラフィックチップで、他社製タブレットの大半が3D Graphics性能が劣るIntel製グラフィックスチップを採用している中、Latitude XTはATI Mobility Radeon X1250を積んでいる。なので、Latitude XTは、3Dグラフィックスも得意な数少ないタブレットPCと言える。

もう一点は、OSの選択肢で、Windows XP Tablet Editionを選ぶことができる。いろんなところでReviewが出ている通り、Windows Vistaは失敗作だ。もしも、ふたつのまったく同じ構成のPCがあったとして、片方にWindows Vista、もう片方にWindows XPをインストールしたら、Windows XPをインストールした方が快適に動作する。本来、ユーザがPCを買う目的というのは、ゲームをするためだったり、Webを見るためだったり、僕の場合は、研究に使うので、エンジニアリングの問題を解決するのが目的である。別に見栄えのいいウィンドウ開くためにPC買ってるんじゃない。OSというのは、そういう目的を達成するためのプログラムに最適の環境を提供するのがまず第一に必要なことで、本来脇役に徹するべきものである。にもかかわらず、PCのリソースをガバガバ食ってしまうWindows Vistaは根本的に誤っている。というわけで、僕はXPが使える限りXPを使い続けるつもりで、次に出てくるWindowsがVistaよりひどいものだったら、そのときがWindowsとの縁の切れ目だと思っている。

HP tx1000zシリーズのタブレットPCも、GeForce Go 6150搭載で、3Dグラフィックス性能は優れているが、Windows XPを選ぶことができないし、ドライバも提供されていない。なので、僕の目的には用が足りない。

とはいえ、去年の年末まで、実のところタブレットPC自体必要が無かった。仕事の研究テーマで、タブレットPCを必要とするようなものはなかったし、趣味でも別にタブレットが必要なこともなかった。が、それは、僕がスケッチCADの研究に投入されるまでの話だった。スケッチCADの研究自体は1990年代半ばから出ていて、直感的に3次元形状を作る方法として、かなり研究された。今は、五十嵐さんのTeddyがひとつの完成形になっているようで、既に製品に組み込まれたりしていると聞いたように思う。が、直感的に形状が作れても、エンジニアリングの設計みたいな、精密な設計にはいまいち使われていない。というわけで、スケッチインターフェースをなんとかしてエンジニアリング用途にも使えるようにしようという研究はまだいろいろやられている。

実を言うと、僕も一時的にスケッチCADインターフェースの研究に参戦してみたいと思ったことはあった。けど、メッシュ生成の研究の方が楽しくなってしまったもので、スケッチCADへの興味は薄れていた。のだが、去年突然うちの研究室のスケッチCADプロジェクトに参加することになってしまった。自分としてはぜんぜん予測してなかったことで、そのとき僕は別のプロジェクト用のプログラミングもあれば12月締め切りの論文もあって、一時的にパニックモードになった。YSFLIGHTの新バージョンもそんなわけで遅れに遅れて、まだ出せてないし(^_^;)

が、その代わり、うちの指導教授がタブレットPCを支給してくれることになった。そういうことなら、というわけでいろいろ調べていたちょうどそのタイミングで、Latitude XTがまもなく発売されるという話を聞いた。よくよく調べるとこれこそまさに僕の用途にぴったりのタブレットPCで、これを買ってもらうことにした。買ってもらう、と、言っても研究費での購入なのでPC自体はCarnegie Mellonの持ち物である。が、僕が管理して僕が持ち歩いてもいいことになっている。

というわけで、二週間ぐらい前、Latitude XTが届いた。また、2GBのRAMが、普通$40で買えるものが、Dellから買うと$400とか言われたんで、RAMモジュールだけ別のところから買って(Kingston KVR667D2S5/2G, 200pin 667MHz PC 5300 CL5)、それは既に手元に届いていた。で、まずMicrosoft Updateを延々当てて、Norton Anti Virusをインストールしたり、あれこれやった段階で、RAMを追加するのを忘れていることに気づいたので、2GBのRAMを追加してみた。そしたら、それまでまったく安定して動いていたLatitude XTが突然↓こうなった。

最初に疑ったのはRAMの初期不良。ためしにRAMをはずしてみたらまた普通に動くようになった。そして、RAMを再度インストールしてBIOSの自己診断をかけてみた。何かのエラーが出るだろう、と、思っていたら、BIOS自己診断は何もエラーを検出しなかった。RAMは大丈夫そうなのだが、と、思ってふたたびWindowsを起動するも、同じく青画面で死んでしまう。

仕方ないので、"DRIVER_IRQL_NOT_LESS_OR_EQUAL"で検索してみたところ、いくつか解決法らしい情報が出てきて、BIOSのメモリに関する設定を変えれば動くらしい。ところが、Latitude XTのBIOSはRAMの設定をほとんどまったく変更させてくれない。

仕方ないので、RAMも正常なんじゃないだろうかと思いつつ、そのRAMは返品して別なRAMを買った。新しいのは、念のため1GBのメモリにして、Corsair VS1GSDS667D2というやつを選んだ。なんで1GBに減らしたかというと、XPはメモリを増やすと安定しないという噂を聞いたんで。実のところ、Latitude XTのマザーボードの1GBとあわせて2GBもあればほとんどの用途には足りる。

それで、そのRAMが届いてインストールして、システムを起動したところ、無事起動して青画面も出ない!どうやら、本当にRAMの問題だったらしい、と、思って安心したのもつかの間、しばらくしてからACアダプタをはずして起動したら、またしても青画面でクラッシュ。ログオン画面が出てから、5〜15秒でクラッシュするようだ。この時点で、前回との違いはACアダプタの有無と気づいたので、ためしにACアダプタをつなげて起動したところ何も問題なくスタート。そして、試しにACアダプタをはずして起動したところ、クラッシュ!というわけで、クラッシュするのはACアダプタを使用せず起動した場合ということがわかった。

じゃあ、ACアダプタで起動してから、ACアダプタをはずしたらどうだろう?と、思ってやってみたところ、画面が一部崩れた状態で何も反応しなくなった。したの写真の真ん中のオレンジ色の四角はもともとマウスカーソルだった。

ということは、BIOSの自己診断は、ACアダプタをはずして実行しないと意味がない。というわけで、今度こそメモリエラーを検出するかと思って、ACアダプタをはずしてBIOSの自己診断機能を実行してみた。が、エラーは検出されず。RAMの仕様を確認したけど、間違いなく667MHz DDR2 PC5300 CL5で正しいはず。実際、BIOSはエラーを検出しなかった。というわけで、なぜ落ちるのか、謎になってしまった。この時点で、どうもマザーボードが怪しいんじゃないか、と、思った。

さらに、クラッシュの原因を究明するために、いったんハードディスクを綺麗さっぱり消して、Windows XP Tablet Editionを再インストールしてみた。ひとつずつドライバをインストールして行って、最初にクラッシュしたとき、その直前にインストールしたドライバが怪しい。もしも、指紋認識とかとくに必要も無いデバイスが問題ならば、そのドライバを入れないで使えば済む。と、思ってひとつずつドライバを入れていったのだが、残念なことにATI Radeon X1250のドライバをインストールしたら落ちた。その後、ACアダプタで起動して、コントロールパネルのデバイスマネジャでRadeon X1250をDisableして起動したら今度は落ちない。犯人はRadeonだった。Latitude XTを選んだ理由のひとつがRadeon X1250なので、これが無いのでは使い物にならない。この時点で、Latitude XTを使うには、RAMをオンボードの1GBで我慢するか、Radeon X1250をあきらめるか、どっちかの選択肢しかなくなってしまった。たまに大きなCADモデルを扱うとき、1GBでは足りないし、ハードウェアアクセラレーションが無いと大きなCADモデルを開いたらまともに表示できない。必要の無いドライバが原因だったらそれをインストールしないで使うという作戦は修正を迫られた。

が、どうも、原因はハードウェアというよりソフトウェア、Radeon X1250のドライバーなのではないか。まったく同じ部品で構成されたふたつのPCがあっても、厳密には少し動作が違う。完全に同じ特性の部品を製造するのはかなり難しい。結局、製造コストとの折り合いで、ばらつきがある程度の範囲内に収まるように部品を製造する。デバイスドライバの役割のひとつは、そういう微妙に反応が違う部品が混じっていても、安定してシステムが動作するようにデバイスをコントロールすることである。が、もしも、デバイスドライバが十分頑強にできていないと、ほんの少しの部品の特性の違いでシステムが不安定になることがある。そういうのがあると、よく例の青い画面(BSOD)でシステムが落ちる。ひょっとすると、ATIはRadeon X1250のドライバを、安定性よりもパフォーマンス重視で、十分頑強に作らなかったのではないか?だとすれば、このLatitude XTがクラッシュする問題は、ドライバを修正することで解決されるべき問題だ、と、思った。

Dellのカスタマサポート

とはいえ、自分でRadeon X1250のドライバを書けるわけもなく、万策尽きたかに見えたので、Dellのカスタマサポートにメールを書いた。ただ、RAMモジュールのことは書かなかった。まず第一に、ほぼ間違いなくRAMの問題ではない。それに、もしも、他社製RAMモジュールをインストールしたときのみ落ちると言ったら、BIOSがエラーを出さなかったと言おうが、二つの異なるRAMで結果が同じだったと言おうが、RAMの問題として片付けられるのは明らかだった。とりあえず、今まで自分で実行したテストと結果を一通り書いて、メールを送ってみた。

これまで、他のメーカーのカスタマサポートとの間で非常に嫌な経験が何度もあったのだが、Dellのサポートは迅速で真摯に対応してくれた。他社のサポートは普通、最初のレポートはまともに読まない。どれほど論理的に問題点は○○だと指摘しても、それは無視して、自分が既に実行したのと同じテストを実行するように要求されることが多かった。が、どうもDellのカスタマサポートは一通り僕のレポートを読んだようで、すぐにマザーボードを交換してくれるという話になった。もっとも、このサポートは、アメリカのDellだし、Latitude XTは大学が購入したので、大学相手のサポートが応対してくれたようなので、果たしてDellの日本法人の個人向けサポートが同じように良く対応してくれるかどうかは知らないけど。

というわけで、Latitude XTを送り返そうかと思ったのだが、どうもハードウェアの問題ではないのではないかという点がひっかかっていた。多分、マザーボードは交換された後、適当に検査されて、良ければRefurbish Partsとして使われるかもしれないが、悪ければ廃棄されるだろう。せっかく動いているハードウェアが捨てられるのはどうもかわいそうな気がした。ACアダプタ使用時は完璧に動作していて、バッテリー使用時も、ログオン画面が出て5〜15秒はまともに動いている。ハードウェアの問題として片付けるには安定しすぎているような気がした。

最後のテスト

送り返す前に、もう一度だけ別のテストをしてみることにした。PCをACアダプタで起動して、画面のプロパティ -> 設定 -> 詳細設定 -> トラブルシューティングを開く。そして、「ハードウェアアクセラレーション」を「なし」に、「ライト・コンバイン」を「オフ」にした。そして、いったん電源を切って、ACアダプタをはずして、バッテリーで起動してみた。予想通り、クラッシュせずに起動した。が、ハードウェアアクセラレーションが無効なので、OpenGLやDirect 3Dは遅い。

そして、ふたたび画面のプロパティ〜トラブルシューティングを開いて、一段ずつハードウェアアクセラレーションを上げてみた。OpenGLとDirect 3Dさえ速くなってくれれば、他の機能はいらないので、ひょっとすると、途中までハードウェアアクセラレーションのレベルを上げたところで、OpenGLとDirect 3Dのアクセラレーションが有効になって、かつ、クラッシュしない段階があるかもしれない。

ちなみに、ハードウェアアクセラレーションのレベルを一段上げるごとに再起動が必要かと思ったらそんなことはなくて、その場でレベルが変わった。一段ずつレベルを上げて行き、4段目まで上げたところで、OpenGLとDirect 3Dのアクセラレーションがオンになった。YSFLIGHTを起動して、OpenGLとDirect 3Dの処理が高速になったことを確認した。これはいい兆候。そして、ついにハードウェアアクセラレーションのレベルを最大にして、クラッシュすることを予想して「適用」ボタンを押した、が、落ちない!

つまり、ハードウェアアクセラレーションのレベルをなしにして起動すればPCはバッテリーで正常に起動できる。その上で、手作業でハードウェアアクセラレーションのレベルを最大まで引き上げれば、ハードウェアの普通の性能を利用することができる。要するに、Radeon X1250のドライバが、初期化のプロセスのどこかでしくじっているだけなのではないか。多分、ドライバが本来待つべき何かを待たずに、あるいは、一定時間待てばいいはずであると仮定して、まだアクセスできる状態になっていないハードウェアにアクセスしてクラッシュしていると考えることができる。

しかし、まだこれではハードウェアは問題無いらしいとわかっただけで、解決になっていなくて、起動のたびにハードウェアアクセラレーションレベルを手動で引き上げ、電源を切る前に忘れずにハードウェアアクセラレーションレベルを手動で引き下げるのはいくらなんでも面倒すぎる。ATIのWebサイトからRadeonの最新版ドライバをダウンロードしてみたものの、Latitude XTにはインストールできなかった。とりあえず、Dellのカスタマサポートには、マザーボード交換はもう少し待ってもらうことにして、近いうちにドライバの更新があったら知らせてもらうことにした。

が、どうも、クラッシュするタイミングがまだひっかかっていた。なぜ、ログオン画面が出てから5〜15秒の間正常に動作しているのか。もしも、ドライバが動作していなければ、WindowsはデフォルトのVGAドライバを使うので、画面解像度は800x600または1024x768に限定される。しかし、その5〜15秒の間、解像度はLCDパネルのネイティブの解像度が出ていた。

そのとき、ひらめいて、ひょっとしたら、ATIのドライバをインストールしたとき、何か別のサービスが一緒にインストールされたのではないか、そして、クラッシュはドライバ自体ではなく、そのサービスが引き起こしているのではないか、と、思った。早速、ACアダプタで起動して、タスクマネージャを開いたところ、なにやら怪しいプロセスがある。"ati2evxx.exe"。これは怪しい。キーワード"ati2evxx.exe"で検索したところ、ついに、下のページを見つけた。

http://www.file.net/process/ati2evxx.exe.html

このページのユーザのコメントのひとつによると、機種は違うものの、ATI X1300を搭載したDell Inspiron E1505で、このプロセスを切っておかないとACアダプタをはずしたときにクラッシュする、という書き込みがあった。機種は違うといっても、同じATI。しかも、ACアダプタをはずしたときにクラッシュ。これは同じ原因ではないだろうか?

解決

上のサイトには、どうやってati2evxx.exeが起動しないようにするのかの説明もあった。それが無ければ、Safe Modeで起動して、無理やりファイルを名前変更してやろうかと思ったけれど、それには及ばなかった。ただ、バージョンが違うのか、上のサイトの説明にある"Overdrive/Temp monitor"というサービスは見つからなかった。

(*) なお、下のステップによって、僕のLatitude XTは正常に動作するようになったものの、他のPCで同じ事をして問題が解決するとは限らないし、かえって状況を悪化させる可能性もあるので、もしも、やってみる場合は自己責任でお願いします。どうなっても僕は責任を負いません。

(1) コントロールパネル -> 管理ツール -> サービス -> ATI HotKey Poller -> スタートアップの種類を手動に設定
(2) ATI Catalyst Control Center -> VPU Recover -> オフ (日本語版でどういう表示か不明)
(3) ATI Catalyst Control Center -> Hot Keys -> "Enable Hot Keys" -> オフ(日本語版でどういう表示か不明)
(4) ATI Catalyst Control Center -> POWERPLAY -> オフ(日本語版でどういう表示か不明)

この設定後、Latitude XTはバッテリーでもACアダプタ使用時も、完璧に動作している。Ati2evxx.exeはタスクマネジャに現れなくなった。Radeon X1250のパワーマネジメントが無効になるので、若干バッテリーの減りが速くなるということだが、普通に使っている分には気にならないようだ。というわけで、早速、ペンインターフェースに慣れるべくいろいろ使ってみている。Windows Journalは結構気に入って、研究ノートはこれからはWindows Journalでつけることにした。研究テーマが研究テーマだけに、C++のコードの中にテキストでコメントを入れても絵が無いとわけがわからないことが多い。なので、結構 /* 研究ノートの何月何日分を参照 */というコメントが多くて、PCと紙の研究ノートと両方無いと見てもわからないことが多かったけれど、これからは、全部PCの中に収めることができるのでいろいろやりやすくなりそうだ。