早くも茨の道の予感がしてきた訳だが。
Terminal Emulatarで使うコマンドが配置できない
とりあえずandroid端末入手したら真っ先に入れるアプリ・・・
https://market.android.com/details?id=jackpal.androidterm&hl=ja
当然ですよねー
通常、起動スクリプトで一般的なコマンドを実行するため、busyboxやbashなんかを、ユーザがいじれるディレクトリに配置するのだが、ここで問題発生。
USB HostはあってもUSBクライアントが無い、つまりUSB経由でのadb接続ができない。
adb接続ができないということは、配置用ディレクトリをmkdirしたり、実行権限をつけるためにchmodすることができない。
つまり、実行可能なコマンドを配置できないと言うことで、せっかくUSBキーボードをつなげられても、コンソールを使う意味がない。なんと・・・。
adb接続すると、ユーザレベル*1では実行できない、chmodだとかchownだとかが使えるのだが、USBクライアント(のコネクタ)が無い端末ではどうすりゃいいのだろうか・・・
リモートadb接続でもダメ
端末側がWifiでLANにつながっていれば、adbコマンドからネットワーク経由で接続できるということを知ったので、さっそくこれを試してみた。
あらかじめ、FV-1を有線LANに接続。もちろんデバッグ関係の設定をすべて有効にしておく。
母艦(この場合MacOS X Android SDKのtoolsディレクトリ)にて以下のコマンドを実行。
$ adb connect
おお、なんかつながってるっぽい。さっそく「adb shell」したらちゃんとコンソールに入れた。mkdirも(権限があれば)可能。これはいけそう!
と思いきや、chmodはやはりpermission denied。
そもそも、adb接続のユーザに対してもchmodやchownの実行権限は与えられていないっぽい気がする。当たり前だが、suも無理だし/systemに対する編集権限も無い。そもそも接続ユーザはなんなんだろう。whoamiもできないし、whichもできない。市販品のISシリーズでさえadb経由だったら、/systemとか以外だったらchmodできるのに、なんでこんなにキビシめなんだろう。
セキュリティ?ああ、そりゃまぁそうなんだけどさ。
キーボードレイアウト替えたいんだけど、それってつまりrootedしないとダメなのよね
USB接続のハードウェアキーボード(Androidからは「内蔵キーボード」に見えている)のキーバインドを根本から入れ替えたい。特にAndroidにおいて「MENU」キーは重要なんだけど(ないと使えないアプリもある)、qwertyキーボードからは「F1」キーにしか割当たっていない。「HOME」とか「BACK」は「ESC」とか「右クリック」に割当たってるのとはなんか扱いが違うよね。なんでこれだけファンクションキーなんだろう。手持ちのワイヤレスキーボードだと[Fn]+[1]になるので、頻繁に使う割に手間がかかる。
そんなこんなで、「Windows」キーとかに削ぎ替えたいんだけど、それをやろうと思うと/system配下に手を着けなきゃならない。
Android端末のハードキー設定を変更する | TechBooster
つまりroot取らなきゃいけない・・・。
コマンドの配置がうまくいくならこっちのも手を着けたい。
というかrootedできるならそもそもコマンドの配置なんてなんの問題も無い訳で。
rooted?それ以前の話かも
なんとかrootを取ってみれないものか情報を漁ってみるが、そもそもFV-1についての情報が少ない*2。日本語はもちろん、英語サイトでも販売サイトがほとんど。マイナー端末だから仕方がないんだけど。
だって、「android fv-1」でググると1ページ目にこのBlog(自分のページ)が引っかかるんですぜ?これはいままでのパターンだと「詰む」パターンなんだよな・・・。
メジャー端末なら、簡単にrootedできるアプリがでているようだが、FV-1じゃ無理だろうな。この手の端末でわざわざいろいろやる人は少なそうだし。
とりあえず、FV-1のフォーラムがあるようだから、がんばって読んでみるか*3。
「USBクライアントが無いなら、シリアルポート使えばいいじゃない」
一つ引っかかることとして、LAN経由でのadb接続とUSB経由でのadb接続で権限の違いがあるんじゃないかと。もちろんこれは「だったらいいな」って話なんだけど、無いともいえなさそうだな、それならやってみる価値はあるかも。
で、USBクライアントが外にでてないとしても、基板パターン上にはコネクタつけるところがあったりするってのは、わりと有りそうじゃね? という希望の元、ついにカバーをあけてしまった。いやすでに開けている方(前回リモコンの解説を紹介したFUTSALer さん)が居て、写真で見るかぎり未接続のコネクタを思われるパターンが基板上に複数あるようなので、その再確認を、と。
このパターンはRCAコネクタだろうか。もしかすると、元々はアナログ出力も考慮してたのかも。
先ほどの裏側。シールドはしっかりしてるのに、シリアルNoが手書きだったり、なかなか興味深い基板。製造時に省かれたのか途中で設計が変更されたのか、未実装のランドが多い。
とりあえずUSBっぽい未接続の端子パターンが2つほど確認できるが、最低4つのピンがあればUSBである可能性がある。
一番USBっぽいのはこの5ピンでてるところ。
ほら、なんかいかにも「ここにUSB mini-Bコネクタつけてくれー」って感じのピッチじゃないっすか?近くのダイオードのパターンがちょっと気になるけど。
さらに、検索条件を替えてググってみると・・・
FlexiVIEW FV-1 Android TV - Serial Port Details for Debugging
あー、シリアルねー。
しってたわー 二年ぐらい前にしってたわー*4
orz
シリアルコンソールでできそうなこと
シリアルコンソールが拾えると言うことは、うまくすればブートシーケンスに割り込める可能性がある。
ここまでできれば完璧なんだが、自分のレベルを鑑みると、ファームウェアの書き込みして安定して動くユーザランドを作れるとは思えない。野良ビルドのユーザランドが使えるだけで、実用上は不便かもしれないが、かなり遊べそうではある。
Android 2.3(HonyCombo)のビルドはビルド機のスペック的に厳しい*5が、2.2(Froyo)だったらなんとかなる。お仕事でBeagleBoardを(ちょっとだけ)触った経験があるので、Android自体のビルドはできる。問題はドライバ周りだが。いやこっちの方が問題は大きいか。
ファームウェアといえば、FV-1にはSDカードに置いたアップデートファイルでファームウェアアップデートができる仕組みがはじめから入っている。これも中身をみたら参考になるかもしれないのだけど、肝心のアップデートファイルが公式サイトに見つからない。なしてさ!?
はぁ。
ま、とりあえず基板側のコネクタを入手して、大昔foneraを改造したときのケーブルを流用しようか。
なんか金払って面倒なことに首を突っ込んでる感がいなめないがw
そういえばなんのためにこれ買ったんだっけ?
そうそう、元々は職場でテスト機にしようって話だった。
職場のモニタでまともに映らないことがわかって、「どうしたものか?」で止まっている。今更新しいモニタの稟議も通らなさそうだし。FV-1でやるなら自室のモニタを持ってくるしかなさそう。
うーん・・・。