グラフィックチップは、Intel System Controller Hub U15W に内蔵された Intel GMA 500。元々は、PowerVR SGX というグラフィックコアだそうな。Ubuntu デフォルト状態でも、800x600 が伸びた状態で表示される。慣れれば、これでも特に問題はないのかも知れない。

カーネルドライバ(drm.ko, psb.ko) と、xserver-xorg-video-psb を使って 1024x600 表示が可能。
タッチパネルドライバとして、evtouch を使用して、タッチ入力とキャリブレーションが出来た。


設定方法


  • カーネルドライバの導入

linux-ubuntu-modules を再構築。

  • ユーザーモードドライバの導入

ubuntu-mobile PPA から xserver-xorg-video-psb の deb パッケージをゲットする(リポジトリに入っているものとは違うみたい)。

  • タッチパネルドライバの導入

aptitude か Synaptic で xserver-xorg-input-evtouch パッケージを入れる(universe リポジトリに入っているので注意)。

  • xorg.conf を書く。

グラフィックドライバに関連する箇所は以下の通り(抜粋)。分かる人は適当にどうぞ。詳しくは、xorg.conf を参照。

Section "Device"
	 Identifier	"Configured Video Device"
	 Driver		"psb"				# グラフィックドライバの指定
EndSection

Section "InputDevice"					# タッチパネルの設定
	Identifer	"Touch Panel"
	Driver		"evtouch"
	Option		"Device" "/dev/input/by-path/pci-0000:00:1d.2-usb-0:1:1.0-event-"
	Option		"MinX" "290"
	Option		"MinY" "528"
	Option		"MaxX" "7956"
	Option		"MaxY" "7758"
	Option		"ReportingMode"		"Raw"
	Option		"Emulate3Buttons"
	Option		"Emulate3Timeout"	"50"
	Option		"SendCoreEvents"	"On"
Option		"MoveLimit"		"1"
Option		"LongTouchTimer"	"1"
Option		"Calibrate"		"1"
EndSection

Section "Screen"
	 Identifier	"Default Screen"
	 Monitor	"Configured Monitor"
	 Device		"Configured Video Device"	# psb ドライバを指定したビデオデバイスを指定
EndSection

Section "ServerLayout"
	Identifier	"Main Layout"
	Screen		"Default Screen"
	InputDevice	"Generic Keyboard"
	InputDevice	"Touch Panel"			# evtouch ドライバを指定した入力デバイスを指定
	InputDevice	"Configured Mouse
EndSection

  • タッチパネルのデバイス名を調べる

ドライバの問題なのか、udev がうまく使えないが、/dev/input/by-path 以下のシンボリックリンクが比較的安定しているのでこちらを利用する。

    • タッチパネルのデバイス本体が、/dev/input/event* のファイル名になっているので、cat コマンドを使用してタッチパネルのデバイスファイルを調べる。
    • /dev/input/by-path 以下の階層にタッチパネルのデバイスファイルへのシンボリックリンクを探して、xorg.conf の InputDevice セクションのデバイスに設定する。


  • タッチパネルのキャリブレーション

--> 別ページを参照


今後の課題


  • クレードル使用時の出力切替、デュアルモニタ (xrandr を使えば可能?)
  • ホットキーによる画面回転(xrandr を使えば可能?)
  • 3Dアクセラレーションを有効にする(Gfx PSB?、psb-kmd?)

試行錯誤の記録


実験1(xserver-xorg-video-psb 導入)


Hardy Heron には、Poulsbo 用のドライバ xserver-xorg-video-psb がすでに入っているが、バージョン違いで使えませんというエラーが出る。

(II) Module Intel Poulsbo: vendor="X.Org Foundation"
        compiled for 1.3.0. module version = 0.0.1
        Module class: X.Org Video Driver
        ABI class: X.Org Video Driver, version 1.2
(EE) module ABI major version (1) doesn't match the server's version (2)
(II) UnloadModule: "psb"
(II) Unloading /usr/lib/xorg/modules/drivers//psb_drv.so
(EE) Failed to load module "psb" (module requirement mismatch, 0)


ここのドライバを入れたところ、X.org 自体が落ちる。症状は、


バージョン不整合のエラーは、X サーバの起動オプションに、-ignoreABI を指定することにより強引に回避可能。

実験2(ignoreABI)


いったん、X.org を終了して、-ignoreABI を指定して X.org を起動してみる。

$X -config xorg.conf -ignoreABI

<<中略>>

drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: Open failed
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: Open failed
[drm] failed to load kernel module "psb"
(EE) [drm] drmOpen failed.
(EE) PSB(0): [dri] DRIScreenInit failed. Disabling DRI.
(EE) [drm] Could not uninstall irq handler.
(EE) PSB(0): This driver currently needs DRM to operate.

Fatal server error:
AddScreen/ScreenInit failed for driver 0

ようするに psb というカーネルモジュールも要るっぽい。




メモ




Poulsbo gfx driver のお知らせ
これによると、xserver-xorg-video-psb パッケージと linux-ubuntu-modules パッケージの
両方を使う必要があると。カーネルモジュールのオプションチェックが必要だな。
launchpad の PPA にしかなかったりとかしないよね?


hal について


xorg 7.3 でも hal によるデバイスの管理が行われている模様。xorg.conf に書いた内容が、lshal に反映されている。

xorg.conf による evtouch の設定をやめて、fdi で全部やれると、画面の回転にも対応出来るのだが・・・。

xorg.conf.failsafe について


xorg.conf をいじっていると、xorg.conf.failsafe というファイルが自動生成されて、一体どの設定が使われているか分からなくなる。
  • xorg.conf.failsafe は、xorg.conf に問題があったときに自動生成されるらしい。
  • xorg.conf.failsafe にも問題があったときには、xorg.conf.failsafe が自走生成のものに差し替えられるらしい。
  • xorg.conf.failsafe があった場合、xorg.conf よりも優先的に読み込まれるらしい。

X.org の設定を試す手順


エラーでxorg.conf.failsafeなんかが出来るとログも見られないので、ここはいったんgdmを落とす。

sudo /etc/init.d/gdm stop
X -config xorg.conf

こうすると、失敗してもそのまま終了するだけで、Xorg.0.log の内容はエラー時のものが見られる。


解像度の設定

○モードの追加方法?
xrandr で、--newmode と --addmode をすると解像度の変更で新しい解像度が選択可能になる。
だが、ドライバがなければどうにもならない。

○gtf コマンドで、modeline の値を計算できそるそうな。

○PowerStrip というソフトで Modeline の値を調べえられる。
http://wiki.x.org/wiki/FAQVideoModes#head-d174fd476064edf62ed05d71d8a91b3dc4307324
http://entechtaiwan.net/util/ps.shtm
→D4のVistaでは、起動するとシステムがフリーズするので断念

FrameBuffer について。

○framebuffer デバイスに関する一般的解説
http://i-red.info/docs/jfp/framebuffer.txt


ABIバージョン問題

X.org の起動のときに、ABI バージョンが違ってどうのこうのと文句を言われた場合には、X の起動オプションに -ignoreABI をつければ一応回避できる。


gdm 使用時の起動オプションは、/etc/gdm/gdm.conf に書く。


linux-ubuntu-modules-2.6.22-14


けど、ソースから行くなら、新しいカーネルでもよくない?
2.6.22-15 にも、drm-poulsbo と、sd8686 のソースが入っている。
http://www.urlfan.com/local/linux_on_htc_shift/83309836.html
↑これ見てコンパイルかなぁ。

→2.6.24 はどうだろう?
アップデートカーネルの 2.6.29-19 パッケージを調べてみる。
あるけど、hardy 用かな。



タッチパネルの設定


evtouch

universe のリポジトリに evtouch が入っているのでそれをインストール。

普通にコンソールに落ちてから、evtouch のキャリブレーションツールを使えばいけた。
キャリブレーションツールがうまく動作しない場合には、グラフィックのドライバがまずい可能性がある。


  • Xベースのキャリブレーションツールがあるが、これはうまくいかなかった。

  • タッチパネル解像度
とりあえず入れた状態だとタッチパネルの点の認識が荒く、細かい操作がしにくい。
以下のサイトを参考にすれば、直せるかもしれない(未検証)

以下のサイトを参考に、MoveLimit のオプションを xorg.conf に書き込むことで解決。
http://www.conan.de/touchscreen/evtouch_old.html

Options "MoveLimit" "1"
Options "LongTouchTimer" "1"

タイマー設定が無くても滑らかになるが、これを設定しておかないとタッチやドラッグが上手く動かせなくなる。ただし、xrandr を使った画面回転をするときには、fdi を使ったオプションの切替が必要になりそう。


joytouch


こちらは、Xベースのものらしいので、evtouch よりキャリブレーションが簡単にできそう。
ここにちょっとした情報とdebパッケージがある。
http://kmuto.jp/open.cgi?Loox

こっちが開発者ページかな。
http://sifter.org/~simon/journal/20060413.html

インストールして、'joytouch -cal' してみたけど、キャリブレーションツールがタッチに反応しない。
/dev/input/js0 はあるみたいだけど・・・'cat /dev/input/js0' していじっても何も出てこないので、
別のデバイスファイルにタッチパネルが関連付けられているよう。

udev かなにかで、タッチパネルを別のデバイスファイルに関連付けて、joytouch をそれに合わせて修正したらうまくいくかな?

vi joytouch.c # /dev/input/js0 --> /dev/input/event2
sudo aptitude install libxtst6 libxtst-dev 
make

で、make。D4 上で動かしてみたが、Bogus event type なるエラーが大量に出てキャリブレーションツールが終了。
そもそも、joytouch は ジョイスティックとして認識されてしまったタッチパネルを使うためのハックなので、D4 ではデバイスの種類が違っていて動かないのかもしれない。

解決策が見つかるまで中断。

最終更新:2009年02月04日 16:01