[Displaylink] [Android] BeagleboardでUSB-LCDなAndroid


  • 2009/12/3 magoroku15氏がAndroid 1.6での画面チラつきを修正したソースコード公開してくれました!感謝!あとタイトルちょっと修正、javaのバージョン変更方法追記


Android-Embedded-Japanのメーリングリストでmagoroku15氏が
BeagleBoard用のAndroidDisplaylinkドライバを公開してくれていたので
USB-LCDを注文して試してみた。


っていうか慌てすぎて、後の返信に
SANSUNG SyncMaster U-70
のがいいって言ってたのに
GREEN-HOUSE GH-USD7K
っての買ってもうた。
ちゃんと最後まで読んどきゃよかったー!


両者の違いは
Green-Houseのは最初にUSBストレージとして認識されるんで
LCDに認識させ直すのにconfigurationをいじってやらないといけなくて
サムソンのはそれがいらないってだけです。
(いや、ここかなりめんどくさいんだけどね実際)


他のことして遊んでたから時間があいてちょっとうろ覚えな部分があるけど
手順なんかを簡単に

  1. DisplayLinkドライバのソースをゲット
  2. Androidカーネルソースのゲットとパッチ当て
  3. AndroidカーネルDisplaylinkドライバを組み込む
  4. make menuconfig && make uImage
  5. SDへコピー
  6. ブート!

付録A.GREEN-HOUSEを買ってしまったあわてんぼうさんへ(僕)

1.DisplayLinkドライバのソースをゲット

magoroku15氏のDisplayLinkドライバ。
適当なディレクトリでゲットしておく。

$ git clone git://github.com/magoroku15/DisplayLink-driver-for-android.git

2.Androidカーネルソースのゲットとパッチ当て

Androidカーネルのビルド方法をsola氏が
http://code.google.com/p/android-development-environment/w/list
で非常にわかりやすい解説をしてくれているのでここを参考にすすめた。


当時Android1.6が最新だったので僕は
http://code.google.com/p/android-development-environment/wiki/Android1_6r1onBeagleBoard
を参考に。
今は2.0の情報も公開してくれてる。すばらしい。


とりあえ1.6の解説で言うところの
「4. kernel をビルドする」
の手前まで進める。


3.AndroidカーネルDisplaylinkドライバを組み込む

パッチまだ出てないときだったから手で書き換えた
(magoroku15氏のパッチを当てたほうがはやいかも
http://github.com/magoroku15/USB_display-touchscreen-mouse-patch


repoでゲットしたカーネルソースディレクトリの
/kernel/drivers/video/
にgitでゲットしたdisplaylinkディレクトリをコピー

$ cp -r displaylink /kernel/drivers/video/.

Kconfigを編集

$ vi /kernel/drivers/video/Kconfig

〜略〜
source "drivers/video/backlight/Kconfig"
source "drivers/video/display/Kconfig"

source "drivers/video/displaylink/Kconfig" << ここ追加

if VT
source "drivers/video/console/Kconfig"
endif
〜略〜

Makefileを編集

$ vi /kernel/drivers/video/Kconfig

〜略〜
obj-$(CONFIG_XEN_FBDEV_FRONTEND) += xen-fbfront.o
obj-$(CONFIG_FB_CARMINE) += carminefb.o
obj-$(CONFIG_FB_MB862XX) += mb862xx/
obj-$(CONFIG_FB_DISPLAYLINK) += displaylink/ << ここ追加

# Platform or fallback drivers go here
obj-$(CONFIG_FB_UVESA) += uvesafb.o
obj-$(CONFIG_FB_VESA) += vesafb.o
〜略〜

4.make menuconfig && make uImage

ここまできたら
またsola氏のページを参考にしながら
「4. kernel をビルドする」
以降をすすめる。

ただしmake uImageする前にCONFIG_FB_OMAP2を無効、CONFIG_FB_DISPLAYLINKを有効にしてやる必要があるので
sola氏の解説で

$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- sola_omap3_beagle_android_defconfig

まで行ったら

$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- menuconfig

して表示されるコンフィグ画面で CONFIG_FB_OMAP2* を無効にしてCONFIG_FB_DISPLAYLINKを有効にする。
(CONFIG_FB_OMAP2が有効だとAndroidの/dev/graphics/fb0がomapfbになってしまう。
なのでfb0をDisplaylinkに割り当てたいがための設定)


Device Drivers > Graphics support > Displaylink frame buffer support
を有効に

Device Drivers > Graphics support > OMAP2/3 Display Subsystem support > OMAP2/3 frame buffer support
を無効に


したらばまたsola氏の解説どおり

$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- uImage

以降を進める。


※makeでjava1.5に切り替えろ!って怒られたら

$ update-java-alternatives -l
java-1.5.0-sun 53 /usr/lib/jvm/java-1.5.0-sun
java-6-sun 63 /usr/lib/jvm/java-6-sun
java-gcj 1042 /usr/lib/jvm/java-gcj

で自分の環境をチェック。
1.5入ってなかったらapt-get
入ってるなら

$ sudo update-java-alternatives -s java-1.5.0-sun
$ export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

しとく。

6.SDへコピー

uImageとファイルシステムをSDへコピー

7.ブート!

うまくいけば最初に緑の画面が表示されるはず。
その後デスクトップが表示されればOK!


# でもなんか画面がチラつく!どうすればいいの?教えて偉い人!
magoroku15氏が修正してくれました!感謝!

          • -

付録A.GREEN-HOUSEを買ってしまったあわてんぼうさんへ(僕)

ここからはUSB-DisplayがUSBストレージとして認識されてしまう場合の手順


まずAndroidbusyboxをインストールしてfindコマンドを使えるようにする。
busyboxは公式からDLしてきてmake CROSS_COMPILE=arm-none-eabi-でOKだったと思う
参考:http://d.hatena.ne.jp/kinneko/20080904/p12
bConfigurationValuseを探すためにfindする。

# busybox find /sys -name bConfig*
/sys/devices/platform/musb_hdrc/usb2/bConfigurationValue
/sys/devices/platform/ehci-omap.0/usb1/bConfigurationValue
/sys/devices/platform/ehci-omap.0/usb1/1-2/bConfigurationValue
/sys/devices/platform/ehci-omap.0/usb1/1-2/1-2.1/bConfigurationValue

見つかったbConfigurationValueの中から値が2になってるやつを探す

# cat /sys/devices/platform/ehci-omap.0/usb1/1-2/1-2.1/bConfigurationValue
2

bConfigurationValuseを1にする

# echo 1 > /sys/devices/platform/ehci-omap.0/usb1/1-2/1-2.1/bConfigurationValue
DisplayLink device attached (GH-USD7)
found DisplayLink Chip alex
sent encryption null key: 16
displaylink monitor info: W(800) H(480) clock(3300)
colormap allocated
Console: switching to colour frame buffer device 100x30
# MMAP: 1536000 1536000
init: sys_prop: mis-match msg size recieved: -1 expected: 128

うまくいけば最初に緑の画面がでて、そのあとデスクトップが表示される。


あ、あとTwitterはじめました。
http://twitter.com/ksksue
同じ趣味の方いらっさいましたらフォローしあいましょう。