如何将Galaxy Nexus用作外部USB存储驱动器?


29

我刚买到Galaxy Nexus,了解到它不支持USB大容量存储模式。它仅支持MTP和PTP。我经常在工作时将手机用作USB闪存驱动器,所以这是一个问题。我可以使用MTP来回传输文件,但是我需要直接在手机上编辑文件

我想找到一种方法来继续将电话用作外部驱动器,并能够直接访问电话存储中的文件而无需来回传输文件,但是我有一些限制:我工作的网络是无法连接到互联网,没有wifi且计算机没有蓝牙,这种情况不会改变。理想情况下,我不必在计算机上安装任何东西,但是如果没有其他选择,我会考虑这样做。

是否有任何黑客或变通办法可以让我按照我所描述的方式将Galaxy Nexus用作外部闪存驱动器?

是否可以在电话存储上创建一个单独的可安装FAT分区,我可以像使用其他具有外部存储卡的设备那样,通过Windows XP计算机以及通过Android OS访问该分区?

手机:这是VZW上根植且未锁定的Galaxy Nexus,当前运行CM9。


我不确定100%,但是我认为股票内核甚至无法做到这一点。您需要一个售后市场内核或仅需要一个自定义ROM即可。G Nexus GSM:有关Cyanogenmod9的完整更新指南(4.0.4 atm,4.1 CM10仍处于早期阶段)。这是一个可能也有帮助的apk。需要根。
ce4 2012年

谢谢,除了这个线程,该线程看起来很有希望。希望这不是真的,否则我将要出售GN。
马特2012年

2
我不认为你一定需要一个独立的SD卡使用UMS,但我认为你需要它一个独立的分区(FAT格式)工作,一拉的Kindle Fire不具有外部SD卡插槽。
eldarerathis,2012年

1
我认为您需要进一步说明为什么MTP / PTP不适合您的用法。尽管有名称,MTP实际上可以传输任何任意文件,而不仅仅是媒体文件。你不能在MTP做的唯一操作是那些需要块级访问,比如整理磁盘碎片,重新格式化,分区等
李瑞安

我不想传输文件,我想在手机上的位置对其进行编辑,就像是闪存驱动器一样。我不相信您可以使用mtp做到这一点,我误会了吗?
马特

Answers:


28

简短答案:

当前,由于协议规范,您不能使用您的设备(任何依赖MTP的设备)充当MSC!

细化

需要澄清的是,Galaxy Nexus在整个设备上使用了一个巨大的分区,这就像是说:系统,数据和sdcard都在一起。

之所以选择MTP作为Galaxy Nexus的原因是因为它允许使用较大的存储区域,从系统的角度来看,它可以确保与文件的更好通信,提供更安全的文件系统,并减少维护麻烦。

为什么您不能按照自己的方式做:

Galaxy Nexus中没有单独的分区,只有一个大的存储区域。即使模拟fat32文件系统,仍然需要能够在低级之间在fat32和ext4之间进行转换。这实际上是不可能的。

如果Galaxy Nexus具有分区,则可以具有块级访问权限,因此可以具有大容量存储访问权限。


无聊的版本:


背景短

我们都习惯在设备上使用的大容量存储类(MSC),通常称为USB大容量存储(UMS),它是一种协议,它允许通用串行总线(USB)设备可被主机计算设备访问。 ,以启用两者之间的文件传输。在黄金时期,只需插入电话,按“ USB模式”并开始移动文件,编辑文件等即可。


媒体传输协议(MTP)

事情发生了很大的变化,当我们谈到您的设备上正在使用的新传输方法媒体传输协议(MTP)时:

1简介, 请参见以下第15页zip

媒体传输协议(MTP)是一种用于与暂态存储设备进行内容交换以及命令和控制的协议。它被开发为PTP或图片传输协议的扩展,并且主要针对数码相机,便携式媒体播放器和蜂窝电话。

尽管引言仍然令人怀疑,但此协议的开发和实施具有非常特定的目的:促进设备之间媒体文件和相关元数据的传输:

1.1目的 请参见以下第15页zip

该协议的主要目的是促进具有瞬时连接性和显着存储容量的媒体设备之间的通信。这包括交换二进制对象和枚举所连接设备的内容。


支持文件类型吗?

至此,我们已经知道这是针对媒体文件和基于媒体的设备的,但是我在评论中看到的一个问题仍然存在:我们可以复制除媒体文件(音频/视频)以外的文件吗?我们可以:

1.3 MTP对象模型, 请参见以下第15页zip

“媒体传输协议”中的术语“媒体”用于标识任何二进制数据,并且不限于通常应用的音频/视频格式。非音频/视频对象的一些示例包括联系人,程序,计划的事件和文本文件。


那“实时编辑”呢?

您的问题特别涉及将设备(Galaxy Nexus)用作外部USB存储驱动器的问题。为什么不能做到?MTP协议将数据限制为单向操作,后面还解释了计算机将设备存储用作本地文件:

4.2单向数据流, 请参见下面的第29页zip

MTP中的数据流始终是单向的。启动操作时,数据仅从启动器流向响应器。当响应所请求的操作时,数据仅从响应者流向发起者。在二进制数据交换阶段,数据可能从响应者流向启动器,或者从发起者流向响应器,但绝不会两者都流。双向二进制数据交换必须通过多种操作来执行。


优势与缺点

好处

MTP确实具有一些优势,主要涉及用户数据的安全性和完整性:

Microsoft MTP实施概述

当USB主机安装了MSC分区时,它将假定对存储具有绝对控制权,例如,允许文件系统损坏或重新格式化为不受支持的类型。

同时,MTP通过将托管存储单元设置为可以写入或读取的本地文件来克服了这一问题。

缺点

MTP没有被视为传统的可移动驱动器,因此,没有任何恢复工具可以用来节省一天的时间。

支持仍在进行中,某些操作系统仍需要第三方软件。

MTP标准(如前所述)不允许直接修改对象。相反,必须完整地重新上传已修改的对象。


参考文献:

我希望这可以阐明为什么MTP好(改进),但是OTOH不好(用户将不得不改变习惯)

这是用于综合答案的阅读材料:

以上答案归功于这些参考链接的内容和作者。


3
我很欣赏mtp的详细说明,但是我已经接受了以下事实:我无法以自己想要的方式使用mtp。我感兴趣的是找到一种解决限制的方法。例如,对内部存储器重新分区以创建单独的可安装分区。关于如何解决mtp限制的任何建议?
马特

@Matt评论越来越大,我在“简短答案”部分下添加了一个说明。对不起,如果我没有早点说清楚。
Zuul 2012年

感谢您提供的附加信息,但我已经意识到了大部分。我想知道的是,除了其他解决方案之外,手机是否可以使用支持UMS的单独FAT分区进行重新分区?如果是这样,怎么办?
马特

我最终将赏金授予ce4,因为他的代码是最接近解决方案的东西,但感谢您提供的详细信息和帮助。
马特

7

可以通过USB将回送的图像文件导出为UMS / MSC。

您肯定需要:

  • 内核支持:环回(/ dev / block / loop0)和UMS(/ sys / devices / platform / usb_mass_storage /)
  • 启用/禁用此脚本的自定义应用程序始终导出图像文件的自定义init脚本
    这是一个易于破解的应用程序的示例,尽管需要进行一些开发...但需要更改默认块设备(/ dev / block / mmcblk0pX )到loop0,并事先丢失loop0,然后进行构建。此外,如果未导出,则可以将其安装在Android设备上,例如,在/ sdcard / fat

这是在我的Galaxy Nexus上进行的简短测试(处于恢复模式):

#create a 10mb image file and format it with FAT, name it testFat:
me@workstation:~$ dd if=/dev/zero of=/tmp/fat.img count=10 bs=1M
10+0 records in
10+0 records out
10485760 Bytes (10 MB) copied, 0,00699535 s, 1,5 GB/s
me@workstation:~$ mkfs.vfat -n fatTest /tmp/fat.img 
mkfs.vfat 3.0.9 (31 Jan 2010)
me@workstation:~$ file /tmp/fat.img
/tmp/fat.img: x86 boot sector, [...], label: "fatTest    ", FAT (16 bit)

#Push it to my phone, create loop0 from it and export it via UMS
me@workstation:~$ adb push /tmp/fat.img /sdcard/fat.img
5215 KB/s (10485760 bytes in 1.963s)
me@workstation:~$ adb shell
root@android # ls /sys/devices/platform/usb_mass_storage/lun0
file    power   ro      uevent
root@android # losetup /dev/block/loop0 /sdcard/fat.img
root@android # losetup
/dev/block/loop0: 0 /sdcard/fat.img
root@android # echo /dev/block/loop0 > /sys/devices/platform/usb_mass_storage/lun0/file 
root@android # exit

#See that it works. Yay!
me@workstation:~$ 
me@workstation:~$ mount
[...]
/dev/sdg on /media/fatTest type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
me@workstation:~$ dmesg
[137805.009285] sd 27:0:0:0: [sdg] 20480 512-byte logical blocks: (10.4 MB/10.0 MiB)
[137805.010024] sd 27:0:0:0: [sdg] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[137805.013446]  sdg:
me@workstation:~$

我现在没有手头的测试设备(GNexus),有人会这么友好,看看CM9中是否包含UMS?只要看看是否可用:/ sys / devices / platform / usb_mass_storage / lun0 / file
ce4 2012年

1
早期的CM10似乎没有,所以我猜CM9也没有。
eldarerathis

@eldarerathis:感谢您的光临!它可能被编译到另一个内核中,或者必须使自己能够运行它。
ce4 2012年

@ ce4这看起来很有希望,但是我很乐意看到更多详细信息来说明如何完成此操作。您是要永久性地对电话的存储空间进行分区,还是另一种解决方案?这种方法是否存在诸如构成文件系统完整性的缺点?
马特

我将手机用作闪存驱动器。我将其插入工作中的共享计算机,编辑文档,然后保存并继续。将文件传输到计算机然后再传输回来对我来说真的不起作用。我待会儿再聊。
马特

3

这是TL; DR版本。

抱歉,Galaxy Nexus根本无法实现USB海量存储。

原因是USB大容量存储使PC可以对文件系统进行块级访问,并且为了保持文件系统的完整性,它必须是互斥的。这就是Android手机在USB大容量存储模式下卸载SD卡而应用无法使用SD卡上数据的原因。

在Galaxy Nexus的,但是,不具备一个SD卡。正在访问的是手机的大量内部存储。

MTP(请参阅@Zuul的出色解释)解决了这个问题,使电话和PC都可以访问文件,而不必锁定电话。不利的一面是您还没有排他性的块级访问权限,并且还没有针对MTP的操作系统支持。

如果这是您无法没有的功能,那么最好的选择是使用其他手机。并非偶然,这是我摆脱Galaxy Nexus并获得DROID RAZR MAXX的原因之一。


1
“这就是为什么Android手机卸载SD卡的原因……”那些允许将sd(以及内部存储)同时安装到计算机和Android操作系统的应用程序又如何呢?我在Rezound上有一个这样的应用程序,它运行良好。
马特

我从未听说过任何类似的应用程序。得到它存在的证据?
迈克尔·汉普顿

听起来真刺耳!google.hu/…–
RR

1
而且您从未丢失任何数据?那你真幸运
迈克尔·汉普顿

3
是的,这就是为什么系统一开始不允许它的原因。
迈克尔·汉普顿


0

您可以尝试使用此XDA-Developers应用程序

注意:此应用程序是在冰淇淋三明治港口的早期开发的。目前,这些端口均未提供本地USB大容量存储支持,尽管如此,该应用程序仍是使用UMS的临时解决方法。因此,除非您使用的ICS或JB端口仍然不本地支持UMS,否则此应用程序对您来说不会很有趣。如果是这种情况,请寻求帮助:

该应用程序在启动设备后自动启动,并自动检测该设备何时通过USB连接到计算机。然后,通知栏会弹出一个通知,点击该通知,您将打开一个GUI来启用/禁用USB Mass Storage。几乎/就像原始的UMS功能一样。

到目前为止听起来还不错- 已知支持的设备列表中仅未明确提及您的Galaxy Nexus 。这并不一定意味着它将无法正常工作,只是目前尚不知道。应该值得一试。


已经对此进行了讨论,请参阅OP注释。las,这也是死胡同。:(
ce4 2012年

我找不到您所指的评论-但是,如果这已经是已知的选择,我深表歉意。“死胡同”意味着它不再起作用了?噢,天哪,我猜我会跳过下一个更新;)
伊兹(Izzy)

没有冒犯的意思!:)的意思是“ FYI”。“这是apk”是指与您的XDA链接相同的线程。
ce4 2012年

我们在主要的android聊天中进行了相当长的交谈。不知道历史是否足够长,但是如果您仍然可以访问它
可以获得

感谢您提供ce4的信息-不幸的是,我目前错过了深入研究它的时间。我只是看到MTP还没有完全关闭UMS,因此我很确定必须有一个可用的解决方案。我还记得一些在ICS及更高版本上再次启用UMS的线程。希望很快就会有事情发生-因为MTP似乎并不是每个人的答案。
伊齐
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.