passive log strage

バイク , モバイルガジェット , アウトドア用品 , 腕時計 ・・・等。

FlexiView FV-1いじり

早くも茨の道の予感がしてきた訳だが。

Terminal Emulatarで使うコマンドが配置できない

とりあえずandroid端末入手したら真っ先に入れるアプリ・・・


https://market.android.com/details?id=jackpal.androidterm&hl=ja

当然ですよねー


通常、起動スクリプトで一般的なコマンドを実行するため、busyboxbashなんかを、ユーザがいじれるディレクトリに配置するのだが、ここで問題発生。

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


これか。

シリアルコンソールでできそうなこと

シリアルコンソールが拾えると言うことは、うまくすればブートシーケンスに割り込める可能性がある。

  1. bootするイメージのスイッチ(SDカード上のユーザランドへ)
  2. オリジナルイメージの吸い出し
  3. ファームウェアの入れ替え(つまり本当の意味でのrooted)

ここまでできれば完璧なんだが、自分のレベルを鑑みると、ファームウェアの書き込みして安定して動くユーザランドを作れるとは思えない。野良ビルドユーザランドが使えるだけで、実用上は不便かもしれないが、かなり遊べそうではある。

Android 2.3(HonyCombo)のビルドはビルド機のスペック的に厳しい*5が、2.2(Froyo)だったらなんとかなる。お仕事でBeagleBoardを(ちょっとだけ)触った経験があるので、Android自体のビルドはできる。問題はドライバ周りだが。いやこっちの方が問題は大きいか。

ファームウェアといえば、FV-1にはSDカードに置いたアップデートファイルでファームウェアアップデートができる仕組みがはじめから入っている。これも中身をみたら参考になるかもしれないのだけど、肝心のアップデートファイルが公式サイトに見つからない。なしてさ!?


はぁ。


ま、とりあえず基板側のコネクタを入手して、大昔foneraを改造したときのケーブルを流用しようか。

なんか金払って面倒なことに首を突っ込んでる感がいなめないがw

そういえばなんのためにこれ買ったんだっけ?

そうそう、元々は職場でテスト機にしようって話だった。

職場のモニタでまともに映らないことがわかって、「どうしたものか?」で止まっている。今更新しいモニタの稟議も通らなさそうだし。FV-1でやるなら自室のモニタを持ってくるしかなさそう。

うーん・・・。

*1:つまり実機からTerminalを起動して、そこからいろいろやる

*2:ここで言う「少ない」は、Hack関連の情報が、って意味です。

*3:英語なので・・・

*4:地獄のミサワ

*5:Ubuntu 64bit版でメモリが最低4GB。ネイティブならともかく、オーバーヘッドのあるVirtualBoxだとちょっとね。