Raspberry Pi 2にLCD-USB10XB-Tをつなぐ[3/3] – タッチパネルを使えるようにする編

こんにちは、天野勝です。

前回は、LCD-USB10XB-Tの画面にXのデスクトップを表示させました。
今回は、このディスプレイに付属しているタッチパネルの機能を使えるようにします。

参考にさせていただいたページ

Atelier Orchard: DisplayLink

回回 PPE : Petit Panda Extreme 回回 – LCD-USB10XB-TをUbuntuで使う

タッチパネルの機能を設定する

LCD-USB10XB-Tは、なかなか有能でタッチパネルの機能がついています。また、タッチペンも付属しています。
しかし、上下が反転しているし、反応する領域がずれていたりで、そのままで使用するのは困難です。
そこで、キャリブレーションをします。
キャリブレーションの情報を設定ファイルに保存すればよいのですが、個体差もあるかもしれませんので、キャリブレーションのためのツールを使って実測することにします。

xinput_calibratorをインストールする

前回同様、作業はRPi2上で行ないます。

キャリブレーションには、「xinput_calibrator」というツールを使用します。
ソースコードを取得し、コンパイルすることにします。
しかし、xinput_calibratorコンパイルにはいくつかのライブラリが必要なので、先にインストールします。

$ sudo apt-get install libx11-dev
$ sudo apt-get install libxext-dev
$ sudo apt-get install libxi-dev

続いて、xinput_calibratorをコンパイルします。

$ git clone https://github.com/tias/xinput_calibrator.git
$ cd xinput_calibrator
$ ./autogen.sh
$ make

キャリブレーションをする

xinput_calibratorは、デスクトップ上で実行させる必要があります。
Xが起動していない場合は、Xを起動し、ターミナルを開きます。

$ startx

ターミナルからxinput_calibratorを実行します。

$ cd xinput_calibrator
$ ./xinput_calibrator

指示に従い、4点をポイントします。
実行が終わると、設定のための情報が出力されます。
私の環境は、以下の情報が出力されました。


Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "eGalax Inc. USB TouchController"
        Option  "Calibration"   "244 3873 3852 257"
        Option  "SwapAxes"      "0"
EndSection

 

 

この情報を設定ファイルに保存します。

$ mkdir /etc/X11/xorg.conf.d
$ sudo vi /etc/X11/xorg.conf.d/99-calibration.conf

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "eGalax Inc. USB TouchController"
        Option  "Calibration"   "244 3873 3852 257"
        Option  "SwapAxes"      "0"
EndSection

 

これで、タッチパネルの機能がまともに使えます。

あとは、ソフトウェアキーボードをインストールすれば、キーボードを接続せずに、タブレットぽく使うことができます。

Raspberry Pi 2にLCD-USB10XB-Tをつなぐ[2/3] – ディスプレイにXのデスクトップを表示させる編

こんにちは、天野勝です。

前回は、DiplayLinkのドライバを有効にするべく、カーネルの再構築をしました。
今回は、ディスプレイを接続し、Xが表示されるようにします。

参考にさせていただいたページ

Atelier Orchard: DisplayLink
回回 PPE : Petit Panda Extreme 回回 – LCD-USB10XB-TをUbuntuで使う
RPi – Raspberry Pi で USB 接続型モニター(ディスプレイ)を利用する方法

LCD-USB10XB-Tをディスプレイとして認識させる

LCD-USB10XB-TをRPi2に接続すると、ストレージデバイスとして認識されます。そして、そのストレージにはWindows用のデバイスドライバのインストーラが入っています。これは、Windowsを使う場合には、便利な機能なのですが、LinuxなどのOSを使う場合は、ちょっとやっかいです。
OSにディスプレイとして認識させるための設定をしていきます。

usb_modeswitchのインストール

手動でUSBデバイスを認識させるには、「usb_modeswitch」というコマンドを使います。

RPi2でソースコードからコンパイルする事にします。前回のカーネルのコンパイルはCPUパワーが必要なので、開発機で行ないましたが、この後はRPi2上で作業をしていきます。
sshを使って、RPi2に接続します。

$ ssh pi@RPi2のIPアドレス

USB関連のライブラリをインストールします。これがないと、usb_modeswitchがコンパイルできません。

$ sudo apt-get install libusb-1.0

usb_modeswitchのソースファイルをダウンロードし、展開、コンパイルします。

$ wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-2.2.1.tar.bz2
$ tar xf usb-modeswitch-2.2.1.tar.bz2
$ cd usb-modeswitch-2.2.1/
$ make

インストールします。

$ sudo make install

LCD-USB10XB-Tをディスプレイとして認識させる

実際に、LCD-USB10XB-Tを接続し、ディスプレイとして認識させます。
接続すると電力不足で、本体の挙動がおかしくなるかもしれません。その場合は、セルフパワータイプのUSBハブを使ってください。私の場合は、ELECOMのU2HS-T201SBKを使用しています。

$ sudo usb_modeswitch -v 17e9 -p 0156 -u 1

画面が緑色になり、無事にディスプレイとして認識されたことが確認できました。
デバイスファイルの状態を確認します。

$ ls /dev/fb*
/dev/fb0  /dev/fb1

fb1が増えていることが確認できました。

Xを起動する

追加された/dev/fb1にXの画面が出るように設定していきます。
この部分は、全面的に「DisplayLinkモニタでRaspberry Piデスクトップを使用する」を参考にさせて頂きました。ありがとうございます。

xorg.confを作成

xorg.confファイルを作成し、設定を書き込みます。

$ sudo vi /etc/X11/xorg.conf


Section "Device"
  Identifier "uga"
  driver "fbdev"
  Option "fbdev" "/dev/fb1"
  Option "ShadowFB" "off"
EndSection

Section "Monitor"
  Identifier "monitor"
EndSection

Section "Screen"
  Identifier "screen"
  Device "uga"
  Monitor "monitor"
EndSection

Section "ServerLayout"
  Identifier "default"
  Screen 0 "screen" 0 0
EndSection

Xを起動

Xを起動します。

$ startx

これで、Xが起動しディスプレイにデスクトップが表示されます。

LCD-USB10XB-Tをディスプレイとして自動認識させる

毎回、手動でusb_modeswitchコマンドを打つのは手間です。そこで、ディスプレイが接続されていたら、自動でディスプレイとして認識させるように、udevのルールを設定します。

$ sudo vi /etc/udev/rules.d/00-displaylink.rules


ATTRS{idVendor}=="17e9", ATTRS{idProduct}=="0156", ATTRS{bConfigurationValue}=="2", RUN+="/usr/local/sbin/usb_modeswitch -v 17e9 -p 0156 -u 1"

1行です。改行はしません。もし、改行する場合は、行末に「\」をつけてください。

これで、USBに接続するとディスプレイとして自動で認識されるようになります。

【タッチパネルを使えるようにする編】

Raspberry Pi 2にLCD-USB10XB-Tつなぐ[1/3] – カーネル再構築編

こんにちは、天野勝です。

GEEKSCHOOL をお手伝いすることになったこともあり、Raspberry Pi 2 Model Bを購入しました。
せっかくのハードウェアなので、GEEKSCHOOL以外でも何かに使えないかといろいろと考えてみました。が、あまり良い使い方思い浮かびません。とりあえず画面が表示された方が使い勝手がよいだろうと考え、家に転がっていたUSBディスプレイ(LCD-USB10XB-T)をつないでみることにしました。

Webを検索すると、先人たちの資料がありましたので、これらを参考に設定をしてみました。

参考にさせていただいたページ

回回 PPE : Petit Panda Extreme 回回 – LCD-USB10XB-TをUbuntuで使う
RPi – Raspberry Pi で USB 接続型モニター(ディスプレイ)を利用する方法
Raspberry Pi Documentation

環境

  • ターゲット
    ハード:Raspberry Pi 2 Model B(以下、RPi2)
    OS:Rasbian
  • 開発機
    ハード:自作PC(CPUはJ1900)
    OS:Ubuntu14.04(64bit)

ターゲットと開発機は、sshで接続します。

カーネルの再コンパイル

LCD-USB10XB-Tを使うには、DiplayLinkのドライバを有効にする必要があります。
しかし、Rasbianでは、このオプションがオフになった状態になっていますので、オプションをオンにしてカーネルをコンパイルします。

開発環境の構築

開発機でカーネルをコンパイルします。そのための環境を整えます。
作業用のディレクトリを作成します。

$ mkdir RPi
$ cd RPi

toolchainをインストールします。

$ git clone https://github.com/raspberrypi/tools.git

toolchainを使えるようにします。
私の場合は、.bashrcにパスを追加しました。

.bashrc


PATH=$PATH:/home/masaru/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian:/home/masaru/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin:/home/masaru/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin


カーネルのビルド

カーネルのソースコードを取得します。

$ git clone --depth=1 https://github.com/raspberrypi/linux.git

コンフィグファイルをターゲットであるRPi2からコピーします。

$ cd linux
$ scp pi@RPi2のIPアドレス:/proc/config.gz ./
$ zcat config.gz > .config

コンフィグファイルを修正し、ドライバを有効にします

.config


# CONFIG_FB_UDL is not set

CONFIG_FB_UDL=m

私の場合、2924行目でした。

カーネルをビルドします。
私の環境では、1時間半くらいで終わりました。

$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

モジュールをビルドします。

$ make modules_install ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=../modules/

カーネルの置換

カーネルとモジュールをtarボールにまとめて、RPi2に転送します。

まずはtarボールを作成します。

$ mkdir udlfb_raspi
$ cp arch/arm/boot/zImage udlfb_raspi/kernel7.img
$ cp -pr ../modules udlfb_raspi/
$ tar cvzf udlfb_raspi.tgz udlfb_raspi

sshでRPi2にログインし、RPi2側のバックアップを作成します。

$ ssh pi@RPi2のIPアドレス
$ sudo cp /boot/kernel7.img /boot/kernel7_org.img
$ exit

RPi2に転送します。

$ scp udlfb_raspi.tgz pi@RPi2のIPアドレス:/home/pi

展開してインストールします。

$ ssh pi@RPi2のIPアドレス
$ tar xvzf udlfb_raspi.tgz
$ sudo cp udlfb_raspi/kernel7.img /boot/kernel7.img
$ sudo cp -pr udlfb_raspi/modules/lib/modules/3.18.12-v7+ /lib/modules/

再起動します。

$ sudo reboot

カーネルのバージョンを確認します。

$ uname -a
Linux raspberrypi 3.18.12-v7+ #1 SMP PREEMPT Thu Apr 30 01:21:34 JST 2015 armv7l GNU/Linux

【ディスプレイにXのデスクトップを表示させる編】

【勉強会報告】「アナログツールで現場が変わる、チームが分かる」

こんにちは、天野勝です。

2011年11月7日(月)に、「アナログツールで現場が変わる、チームが分かる」と題した勉強会を開催しました。
この勉強会の元ネタは、以前「スクラムギャザリング東京2011」のDay2で55分間で実施したものですが、@furuhouse さんから「当日参加できなかったけど、参加したい」とのリクエストを受け、言い出しっぺの法則ということで、@furuhouse のご協力のもと実現しました。
当日は、12名の方に参加していただき、約2時間もの熱い議論を交わしました。

資料自体は、「スクラムギャザリング東京2011」の時と変えていませんので、こちらから辿ってください。

当日の議論の結果を載せておきます。