Hatena::ブログ(Diary)

h_kojimaの日記 RSSフィード

2011-06-20

BeagleBoard上のAndroidでWacomのペンタタブレットを使う

今回は、Wacomペンタブレットを、BeagleBoard上のAndroidで利用出来るようにする。
使用するタブレットは、FAVOという自宅にずっと放置されていた古いモデル:
f:id:h_kojima:20110619142416j:image:w150
タブレットLinux向けのドライバは、Web上で公開されているので、これを上手く利用してAndroid向けのドライバを作成する事にする。

WacomタブレットLinux向けドライバ

Wacomペンタブレットデバイスは、W8001というチップセットを内部で使用しているらしく、このチップセット向けのLinuxデバイスドライバのソースは、Web上で公開されている。

SourceForgeで公開されている、WacomタブレットのLinux向けドライバのWebページから、適切なカーネルバージョンのドライバソースを取得する。
今回は、2.6.26〜2.6.36向けのドライバソースであるinput-wacomを利用する。
input-wacomの中にもバージョンがいくつかあるようだが、今回は、input-wacom-0.11.0.tar.bz2を取得する。

ドライバモジュールコンパイルインストール

autotools

input-wacomのWikiページを見ると、ドライバは、autotoolsを利用してコンパイル可能だと説明されている。
私は、autotoolsという名前は聞いたことがあるものの、詳細については知らなかった。どの様な役割を果たし、どう使うのかに関しては、Kazuyaさんのautoconfに関するページが非常に参考になった。

BeagleBoard(ARMプロセッサ)向けコンパイルインストール

ただ、今回はautotoolsを使ってコンパイルをする必要はない。なぜなら、BeagleBoard向けにモジュールとしてコンパイルすれば良いことがわかっているし、Makefileを生成するまでもなく、それを実行するためには、以下のmakeを実行すれば良いからである:

> make ARCH=arm CROSS_COMPILE=/home/hide/workspace/git/myFroyo/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- -C /home/hide/workspace/git/myFroyo/kernel SUBDIRS=/home/hide/workspace/input-wacom-0.11.0/2.6.30 modules

これにより、/home/hide/workspace/git/myFroyo/kernelカーネルコンフィギュレーションを使って、BeagleBoard向けのドライバモジュールが/home/hide/workspace/input-wacom-0.11.0/2.6.30以下に作成される。作成されるモジュールは、wacom.koと、wacom_w8001.koの2つである。

次に作成したモジュールBeagleBoardに転送する:

> ./adb -s 20100720 push /home/hide/workspace/input-wacom-0.11.0/2.6.30/wacom.ko /system/lib/modules/wacom.ko
> ./adb -s 20100720 push /home/hide/workspace/input-wacom-0.11.0/2.6.30/wacom_w8001.ko /system/lib/modules/wacom_w8001.ko

ADBを使ってホストPCからAndroidにリモートシェルでアクセスし、モジュールインストールする:

adb> insmod /system/lib/modules/wacom.ko
adb> insmod /system/lib/modules/wacom_w8001.ko

インストール後に、ペンタブレットデバイスAndroidに接続すれば、認識されてインプットデバイスとして利用することが出来るようになる。

モジュールインストールの自動化

WiFiモジュールの起動時インストールと同様に、ペンタブレットデバイスモジュールも起動時にインストールされるように設定する。

まず、WiFi設定時に作成した/system/etc/init.omap3.shAndroidからホストPCに転送する:

> ./adb -s 20100720 pull /system/etc/init.omap3.sh /home/hide/workspace/android_init/init.omap3.sh

取得したinit.omap3.shに以下のインストールコマンドを追記する:

--- init.omap3.sh.org    2011-06-19 22:43:34.000000000 +0900
+++ init.omap3.sh    2011-06-19 13:34:24.000000000 +0900
@@ -6,3 +6,7 @@
 netcfg ra0 up
 netcfg ra0 dhcp
 
+# enable Wacom pen tablet
+insmod /system/lib/modules/wacom.ko
+insmod /system/lib/modules/wacom_w8001.ko
+

追記したinit.omap3.shAndroidに転送し、スクリプトを更新する:

> ./adb -s 20100720 push /home/hide/workspace/android_init/init.omap3.sh /system/etc/init.omap3.sh

最後に、ADB経由でAndroid再起動する

> ./adb -s 20100720 reboot-bootloader

この再起動以降は、起動時に自動的にドライバモジュールインストールされるようになり、何もしなくても起動直後からペンタブレットデバイスを利用出来るようになる。

終わりに

以上、WacomペンタブレットAndroid上で利用するためのコンパイルインストール手順をご紹介した。
実際に作業をしてみて、思っていたより簡単に目的が達成出来ることが分かった。
これはAndroidカーネルとしてLinuxを使用しているお陰と言えるかもしれない。つまり、カーネルモジュールのクロスコンパイルの方法さえ分かっていれば、Linuxデバイスドライバソースコードを使って簡単にAndroid向けのドライバモジュールが作成できるわけである。

参考文献

Linuxデバイスドライバ全般に関しての見識を得るためには、必携:

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close