mini2440にXをインストール

[| ]  最終更新: 2011/02/10 20:08:05

はじめに

boot X window with xeyes このページでは、Debianインストール済みのmini2440ボードにXをインストールします。 また、いくつか必要なパッケージも合わせてインストールします。

念のため、SDカードのバックアップを行い、SDカードが余分にあればコピーを作って、そこで続きをするといいと思います。


あると便利なもののインストール

ツールのインストール

mini2440:~# apt-get update
もし、なにもアップデートが起こらないときは、/etc/apt/sources.list の中身に
deb http://ftp.de.debian.org/debian lenny main
があるか確認する。なければ、vi等で追加。
mini2440:~# sudo apt-get install gcc make gdb lv


SSHできるようにする

mini2440でifconfigして得られるアドレスにsshしても、接続は出来てもログインができません。
そこで、sshできるように設定します。

/etc/ssh/sshd_configで一箇所書き換えます。

途中の
PermitEmptyPasswords no
を
PermitEmptyPasswords yes
に修正

最終行の
UsePAM yes
を
# UsePAM yes 
コメントアウト

その上で、'/etc/init.d/ssh restart' します。
これで、Teratermなどでsshできるようになります(root/パスワード空欄)。 もちろん、原理的にはセキュリティホールそのものですが、開発用ですし、とくに実害はないでしょう。

X window systemのインストール

mini2440でXを使えるようにします。
インストールと、Xおきまりのconfの設定ですが、タッチパネルの設定に特殊な手間がかかります。

Xのインストール

まずパッケージを入れます。

mini2440:~# apt-get install xorg
かなり大量にパッケージの依存があるので、それらをまとめてインストール
次に、/etc/X11/xorg.conf を以下の通りに設定します。
(なにかにコピペして、途中のコメント確認の上、成形して挿入。たとえばメモ帳の上で用意してコピー、Teraterm上で、# cat > /etc/X11/xorg.con として、ペースト(Alt-v)。後にCtrl-D。)
section "ServerLayout"
  Identifier     "XFree86 Configured"
  Screen      0  "Screen0" 0 0
  InputDevice    "Mouse0"
  InputDevice    "Keyboard0" "CoreKeyboard"
  InputDevice    "Touchpad0" "CorePointer"
  Option         "OffTime" "10"
EndSection

Section "InputDevice"
  Identifier  "Keyboard0"
  Driver      "kbd"
  Option      "XkbModel" "pc105"
EndSection

Section "InputDevice"
  Identifier  "Touchpad0"
  Driver      "evtouch"
  Option      "CorePointer" "true"
  Option      "SendCoreEvents" "true"
  Option      "Device" "/dev/input/event1"
  Option      "DeviceName" "touchscreen"
  Option      "MoveLimit" "10"
  Option      "MinX"        "110"
  Option      "MinY"        "104"
  Option      "MaxX"        "915"
  Option      "MaxY"        "911"
  Option      "Calibrate" "1"   # ※調整用、後述
  Option      "ReportingMode" "Raw"
  Option      "Emulate3Buttons"
  Option      "Emulate3Timeout" "50"
EndSection

Section "InputDevice"
  Identifier  "Mouse0"
  Driver      "mouse"
EndSection

Section "Monitor"
  Identifier   "Monitor0"
  ModelName    "Monitor Model"
  DisplaySize 240 320
  # DisplaySize 800 480   # 解像度を設定
EndSection

Section "Device"
  Identifier  "Card0"
  Driver      "fbdev"
  Option      "fbdev" "/dev/fb0"
EndSection

Section "Screen"
  Identifier "Screen0"
  Device     "Card0"
  Monitor    "Monitor0"
EndSection
これで、Xを起動してみます。
mini2440:~# X
X.Org X Server 1.4.2
Release Date: 11 June 2008
X Protocol Version 11, Revision 0
Build Operating System: Linux Debian (xorg-server 2:1.4.2-10.lenny2)

[Ctrl-C] で終了
エラーや警告がでますが、素のXの画面+Xのカーソルが出れば、XのインストールはOKでしょう。
なお、液晶のサイズに応じて、MonitorセクションのDisplaySizeは設定しておいた方がいいと思いますが、さしあたって、無視されているようで、Linuxのfbのサイズに応じて画面サイズが設定されているようです。
Xを起動したところで、Ctrl-Cで強制終了します。

また、'X &'で起動すれば、別のコマンドがいれられるので、'xeyes -display :0.0'ができます。 画面の状態は'xdpyinfo -display :0.0'で確認出来ます。なお、'&'付きで起動したものは、'kill %1'で止めます。

タッチパネルの設定

つぎに、タッチパネルを使えるようにします。

まず、パッケージを追加で入れます。

mini2440:~# apt-get install xserver-xorg-input-evtouch
X を起動してみると、明らかに対応がおかしいですが、タッチが反応することがわかります。

つぎに、調整します。 USBキーボードをUSBコネクタに接続し Xの止まった状態で、シリアルのターミナルから

mini2440:~# cd /usr/lib/xf86-input-evtouch/
mini2440:/usr/lib/xf86-input-evtouch# cp /usr/share/xf86-input-evtouch/empty_curssor.xbm /
mini2440:/usr/lib/xf86-input-evtouch# ./calibrate.sh
これで画面に'X'が上下左右中央に9個表示されます(なぜか、empty_cursorを/にコピーしないと動かない仕様)

この状態で

  1. スタイラスペンのようなもので、外周を一周なぞる(max,minチェック、画面に現在値とX,Y方向のmin/maxが表示されている)
  2. USBにつないだキーボードのEnterを押す
  3. よく見ると左上のXが赤くなっている。ので、このXをなるべく正確にタッチ。
  4. 次に上中央に移るので同様に。右までいったら中段、下段。
  5. 最後までタッチするとプログラムが終了する。
このとき、同ディレクトリにout.txtができます。
mini2440:/usr/lib/xf86-input-evtouch# cat out.txt
        Option        "MinX"        "69"
        Option        "MinY"        "182"
        Option        "MaxX"        "964"
        Option        "MaxY"        "911"
        Option        "x0"        "2"
        Option        "y0"        "5"
        Option        "x1"        "-1"
        Option        "y1"        "-2"
        Option        "x2"        "-5"
        Option        "y2"        "-2"
        Option        "x3"        "-3"
        Option        "y3"        "8"
        Option        "x4"        "1"
        Option        "y4"        "15"
        Option        "x5"        "1"
        Option        "y5"        "15"
        Option        "x6"        "4"
        Option        "y6"        "20"
        Option        "x7"        "5"
        Option        "y7"        "20"
        Option        "x8"        "-5"
        Option        "y8"        "0"
(値を見ると何となく、押しムラがある気がしないでもないですが)
これを/etc/X11/xorg.conf の 「Section "InputDevice"」に修正、追記します。
Section "InputDevice"
  Identifier  "Touchpad0"
  Driver      "evtouch"
  Option      "CorePointer" "true"
  Option      "SendCoreEvents" "true"
  Option      "Device" "/dev/input/event1"
  Option      "DeviceName" "touchscreen"
  Option      "MoveLimit" "10"
#  Option      "MinX"        "110"  # 最初に入れていたここらはコメントアウト
#  Option      "MinY"        "104"
#  Option      "MaxX"        "915"
#  Option      "MaxY"        "911"
  Option      "Calibrate" "0"   # ※1をゼロにする
        Option        "MinX"        "69"    # 丸ごとコピペする
        Option        "MinY"        "182"
        Option        "MaxX"        "964"
        Option        "MaxY"        "911"
        Option        "x0"        "2"
        Option        "y0"        "5"
        Option        "x1"        "-1"
        Option        "y1"        "-2"
        Option        "x2"        "-5"
        Option        "y2"        "-2"
        Option        "x3"        "-3"
        Option        "y3"        "8"
        Option        "x4"        "1"
        Option        "y4"        "15"
        Option        "x5"        "1"
        Option        "y5"        "15"
        Option        "x6"        "4"
        Option        "y6"        "20"
        Option        "x7"        "5"
        Option        "y7"        "20"
        Option        "x8"        "-5"
        Option        "y8"        "0"
  Option      "ReportingMode" "Raw"
  Option      "Emulate3Buttons"
  Option      "Emulate3Timeout" "50"
EndSection
(InputDeviceセクションのみ表記、残りは同一)

再びXを起動すると、それらしく、タッチしたところにカーソルがいくと思います。
ずれている場合はx0〜y8を調整してみるといいでしょう。と、いいますか、結局全部再調整しました。
具体的には、x0y0〜x8y8は
 678
 345
 012
の配列です(タッチ順ではない)。一度、x0-y8をゼロにして、それぞれの付近をタッチして、
 タッチよりカーソルが上にずれていたらyを正
 タッチよりカーソルが下にずれていたらyを負
のように、タッチの検出値からどれだけ座標をオフセットするか、の値のようです。
ある程度調整できましたが、どうも、タッチパネルそのものがあまり精度のいものではないようで、局所的に歪む場所もありました。
念のため、保護シートを剥がしてみましたが(ガワを止めている4本のネジを外す必要有り)、さほど状況は変わりませんでした。

小ネタ



その他パッケージのインストール

これで、Xが入ったので、Xに関連するものも含め、追加でパッケージを入れておきます。

# apt-get install tcl tk
# apt-get install python-all python-tk python-imaging-tk
なお、ここまで来て、df すると
mini2440:/# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
tmpfs                    30416         0     30416   0% /lib/init/rw
udev                     10240      1612      8628  16% /dev
tmpfs                    30416         0     30416   0% /dev/shm
rootfs                  706888    573964     97016  86% /
と、かなり多くなっています。ただし、これは /var/cache/apt/archives にあるダウンロードしたパッケージ群による圧迫なので、apt-get cleanでわりと回復します。
mini2440:/# apt-get clean
mini2440:/# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
tmpfs                    30416         0     30416   0% /lib/init/rw
udev                     10240      1612      8628  16% /dev
tmpfs                    30416         0     30416   0% /dev/shm
rootfs                  706888    449000    221980  67% /


熊谷正朗 [→連絡]
東北学院大学 工学部 機械知能工学科 RDE
[| ]