跳慮跋考

興味も思考も行先不明

Firefox OS for Raspberry Pi

スマートフォンなる多機能携帯電話の囹圄も及ばぬ不自由さに嫌気が差した昨今、戯れに持ちたる Rapberry Pi をスマフォと PC の中間みたいなものに仕立て上げられないかと思い立っては種々様々に画策し、FirefoxOS を動かせるらしいと聞いては b2g-17.0a1.linuxgl-gnueabi-armhf_v6 なる謎のバイナリを実行するも不安定過ぎ(ブラウザのアドレスバーを触ると死ぬ)、仕様が無いので自らコンパイルするに至りました。

FirefoxOS をコンパイルする

そこら辺に転がってた HP Pavilion dv6(CPU: Pentium 2.00 GHz, Memory: 2 GB)に入れた Ubuntu 14.04LTS 上で Firefox OS for Raspberry Pi に従い

# python_curses は見付からなかったけど問題ないみたい
$ sudo apt-get install git mercurial diffstat chrpath
# ビルドで要求されるもの。texinfo -> autoinfo, libsdl1.2-dev -> sdl-config
$ sudo apt-get install g++ gawk texinfo autoconf2.13 libsdl1.2-dev
# Ubuntu のバグ (http://lostquery.com/questions/728/importerror-no-module-named-_sysconfigdata_nd)
$ cd /usr/lib/python2.7
$ sudo ln -s plat-x86_64-linux-gnu/_sysconfigdata_nd.py .

$ cd ~/src
$ git clone git://yoctoproject.org/poky
$ cd ~/src/poky
$ git clone git://git.yoctoproject.org/meta-raspberrypi; git clone git://git.openembedded.org/meta-openembedded; git clone git://github.com/imphil/meta-b2g.git
$ . ./oe-init-build-env rpi-build
# ここで conf/bblayers.conf と conf/local.conf を編集
$ cd ~/src/poky
$ . ./oe-init-build-env rpi-build
$ bitbake -v rpi-b2g-image

$ sudo umount /dev/sdl*
$ cd ~/src/poky/rpi-build/tmp/deploy/images/raspberrypi
$ sudo dd if=rpi-b2g-image-raspberrypi.rpi-sdimg of=/dev/sdl
$ sync

という感じでした。 4 並行でやりましたが、途中で "ImportError: No module named _sysconfigdata_nd" 等とエラーが出た(上の Ubuntu のバグ)為やり直したのを含めて 7.2 時間という所。

実機で動かす

さてこれを Raspbery Pi の Model B に挿して起動し、ネットに繋がらないのでモデムを再起動したりしつつ

$ B2G_HOMESCREEN=http://www.mozilla.org b2g &

で見事ブラウザが起動しました。 Redirect がどうのと意味不明の供述をしますが一応アクセス出来ているみたいです。 しかし全くキー入力を受け付けず操作不能なので電源コードを抜いて強制終了しました。 再起動し、何故か & を付けてバックグラウンドで実行してるのを辞めると

$ B2G_HOMESCREEN=http://www.google.com b2g

終了できないのは改善しましたが、依然 Tab、Alt(何故かこれでボタンを押す)、Backspace やマウス(見えないがクリックは出来る)しか入力を受け付けない様子でした。 せめて文字を入力できないと検索とか全然できないんですが、下からにゅっとキーボードが出て来たりしないんですかね?

JavaScript のイベントを調べる

ちゃんとキーボードの入力を受け取っているのか不安になってきたので、JavaScript の keydown とかで

keyCode key
8 Backspace
9 Tab
14 [
32 Alt
48 0
...
57 9
59 l
61 ^
65 Control
66 v
67 x
68 s
69 w
70 d
71 f
72 g
73 u
74 h
75 j
76 k
77 n
78 b
79 i
80 o
81 p
82 e
83 a
84 r
85 y
86 c
88 z
89 t
90 ]
113 F1
...
121 F9
173 -
188 m
191 .

名状し難き惨状。 vxswdfguhjknbiopearyczt という配列は一体何なのでしょうか。 Google 先生に訊くと更に謎な PASTEBIN 一件だけを返してきます。 また表にない , @ p 等は反応が無く(Enter も!)、Printscreen については押すと b2g が終了します。謎仕様。

一方マウスでは mousemove/mousedown/mouseup がちゃんと発生して、mousemove は clientX/clientY の座標も返してくれるので操作性はある程度どうにかなりそうですが、mousedown 時の button 値は常に 0 が返る様です。

まぁ総じて、動くっちゃ動くという感じなんですが、どうにかなりませんかね、という。 誰かに真面に操作できる様にして下さい。

それから先般 3.2インチ液晶モジュール(TP付き) - aitendo@shopping を注文したので、続編があるかも知れません。