高解像度ディスプレイの設定

XF86Setup では、解像度が 1280x1024 までのディスプレイしか 設定できません。それより高解像度のディスプレイ(例えば 1600x1200)は 手動で設定します。 なお、ここで書かれていることは、次の組合せで動作を確認しました。


モニターの原理を理解する

失敗するとモニターから煙が出る。。。とかなんとか 恐ろしいこともあるということですから、 まずはしっかりモニターの原理と用語を理解しましょう。 また、モニター付属の取扱説明書も手元に置いておいてください。

参考サイト

重ねて注意しますが、本ページを参考にして作業を行った結果、 何かしらの損害を被ったとしても 著者は一切の責任を負いません ので、作業は慎重に行ってください。

まずは普通に設定

まず、雛型となる /etc/XF86Config を作るために、 普通に XF86Setup で設定をします。 とりあえず 1280x1024 で設定をしておけば良いでしょう。

# XF86Setup

/etc/XF86Setup の意味

/etc/XF86Setup の中身のうち、重要なのは次のブロックです。

/etc/XF86Config
Section "Monitor"
   Identifier      "Primary Monitor"
   VendorName      "Unknown"
   ModelName       "Unknown"
   HorizSync       27-94
   VertRefresh     50-75
   Modeline  "1280x1024" 110.00 1280 1352 1536 1712 1024 1025 1028 1054
EndSection

特に重要なのは最後の3行です。

これらのうち、上の2つは取扱説明書の仕様を見れば書いてあります。 ドットクロックとは、一秒間に電子銃を撃つ回数で、単位は M(メガ)です。 水平同期と垂直同期に関しては XFree86 Video Timings Howto などを参照してください。

結局は、1600x1200 にした時に Modeline をどう定義するか、 という問題になります。

Modeline の定義の仕方

XFree86 Video Timings Howto には、黒魔術を用いて Modeline を計算する方法が書いてあります。 これに従って計算するのもよいでしょう(著者はやってませんが)。 Modeline を計算してくれるページもあります。 (uS とあるのはμS(マイクロ秒)ですな)

取扱説明書に必要な情報が書いてある場合は、もっと簡単です。 「プリセットタイミング」とか「ビデオタイミング」などいう 記述とともに表が記載されているページを探してください。 FlexScan L771 の場合は、pp.46-47 がそれです。

この中で、「表示モード」とか「解像度」などと書かれている 欄が 1600x1200 となっている所に注目します。 FlexScan L771 の場合は、最後から6〜3行目の4行がそれです。

次に見るべきは、「フロントポーチ」、「同期パルス幅」、「バックポー チ」、「ブランキング期間」、「表示期間」、「同期」の6つです。 水平と垂直のそれぞれについて、(時間と)ドット/ラインの数値が 書いてありますか?書いてあればラッキー。もうできたも同然です。

FlexScan L771 の場合について、具体的に説明しましょう。 ドットクロックが 162.0 MHz となっている行に注目します。

ドットクロック=162.0MHz A. フロントポーチ B. 同期パルス幅 C. バックポーチ D. ブランキング期間 E. 表示期間 F. 同期
a. 水平(ドット) 64 192 304 560 1600 2160
b. 垂直(ライン) 46 50 1200 1250
(FlexScan L771 では、ドットクロック 175.5 MHz の行の 水平同期パルス 幅が 92 となっていますが、192 の間違いでしょう)

水平と垂直それぞれについて、次が成り立っているはずです。

さて、これらの数値を使って Modeline を書いて見ましょう。 上の例の場合、次のようになります。

Modeline "1600x1200" 162.00 1600 1664 1856 2160 1200 1201 1204 1250
ドットクロック 162.0 の右隣から順に、

となります。ここで、Ea とは表中の E列a行の数値(1600)を表します。

これで Modeline は設定できました。 しかし、 X を動かすのはちょっと待ってください。 (まだ 1600x1200 では動かないと思いますが)

X を動かしてよいか?

ソフト的には上の設定でOKなのですが、ハード的な制約によって X が動かない/動かしてはいけない場合があるかも知れません。 チェックしておくべきは次の項目です。

モニターの性能 ドットクロックが仕様書の範囲内か
ビデオカードの性能 ドットクロックが許容範囲内か
ビデオ RAM は十分あるか?

これらの項目をチェックしておいてください (まだあったかも知れません)。 なお、ビデオ RAM が不足しているときは、色数を減らせば 表示できることもあります。

/etc/XF86Config の設定

さて、いろいろなチェック項目をクリアしたら、 最後の仕上げにかかりましょう。 /etc/XF86Config に Modeline などの情報を書き込みます。

/etc/XF86Config
Section "Monitor"
   Identifier      "Primary Monitor"
   VendorName      "Unknown"
   ModelName       "Unknown"
   HorizSync       27-94
   VertRefresh     50-75
   Modeline  "1280x1024" 110.00 1280 1352 1536 1712 1024 1025 1028 1054
   Modeline  "1600x1200" 162.00 1600 1664 1856 2160 1200 1201 1204 1250
EndSection

Section "Screen"
   Driver          "SVGA"
   Device	   "Primary Card"
   Monitor	   "Primary Monitor"
   DefaultColorDepth 16
   BlankTime       0
   SuspendTime	   0
   OffTime         0
   SubSection "Display"
      Depth        16
      Modes	   "1600x1200"
   EndSubSection
EndSection

Section "Screen" の所は実はよく分かっていません。 他にも似たような Section "Screen" がある場合は、 同じように変更しておくと良いでしょう。 ただし、Depth が 大きい SubSection ではビデオRAMの関係で "1600x1200"ではなくて、"1280x1024" にしておいた方が 良いかも知れません。

設定がすんだら X を起動して見ましょう。 1600x1200 の高解像度が得られましたか? ちょっと画面が滲むように見える場合は、 Modeline の設定の所で、違うドットクロックを試して見てください。


FreeBSD の部屋


May 30, 2002