メッセージ欄

2008年7月の日記

一覧で表示する

NetBSDとEee PCで外部ディスプレイを使う
2008/07/15(火) 25:14 NetBSD はてブ情報 はてブに登録 はてブ数

Eee PCには内蔵LCDパネルが小さくて狭いという不満があります。しかし、外部ディスプレイ端子があるので、家にいるときなどは大きな液晶ディスプレイにつないでその不満を解消することができるはずです。

Windowsでは簡単にできるマルチディスプレイですが、NetBSDではどうでしょうか?

ここではIO-DATAの液晶ディスプレイLCD-A173Vを例にマルチディスプレイを実現する方法について説明したいと思います。

まず、普通に外部ディスプレイをつないでXを起動すると、なんとか写りはするものの、640x480の解像度でせっかくの外部ディスプレイを生かすことができません。

pkgsrcからインストールしたmoduler-xorgではxrandrコマンドをつかって、この辺りの制御ができるようです。

まずは、現状の確認です。
tokuda@eeepc>xrandr
Screen 0: minimum 320 x 200, current 800 x 480, maximum 2080 x 1024
VGA connected (normal left inverted right)
   640x480        60.0  
LVDS connected 800x480+0+0 (normal left inverted right) 0mm x 0mm
   800x480        60.0*+
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  
TV disconnected (normal left inverted right)
外部ディスプレイの解像度はSXGA (1280x1024) なのに、なぜか640x480しか画面モードを認識していないようです。

そこで、xrandrを使って明示的に1280x1024のモードを追加する方法でマルチディスプレイを実現します。

新しいモードを追加し、それを有効にするには三つのステップが必要になります。
  1. -newmodeオプションを使って、新しいmodelineを作成
  2. -addmodeオプションを使って、外部ディスプレイ (VGA) に新しいmodelineを追加
  3. 追加したmodelineを有効化
  4. 内蔵液晶パネルとの位置関係を指定
まず、-newmodeオプションを使ってmodelineを作成します。といっても、modelineの知識はないので/var/log/Xorg.0.logからmodelineを拝借してきます。
tokuda@eeepc>grep Modeline /var/log/Xorg.0.log | grep 1280x1024             [~]
(II) intel(0): Modeline "1280x1024"  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync
(II) intel(0): Modeline "1280x1024"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
(II) intel(0): Modeline "1280x1024"  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync
さて、どのModelineを使えば良いのでしょうか? といっても、一行目と三行目は同じなので、二つのパターンとなります。

両方試してみましょう。それぞれを"1280x1024-1", "1280x1024-2"という名前にしています。
tokuda@eeepc>xrandr --newmode "1280x1024-1"  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync
tokuda@eeepc>xrandr --newmode "1280x1024-2"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
xrandrの実行結果は次のようになります。
tokuda@eeepc>xrandr
Screen 0: minimum 320 x 200, current 800 x 480, maximum 2080 x 1024
VGA connected 640x480+0+0 (normal left inverted right) 338mm x 270mm
   640x480        60.0* 
LVDS connected 800x480+0+0 (normal left inverted right) 0mm x 0mm
   800x480        60.0*+
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  
TV disconnected (normal left inverted right)
  1280x1024-1 (0x50)  135.0MHz
        h: width  1280 start 1296 end 1440 total 1688 skew    0 clock   80.0KHz
        v: height 1024 start 1025 end 1028 total 1066           clock   75.0Hz
  1280x1024-2 (0x51)  109.0MHz
        h: width  1280 start 1368 end 1496 total 1712 skew    0 clock   63.7KHz
        v: height 1024 start 1027 end 1034 total 1063           clock   59.9Hz
実行結果の後ろの方に追加したmodelineが見られます。ここで注目したいのは、それぞれの二行目のclockです。

1280x1024-1のclockは75.0Hzで1280x1024-2のclockは59.9Hzです。液晶ディスプレイではたいていの場合60Hzにあわせるので1280x1024-2のほうがアタリということになります。

ここまでくれば、後は簡単です。--addmodeオプションで新規作成したmodelineをVGAに加えます。
tokuda@eeepc>xrandr --addmode VGA 1280x1024-2
tokuda@eeepc>xrandr
Screen 0: minimum 320 x 200, current 800 x 480, maximum 2080 x 1024
VGA connected 640x480+0+0 (normal left inverted right) 338mm x 270mm
   640x480        60.0* 
   1280x1024-2    59.9  
LVDS connected 800x480+0+0 (normal left inverted right) 0mm x 0mm
   800x480        60.0*+
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  
TV disconnected (normal left inverted right)
  1280x1024-1 (0x50)  135.0MHz
        h: width  1280 start 1296 end 1440 total 1688 skew    0 clock   80.0KHz
        v: height 1024 start 1025 end 1028 total 1066           clock   75.0Hz
ちゃんとVGAのところに1280x1024-2が追加されていますね。

次に現在640x480になっているVGAの設定を新規追加した1280x1024-2に変更します。
tokuda@eeepc>xrandr --output VGA --mode 1280x1024-2
この段階で外部ディスプレイは1280x1024が表示されているはずです。ただし、内蔵も外部も同じ内容が表示されるいわゆるミラーモードになっているはずです。

最後に、外部ディスプレイと内蔵液晶パネルとの位置関係を指定すれば各々の画面が個別に有効になります。
tokuda@eeepc>xrandr --output VGA --right-of LVDS
さて、長々と書いてきましたが、結局のところ次の四つのコマンドを叩けば良いことがわかりました。
xrandr --newmode 1280x1024 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
xrandr --addmode VGA 1280x1024
xrandr --output VGA --mode 1280x1024
xrandr --output VGA --right-of LVDS
上記の四行をshellスクリプトにしておけば、Xを再起動することなくマルチディスプレイを楽しむことができます。Windowsのようにほぼ自動とまではいきませんが、スクリプト一発でマルチディスプレイにできるのでかなり便利です。

家ではマルチディスプレイでひろびろ、外では1kgを切る軽さで楽々モバイル生活。

Eee PCはなかなか良いですね。

事務処理色々、ad esフォーマット
2008/07/14(月) 28:02 未分類 はてブ情報 はてブに登録 はてブ数

廃車にする手続きとか住宅ローンの繰り上げ返済とかの事務処理がたっぷり。

繰り上げ返済の手続き、ちゃんとやってなくて焦る。実印とか印鑑証明とか収入印紙とか。うわー、全然できてないじゃん。

あと、ad esをフォーマット。ACアダプタがないとフォーマットさせてくれないってケチ臭い。

おーい、オンラインサインアップしたら再起動って何? とりあえず、7か月目かぁ。うーん、しばらく買い替えはできそうにないねぇ。

今日のボク
2008/07/14(月) 24:46 今日のボク はてブ情報 はてブに登録 はてブ数

昨日はプールだったので早めに寝て、今日の朝は比較的順調に起きられました。

夜中、あつくてついにクーラーをつけていましたけど。

夕食は焼うどん。

今日のボク
2008/07/13(日) 20:44 今日のボク はてブ情報 はてブに登録 はてブ数

今日は午前中から虫採りに行くと言っていたんだけど、暑くってプールに行きたいと心変わり。

バスで葛西、地下鉄で西葛西、またバスに乗って江戸川プールガーデンに行ってきました。

いろんなプールで遊んで、唐揚げとフライドポテト食べて、ウォータースライダーやって、ちょっとプールで遊んで帰ってきました。

日焼け止め忘れて身体がひりひりするけど、楽しい一日だったと思います。

あ、そういえば、メダカは朝の段階で五匹とも死んでいました。

夕方に、川に流してくようしてきました。

昼間は冷やし中華、夜は野菜炒め。

今日のボク
2008/07/12(土) 25:00 今日のボク はてブ情報 はてブに登録 はてブ数

午前中はガリバーで車を廃車にする相談。って、最初は売るつもりだったんだけど、値段がつかないぐらい古い車だったので、廃車にして自動車税とか取り返した方がよいらしい、って。

ガリバーで、ページをはじく位置で白紙のノートにも絵本にもなる不思議なノートをもらった。タネは知っていればどうってことないけど、初めて見るとびっくりするもんだね。

昼のそうめんを食べて、行船公園にザリガニでも釣りに行くかと出かけてみました。

行きがけのダイソーで網とサキイカを買って、暑い中自転車で行船公園へ。

池の水は澄んでおり、ザリガニらしい影はありません。どうやら、すでに全滅したのかな。

仕方がないので、メダカとかアメンボを捕まえることに。

メダカを持ってかえって、そのままプールに。