CORY's twilight zone > Android 設定備忘録[an error occurred while processing this directive] > Xperia mini Pro SK17 USBホスト機能を使う

Android 設定備忘録 Xperia mini Pro SK17 USBホスト機能を使う

since 2013.08.17 / CORY
Xperia mini Pro SK17a/i (WH) 外観 (20KB)

Xperia mini Pro SK17a (4.0.4 = ICS) - Android 設定備忘録 の番外編。Xperia mini Pro に搭載のUSB端子は micro USB A/B タイプで、ホスト側の機能も備えており、OSの設定(と電源供給)さえすればB端子としても機能するらしいので、試してみました。

ここでは、SK17a(北米モデル)を例に書いていますが、SK17i(国際モデル)はもちろん、他の Xperia Mini をはじめ多くの2011年モデルでも概ね同様のようです。

なお、ここに書いた内容は筆者の個人的な備忘録です。内容について筆者はいかなる保証もしませんし、質問等いただいても答えられません。また、ここに書いてある操作をするとメーカーや販売店の保証を受けられなくなるばかりでなく、最悪、端末が使えなくなる(いわゆる文鎮化する)かもしれません。あしからず。

目次

ハードウェアの準備 まずはroot取得&ICS化 OS側の準備と動作確認 手間を省くには?

ハードウェアの準備

必要な物は…

  1. Xperia mini / mini pro 本体 (rooted)
  2. USBメモリ、カードリーダライタなどの USB mass storage 対応機器
  3. USBホストケーブル A - microB →
  4. セルフパワーUSBハブと電源

4. のセルフパワーUSBハブは必須ではないが、スマートフォンは一般に本体の電源供給能力が厳しく、これが無いとほとんどのUSB機器が使用不可と思われるので、用意しておくと良い。もちろん USB 2.0 に対応したものが望ましい。最近は microB 接続に対応した製品(Android機器対応などと謳われている)もあり、この場合は 3. は不要。

または、最近はこういうの (GH-CRAD-SUAK) もあるようで、この場合は 3. 4. ともに不要になるのではと。

ソフマップ・ドットコム

まずはroot取得&ICS化

必要な kernel module が入っていない場合(SK17の初期状態では入っていない)には追加する必要があるが、その際に root 権限が必要。 root取得については Xperia mini Pro SK17a (4.0.4 = ICS) - Android 設定備忘録 を参照。CWM と busybox を入れておくことをお勧めする(左記リンク先の手順では両方とも入る)

なお、Android 2.3.4 (GB) の場合はUSB機器への対応状況が異なり、必要なライブラリ類も異なるが、本稿では割愛。

【参考】

(34KB)
端末エミュレータ操作例

OS側の準備と動作確認

Android Terminal Emulator

Android OS は Linux kernel を採用しており、今回その kernel にモジュール(部品)を追加する必要があるが、標準状態では kernel を操作する手段が無いので、Google Play からそのためのアプリをインストールする。筆者が使ったのは Android Terminal Emulator(端末エミュレータ)

Unix系OSのコンソール(またはtelnet/ssh)を使ったことのある人には説明不要でしょうが、右画面のようにコマンド(文字列)により操作することになるので、苦手意識がある人、何かあっても自分で解決できない人には、以下の作業はお勧めできません。

カーネルモジュールを追加する

このコンソールから lsmod を実行してみると、

app_146@android:/ $ lsmod
wl12xx_sdio 6213 0 - Live 0x7f0b5000
wl12xx 214871 1 wl12xx_sdio, Live 0x7f070000
mac80211 201123 1 wl12xx, Live 0x7f033000
cfg80211 137730 2 wl12xx,mac89211, Live 0x7f008000
compat 11665 3 wl12xx,mac80211,cfg80211, Live 0x7f000000

このように、USB機器を使う際に必要になるモジュールが入っていない。 (なお、この状態でもUSBマウスは使うことができる。意味ないと思うけど…)

そこで、Linux kernel のバージョンに合ったモジュールのソースコードを入手して自分でbuildするか、または他の人がbuildしてくれたモジュールを入手してインストールするかのどちらか。 ここでは手っ取り早く後者で。

USB mass storage class 対応機器や、FAT/NTFS 論理フォーマットの記憶装置を読み書きするために必要なモジュールのパッケージになっており、インストール方法はリンク先に書かれている通り(.zip ファイルをダウンロードして sdcard に入れ、端末の電源を落としてから再度電源を投入、SONY ロゴが出たら VolDown キー連打で CWM を起動し、install zip from sdcard を実行)

このパッケージは Xperia mini pro SK17i v4.1.B.0.587 用とのこと。筆者は SK17a 4.1.B.0.587 にて確認。ビルド番号が多少前後しても使える可能性はあると思われるが、kernel が大きく異なる Android 2.3.4 や、CPU (ARMv7-A) が異なる他の機種では使えず、最悪データを壊したり起動しなくなる(いわゆる文鎮化する)ことが考えられるので、とりわけこの後の作業は自己責任により慎重に行うこと。

これらのモジュールはsystem領域に置かれるだけで自動的にloadされないので(その方が安全)、まずは動作確認を。

インストール後に端末エミュレータを起動し、kernel に load する。

$ su
# insmod /system/lib/modules/MODULENAME.ko

MODULENAME は必要なモジュールの名前。ここではいわゆるUSBメモリを使えるようにするため、usb-storage.ko と nls_utf8.ko(日本語を含むファイル名を利用可能にするもの、英字しか扱わないなら不要)を有効にする。

$ su
# insmod /system/lib/modules/usb-storage.ko
# insmod /system/lib/modules/nls_utf8.ko

この時点で動かなくなってしまった場合は、焦らず電源を落として(電源ボタンが操作できなければ一旦電池を抜いて)から電源再投入。それで起動しない場合は(ここまでの手順でそれは無いとは思うが)上記パッケージ入手先からアンインストーラzipをダウンロードしてCWMでインストール。

この状態でOSは USB mass storage class を認識するようになっている、はず。

マウント場所を確保

USBメモリなどを読み書きするためのマウント場所を確保する。 場所はお好みで、とはいえ /mnt 以下にディレクトリを作るのが一般的かと。

# mount -o remount,rw -t rootfs rootfs /
# mkdir /mnt/usb
# chmod 777 /mnt/usb
# mount -o remount,ro -t rootfs rootfs /

機器を接続してみる

USBホストケーブルを使って、USBメモリやメモリカードリーダなどを接続してみる。 (当然ながら、USBメモリが壊れても困らないよう、大事なデータが入っている物は使わない。予めFAT/FAT32でフォーマットして、動作確認用に適当なファイルをコピーしておくと良いでしょう。)

が、どうも Xperia mini pro はUSB機器への電源供給が厳しく制限されているようで、消費電力の小さな機器しか使えない模様。筆者の手元にあったメモリカードリーダライタをかき集めて試した範囲では、1機種(たしか秋葉原のどこかで100円で買った物、メーカーその他不詳、ちなみに USB VendorID 1976 は "Chipsbrand Microelectronics (HK) Co., Ltd." だがこれはチップメーカーのものでしょう)のみバスパワーで動作し、他は全て電源不足で動作しなかった。

もっとも、これは電源供給の問題なので、間にセルフパワーのUSBハブを介してやることで使えるようになる。(ハードディスクなどの電力消費の大きなUSB機器も使えるはず。NTFSやMO/CD/DVDなどの論理フォーマット仕様によりソフトウェア側の準備が要るが。)

下記のように、接続後システムログを見ることでUSB機器が認識したか(または認識に失敗したか)と、認識した場合はどこに割り当てられたか(sdaなど)が判る。

USBメモリ:認識失敗例(電源不足)

$ dmesg
...
<6>[ 5130.654846] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
<6>[ 5130.654907] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
<6>[ 5130.654937] usb usb1: Product: Qualcomm On-Chip EHCI Host Controller
<6>[ 5130.654998] usb usb1: Manufacturer: Linux 2.6.32.9-perf ehci_hcd
<6>[ 5130.655029] usb usb1: SerialNumber: msm_hsusb_host.0
<6>[ 5130.663696] usb usb1: configuration #1 chosen from 1 choice
<6>[ 5130.671447] hub 1-0:1.0: USB hub found
<6>[ 5130.671508] hub 1-0:1.0: 1 port detected
<6>[ 5130.988555] usb 1-1: new high speed USB device using msm_hsusb_host and address 2
<3>[ 5131.140136] usb 1-1: device v0cf2 p6230 is not supported
<6>[ 5131.140136] usb 1-1: New USB device found, idVendor=0cf2, idProduct=6230
<6>[ 5131.140167] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=4
<6>[ 5131.140167] usb 1-1: Product: UB623X       
<6>[ 5131.140197] usb 1-1: Manufacturer: ENE Flash  
<6>[ 5131.140197] usb 1-1: SerialNumber: 60**********
<6>[ 5131.140625] usb 1-1: rejected 1 configuration due to insufficient available bus power
<4>[ 5131.140655] usb 1-1: no configuration chosen from 1 choice

USBメモリ:認識成功例(低消費電流の機器)

$ dmesg
...
<6>[31227.588073] msm_hsusb_host msm_hsusb_host.0: Qualcomm On-Chip EHCI Host Controller
<6>[31227.588287] msm_hsusb_host msm_hsusb_host.0: new USB bus registered, assigned bus number 1
<6>[31227.589141] msm_hsusb_host msm_hsusb_host.0: irq 60, io base 0xa3600000
<6>[31227.589416] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
<6>[31227.589477] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
<6>[31227.589508] usb usb1: Product: Qualcomm On-Chip EHCI Host Controller
<6>[31227.589538] usb usb1: Manufacturer: Linux 2.6.32.9-perf ehci_hcd
<6>[31227.589599] usb usb1: SerialNumber: msm_hsusb_host.0
<6>[31227.600463] usb usb1: configuration #1 chosen from 1 choice
<6>[31227.605194] hub 1-0:1.0: USB hub found
<6>[31227.605255] hub 1-0:1.0: 1 port detected
<6>[31228.243072] usb 1-1: new high speed USB device using msm_hsusb_host and address 2
<3>[31228.395874] usb 1-1: device v1976 p1307 is not supported
<6>[31228.395935] usb 1-1: New USB device found, idVendor=1976, idProduct=1307
<6>[31228.395996] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[31228.396026] usb 1-1: Product: USB Reader
<6>[31228.396057] usb 1-1: Manufacturer: ChipsBnk
<6>[31228.396087] usb 1-1: SerialNumber: 1100********
<6>[31228.404663] usb 1-1: configuration #1 chosen from 1 choice
<6>[31228.410369] scsi5 : SCSI emulation for USB Mass Storage devices
<7>[31228.425994] usb-storage: device found at 2
<7>[31228.425994] usb-storage: waiting for device to settle before scanning
<7>[31233.423583] usb-storage: device scan complete
<5>[31233.425170] scsi 5:0:0:0: Direct-Access     ChipsBnk SD/MMCReader     4081 PQ: 0 ANSI: 2
<5>[31233.449890] sd 5:0:0:0: Attached scsi generic sg0 type 0
<5>[31233.451263] sd 5:0:0:0: [sda] 31116288 512-byte logical blocks: (15.9 GB/14.8 GiB)
<5>[31233.452362] sd 5:0:0:0: [sda] Write Protect is off
<7>[31233.452392] sd 5:0:0:0: [sda] Mode Sense: 0b 00 00 08
<3>[31233.452392] sd 5:0:0:0: [sda] Assuming drive cache: write through
<3>[31233.463195] sd 5:0:0:0: [sda] Assuming drive cache: write through
<6>[31233.463226]  sda: sda1
<3>[31233.468322] sd 5:0:0:0: [sda] Assuming drive cache: write through
<5>[31233.468353] sd 5:0:0:0: [sda] Attached SCSI removable disk

USBメモリ:認識成功例(セルフパワーハブ併用)

$ dmesg
...
<6>[ 5320.844451] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
<6>[ 5320.844512] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
<6>[ 5320.844573] usb usb1: Product: Qualcomm On-Chip EHCI Host Controller
<6>[ 5320.844604] usb usb1: Manufacturer: Linux 2.6.32.9-perf ehci_hcd
<6>[ 5320.844635] usb usb1: SerialNumber: msm_hsusb_host.0
<6>[ 5320.853332] usb usb1: configuration #1 chosen from 1 choice
<6>[ 5320.860137] hub 1-0:1.0: USB hub found
<6>[ 5320.860412] hub 1-0:1.0: 1 port detected
<6>[ 5321.178680] usb 1-1: new high speed USB device using msm_hsusb_host and address 2
<6>[ 5321.330963] usb 1-1: New USB device found, idVendor=05e3, idProduct=0608
<6>[ 5321.331024] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
<6>[ 5321.331054] usb 1-1: Product: USB2.0 Hub
<6>[ 5321.342407] usb 1-1: configuration #1 chosen from 1 choice
<6>[ 5321.348327] hub 1-1:1.0: USB hub found
<6>[ 5321.351715] hub 1-1:1.0: 4 ports detected
<6>[ 5321.629028] usb 1-1.4: new high speed USB device using msm_hsusb_host and address 3
<3>[ 5321.741058] usb 1-1.4: device v0cf2 p6230 is not supported
<6>[ 5321.741119] usb 1-1.4: New USB device found, idVendor=0cf2, idProduct=6230
<6>[ 5321.741149] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=4
<6>[ 5321.741210] usb 1-1.4: Product: UB623X       
<6>[ 5321.741241] usb 1-1.4: Manufacturer: ENE Flash  
<6>[ 5321.741271] usb 1-1.4: SerialNumber: 60**********
<6>[ 5321.755737] usb 1-1.4: configuration #1 chosen from 1 choice
<6>[ 5321.764007] scsi0 : SCSI emulation for USB Mass Storage devices
<7>[ 5321.773162] usb-storage: device found at 3
<7>[ 5321.773162] usb-storage: waiting for device to settle before scanning
<7>[ 5326.769256] usb-storage: device scan complete
<5>[ 5326.770843] scsi 0:0:0:0: Direct-Access     USB2.0   CardReader CF    0100 PQ: 0 ANSI: 0
<5>[ 5326.771850] scsi 0:0:0:1: Direct-Access     USB2.0   CardReader SM XD 0100 PQ: 0 ANSI: 0
<5>[ 5326.772827] scsi 0:0:0:2: Direct-Access     USB2.0   CardReader MS    0100 PQ: 0 ANSI: 0
<5>[ 5326.773834] scsi 0:0:0:3: Direct-Access     USB2.0   CardReader SD    0100 PQ: 0 ANSI: 0
<5>[ 5326.792510] sd 0:0:0:0: Attached scsi generic sg0 type 0
<5>[ 5326.794158] sd 0:0:0:1: Attached scsi generic sg1 type 0
<5>[ 5326.797729] sd 0:0:0:2: Attached scsi generic sg2 type 0
<5>[ 5326.802032] sd 0:0:0:3: Attached scsi generic sg3 type 0
<5>[ 5326.802642] sd 0:0:0:0: [sda] Attached SCSI removable disk
<5>[ 5326.805297] sd 0:0:0:1: [sdb] Attached SCSI removable disk
<5>[ 5326.807922] sd 0:0:0:3: [sdd] Attached SCSI removable disk
<5>[ 5326.811309] sd 0:0:0:2: [sdc] Attached SCSI removable disk

マウント

USB mass storage が認識したら、後は一般的なUnix系OSと同様、mount / umount を行うことで、読み書きできるか試してみる。

先ほど用意したマウント場所にmount。下記例の sda1 の部分は状況により変わるので、上記dmesgで確認しておく。

# mount -t vfat -o iocharset=utf8 /dev/block/sda1 /mnt/usb

-o iocharset=utf8 の部分は、ファイル名に英数字しか使わないなら不要。

ls でディレクトリエントリを覗いてみる、df で容量を見てみる、ESファイルエクスプローラなどのアプリを使ってファイルを開いてみるなど、お好きな方法でどうぞ。

$ df
Filesystem               Size     Used     Free   Blksize
/dev                   170.0M    76.0K   169.9M   4096
/mnt/asec              170.0M     0.0K   170.0M   4096
/mnt/obb               170.0M     0.0K   170.0M   4096
/system                400.0M   294.7M   105.3M   4096
/data                  420.0M   261.2M   158.8M   4096
/cache                 101.5M     1.2M   100.3M   4096
/data/idd                6.0M   824.0K     5.2M   4096
/data/sdext2             7.9G   362.5M     7.5G   4096
/mnt/sdcard             21.7G     9.5G    12.2G   32768
/mnt/secure/asec        21.7G     9.5G    12.2G   32768
/mnt/asec/com.bus10-1     2.0M    40.0K     2.0M   8192
/mnt/usb                29.3G     9.9G    19.5G   32768
$ ls -Fla /mnt/usb
drwxrwxrwx root     root              1980-01-28 22:18 .android_secure
drwxrwxrwx root     root              1980-01-28 22:18 Android
drwxrwxrwx root     root              2013-04-07 01:55 DCIM
-rwxrwxrwx root     root      1793462 2012-03-26 04:26 MIDI_STAR☆CARNIVAL.mp3
-rwxrwxrwx root     root      1924864 2013-04-07 16:40 MTLc3m.ttf
-rwxrwxrwx root     root      2871020 2013-04-07 16:40 MTLmr3m.ttf
drwxrwxrwx root     root              2013-06-09 01:27 Movies
drwxrwxrwx root     root              2012-12-05 06:25 Music
drwxrwxrwx root     root              2013-04-07 16:15 Notifications
drwxrwxrwx root     root              2013-04-07 16:15 Podcasts
drwxrwxrwx root     root              2013-04-07 16:15 Ringtones

使い終わったら、取り外す前にumountを忘れずに。

# umount /mnt/usb

その後、USBメモリを外す(dmesg を見れば disconnect のログが見られる)。 ここまで出来たら、とりあえず問題なさそう。

▲目次に戻る▲
エクスパンシス

手間を省くには?

(準備中)

▲目次に戻る▲

謝辞

下記を参考にさせていただきました。この場を借りて御礼申し上げます。

改版履歴

2013.12.23
画像等追加して掲載
2013.08.17
初版

更新日 : 2013年12月25日 (3762)

CORY's twilight zone > Android 設定備忘録[an error occurred while processing this directive] > Xperia mini Pro SK17 USBホスト機能を使う


« 短絡線 »
[ CORY's twilight zone | PC-98, FreeBSD(98), Mac OS X, Android | 鉄道・街 | 自然 | flickr | twitter (log) | YouTube | Contact ]

Copyright © 1996-2024 CORY / Kimagurenote. Some rights reserved:
Creative Commons Attribution-Noncommercial-Share alike 2.1 Japan.