2012年3月26日月曜日

~XperiaとUSBホスト Part4~ USBメモリー編








いよいよ、メインの目的であるUSBメモリーの接続をやってみましょう!

…とその前に、この作業にはroot権限が必要です。
つまり何が起きても自己責任。ソニエリ(現ソニーモバイル)もdocomoもauも面倒は見ません。
それを分かった上で作業してください。

※追記
2010年製Xperia ( SO-01B(X10) ) にはUSBホスト機能がないため利用できません。
2011年製Xperia ( SO-01C(arc) , SO-02C(acro) , SO-03C(ray) , IS11S(acro) ) はroot権限が必要です。
2012年以降のXperia ( NX , acroHD 以降の機種 ) は標準でUSBホストに対応しているためroot権限は不要です。
(ホストケーブルを使って接続すればそのまま認識します。)


1. GScript Lite をインストールします。

2. Xperia 2011 Modules Pack をダウンロードします。

3. 解凍した modules フォルダを microSD(/mnt/sdcard) に配置します。

4. microSD に 「usbdrive」 というフォルダを作成します。

5. Gscript Liteを開き、「Add script」から

cd /mnt/sdcard/modules
insmod usb-storage.ko
insmod nls_utf8.ko
insmod slow-work.ko
insmod cifs.ko

と入力し、Needs SU? にチェックを入れてSaveします。



6. 同様に、
mount -t vfat -o iocharset=utf8 /dev/block/sda1 /mnt/sdcard/usbdrive
と入力し、Needs SU? にチェックを入れてSaveします。



7. 同様に、
busybox umount -l -f /dev/block/sda1
と入力し、Needs SU? にチェックを入れてSaveします。



8. 同様に、
lsmod
と入力し、Needs SU? にチェックを入れてSaveします。



9. 先ほど作成した「Insmod modules」をタップして実行します。
stderr: のみが表示されれば成功です。



10. 念のため、「lsmod」を実行して、usb_storageなどが読み込まれているか確認しておきましょう。



11. XperiaにFAT32でフォーマットされたUSBメモリーを接続します。



12. すると、「サポートされていないUSBデバイスが接続されています」というメッセージが出ます。



13. GScript を開き、「USB Mount vfat」を実行します。
stderr: のみが表示されれば成功です。


14. microSD カードの usbdrive フォルダ(/mnt/sdcard/usbdrive)を開き、ファイルが表示されれば成功です。


ちゃんとアクセスランプも点滅しています。


15. USBメモリーを取り外すときは、必ずGScriptで「USB Unmount」を実行して下さい。




ちなみに、11. で FAT32でフォーマットされた と強調して書きましたが、
他のフォーマットだとどうなるのかも調べてみました。


NTFS

NTFSを読み込むための「ntfs.ko」というものが存在します。
ただし、純正カーネルではNTFSに対応しないため、
insmod ntfs.ko
だけ行なってもmountできません。
カスタムカーネルの中にはNTFSを有効化したものもありますが、
そもそもXperia acroでカーネルを書き換える方法が確立されていないため無理でしょう。残念。

ext3

GScriptやTerminal Emulatorで
mount -t ext3 /dev/block/sda1 /mnt/sdcard/usbdrive
すれば書きこむことができます。

ただし、ESファイルマネージャー(rootモード)を利用してext3ドライブに書き込んだ場合、
なぜかユーザーに読み込み権限が与えられないので、
chmod 777 /mnt/sdcard/usbdrive
chmod 777 /mnt/sdcard/usbdrive/*
chmod 777 /mnt/sdcard/usbdrive/*/*
chmod 777 /mnt/sdcard/usbdrive/*/*/*
みたいなことをやっておけば、書き込んだファイルを開けるようになります。
(なぜこんな書き方になるかというと、Androidでは chmod -R が使えないため)

exFAT

無理でした。



ということで、現状ではFAT32が一番扱いやすいかな、という感じです。
1ファイルあたり4GBの制限がありますが、そんなに大きなファイルをAndroidで扱うことも無いと思うので。


→ ~XperiaとUSBホスト Part5~ HDD編


11 件のコメント:

  1. わかめそばさん、ご丁寧に解説ありがとうございます。おかげさまでUSBメモリをXperia arcで認識することができました。

    一点不明点がございましたので、差し支えないようでしたらご質問させて頂けますでしょうか。

    FAT32でフォーマット済みのmicroSDカードをSDカードリーダに挿し、Xperia arcに接続したのですが、うまくいきませんでした。
    /dev/block/ 配下のファイルを確認したところ、SDカードリーダの接続時には「sda(n)」ファイルが生成されていませんでした。3種類のSDカードリーダを試してみたのですが、全て同様でした。

    SDカードリーダを認識させる方法をご存知でしたら、お教え頂けませんでしょうか。
    よろしくお願いいたします。

    返信削除
  2. すいません。わかめそば様、ご丁寧に解説ありがとうございます。
    わたしも、ヅッキー様と同じで、SDカードりだーのことが知りたいです。
    本当に勉強不足で、USBメをFAT32にフォーマットする方法も???。ましてや、SDカード???。という感じなわたしですが。
    もしご存じならば、お教え頂けませんでしょうか。はやガッテンの私はさっそくamazonでUSBケーブルを購入してしまいました。ルートもできるか心配ですが、こうなったらやってみます。

    返信削除
  3. ズッキーさん、匿名さん、コメントありがとうございます。

    microSDカードリーダーの件ですが、手元にあるリーダーをいくつか試してみた所、
    BUFFALO製の「 BSCRA26U2 」
    ( http://buffalo.jp/products/catalog/supply/peripheral/cardreader/cardreader/bscra26u2/ )
    というカードリーダーのみ /dev/block/ に sda1が出現し、microSDカードのマウントに成功しました。

    どうやら、usb-storage.koを使ってのmountが成功するか否かは、ストレージとの相性に左右されるようです。
    比較的構造が単純なUSBメモリでさえ認識しないものが存在しますし、
    ましてカードリーダーのような複雑なデバイスとなると、さらに相性問題が厳しくなるのでは、と思います。

    とりあえず、色々なデバイスを繋げてみて、/dev/block/ に「 sda1 」が出たらラッキー、程度に思って頂けると幸いです。

    (ちなみに、メモリースティックDuoをXperiaで読み書きしたい場合は、PSPをカードリーダー代わりに使うことができます。)

    USBメモリをFAT32にフォーマットする方法ですが、こちらは「USBメモリ FAT32 フォーマット」等の単語で検索すれば、分かりやすいサイトが沢山出てきますので、そちらを参照していただければと思います。

    root化などの難しい壁もありますが、それらを乗り越えて無事に成功することを願ってます。

    返信削除
  4. 「ヅッキーさん」を「ズッキーさん」と間違えて書いていました。大変失礼致しました。

    返信削除
    返信
    1. わかめそば様、コメントにご返信していただき本当に感激しております。
      こんな勉強不足の私に、・・・・・。(;_;)
      ありがとうございます。一歩づつやっていきます。
      わかめそば様のご活躍応援してます。あなたは、すばらしいです。

      削除
    2. わかめそばさん、ありがとうございます。

      なるほど、相性の問題なのですね。USBメモリについては手持ちのものは全て大丈夫だったのですが...
      BUFFALOのリーダの購入を検討してみます。

      >「ヅッキーさん」を「ズッキーさん」と間違えて書いていました。大変失礼致しました。
      いえいえ、お気になさらずに(笑)

      削除
    3. 上で紹介したBUFFALOのカードリーダーはちょっと昔のモデルなので、今では手に入らないかもしれません。
      現行のBUFFALO製カードリーダーがXperiaで使えるかどうかも不明ですので…
      ある意味、一種の賭けですね(笑)

      大学受験期なので頻繁に更新はできませんが、これからもどうかよろしくお願いします。

      削除
    4. わかめそば様、おせわになっております。

      初心者の匿名です。
      早とちりなわたしは、BUFFALO製カードリーダーを昨日注文しました。

      期末テストや、大学入試をひかえているわかめそば様にご迷惑をおかけしてしまうといけないと思い、
      自分でも、いろいろしらべてみました。

      もしかしたら、この作業がroot権限ではなくて、rootをとっておくことが前提であること。

      そして、私のXperia acroは最新の状態になっております。

      ですが、http://arkdroid.info/xperia001/
      の記事を読むと、最新のものは、rootできないといっていました。

      初心者の匿名には、ちょっとハードルがたかいのかな~。

      わかめそば様の記事でrootのことがあるか、ちょっとさがしましたが、
      わかめそば様にとっては、rootは基礎的すぎてきっともう、特に触れる必要はないのかもしれません。

      ああ~この状態の私のXperia acroをUSBホスト対応にすることは、難しいことなのでしょうか?

      わかめそば様rootについて、なにか参考になること教えてください。
      ネット上には情報がありすぎて何を参考にしてよいかわからくなってしまいました。
      本も持っているのですが、また違うこといってたり????
      わかめそば様のご意見がお聞きしたいなと思いました。

      ヅッキー様は優秀です。

      よろしくお願いいたします。

      削除
    5. わかめそば様
      初心者の匿名です

      またしても、失礼しました。rootについては触れませんとコメントしていましたね。
      それがいいとおもいます。
      ごめんなさい。

      削除
  5. わかめそばさん、おかげさまでis11sでfat32のUSBメモリ接続に成功しました。わかりやすい手順、どうもありがとうございました。

    返信削除
  6. おっちゃん、このほうほうでうwi-fi電波取得壊れんじゃねぇのか?
    よく壊れねかったなあ。
    信者が増えて、ごくろうなこったぁ。

    返信削除