2010年7月3日土曜日

usbgadget.sh

他の解析が楽しくてすっかり忘れてた。
この記事の通り、USBメモリを埋め込んで、swapも良好に動いてるんだけど、埋め込んだメモリの大半を未使用のままにしていた。
具体的に言えば、4Gのメモリを埋め込んで、swapに256M使った(/dev/block/sd1)だけで、残り(/dev/block/sda2)は絶賛死蔵中。

で、M001を付属のUSBケーブルでPCにつなぐと、リムーバブルな外部ドライブとして認識されるのを利用して、この絶賛死蔵中のメモリ領域も外部ドライブとして認識させてしまおう!、、、と言うネタ。

以下、ver 1.7 4ベース。

とりあえず、前の記事を思い出しながら。。。。

M001を外部ドライブとして認識させるのは、g_file_storage.ko と言うモジュール。
/init.rc -> /usbgadget.shと言う流れでロードされる。
この /usbgadget.sh と言うスクリプトに細工すればおk。

その前に、開放するべき領域、/dev/block/sd2 をフォーマットしたいんだけど、M001の内部コマンド mkfs.vfat は 2G以上の領域をフォーマットできないっぽい。
今更かよをぃをぃ、、、って感じだけどショウガナイ。
とりあえず、放置(笑)

で、usbgadget.sh の変更ポイントは、

insmod を実行している行で g_file_storage.ko を読み込んでいる部分のパラメータ file= に 開放したいデバイスを追記すればおk

例えば、16行目ほどにある記述。
insmod g_file_storage.ko file=/dev/block/loop0,/dev/block/mmcblk0 removable=1 stall=0

insmod g_file_storage.ko file=/dev/block/loop0,/dev/block/mmcblk0,/dev/block/sda2 removable=1 stall=0
こんな感じで追加する。
同じような箇所が他にも2箇所ほどあるので修正する。
echo出力のメッセージは別に直さなくてもいい。気になるなら修正。
file= 指定はデバイスであれば開放できるっぽい。

んで、
修正した、usbgadget.sh をadb で push
\>adb push usbgadget.sh /
コンソールから、suして、
# chown 0:0 usbgadget.sh
# chmod +x usbgadget.sh
リブ~~ト。うぃんうぃんうぃん(・∀・)

起動したら、付属のケーブルでPCと接続。
リムーバブルディスクとして3台認識されるはず。
1台目は内蔵フラッシュメモリ、2台目はSDカード、3台目が追加したメモリ。

で、M001ではフォーマットできなかったので、ここでフォーマット(笑)
Windowsからドライブのフォーマットをして使用可能になる。

めでたし、めでたし。

って、、、
普段、USBケーブルでPCにつなぐことなんかまず無いから!
あんまり意味無いんだけどね(・∀・)

4 件のコメント:

  1. お尋ねしますが、純正ファームの無線LAN関係のドライバーは
    乗っかってる機器(型式?)のドライバーのみでしょうか?

    返信削除
  2. 匿名さんこんばんわ~
    そうですね。内部的にはUSBで接続された無線LANが乗ってます。
    で、ドライバはrt3070と言うチップのドライバのみが入ってるのでその他のチップは対応してません。
    それと、ドライバ内部でUSB装置のIDをチェックして認識してるはずなので、ドライバ内にこのIDが未登録の場合アウトですね。
    実際にどのメーカーのUSB無線LANがOKなのか、私も分かりません(^_^;
    ドライバのソースを読めばめぼしは付けられると思いますが。

    返信削除
  3. 早々のコメントありがとうございます。
    おかげさまで無駄な作業をせずに済みました。
    ちなみに私はM002を所有してるのですがCFWが無いので
    恩恵に預かっておりません。何か良いアドバイスなりを
    頂けましたら幸いです。進展がない場合はDEBIANがPUPPYでも
    ぶち込もうかと考えております。PUPPYいけたかな??
    PUUPY行けたらTINYCOREも行ける可能性がありそうですね。
    コレってARMの開発キットを買うことを思えば激安ですからね!

    返信削除
  4. こんにちは~。
    M002は情報がまだあまり無いのでよくわかんないですね。
    ただ、1.7.4ファームのリリースが同時期にあったので、中身的にはほぼ同じ、メモリマップが違ってるだけかなぁ~と予想します。

    そうですね、液晶+タッチパネル+USBの付いたARM開発キットと考えると、これはとてもお買い得です(笑)
    メモリは少な目ですが、ドライブの拡張もできるし、考えれば色んな用途に使えそうですよね。
    後は必要なドライバソースを公開してもらえればいいなぁ~。

    返信削除