6/13/2011

[note] LooxU/C40のUbuntu11.04設定

少し前にGMA500ドライバ関連の不具合で画面が表示されず断念していた、LooxU/C40のUbuntu11.04へのアップグレードの件、放置しているうちに色々と進展があったらしく、それを参考にして再度トライしたところ、一応OKになった、という事でその手順をメモ。

1. Ubuntu 11.04のインストール

 いつものようにCDからセットアップします。途中、例のバグのせいで五月蝿いですけどじっと我慢。

2. サウンド修正

 これと3.のグラフィックドライバの修正は順不同ですが、こちらを先にする方が精神衛生上よいのではと思います。手順は10.10の時と同様で、/etc/modprobe.d/snd-hda-intel.confを作ってoptions snd-hda-intel enable_msi=0と書き込んでから再起動。これで静かになります。

3. グラフィックドライバ修正

 まずはWiki記載の手順に従ってEMGDドライバを入れます。具体的には以下のコマンド。ちなみにEMGDドライバはxorgの1.9系列にしか対応していないので、この時xorgがUbuntu11.04標準の1.10系列から1.9系列へダウングレードされます。

$sudo add-apt-repository ppa:gma500/emgd
$sudo apt-get update
$sudo apt-get install xorg-emgd emgd-dkms
$sudo emgd-xorg-conf

 WikiではこれでOKと言う事になってるんですけど、最後の設定ファイルxorg.confを生成するコマンドにバグがあるというか、解像度やら同期周波数やらがLooxU/C40のディスプレイと全然違うパラメタで生成されてしまいます。このまま再起動すると、画面が激しくズレたり縞模様になったりして正常に表示されません。なのでこれを手動で修正してやる必要があります。

 正確には現在のXorgでは設定データの管理方法と形式自体が変更されてxorg.confは存在しませんので、それに相当する下記ファイルの方をいじる事になります。

・設定ファイル名・場所 /usr/share/X11/xorg.conf.d/10-emgd.conf

 このファイルの中にディスプレイのパラメタが記載されているのですが、上述の通りバグによって全然違うディスプレイのパラメタが記載されているし、さらに必要なパラメタの記載が幾つか欠けています。解像度が1366x768だとか。作者のPC用なんでしょうけど困ったものです。修正すべきパラメタは結構多くて、差分を抜き出すのも面倒なので全掲載。なお掲載スペースの都合でタブを省略しているので、実際にはSection-EndSection間、SubSection-EndSubSection間はそれぞれタブが入ります。元のファイルを見れば直ぐにわかると思いますけれども。

10-emgd.conf ここから---------------------

Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
EndSection

Section "Device"
Identifier "Intel_EMGD-0"
Driver "emgd"
VendorName "Intel(R) DEG"
BoardName "Embedded Graphics"
BusID "0:2:0"
Screen 0
VideoRAM 131072
Option "PcfVersion" "1792"
Option "ConfigId" "1"
Option "PortDrivers" "lvds"
Option "ALL/1/name" "lvds-display"
Option "ALL/1/General/DisplayConfig" "1"
Option "ALL/1/General/DisplayDetect" "1"
Option "ALL/1/Port/4/General/name" "LVDS"
Option "ALL/1/Port/4/General/Edid" "1"
Option "ALL/1/Port/4/Attr/70" "0"
Option "ALL/1/General/Accel" "1"
Option "All/1/Port/4/General/EdidAvail" "0"
Option "All/1/Port/4/General/EdidNotAvail" "4"
Option "All/1/Port/4/FpInfo/Height" "800"
Option "All/1/Port/4/FpInfo/Width" "1280"
Option "All/1/Port/4/Dtd/1/PixelClock" "68880"
Option "All/1/Port/4/Dtd/1/HorzActive" "1280"
Option "All/1/Port/4/Dtd/1/HorzSync" "16"
Option "All/1/Port/4/Dtd/1/HorzSyncPulse" "64"
Option "All/1/Port/4/Dtd/1/HorzBlank" "120"
Option "All/1/Port/4/Dtd/1/VertActive" "800"
Option "All/1/Port/4/Dtd/1/VertSync" "2"
Option "All/1/Port/4/Dtd/1/VertSyncPulse" "4"
Option "All/1/Port/4/Dtd/1/VertBlank" "20"
Option "All/1/Port/4/Dtd/1/Flags" "0xc000000"
Option "All/1/Port/4/Attr/26" "18"
Option "All/1/Port/4/Attr/27" "0"
Option "All/1/Port/4/Attr/45" "1"
Option "All/1/Port/4/Attr/72" "1"
Option "All/1/Port/4/Attr/70" "100"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Intel_EMGD-0"
Monitor "LVDS"
SubSection "Display"
Depth 24
Modes "1280x800"
EndSubSection
EndSection

Section "Monitor"
Identifier "LVDS"
ModelName "LCD Panel used by EMGD"
EndSection

Section "DRI"
Mode 0666
EndSection

Section "Extensions"
Option "composite" "enable"
EndSection

ここまで------------------------------------------

 修正後、再起動。私の所ではこれで正常に表示されましたが、Videoramとか場合によってはさらに色々修正する必要があるかもしれませんし、細かい検証はしていませんので色々隠れた不具合があるかも。そもそも色々と微妙なドライバって話だし。というわけで、あくまでご参考という事で。トライされる場合にはくれぐれもご注意下さい。

 mplayerとか入れてみたけれど、再生支援も問題無い様子。なお一応Unityも動作します。何か表示が変でしたし、使いにくいので例によってすぐ外しちゃったんですけどもね。何はともあれ宿題が一つ片付いてとりあえずLooxUが復活、気分は悪くないのです。

--------------追記

続けてタッチスクリーンドライバを入れてみました。最新版ソースはfujitsu-usb-touchscreen-0.3.8.tar.gz、10.10対応版から更新されておらず、まあ無理だろうと思っていたら案の定コンパイルエラーで撥ねられたのですけれども、簡単に直せそうだったので6行ほど修正したら使えました。キャリブレーションも問題無し。
具体的には、ソース(fujitsu_usb_touchscreen.c)内の326~329行及び343,344行目、input_dev構造体のabsmin, absmax, absfuzzメンバをセットしている箇所計6行をコメントアウトして、その代わりに、326行目の所へ下記二行を追加すれば良いみたい。

input_set_abs_params(input_dev, ABS_X, touch_minx, touch_maxx, 6, 0);
input_set_abs_params(input_dev, ABS_Y, touch_miny, touch_maxy, 6, 0);

私の所ではこれでmakeが通りました。その他のインストール手順、設定方法等は当然ながら従来同様という事で、動作もOK。しかしこれ、ライブラリ側の仕様変更のあおりを食らった形だけど、そもそものライブラリの構成が直接メンバを触る形で、それがまずかったということですね。最初からこうメソッドを介する形にしておけば何も問題なかった筈、大きいモジュールはちゃんとしてるけれども、細かい所まで行き渡ってなければ意味がないのです。この種の設計自体のまずさ、それによって後々手間がかかる事が多いのはLinuxの欠点だと思うし、いわゆるタダより高いものはない、になってしまっているのは残念な事です。仕方ないんでしょうけど。

[過去記事 [note] Ubuntu 11.04がとても微妙]
[過去記事 [note] LooxU/C40もUbuntu化]