Android usb mass storage 配置

尽管Android4.4以上无法使用"大容量存储模式"(mass_storage),但内核中仍然包含对mass_storage驱动.

root@land:/ # ls |grep usb
init.qcom.usb.rc
init.qcom.usb.sh
init.usb.configfs.rc
init.usb.rc

Android通过根目录下的`init.usb.rc`对usb gadget进行配置,其中对mass_storage的配置不完整,需要手工配置后即可使用mass_storage.

主要有两种配置方式: 通过sysfs配置和通过configfs配置(无需root),(貌似还有就得lagecy方式).

大部分手机适用于sysfs配置, 但使用三星芯片的一些手机可能需要使用configfs配置(sysfs配置后默认为CD ROM). 由于我的手机只能使用sysfs配置, 下面介绍sysfs配置的方法:

 

在/sys 中有 `devices/virtual/android_usb` 以及 `class/android_usb` ,下级有`android0`目录(一些手机对内核有修改, 具体路径可能不一样).

root@land:/sys # find -name android_usb
./bus/platform/drivers/android_usb
./devices/virtual/android_usb
./class/android_usb

以下假定当前目录为`/sys/class/android_usb/android0`

cd  /sys/class/android_usb/android0

对enable写0可关闭usb device.

echo 0 > enable

对functions写mass_storage选择device 驱动

echo mass_storage > functions

对f_mass_storage/lun/file 写入镜像文件路径或块设备路径 选择要连接到的"磁盘" 

echo /dev/block/mmcblk0 > f_mass_storage/lun/file #选中整块emmc,android很可能会崩溃,但内核正常运行,通过此方式可将整块emmc挂到ubuntu上使用gparted等工具进行分区等操作(新版android使用gpt分区表,busybox自带的fdisk无法进行分区等操作)

也可以选则一个含pe的磁盘镜像(网盘中提供了),作为启动盘使用如:

echo /sdcard/win8pe.img >  f_mass_storage/lun/file #选择含PE的镜像文件, 可从网盘中下载

更加正常的情况是选择一个含有分区的块设备, 如 `/dev/block/bootdevice/by-name/persist`.

 

注意: 手机上使用的文件系统, windows很可能不支持. 这种情况下, 建议新建一个镜像文件, 格式化为vfat:

dd if=/dev/zero of=/sdcard/demo.img bs=1048576 count=50 #新建大小为50MB的镜像文件`/sdcard/demo.img`
busybox mkfs.vfat /sdcard/demo.img #格式化为vfat
echo /sdcard/demo.img >  f_mass_storage/lun/file

最后, 对enable写1打开usb device:

echo 1 > enable

 

注意事项:

*务必先"echo 0 > enable",即使enble本来就为1(折腾了好几天才发现)

*如果失败,尝试先关掉adb(我的手机必须关adb)

*我的手机上配置完成后必须设置sys.usb.config(`setprop sys.usb.config mass_storage`)

-------------------------------------------------------------------------------------------------------------------

(2019年更新)

目前新出的手机基本上都不支持使用sysfs配置了, 需要使用configfs配置.  

configfs配置方法见下面网盘资料

最后,为了方便配置写了一个APP UMS-Interface

可一键生成镜像,格式化,配置,;也可自动查找外置存储卡, 一键配置. 支持sysfs及configfs配置.

详情见https://github.com/outofmemo/UMS-Interface

APP及相关工具资料镜像: 

http://pan.baidu.com/s/1gfa9GbD (密码 er8y)  

你可能感兴趣的:(linux)