Як я можу використовувати свій Galaxy Nexus як зовнішній накопичувач USB?


29

Щойно я дістав Galaxy Nexus і дізнався, що він не підтримує режим масового зберігання USB. Він підтримує лише MTP та PTP. Я регулярно використовую свій телефон як USB-флешку на роботі, тому це проблема. Я можу передавати файли назад і назад за допомогою MTP, однак мені потрібно редагувати файли безпосередньо на телефоні .

Я хотів би знайти спосіб продовжувати використовувати телефон як зовнішній накопичувач і мати можливість доступу до файлів на моїх телефонах безпосередньо, не переносячи файли туди-сюди, однак у мене є кілька обмежень: Мережа на моїй роботі не є ' t підключений до Інтернету, він не має Wi-Fi, а на комп’ютерах немає Bluetooth, і це не зміниться. В ідеалі мені не доведеться нічого встановлювати на комп’ютер, але якщо немає інших варіантів, я б це врахував.

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

Чи можу я створити окремий роздільний FAT-розділ на сховищах телефонів, до яких я можу отримати доступ з комп'ютера під керуванням Windows XP, а також через ОС Android таким чином, як це можливо для інших пристроїв, які мають зовнішні картки зберігання?

Телефон: це вкорінена та розблокована Galaxy Nexus на VZW та на даний момент працює на CM9.


Я не впевнений на 100%, але думаю, що ядро ​​акцій навіть не в змозі цього зробити. для цього вам потрібно ядро ​​післяпродажної торгівлі або просто індивідуальний ROM. G Nexus GSM: повний посібник з оновлення для Cyanogenmod9 (4,0,4 атм, 4,1 CM10 ще на дуже ранній стадії). Ось apk, який також може допомогти. потребує корінь.
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 був розділ, ви могли б мати доступ на рівні блоку, і, таким чином, ви могли мати доступ до масового зберігання.


Довго нудна версія:


Короткий фон

Клас масового зберігання (MSC), загальновідомий як USB Mass Storage (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 Коментар набув великого значення, я додав уточнення в розділ "коротка відповідь". Вибачте, якщо раніше я не давав про себе зрозуміти.
Зуул

Дякую за додану інформацію, але знову я вже знав про це. Мені цікаво знати, що, окрім інших рішень, чи можна перерозділити телефон окремим розділом FAT, який підтримував би UMS? Якщо так, то як?
Метт

Я присудив нагороду ce4, оскільки його код був найближчим до вирішення, але дякую за детальну інформацію та надану допомогу.
Метт

7

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

Вам обов'язково знадобляться:

  • корінь
  • підтримка ядра : loopback (/ dev / block / loop0) та UMS (/ sys / пристрої / платформа / usb_mass_storage /)
  • спеціальний додаток, щоб увімкнути / вимкнути цей або користувальницький скрипт init, щоб завжди експортувати файл зображення.
    Ось приклад простого додатка, який можна зламати, хоча потрібна невелика розробка ... Потрібно змінити блоковий пристрій за замовчуванням (/ dev / block / mmcblk0pX ) до циклу0, а також попередньо втратити цикл0, а потім скласти. Крім того, можна встановити його на пристрої 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), хтось буде таким добрим і подивитись, якщо 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.

Galaxy Nexus, однак, не має SD - карту. Доступ до цього є об'ємна внутрішня пам’ять телефону.

MTP (див. Відмінне пояснення @ Zuul) обходить це, і дозволяє телефону і ПК отримати доступ до файлів, не замикаючи телефон. Суть полягає в тому, що ви не отримуєте ексклюзивного доступу на рівні блоків, а підтримка операційної системи для MTP просто ще не існує.

Якщо це функція, без якої ви просто не можете жити, то найкраще скористатися іншим телефоном. Не випадково це одна з причин, що я позбувся Galaxy Nexus і отримав DROID RAZR MAXX.


1
"Ось чому телефони Android вимикають SD-карту ..." Що з додатками, які дозволяють подвійно монтувати sd (і внутрішній накопичувач у цьому питанні) на комп'ютер і Android os одночасно? У мене був такий додаток на моєму Rezound, і він працював досить добре.
Метт

Я ніколи не чув про подібне додаток. Отримали докази його існування?
Майкл Хемптон

Це звучало по-справжньому суворо! google.hu/…
RR

1
І ви ніколи не втрачали жодних даних? Тоді вам дуже пощастило.
Майкл Хемптон

3
Так, саме тому система не дозволяє це в першу чергу.
Майкл Хемптон

1

Видається, що AOKP JB build 4 має:

"Емуляція масового зберігання USB для певних пристроїв (i9 *)"

Я його ще не використовував.


0

Ви можете спробувати цю програму для розробників XDA :

Примітка. Цей додаток було розроблено в перші дні сендвіч-портів з морозивом. Наразі жоден з портів не мав вбудованої підтримки USB Mass Storage, і це додаток було призначено як тимчасове рішення для використання UMS. Таким чином, ця програма не буде цікавою для вас, якщо ICS або JB порт, який ви використовуєте, все ще не підтримують UMS. Якщо це так, тут приходить допомога:

Додаток запускається автоматично після завантаження пристрою і автоматично визначає, коли пристрій підключається через USB до комп'ютера. Потім на панелі сповіщень з’явиться повідомлення, і натиснувши на нього, ви відкриєте GUI, щоб увімкнути / вимкнути USB Mass Storage; точно / майже як оригінальна функція UMS.

На сьогоднішній день звучить досить добре - лише ваш Galaxy Nexus прямо не вказаний у списку відомих підтримуваних пристроїв. Це не обов'язково означає, що він не працюватиме, але лише на даний момент це не відомо. Варто спробувати.


Про це вже йшлося, дивіться коментарі ОП. На жаль, це теж глухий кут. :(
ce4

Не вдалося знайти коментарі, на які ви посилаєтесь, - але якщо це вже відомий варіант, я прошу вибачення. А "глухий кут" означає, що він більше не працює? О боже, здогадуюсь, я пропускаю наступні оновлення;)
Izzy

Без образ! :) мав на увазі більше "FYI". "Ось apk" посилається на ту саму нитку, що і ваше посилання XDA.
ce4

Про це ми вели досить тривалу розмову в головному андроїдському чаті. Не знаю, чи є досить довга історія, але у неї є ще якась інформація, якщо ви все ще можете отримати до неї доступ
ce4

Дякую за інформацію, ce4 - на жаль, наразі мені не вистачає часу, щоб заглибитись у неї. Я просто бачу, що MTP ще не настільки повно, як це повинно бути для відключення UMS взагалі, тому я був майже впевнений, що повинно бути рішення. І я запам’ятав деякі теми про ввімкнення UMS знову на ICS та вище. Будемо сподіватися, що незабаром щось є - оскільки MTP, здається, не є відповіддю для всіх.
Izzy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.