04_技術情報‎ > ‎

15_RM-AT700MKでSDに

RM-AT700MKでSDカードにアプリを移動する
~ /sdcardと/ext_sdのマウントを入れ換える方法(root化不要) ~
 
【前段】
スペックがしょぼい為に色々と酷評されてますが、肝心のナビアプリは使い物になります。
ただ、しゃべりはミクっぽくありませんが。。。
ナビ以外は一応普通のAndroidタブレットなので、軽いゲームやkobo等の電子書籍アプリを入れて使う分には問題がありません。で、ほいほいアプリを入れてたら容量不足のエラーが・・・。
32GBのmicroSDがもう一杯なのかと確認してみると、全然使われていないではないか(怒)
ん?でもSDに移せるアプリは全部移したはず・・・どうなってるんだ?
と、よくよく確認してみると・・・あんですとー!

Androidでは本来SDカードを挿すと自動または手動で/mnt/sdcardにマウントされるのはずなのだが、そこが内臓SSDの別区画というオチ。んじゃぁ、microSDはどこにマウントされているかというと/mnt/ext_sdになってた。OS側からは、/mnt/sdcardにしかアプリを移動できないので、/mnt/ext_sdはただのデータディレクトリとしてしか使えないという事に・・・_no

だったら、/sdcardと/ext_sdのマウントを入れ換えれば良いじゃない?
と、いう事でやってみた。

【重要】
・ここに記載の内容の実施にあたっては、くれぐれも自己責任でお願いします。
・最悪システムを破壊したりメーカーの修理が受けられない場合がありますのでご注意下さい。
・この手順実施後は、起動中にmicroSDの抜き差しを絶対にしなようにして下さい。

【前準備】
・まずは、PCに下記のソフトを入れる。括弧内は参考までに私が実際に使用したファイルです。
Java JDK(jdk-7u25-windows-x64.exe)
→普通にインストールするだけです。
Android SDK(adt-bundle-windows-x86_64-20130522.zip、android-sdk_r22.0.1-windows.zip)
→解凍後、「SDK Manager」を起動ししてExtras配下の「Google USB Driver」にチェックを入れてインストールする。要は「usb_driver」配下と、「sdk-platform-tools」配下の「 adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll」の3ファイルがあれば良いです。

・RM-AT700MKの「設定-アプリ」で、事前に各アプリでUSBストレージ側に移動してあるものは端末側に戻しておく。
・RM-AT700MKでUSBをデバッグモードに設定する。
・RM-AT700MKスリープ設定を切っておく。
・RM-AT700MKをPCにUSBで接続する。
・PCのDOS窓から「adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll」が格納しているディレクトリにカレントを移動してから「adb devices」を実行し、PCとの接続を確認する。
---
List of devices attached
xxxxxxxxxxxxxxxxxxxx    device
---

・deviceが表示されない場合は、不明なデバイスとなっているので、ドライバをインストールする必要がある。
AndroidSDK内のandroid-sdk-windows\extras\google\usb_driverのandroid_winusb.infを開き、RM-AT700MKを追加(赤字部分)して保存する。
---
;
; Android WinUsb driver installation.
;
[Version]
Signature           = "$Windows NT$"
Class               = AndroidUsbDeviceClass
ClassGuid           = {3F966BD9-FA04-4ec5-991C-D326973B5128}
Provider            = %ProviderName%
DriverVer           = 08/27/2012,7.0.0000.00001
CatalogFile.NTx86   = androidwinusb86.cat
CatalogFile.NTamd64 = androidwinusba64.cat

[ClassInstall32]
Addreg = AndroidWinUsbClassReg

[AndroidWinUsbClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-1


[Manufacturer]
%ProviderName% = Google, NTx86, NTamd64


[Google.NTx86]

;Google Nexus One
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_0D02&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

;Google Nexus S
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E22&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

;Google Nexus 7
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E41
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&MI_01

;Google Nexus Q
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_2C11

;Google Nexus (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4EE1
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4EE3
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4EE5
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01

;RWC RM-AT700MK
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_DEED
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_DEED&MI_01

[Google.NTamd64]

;Google Nexus One
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_0D02&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

;Google Nexus S
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E22&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

;Google Nexus 7
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E41
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E42&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&MI_01

;Google Nexus Q
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_2C11

;Google Nexus (generic)
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4EE1
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE2&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4EE3
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE4&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4EE5
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4EE6&MI_01

;RWC RM-AT700MK
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_DEED
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_DEED&MI_01

[USB_Install]
Include = winusb.inf
Needs   = WINUSB.NT

[USB_Install.Services]
Include     = winusb.inf
AddService  = WinUSB,0x00000002,WinUSB_ServiceInstall

[WinUSB_ServiceInstall]
DisplayName     = %WinUSB_SvcDesc%
ServiceType     = 1
StartType       = 3
ErrorControl    = 1
ServiceBinary   = %12%\WinUSB.sys

[USB_Install.Wdf]
KmdfService = WINUSB, WinUSB_Install

[WinUSB_Install]
KmdfLibraryVersion  = 1.9

[USB_Install.HW]
AddReg  = Dev_AddReg

[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{F72FE0D4-CBCB-407d-8814-9ED673D0DD6B}"

[USB_Install.CoInstallers]
AddReg    = CoInstallers_AddReg
CopyFiles = CoInstallers_CopyFiles

[CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01009.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"

[CoInstallers_CopyFiles]
WinUSBCoInstaller2.dll
WdfCoInstaller01009.dll

[DestinationDirs]
CoInstallers_CopyFiles=11

[SourceDisksNames]
1 = %DISK_NAME%,,,\i386
2 = %DISK_NAME%,,,\amd64

[SourceDisksFiles.x86]
WinUSBCoInstaller2.dll  = 1
WdfCoInstaller01009.dll = 1

[SourceDisksFiles.amd64]
WinUSBCoInstaller2.dll  = 2
WdfCoInstaller01009.dll = 2

[Strings]
ProviderName                = "Google, Inc."
SingleAdbInterface          = "Android ADB Interface"
CompositeAdbInterface       = "Android Composite ADB Interface"
SingleBootLoaderInterface   = "Android Bootloader Interface"
WinUSB_SvcDesc              = "Android USB Driver"
DISK_NAME                   = "Android WinUsb installation disk"
ClassName                   = "Android Device"
---

・デバイスマネージャから不明なデバイスを選択し、上記android_winusb.infを指定しドライバをインストールする。
※途中で警告が出るが構わず入れる。
・再度、adb deviceを実行し、deviceが表示されればOK!

【手順】
・PCのDOS窓から下記コマンドを順番に実行し、/systemをrwで再マウントする。
※この手順を実行しないと書込み権限が無い為、/etc/vold.fstabの編集が出来ません。
adb shell
su
mount -o rw,remount /dev/block/ndda2 /system
mount

・mount(引数無し)実行後に下記表示(roになっていない事)があればOK!
/dev/block/ndda2 /system ext4 rw,relatime,barrier=1,data=ordered 0 0

・先程のDOS窓から下記コマンドを順番に実行し、vold.fstabのバックアップする。
※cpコマンドが無いので、catコマンドのリダイレクトで代用。
cd /etc
mv vold.fstab vold.fstab_org
cat vold.fstab_org > vold.fstab

・exitコマンド2回実行してadb shellから抜けます(DOSに戻る)。

・RM-AT700MKのESエクスプローラー(viコマンドが無い為)から/etc/vold.fstabを開き、下記のように編集(赤字部分を追加)し保存する。
---
# Internal SD card
#dev_mount sdcard /mnt/sdcard 11 /devices/virtual/block/ndda
dev_mount sdcard /mnt/sdcard auto /devices/platform/tcc-sdhc

# External SD card
#dev_mount ext_sd /mnt/ext_sd auto /devices/platform/tcc-sdhc
dev_mount ext_sd /mnt/ext_sd auto /devices/virtual/block/ndda

# External USB storage
dev_mount usb_sda /mnt/usb_sda1 all /devices/platform/dwc_otg /devices/platform/tcc-ohci /devices/platform/tcc-ehci
dev_mount usb_sdb /mnt/usb_sdb1 all /devices/platform/dwc_otg /devices/platform/tcc-ohci /devices/platform/tcc-ehci
---

・RM-AT700MKを再起動する。
・先程のDOS窓から下記コマンドを順番に実行し、/mnt/sdcardと/mnt/ext_sdのマウント先の容量を確認(赤字部分)する。
  無事、/mnt/sdcardの容量がRM-AT700MKに挿したmicroSDの容量になっていればOK!
adb shell
df
---
shell@android:/ # df
df
Filesystem             Size   Used   Free   Blksize
/dev                   185M    32K   185M   4096
/mnt/asec              185M     0K   185M   4096
/mnt/tmp               185M     0K   185M   4096
/mnt/obb               185M     0K   185M   4096
/system                295M   288M     6M   4096
/data                 1007M   279M   728M   4096
/cache                 147M     4M   143M   4096
/mnt/ext_sd              6G     6G   112M   16384
/mnt/sdcard             29G     5G    23G   32768
/mnt/secure/asec        29G     5G    23G   32768
/mnt/asec/com.kobobooks.android-1    40M    38M     2M   16384
/mnt/asec/kemco.wws.soe-1    34M    32M     2M   16384
/mnt/asec/com.natenai.glowhockey2proamazon-1    19M    17M     1M   16384
/mnt/asec/jp.co.zoo.mahjong.amazon-1     7M     5M     1M   16384
/mnt/asec/com.mobileroadie.app_1122-1     5M     3M     1M   16384
/mnt/asec/com.a0soft.gphone.app2sd-1     4M     2M     1M   16384
shell@android:/ #
---

・RM-AT700MKの設定-アプリで各アプリで、USBストレージ側に移動出来るものは移動する。
・RM-AT700MKESエクスプローラーで/mnt/sd_ext/mikunavi等の必要なものを/mnt/sdcardにコピーする。
・ミクナビや各アプリ動作を確認する。
・ミクナビの動作は軽く確認したが、他のアプリは一部動作しないものがあるかも。
・/mnt/ext_sd配下でもともと入っていたもの(mikunavi等)は削除しないよう注意が必要。
・動作がおかしいアプリは再インストールで正常動作する場合もあり。
・データが吹っ飛ぶ可能性があるので、microSDの抜き差しを起動中には絶対にしない事!

これで容量の心配をしないで良くなった(^_^v