chumbyにsshログインしてオレオレswfを実行するまでのメモ
もうすぐChumby Niteが開催されるようですが、 たまたま某所からchumbyをお借りしたので、chumbyハックの導入として、
- sshでログインできるようにする
- 自作のswfファイルを実行する
ところまでのメモを残しておきます。
事前にやること - アカウントを作る
予めchumbyのサイトでアカウントを作っておきます。chumby本体をアクティベートするのにこのアカウントが必要になるので、事前にアカウントを作っておいてchumbyの到着を待ちましょう。
chumbyが届いたら
無線LANに繋げる
chumbyを起動すると、タッチスクリーンのテスト(タッチとドラッグ)をした後で、無線LANに接続する画面になります。
chumbyをハックするにはネットワーク接続が必須なので、ハックするなら無線LANに繋げられる環境でいじりましょう。
それから、無線LANのキーはASCIIではなく16進数での入力が求められます。
あわてずさわがず、
$ echo -n 'himitsuno_key' | od -t x1 0000000 68 69 6d 69 74 73 75 6e 6f 5f 6b 65 79 0000015
するなどして、16進数で入力しましょう。
ただし、v1.4やv1.5のファームウェアでは動かないので、v1.2に戻すか、v1.6を待つ必要があるようです。
アクティベーション
無線LANに繋がったら続いてはアクティベーションです。
chumby本体の画面を進めていくと、「Activate chumby」の画面で「コンピュータがあるならwww.chumby.comにアクセスしてね」と表示されます。
そこでPCブラウザで、chumby > activate a chumbyにアクセスすると、step 3のところに白と黒の碁石のような画像が表示されているはずです。
chumby本体でもNEXTの画面に、同じような白い碁石が表示されるので、画面をタッチしてPCブラウザに表示されているのと同じになるようにします。
同じ模様になったらNEXTをタッチします。アクティベーションが成功すると、PCブラウザにstep 4というのが現れchumby IDが表示され、chumby本体の画面には「Activation successfull」と表示されます。
このあとでデフォルトのチャンネルのダウンロードがはじまります。完了すると初期セットアップはおしまいです。
sshでログインできるようにする
いよいよsshでchumbyにログインします。
sshdを起動する前に重要な注意を。
sshdを起動しただけの状態は、IPアドレスさえわかればだれでもroot権限であなたのchumbyにログインできてしまいます。
信頼できないネットワークに繋げるときは、何かしらの制限や認証を課すべきです。
デフォルトではsshdが起動していないので、 Hidden screen in Control Panel の通りに隠しメニューを出してsshdを起動します。
- 本体上部のボタン的な部分を押して、コントルールパネルを表示して、
SETTINGSをタッチ
- CHUMBY INFOをタッチ
- 「Chumby Info」の画面の右上隅の「π」(パイ?)をタッチ
- 隠しメニューが表示されるので:
- SSHDをタッチするとsshdが起動します。
- FBCGIをタッチするとPCブラウザでchumbyの画面(フレームバッファ)が見られるようになります(後述します)
これでchumbyにsshログインできるようになりました。Chumby Infoや隠しメニューに表示されているIPアドレスに対してsshしてみます。このとき、ユーザ名にはrootを指定するのを忘れないようにしましょう。
$ ssh -l root IP_ADDRESS
sshd起動の制御
この状態だと、chumbyを再起動するたびに隠しメニューからsshdを起動する必要があり面倒です。chumbyが起動したときに自動的にsshdも起動するようにするには、chumbyにログインして、/pspというディレクトリの下にstart_sshdというファイルを作ります。
# touch /psp/start_sshd
それからもう一つ。sshでログインしてから、sshdを停止したい場合や開始したい場合は次のようにすればできます。
# service_control sshd stop # service_control sshd start
FBCGI - chumbyの画面をPCブラウザでみる
先ほどの隠しメニューの「FBCGI」をタッチすると、chumbyで動いているHTTPサーバを経由して、chumbyの画面を見ることができます。
隠しメニューの「FBCGI」をタッチしたら、まずはchumbyにSSHログインして、ls /psp/cgi-bin/ します。
もし、fb0とfb1というファイル(シンボリックリンク)があれば、ブラウザで
- http://chumbyのIPアドレス/cgi-bin/custom/fb0 (widgetの画面)
- http://chumbyのIPアドレス/cgi-bin/custom/fb1 (コントロールパネルの画面)
にアクセスすると、chumbyの画面が画像(jpg)で表示されます。
fb0、fb1がない場合は、Chumby tricks - Using a browser to see what's on your chumbyのようなCGIスクリプトを自分で作ればOKです。
自作swfを動かしてみる
最後に、自作のswfをchumbyで動かす方法を紹介します。
chumbyでサポートしているFlashのバージョン
Flash Lite 3.0です。 Developing widgets for chumby - ChumbyWikiからもう少し詳しい情報を引用します。
- Supported Features
- Flash video (FLV) encoded with ON2 and Sorenson Spark codecs
- Video, NetStream and NetConnection classes
- Internal PNG Transparent (PNG-24)
- Internal GIF Transparent
- External MP3 files
- External PNG, GIF, non-progressive JPEGs
- Not supported:
- Bitmap caching, bitmap effects or enhancements
- Stylesheets
- non-default code pages
- Focal gradients
- Progressive JPEGs
- External GIF Transparent
swfを実行する方法
(1)直接実行
FlashDevelop/Example - ChumbyWikiで紹介されている方法です。
scpやUSBメモリでchumbyから直接見えるところにswfファイルをコピーして、
コントロールパネルを終了して、flashplayerを使ってswfを実行します。
(コントロールパネルを終了するので)少々荒っぽい方法ですが、次に紹介するチャンネルに追加する方法に比べてこの実行方法の方が手間がかからないので、開発中にはよいと思います。
$ scp konnichiwa.swf root@mychumby:/tmp/
# stop_control_panel # chumbyflashplayer.x -i /tmp/konnichiwa.swf
(2)チャンネルの中から実行
Chumby tricks - ChumbyWiki - Mixing local widgets into a channelで紹介されている方法です。
通常、チャンネルにwidgetを追加するには、chumbyのサイトでの操作が必要になりますが、swfファイルとprofile.xmlをUSBメモリにコピーして、USBメモリを差したままでchumbyを起動すると、USBメモリ上のswfをチャンネルに追加することができます。
profile.xmlはChumby tricksのMixing local widgets into a channelのをコピペして
- name
- description
- thumbnail href
- movie href
を書き換えればOKです。thumbnail hrefはとりあえずは存在しないjpgファイルを指していてもwidgetの動作には問題ないようです。
ここでひとつtipsを。
WindowsでフォーマットしたUSBメモリだと、この方法でのswfの実行に失敗するという情報があります。わたしの場合もそうだったのですが、ブートメッセージをよく見ると、/dev/sda1をマウントしようとして失敗していました。どうもWindowsでフォーマットすると、デバイスまるごと(/dev/sda)をフォーマットするので、パーティション(sda1)が存在しないためこのエラーが出ていたようです。
そこで、LinuxマシンにこのUSBメモリを差して、次のようにパーティション(sda1)を1つだけ切って、FATでフォーマットしたところ、chumbyがちゃんと認識してくれるようになりました。
# fdisk /dev/sda Device Boot Start End Blocks Id System /dev/sda1 1 1021 127600 6 FAT16 # mkfs.msdos /dev/sda1
swfファイルを作る
Hello World!
まずはお約束のHello World!です。
こんな内容のHelloWorld.asを作って、
class HelloWorld { function HelloWorld(mc:MovieClip) { mc.createTextField("tf",mc.getNextHighestDepth(),0,0,100,20); mc.tf.text="Hello World!"; } static function main() { var app:HelloWorld=new HelloWorld(_root); } }
MTASC (Debian etchのmtasc-1.12-2を使いました)でコンパイルします。
$ mtasc -swf HelloWorld.swf -main -header 320:240:12 -version 8 HelloWorld.as
HelloWorld.swfができたら、先ほど紹介したswfの実行方法のどちらかでchumbyで実行してみましょう。
こんにちわ!こんにちわ!
chumbyには日本語フォントがないので、chumbyのswfで日本語の文字列を表示するにはフォントを埋め込む必要があります。
具体的な方法は、先人の解説をみてもらったほうがいいと思います。
- chumbyのプログラム開発 - 谷岡のページ
MTASC + swfmill を使った方法 - Chumby に「たんじょうび おめでとう!!」と表示する方法
haXe + swfmill を使った方法
ポイントは、フォントをまるごと埋め込むとサイズがかなり大きくなるので、表示したい文字が固定の場合はglyphs属性で埋め込む文字を指定するところです。これでかなりサイズは小さくなります。
(ひ)
トラックバックURL
この記事へのコメント
結果はすんなりつながりました。
設定は、上記本文中に紹介されているWikiページのLinksys USB200Mと同じでOKでした。