Island Life

< 偽ポインタ | 本気 >

2010/08/22

PCアップグレードメモ

OpenGL4を試してみたかったので新しいGPUを入れることにした。 だらだらと顛末をメモっとく。

ハワイのPC専門店は壊滅してしまったので(唯一の量販店であったCompUSAは撤退し、 小さなパーツ店も次々と消えていった)、パーツ入手は通販によるしかない。 それもハワイだと送料が高いのでつい色々まとめて注文してしまう。

今回はまずメインマシンにGTX470を入れることにして (480はまだ高いので ちょっとケチった)、そうすると電源が足りないので650Wの電源追加。 CPUがCore2 Quadなんでいまいちなんだけど、Core i7にするには MBから変えなくちゃならないので今回は見送り。

あと、かみさんのPCも、最近web見てて重いと言っていたのでついでに 更新。当初はCPUすげ替え+RAM増設くらいでいいかなと思ってたんだけど、 既にMBの世代が変わってて新しいCPUは軒並み載らないし、 メモリも今更DDRでは買い足したところで後で使い回しもきかない。 面倒なのでCPU/MB/RAM全取っ替え。Pen4 dual coreとDDR2 2Gにした。

パーツはどんどん世代が上がってくから、結局あんまり使い回しが効かないなあ。 一番使い回せているのはケースだ。ATXのケースは寿命が長い (さすがにATのケースはもう使いようが無いけど)。次がHDD。

思わぬ副作用は、音が静かになったこと。Pen4は65Wのやつで 前のCeleron Dより静かだし、メインマシンの電源も大きなファンのおかげか 心なしか静かになったようだ。

GTX470についてはちょっとはまった。Ubuntu配布のNvidiaの 最新のドライバ(195.36.24)でないとだめなんだけど、 このドライバで起動すると解像度が640x480までしか上がってくれない。

以下トラブルシューティング。

  • nvidia 640x480 とかでぐぐると色々出てくる。 https://help.ubuntu.com/community/BinaryDriverHowto/Nvidia とか https://wiki.ubuntu.com/X/Config/Resolution も参照。 解像度のトラブルは多いらしいく、xrandrを使ってモードを強制指定する方法がポピュラーらしいが…
    $ cvt 1680 1050
    # 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
    Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
    $ xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
    $ xrandr --addmode default "1680x1050_60.00"
    
    これで新しいモードは足せるんだけど、切り替えようとすると:
    $ xrandr --output default --mode "1680x1050_60.00"
    
    エラーになる (エラーメッセージメモっとくの忘れた)。
  • xorg.confを編集して上記のModelineを"Monitor"セクションに追加し、 "Screen"セクションから明示的に参照してみる。
    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        Monitor        "Monitor0"
        DefaultDepth    24
        SubSection     "Display"
            Depth       24
            Modes      "1680x1050_60.00"
        EndSubSection
    EndSection
    
    だめだった。/var/log/Xorg.0.log を見ると、モード "1680x1050_60.00" は validでないのでremoveした、などと出てくる。
  • 手がかりが少なすぎるのでもう少し何が起きてるか知りたい。 さらにぐぐると、Deviceセクションに次の行を足したらログに色々情報が出る、ということを知る。
    Section "Device"
        ...
        Option         "ModeDebug" "true"
    EndSection
    
  • これで走らせてわかったこと。
    • モニタのNative backend timingsが640 x 480 @ 60 Hzと認識されている。 EDIDではちゃんとDetailed Timingのところに1680x1050が出てくるんだけど、 全部読んでないのかな。
    • Unable to use mode "1680x1050" ... cannot compute backend DFP timings (mode is larger than native backend 640 x 480) と言われてこのモードが蹴られている
  • 色々断片的な対策が検索でヒットするので順に試してみる。
    • Option "IgnoreEDID" "1" # EDID情報を無視させる - 効果なし
    • Option "ModeValidation" "NoDFPNativeResolutionCheck" # ResolutionCheckを切る - 効果なし
    • Option "ExactModeTimingsDVI" "true" # Modelineで指定したタイミングを信用しろ! - これが効果あった。

昔はXの設定で良く苦労したものだったけど、最近でもこんなことはあるんだなあ。

Tag: PC

Post a comment

Name: