のつづきです。
Radeon HD3450というチップを使ったビデオカードで、Xorgを使ってみました。
Xが起動するまでは、何も問題なく、すぐにできたんですが、解像度を変更できなくて、ちょっと手間取りました。
ディスプレイは、しばらく前に買った
に、DVIで接続しました。1680x1050で表示できるはずなんですが、xorg.confをどう書き換えても、1280x1024でしか表示されないのです。
FreeBSDは、7.1-BETA2、Xはportsでインストールした最新のXorg 7.3 (xorg-7.3_2)。
ログファイル/var/log/Xorg.0.logをじっくりと眺めていて、ようやく気がつきました。
(II) RADEONHD(0): RandR: Adding RRoutput TV_7PIN_DIN for Output DAC B
(II) RADEONHD(0): RandR: Adding RRoutput VGA_1 for Output DAC A
(II) RADEONHD(0): RandR: Adding RRoutput DVI-I_1/digital for Output UNIPHY_KLDSKP_LVTMA
(II) RADEONHD(0): RandR: Adding RRoutput DVI-I_1/analog for Output DAC B
(II) RADEONHD(0): Output TV_7PIN_DIN using monitor section Monitor0
(II) RADEONHD(0): Output VGA_1 has no monitor section
(II) RADEONHD(0): Output DVI-I_1/digital has no monitor section
(II) RADEONHD(0): Output DVI-I_1/analog has no monitor section
(II) RADEONHD(0): I2C device "RHD I2C line 1:ddc2" registered at address 0xA0.
(II) RADEONHD(0): EDID data for LCD-DTV221X
(II) RADEONHD(0): Manufacturer: IOD Model: 1683 Serial#: ●●●●●●●●
(II) RADEONHD(0): Year: 2008 Week: 32
(II) RADEONHD(0): EDID Version: 1.3
(II) RADEONHD(0): Digital Display Input
(II) RADEONHD(0): Max H-Image Size [cm]: horiz.: 47 vert.: 30
(II) RADEONHD(0): Gamma: 2.20
(II) RADEONHD(0): DPMS capabilities: StandBy Suspend Off; RGB/Color Display
(II) RADEONHD(0): First detailed timing is preferred mode
(II) RADEONHD(0): redX: 0.638 redY: 0.328 greenX: 0.300 greenY: 0.600
(II) RADEONHD(0): blueX: 0.149 blueY: 0.060 whiteX: 0.312 whiteY: 0.330
(II) RADEONHD(0): Supported VESA Video Modes:
(II) RADEONHD(0): 720x400@70Hz
(II) RADEONHD(0): 640x480@60Hz
(II) RADEONHD(0): 640x480@67Hz
(II) RADEONHD(0): 640x480@72Hz
(II) RADEONHD(0): 640x480@75Hz
(II) RADEONHD(0): 800x600@56Hz
(II) RADEONHD(0): 800x600@60Hz
(II) RADEONHD(0): 800x600@72Hz
(II) RADEONHD(0): 800x600@75Hz
(II) RADEONHD(0): 832x624@75Hz
(II) RADEONHD(0): 1024x768@60Hz
(II) RADEONHD(0): 1024x768@70Hz
(II) RADEONHD(0): 1024x768@75Hz
(II) RADEONHD(0): 1280x1024@75Hz
(II) RADEONHD(0): Manufacturer's mask: 0
(II) RADEONHD(0): Supported Future Video Modes:
(II) RADEONHD(0): #0: hsize: 1280 vsize 1024 refresh: 60 vid: 32897
(II) RADEONHD(0): #1: hsize: 1440 vsize 900 refresh: 60 vid: 149
(II) RADEONHD(0): #2: hsize: 1680 vsize 1050 refresh: 60 vid: 179
(II) RADEONHD(0): Supported additional Video Mode:
(II) RADEONHD(0): clock: 108.0 MHz Image Size: 474 x 296 mm
(II) RADEONHD(0): h_active: 1280 h_sync: 1328 h_sync_end 1440 h_blank_end 1688 h_border: 0
(II) RADEONHD(0): v_active: 1024 v_sync: 1025 v_sync_end 1028 v_blanking: 1066 v_border: 0
(II) RADEONHD(0): Supported additional Video Mode:
(II) RADEONHD(0): clock: 119.0 MHz Image Size: 474 x 296 mm
(II) RADEONHD(0): h_active: 1680 h_sync: 1728 h_sync_end 1760 h_blank_end 1840 h_border: 0
(II) RADEONHD(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1080 v_border: 0
(II) RADEONHD(0): Serial No: ●●●●●●●
(II) RADEONHD(0): Monitor name: LCD-DTV221X
(II) RADEONHD(0): EDID (in hex):
(II) RADEONHD(0): ■■■■■■■■■■■■■■■■
(II) RADEONHD(0): ■■■■■■■■■■■■■■■■
(II) RADEONHD(0): ■■■■■■■■■■■■■■■■
(II) RADEONHD(0): ■■■■■■■■■■■■■■■■
(II) RADEONHD(0): ■■■■■■■■■■■■■■■■
(II) RADEONHD(0): ■■■■■■■■■■■■■■■■
(II) RADEONHD(0): ■■■■■■■■■■■■■■■■
(II) RADEONHD(0): ■■■■■■■■■■■■■■■■
(II) RADEONHD(0): Output TV_7PIN_DIN disconnected
(II) RADEONHD(0): Output VGA_1 disconnected
(II) RADEONHD(0): Output DVI-I_1/digital connected
(II) RADEONHD(0): Output DVI-I_1/analog disconnected
(II) RADEONHD(0): Output DVI-I_1/digital using initial mode 1280x1024
(II) RADEONHD(0): RandR 1.2 support enabled
(==) RADEONHD(0): RGB weight 888
(==) RADEONHD(0): Default visual is TrueColor
(==) RADEONHD(0): Using gamma correction (1.0, 1.0, 1.0)
(II) RADEONHD(0): Using 1680x1680 Framebuffer with 1728 pitch
(==) RADEONHD(0): DPI set to (96, 96)
ふとRandRってなんだろうなぁ???と思って調べてみたら、これのことでした。
Xrandrという名前は、portupgradeしたときによく目にしていたので、知ってはいたのですが
Xrandr - X Resize, Rotate and Reflection extension.
というものだそうで、これを使って、解像度やスクリーンサイズを変更できるのでした。
この手の設定は、以前は、xorg.confにあれこれ書いて設定していたのですが、現在、RandRが使える場合には、xorg.confに書いた内容の一部は、無視されてしまうそうです。
この記述は無視するよ、とwarningメッセージとしてログに残してくれてれば、もっとわかりやすかったのに・・・
そういえば、Linuxのナンカでgnome2やkdeとかを使ってると、解像度を変更できるんですが、いったいどういう仕組みになってるんだ?Linux方面で勝手に拡張されたのかね?と、そのときは思ってました。
fvwm-1.24rを10年以上使い続けてきた私は、まるで浦島太郎・・・
最近は、若者に負けないように(?)、gnome2とmetacityにしてがんばってますけど。
MacやWindowsと比べて、X Window Systemは歴史は長いものの、機能的にはなんだかなぁと見劣りするところがあって(歴史が長いゆえのしがらみかも)、使っている最中に解像度を変更することは、あまり自由にはできなかったのですが、X RandRのおかげで、ようやくWindows 95程度までに進歩した、ってことでしょうか。
☆
xrandrというコマンドがあって(x r and rという区切りになっていることを、今回初めて知った!)、これで画面の解像度を変更できるそうです。
% xrandr
Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 1680 x 1680
TV_7PIN_DIN disconnected
VGA_1 disconnected
DVI-I_1/digital connected 1680x1050+0+0 474mm x 296mm
1280x1024 60.0 + 75.0 59.9
1680x1050 59.9* 59.9
1440x900 60.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 75.0 72.8 66.7 60.0 59.9
720x400 70.1
DVI-I_1/analog disconnected
こんな感じで、変更できました。
% xrandr -s 800x600
% xrandr -s 1280x1024
% xrandr -s 1680x1050
☆
これまで、チップセット内蔵ビデオ機能か、古くて枯れたビデオカードと、古いウインドウマネージャを使ってた私には、わからなかったことばかりです。せっかく、やや新しいRadeon HD 3450を使ってみたので、compiz-fusionというウインドウマネージャを試してみようと思いました。
OpenGLをつかってデスクトップを3Dでグリグリ動かしちゃう、見た目は派手だが、実用的ではなく安定性を求めるならやめとく、みたいなものらしいです。
インストールするだけなら、FreeBSDだと、portsで簡単にできました。compizとcompiz-fusionの2つがあって、別物らしい(?)んですが、compiz-fujisonの方がよさそうです。
・ ・ ・ で す が、全然、動きませんでした。
いろいろ調べてたら気がついたんですが、dmesgをみてもdrmがでてこないのです。
普通だったら、portsで、graphics/driをインストールしておけば、Xが起動しているときに、radeon_dri.soとかi915_dri.soみたいなのが使われると思うのですが、それは使われいない。なぜなら、drmというカーネルサポートが動いていなかったから。
drm.koとかradeon.koとかi915.koとか、そういったカーネルモジュールが自動的にロードされるはずなのに、それらもロードされていない。
これってのは、
FreeBSDのカーネルでは、Radeon HD 3450がまだサポートされていない
っていうことでした。
Xorgのログを見ると
(II) RADEONHD(0): Unknown card detected: 0x95C5:0x174B:0xE400.
If - and only if - your card does not work or does not work optimally
please contact radeonhd@opensuse.org to help rectify this.
Use the subject: 0x95C5:0x174B:0xE400: <name of board>
and *please* describe the problems you are seeing
in your message.
(--) RADEONHD(0): Detected an RV620 on an unidentified card
とか出てて、Unknownはちょっと気になるのですがそれはおいておくとして、RV620とかいうチップなんだってことがわかります。
ちなみに、同じくXorgのログには、こんな対応関係が記録されています。
RV610 : Radeon HD 2350, HD 2400 Pro/XT, HD 2400 Pro AGP; FireGL V4000.
RV620 : Radeon HD 3450, HD 3470.
RV630 : Radeon HD 2600 LE/Pro/XT, HD 2600 Pro/XT AGP; Gemini RV630;
FireGL V3600/V5600.
RV635 : Radeon HD 3650, HD 3670.
RV670 : Radeon HD 3690, 3850, HD 3870, FireGL V7700, FireStream 9170.
FreeBSDのカーネルで、drmのソースコードはsys/dev/drm/のあたりにありました。drm_pciids.hというファイルにPCIのIDが列挙されていてので、この中で検索してみると、RV620が無いです。
http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/drm/drm_pciids.h
最新の8-CURRENTで使われていると思われるHEADブランチを眺めてみると
まだ入ってないですね。
2008年10月13日のコミットログに、Add support for Radeon rs740 (HD 2100)とあるのですが、もうちょっと先のことでしょうかね?
PCI IDを書き加えるだけで、動いてしまう可能性もあるのかなぁ。
☆
i815な別のパソコンで30分ほど格闘してみましたが、そちらでも動かせず、あきらめました。
解像度の動的な変更だけなら、昔からAlt+Ctrl+"+"やAlt+Ctrl+"-"でできてましたよね。
返信削除私も解像度の変更が出来ずに困っていました。
返信削除参考にさせていただきます。