2010年3月20日土曜日

ubuntu で、/dev/fb0 (FrameBuffer) を使う

TouchScreenを使うため、tslib(linuxで一般的なeventドライバ)にて ts_calibrate をしようとすると、以下のようなエラーになる。


ts_open: No such file or directory


これは、実はメッセージが不十分であり、ここにあるように、環境変数の指定がないのが原因であった。
以下のように、環境変数をセットすると上記エラーが出なくなる。


export TSLIB_TSDEVICE=/dev/input/event7


上記は、bashでの設定例。なお、デバイスは、 cat /proc/bus/input/devices や、lsusb 、dmesg |grep input などでTouchScreenに割り当てられたものを確認しておく。USB以外のデバイスではどうするかは確認中。

これで動くかと思ったら、今度は次のようなメッセージ。


open fbdevice: No such file or directory


いろいろ調べると、FrameBufferが問題らしい。しかも、/dev/fb0が存在しない。
結局、ここに書いてあったのだが、以下の手順が必要だった。


/etc/initramfs-tools/modules にvesafb とfbcon を追加。
/etc/modprobe.d/blacklist-framebuffer からvesafb をコメントアウト。
update-initramfs -u
/boot/grub/menu.lst のdefoptions にvga=791 を追加。(791:1024x768;16bitColor)
update-grub


これ以外にも、/etc/modules で指定するやり方もあるようだ。

参考:
https://lists.ubuntu.com/archives/ubuntu-jp/2007-December/000638.html
VGA-Mode https://wiki.ubuntu.com/FrameBuffer?highlight=(framebuffer)