2010年2月25日木曜日

そういえば、Smart Q5でLinux Emuは動いてます



すっかり報告し忘れていましたが、Smart Q5上のubuntuで、
emuは動いています。

残念ながら、wmは動いていません。理由はXの画面モードのようで、
色深度16bppでは動かないそうです。
24bppにすれば多分動くと思うのですが、設定の仕方がまだわかっていません。
(ブートパラメーターなのか、設定ファイルなのかすら不明)

動かしたInfernoの出所は、Google codeの物を
beagle board上のubuntuでビルドしたものです。
もともとBeagle board用にセルフビルドしたものですが、
それがそのまま動きました。

写真はその時の模様です。
iPhone 3Gにはマクロレンズが無いので、虫めがねごしです。
ボケてゆがんでいるのはそのせいです。

ところで、Android上でemuを動かす試みは
まだうまくいっていません。
ただ、これがもしうまくいけば、バックグラウンドでInfernoを動かし、
UIはAndroidアプリで構築し、ローカルのInfernoに接続する、
なんてことができるかもしれません。
Android用のDrawtermがあるといいのかな。
(あれ?DrawtermってInfernoに使えるの?)

なお、Drawterm for iPhoneというのは構想があるそうです。
http://cm.bell-labs.com/wiki/plan9/iPhone_drawterm/index.html

2010年2月15日月曜日

曲を聴きながら眠りにつき、良いタイミングで起こしてもらう(Sleep Cycle Clock をiPodとともに使う)

大人気のiPhoneアプリSleep Cycle Clockというのがあります。
寝ている間の体の動きをセンサーで検知し、眠りの深さを計算し、
眠りの浅いときを見計らっておこしてくれる目覚まし時計アプリです。
常にアプリランキングに入っています。
こんなアプリを作れたらいいなぁ。

これを起動している最中は
音楽を鳴らすことが出来ないのが残念でした。
しかし、回避する方法があるそうです。

これをやると、「曲を聴きながら眠りにつき、良いタイミングで起こしてもらう」ができるのです。

参考サイト:
http://holygekko.posterous.com/combining-sleep-cyle-and-ipod-or-how-i-tricke

詳細は引用もとのサイトを参照してください。

やり方だけ抜粋。


1. あらかじめiPodコントロールを有効にしておく。(設定→一般→ホーム→iPodコントロールをONに)これは一度設定すればOK。

2. iPhone標準アプリの時計を起動。寝付くまでの時間を設定し、「タイマー終了時→iPodをスリープ」を設定。こうすることで、いつまでも曲が流れ続けるのを避け、途中で曲をストップしてくれる。

3. iPodを起動し、好みの曲をスタート。

4. Sleep Cycle Clockを起動。起動が完了する前にHOMEボタンをダブルタップ(←ここがコツ)

5. iPodコントロールというウィンドウがポップアップし、裏ではSleep Cycle Clockが起動完了し、iPodの再生を止めるはず。その状態になるまで待つ。

6. Playボタンを押し、iPodの再生を開始し、Closeを押してポップアップを閉じる。あとはSleep Cycle Clockを通常通りに使う。


ちょっと手順が込み入っているけど、慣れればそれほど難しくないかと。
iPhone3Gで試してみたところ、成功しました。

良くこんなウラワザ見つけたなー。

2010年2月11日木曜日

SmartQ5 のスクリーンショットを撮る

SmartQ5のAndroidでスクリーンショットの撮り方がよくわからなかったのですが、
フレームバッファをファイルにダンプすればいいそうです。
たぶんUbuntuでも有効。

参考:
http://hirokuma.justblog.jp/blog/2009/11/q5fb0.html

ネットワーク上の別のパソコンから、SmartQ5にTelnet接続。
特に認証は聞かれず、すぐにプロンプトが現れる。
SDカードを挿した状態でフレームバッファの中身をファイルにダンプする。


cat /dev/graphics/fb0 > /sdcard/fb0.raw


/sdcardにSDカードの第一パーティションがマウントされている。

これをパソコンにもってくる。
Irfan viewで見られるとのことなので、Irfanview32を持ってきて
ファイルを開いてみる。

が、プラグインが要るみたい。
Irfanviewのサイトからiv_formats.zipを持ってきて、
pluginsディレクトリに展開。

ただ、そのままでは開けず、Irfanviewにドラッグ&ドロップすると
ダイアログが開く。

サイズ:800x480
色:16 BPP 5:6:5


でOK。
表示方向に関係なく、横方向の画が得られる。

パソコンの画面に表示すると結構大きいね。
相当タッチパネルの画素密度は高いんじゃなかろうか。

※遠隔からログインしなくても、自身で操作できる。
アンドロイドマーケットにtelnetというアプリケーションがあるので、それをインストール。
自身に接続できるようだ。ターミナル代わりに使える。

2010年2月7日日曜日

Inferno Phone構想

Smart Q5をベースに、Inferno Phoneの仕様を考えてみます。

まずはプロトタイプです。現実的な目標をたてます。

・ハードウェア
Smart Q5そのもの

・OSブート方法

インストール済みのubootにてホストOSをブート(おそらくLinuxになると思われる)。
ホストOS上でemuを起動する。

・有効デバイス

タッチパネル、WIFI、SDカード

・ユーザーインターフェース

wm/wmをそのまま使用。
ただし、アプリケーションラウンチャがあると感じが出るので
limboで書くと良いかも。

ソフトウェアキーボードは既にあるので、それを利用。

ただし、日本語入力はまったく考えられていないので、
日本語FEP、日本語用ソフトウェアキーボードは別途開発の必要がある。

ペンでの手書き入力は特に考えていない。

その他、3ボタンマウスのエミュレーションは必要だろう。
本体のボタンを使うのが良いか?

・有用なソフトウェア

ウェブブラウザ

テキストエディタ

メーラー(む、どうするんだこれ)

Smart Q5



Smart Q5を購入しました。
http://www.covia.net/main/product-smartq5.html

タッチパネルつきの筐体に収まったネットワーク端末で、
Androidがインストールされています。

わりと自由にいじれるようで、Linuxも動かせるそうです。
マルチブートもいけるので、常用しつつ開発とかよさそう。

Smart Q5の良い点は

・日本での入手性が良い
・回線の契約がいらない
・単価が安い
・サポートがある

ですね。
なにより普通に国内で買えるのが良いです。
ある程度数売れるとネット上に情報も増えるはず。
個人的にうれしいのが、SDブートできる、ARMなのでInfernoが載せられそう、
と言う点。

気になる点は
・カメラが無い
・メモリが128Mbyte
・USBコネクタがminiB
・電池の持ちが良くない
・タッチパネルが感圧式
とかですかね。

地味に困るのが
・シリアルが外に出ていない
だったりします。
どうやら基板にシリアルのパターンはあるそうで、引き出せるそうですが、
筐体開けたくないなぁ。

Smart Q5に関してはいろいろと野望がありまして、

1. Inferno Phoneを作る
2. Android アプリを作る
3. 普通にネット端末として使う

といろいろと期待しています。
2,3,はまあいいとして、一番やりたいのはやはり
この上でInfernoを動かすことです。
できればPDAっぽくしたい。

なお、シリアルが出ていないので、Native Infernoのポーティングは
難儀しそうなので、まずはLinux上のemuを動かすこととしたいと思います。
emuでInferno Phoneの風味が味わえる所までするのが第一目標です。

よって、TODOとしては、

・Linuxを動かす
・emuを動かす
・GUIをそれっぽくする
・日本語入力を作る(あー全然進んでないな)

平行して、
・Native Infernoのポーティング(Beagleboard)

※気づいたら、自分はNative Infernoを使ったことが無いのだった。
 一度VMで386のNative Infernoを動かしてみた方がよいかも。

2010年2月4日木曜日

Beagleboard のDVIでInfernoのGUIが表示できた

以前Beagleboardの上でLinuxを動かし、その上でInfernoのemuを動かし、
GUIをネットワーク越しにXサーバーに飛ばすという試みをしましたが、
今回BeagleboardのDVIから直接ディスプレイに表示することに成功しました。

ただし、USBマウスが認識できなかったので何も出来ません。



・DVI(HDMI)ポートはディスプレイのDVIポートに
・デバッグシリアルポートはパソコンのCOMポートに
・OTGはパソコンのUSBから給電
・SDカードにLinux + Infernoのシステムを入れておく

今回いじったのは、ディスプレイの色深度です。
前回の設定では画面が16bitで、それではだめでした。
色の設定を変えるのは、ubootの設定で、カーネルオプションを変更します。

omapfb.mode=dvi:1280x720MR-16@60


としていたので、

omapfb.mode=dvi:1024x768MR-24@60


などとする。
Linux側では特に設定を変更することは無かった。

その後の手順は、

login: ubuntu
password:


でログイン

$ sudo startx


しばらくすると画面にxtermが表示されるので、ctrl-zでいったんストップ。

$ bg


でXを動かしつつ、さらにコンソールで作業。


$ export DISPLAY=unix:0
$ /path.../emu -r /path... -g 1024x768
;


として、Inferno起動。-gオプションはディスプレイサイズ。
で、wmを実行。

; wm/wm


さて、この状態では何も出来ませんが、一応なにかアプリケーションを動かしてみます。
wmの起動のときにオプションを追加してやり、

; wm/wm wm/bounce


とbounceというデモアプリケーションを起動してやると、



と、動きました。
このアプリケーションはただボールがウィンドウ内を飛び交うだけです。
一つ一つのボールにスレッドが割りあたっているそうです。

2010年2月2日火曜日

CharonのツールバーとCharon on Acme

ふと思い出しました。

1. Charonはもっと派手なツールバーがあったような記憶がある
2. Acme上でウェブページの閲覧が出来た

思い違いかと思ったら、どちらも真実だったようです。

1. Charonのツールバー

実際にツールバーを触った記憶が無かったのですが、
これはスクリーンショットで見た記憶があるだけでしょう。
リンク先の画像を見ると、確かにツールバーにホームやらブックマークやらの
アイコンがある。

あるバージョンとないバージョンの違いは、Infernoのエディションの違いと思われる。
スクリーンショットを見ると3rd editionとなっている。
おそらく3rdエディションでは派手だったのではないだろうか。

3rdエディションがダウンロードできたので持ってきてソースコードを見てみたが、
どうもそれっぽい記述がない。

次に、2ndエディションを持ってきてソースコードを見てみた。
charon.bにどうもそれっぽい記述があった。

結論:3rdエディションのどっかのタイミングでツールバーがシンプルになった。

2. Acme上でウェブページ

acmeでurlを指定してウェブページを開いた覚えがあった。
これはacme-sacの機能だったようだ。
URLを開くというコマンドは見つけられなかったが、
/acme/dis/にDict, Goog, Pediaというスクリプトがある。
これらはウェブから辞書、Google検索、Wikipediaの結果を返すようになっており、
acme上で Dict [単語], Goog [単語], Pedia [単語]と実行してやると、
acmeのウィンドウ上にウェブの内容を表示してくれた。
これらの中身はplumber(アプリケーション間通信のしくみ)でURLを送っているようだ。

そこで、/acme/dis/Webというスクリプトを以下のように作ってみた。


#!/dis/sh.dis
plumb -d web $*


で、acmeでWeb [URL]とするとウェブが表示された。

ウェブの表示はCharonのモジュールを利用しているようだ。
/usr/[User]/lib/plumbing というファイルにplumberの設定がある。


kind is text
data matches '(https?|file)://[a-zA-Z0-9_@\-]+([.:][a-zA-Z0-9_@\-]+)*/?[a-zA-Z0-9_?,%#~&/\-+=@]+([:.][@a-zA-Z0-9_?,%#~&/\-+=]+)*'
plumb to web
plumb start /dis/charon.dis $0


このように、webというメッセージを送るとcharonがダンプしてくれるようだ。

standalone charonに関してはリンク先参照