Как я могу использовать свой Galaxy Nexus в качестве внешнего USB-накопителя?

29

Я только что получил Galaxy Nexus и узнал, что он не поддерживает режим USB Mass Storage. Он поддерживает только MTP и PTP. Я регулярно использую свой телефон в качестве флешки на работе, так что это проблема. Я могу передавать файлы туда и обратно с помощью MTP, но мне нужно редактировать файлы прямо на моем телефоне .

Я хотел бы найти способ продолжать использовать телефон в качестве внешнего накопителя и иметь возможность прямого доступа к файлам в хранилище моих телефонов без передачи файлов туда и обратно, однако у меня есть несколько ограничений: сеть на работе не работает t подключен к Интернету, у него нет Wi-Fi, а на компьютерах нет Bluetooth, и это не изменится. В идеале мне не нужно ничего устанавливать на компьютер, но если нет других вариантов, я бы обдумал это.

Есть ли какие-нибудь хаки или обходные пути, которые позволят мне использовать мой Galaxy Nexus в качестве внешней флешки, как я описал?

Могу ли я создать отдельный монтируемый раздел FAT в хранилище телефонов, к которому я могу получить доступ как с компьютера под управлением Windows XP, так и через ОС Android так, как это возможно на других устройствах с внешними картами памяти?

Телефон: это укоренившийся и разблокированный Galaxy Nexus на VZW и в настоящее время работает CM9.

Matt
источник
Я не уверен на 100%, но думаю, что стандартное ядро ​​даже не в состоянии это сделать. для этого вам нужно ядро ​​вторичного рынка или просто пользовательское ПЗУ. G Nexus GSM: полное руководство по обновлению Cyanogenmod9 (4.0.4 атм, 4.1 CM10 все еще находится на очень ранней стадии). Вот апк, который тоже может помочь. нужен рут.
ce4
Спасибо, что тема выглядит многообещающе, за исключением этого . Надеюсь, это неправда, иначе у меня будет GN для продажи.
Мэтт
2
Я не думаю , что вам обязательно нужен отдельный SD карты для использования UMS, но я думаю , что вам действительно нужен отдельный раздел (отформатированный FAT) для его работы, а - ля Kindle Fire , который не имеет внешний слот для SD - карты.
eldarerathis
1
Я думаю, вам нужно немного расширить, почему MTP / PTP не подходит для вашего использования. Несмотря на название, MTP может передавать любой произвольный файл, а не только медиа-файлы. Единственные операции, которые вы не можете выполнять в MTP, это те, которые требуют доступа на уровне блоков, например, дефрагментация, переформатирование, разбиение и т. Д.
Lie Ryan
Я не хочу передавать файлы, я хочу редактировать их в своем местоположении на моем телефоне, как будто это была флешка. Я не верю, что вы можете сделать это с MTP, я ошибаюсь?
Мэтт

Ответы:

28

Краткий ответ:

В настоящее время вы не можете использовать свое устройство (любое устройство, использующее MTP) в качестве MSC из-за спецификаций протокола!

развивавших

Для пояснения, Galaxy Nexus использует один массивный раздел для всего устройства, это все равно, что сказать: система, данные и SDCard - все вместе.

MTP был выбран для Galaxy Nexus, потому что он позволяет использовать эту большую область хранения, которая с системной точки зрения обеспечивает лучшую связь с файлами, обеспечивает более безопасную файловую систему и дает меньше проблем при обслуживании.

Почему вы не можете сделать это так, как вы хотите:

В Galaxy Nexus нет разделенных перегородок, есть только одно большое хранилище. Даже эмулируя файловую систему fat32, все равно нужно было бы иметь возможность переводить между fat32 и ext4 на низком уровне. Это практически невозможно.

Если бы у Galaxy Nexus был раздел, у вас мог бы быть доступ на уровне блоков, и, таким образом, у вас мог бы быть доступ к запоминающему устройству.


Длинная скучная версия:


Короткий фон

Класс Mass Storage Class (MSC), обычно известный как USB Mass Storage (UMS), который мы все привыкли использовать на наших устройствах, - это протокол, который позволяет устройству с универсальной последовательной шиной (USB) стать доступным для главного вычислительного устройства. , чтобы включить передачу файлов между ними. В золотые дни нужно просто подключить телефон, нажать «USB mode» и начать перемещать файлы, редактировать файлы и т. Д.


Протокол передачи медиа (MTP)

Ситуация сильно изменилась, когда мы говорим о новом способе передачи, который используется на вашем устройстве, Media Transfer Protocol (MTP):

1 Введение см. Стр. 15 на молнии ниже

Протокол передачи мультимедиа (MTP) - это протокол, предназначенный для обмена контентом, а также для управления и контроля временных устройств хранения. Он был разработан как расширение для PTP или протокола передачи изображений и предназначен в первую очередь для цифровых фотоаппаратов, портативных медиаплееров и сотовых телефонов.

Несмотря на то, что введение все еще оставляет сомнения, этот протокол был разработан и реализован с очень конкретной целью: для облегчения передачи мультимедийных файлов и связанных метаданных между устройствами:

1.1 Цель см. Стр. 15 на молнии ниже

Основная цель этого протокола - облегчить связь между мультимедийными устройствами, которые имеют временное подключение и значительную емкость хранилища. Это включает в себя обмен двоичными объектами и перечисление содержимого этого подключенного устройства.


Типы файлов поддерживаются?

На данный момент мы уже знаем, что это для медиа-файлов и медиа-устройств, но один вопрос, который я видел в комментариях, остается: можем ли мы копировать файлы, отличные от медиа-файлов (аудио / видео)? Да мы можем:

1.3 Объектная модель MTP, см. Стр. 15 на молнии ниже

Термин «мультимедиа» в «Протоколе передачи мультимедиа» используется для идентификации любых двоичных данных и не ограничивается аудио / видеоформатами, к которым они обычно применяются. Некоторые примеры не аудио / видео объектов включают в себя контакты, программы, запланированные события и текстовые файлы.


А как насчет "живого редактирования"?

Ваш вопрос особенно касается использования вашего устройства (Galaxy Nexus) в качестве внешнего USB-накопителя. Почему это не может быть сделано? Протокол MTP ограничивает данные однонаправленной операцией, также последний объяснил, что хранилище устройства используется компьютером как локальный файл:

4.2 Однонаправленный поток данных, см. Стр. 29, zip ниже

Поток данных в MTP всегда однонаправлен. При инициировании операции данные передаются только от Инициатора к Ответчику. При ответе на запрошенную операцию данные передаются только от Ответчика к Инициатору. Во время фазы двоичного обмена данными данные могут передаваться от ответчика к инициатору или от инициатора к ответчику, но никогда не могут оба. Двунаправленный, двоичный обмен данными должен выполняться несколькими операциями.


Преимущества против недостатков

преимущества

MTP обладает рядом преимуществ, в основном касающихся безопасности и целостности пользовательских данных:

Обзор реализации Microsoft MTP

Когда хост-компьютер USB смонтировал раздел MSC, он принимает на себя абсолютный контроль над хранилищем, что позволяет, например, файловой системе быть поврежденной или переформатированной в неподдерживаемый тип.

Тем временем MTP преодолевает это, превращая единицу управляемого хранилища в локальный файл, который можно либо записать, либо прочитать.

Недостатки

MTP не рассматривается в качестве традиционного съемного диска, поэтому никакие инструменты восстановления не могут быть использованы для спасения дня.

Поддержка продолжается, некоторые операционные системы все еще требуют стороннего программного обеспечения.

Стандарты MTP (как упоминалось ранее) не допускают прямой модификации объектов. Вместо этого модифицированные объекты должны быть повторно загружены целиком.


Ссылки:

Я надеюсь, что это проясняет, почему MTP хорош (улучшение) , но OTOH плох (пользователь должен будет изменить свои привычки) .

Вот материал для чтения, использованный для синтеза ответа:

Приведенный выше ответ зачисляется на содержание и авторов этих ссылок.

Zuul
источник
3
Я ценю очень подробное описание mtp, однако я уже принял тот факт, что я не могу использовать mtp так, как я хочу. Что меня интересует, так это найти способ обойти ограничения. Например, перераспределение внутреннего хранилища для создания отдельного монтируемого раздела. Любые предложения о том, как я могу обойти ограничения mtp?
Мэтт
@Matt Комментарий становился большим, я добавил пояснение в разделе «краткий ответ». Извините, если я не прояснил себя ранее.
Зуул
Спасибо за добавленную информацию, но опять же я уже знал о большей части этого. Мне интересно знать, если не считать других решений, можно ли переразделить телефон на отдельный раздел FAT, который бы поддерживал UMS? Если так, то как?
Мэтт
В итоге я получил награду ce4, потому что его код был наиболее близок к решению, но спасибо за подробную информацию и помощь, которую вы предоставили.
Мэтт
7

Может быть возможно экспортировать зацикленный файл изображения через USB как UMS / MSC.

Вам обязательно понадобится:

  • корень
  • поддержка ядра : loopback (/ dev / block / loop0) и UMS (/ sys / devices / platform / usb_mass_storage /)
  • пользовательское приложение для включения / отключения этого или пользовательский сценарий инициализации, который всегда экспортирует файл изображения.
    Вот пример легкого для взлома приложения, хотя требуется небольшая разработка ... Необходимо изменить блочное устройство по умолчанию (/ 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:~$
CE4
источник
У меня сейчас нет под рукой тестирующего устройства (GNexus), будет ли кто-нибудь так любезен и посмотрит, включена ли UMS в CM9? Просто посмотрите, доступно ли это: / sys / devices / platform / usb_mass_storage / lun0 / file
ce4
1
Ранний CM10, кажется, не так, поэтому я думаю, что CM9 тоже нет.
eldarerathis
@eldarerathis: Спасибо за поиск! Он может быть скомпилирован в другое ядро, или нужно, чтобы он сам заработал.
ce4
@ ce4 Это выглядит многообещающе, но я хотел бы видеть больше деталей, объясняющих, как достигнуть этого. Вы постоянно перераспределяете память телефона или это другое решение? Есть ли какие-либо недостатки этого метода, такие как обеспечение целостности файловой системы?
Мэтт
Я использую свой телефон в качестве флешки. Я подключаю его к общему компьютеру на работе, редактирую документ, затем сохраняю и работаю. Передача файла на компьютер и обратно не работает для меня. Я пойду в чат чуть позже.
Мэтт
3

Это версия TL; DR.

Извините, USB Mass Storage просто невозможно с Galaxy Nexus.

Причина этого заключается в том, что USB Mass Storage предоставляет компьютеру доступ на уровне блоков к файловой системе, а для обеспечения целостности файловой системы он должен быть монопольным. Вот почему телефоны Android отключают SD-карту, а приложения не могут использовать данные на SD-карте, когда телефон находится в режиме USB Mass Storage.

Galaxy Nexus, однако, не имеет SD - карту. Это объемное внутреннее хранилище телефона, к которому осуществляется доступ.

MTP (см. Превосходное объяснение @ Zuul) справляется с этим и позволяет как телефону, так и ПК получить доступ к файлам без блокировки телефона. Недостатком является то, что вы не получаете эксклюзивный доступ на уровне блоков, а поддержка операционной системы для MTP пока еще не совсем доступна.

Если это функция, без которой вы просто не можете жить, тогда лучше всего использовать другой телефон. Не случайно, это одна из причин, по которой я избавился от Galaxy Nexus и получил DROID RAZR MAXX.

Майкл Хэмптон
источник
1
«Вот почему телефоны Android отключают SD-карту ...» Как насчет приложений, которые позволяют одновременно подключать sd (и, соответственно, внутреннее хранилище) к компьютеру и операционной системе Android? У меня на Rezound было такое приложение, и оно работало довольно хорошо.
Мэтт
Я никогда не слышал о таком приложении. Есть доказательства его существования?
Майкл Хэмптон
Это звучало очень резко! google.hu/...
RR
1
И вы никогда не теряли никаких данных? Тебе очень повезло.
Майкл Хэмптон
3
Да, именно поэтому система не позволяет этого в первую очередь.
Майкл Хэмптон
1

Похоже, что AOKP JB build 4 имеет:

«Эмуляция запоминающего устройства USB для определенных устройств (i9 *)»

Я еще не использовал это сам.

Ηλίας
источник
0

Вы можете попробовать это приложение XDA-Developers :

Примечание: это приложение было разработано в первые дни мороженого сэндвич портов. В настоящее время ни один из портов не имел встроенной поддержки USB Mass Storage, и это приложение, тем не менее, было временным решением проблемы использования UMS. Так что это приложение не будет вам интересно, если только используемый вами порт ICS или JB по-прежнему не поддерживает UMS. Если это так, вот помощь:

Приложение запускается автоматически после загрузки устройства и автоматически определяет, когда устройство подключается через USB к компьютеру. Затем в панели уведомлений появляется уведомление, и, нажав на уведомление, вы откроете графический интерфейс для включения / отключения USB Mass Storage; просто / почти как оригинальная функция UMS.

Пока звучит неплохо - только ваш Galaxy Nexus явно не упоминается в списке известных поддерживаемых устройств. Это не обязательно означает, что это не будет работать, но просто на данный момент это не известно. Стоит попробовать.

Иззи
источник
Это уже обсуждалось, см. Комментарии OP. Увы, это тоже тупик. :(
ce4
Я не смог найти комментарии, на которые вы ссылаетесь - но если это уже известная опция, я прошу прощения. А «тупик» означает, что он больше не работает? О боже, думаю, я пропускаю следующие обновления;)
Иззи
Не обижайся! :) больше обозначалось как "FYI". «Здесь apk» относится к той же теме, что и ваша ссылка XDA.
ce4
У нас был довольно долгий разговор в главном чате Android об этом. Не знаю, есть ли достаточно длинная история, но у нее есть больше информации, если вы все еще можете получить к ней доступ
ce4
Спасибо за информацию, ce4 - к сожалению, я в настоящее время скучаю по времени, чтобы углубиться в это. Я просто вижу, что MTP еще не настолько завершен, как это должно быть для полного отключения UMS, поэтому я был почти уверен, что решение должно быть еще доступно. И я вспомнил некоторые темы о включении UMS снова на ICS и выше. Надеюсь, что-то скоро появится - MTP, похоже, не для всех.
Иззи