Jak mogę używać mojego Galaxy Nexus jako zewnętrznego napędu USB?

29

Właśnie dostałem Galaxy Nexus i dowiedziałem się, że nie obsługuje trybu pamięci masowej USB. Obsługuje tylko MTP i PTP. Regularnie używam telefonu jako napędu flash USB w pracy, więc jest to problem. Mogę przesyłać pliki tam iz powrotem za pomocą MTP, jednak muszę edytować pliki bezpośrednio w telefonie .

Chciałbym znaleźć sposób, aby nadal używać telefonu jako dysku zewnętrznego i mieć bezpośredni dostęp do plików w pamięci telefonu bez przesyłania plików tam iz powrotem, jednak mam kilka ograniczeń: sieć w mojej pracy nie jest t podłączony do Internetu, nie ma Wi-Fi, a komputery nie mają Bluetooth i to się nie zmieni. Idealnie nie musiałbym niczego instalować na komputerze, ale jeśli nie ma innych opcji, rozważę to.

Czy są jakieś hacki lub obejścia, które pozwolą mi używać Galaxy Nexus jako zewnętrznego dysku flash w sposób opisany przeze mnie?

Czy mogę utworzyć osobną, montowaną partycję FAT w pamięci telefonu, do której mogę uzyskać dostęp z komputera z systemem Windows XP oraz za pośrednictwem systemu operacyjnego Android w sposób, który jest możliwy w przypadku innych urządzeń z zewnętrznymi kartami pamięci?

Telefon: To zrootowany i odblokowany Galaxy Nexus na VZW i obecnie działający na CM9.

Matt
źródło
Nie jestem w 100% pewien, ale myślę, że podstawowe jądro nawet nie jest w stanie tego zrobić. potrzebujesz do tego jądra rynku wtórnego lub po prostu niestandardowej pamięci ROM. G Nexus GSM: pełna instrukcja aktualizacji dla Cyanogenmod9 (4.0.4 atm, 4.1 CM10 jest wciąż na bardzo wczesnym etapie). Oto apk, który może również pomóc. potrzebuje rootowania.
ce4
Dzięki, ten wątek wygląda obiecująco, z wyjątkiem tego . Mam nadzieję, że to nieprawda, w przeciwnym razie będę miał GN na sprzedaż.
Matt
2
Nie sądzę, żebyś potrzebował osobnej karty SD, aby korzystać z UMS, ale myślę, że potrzebujesz osobnej partycji (sformatowanej FAT), aby działała, a mianowicie Kindle Fire, która nie ma zewnętrznego gniazda karty SD.
eldarerathis
1
Myślę, że musisz nieco wyjaśnić, dlaczego MTP / PTP nie jest odpowiedni do twojego zastosowania. Pomimo nazwy MTP może faktycznie przesłać dowolny dowolny plik, nie tylko pliki multimedialne. Jedyne operacje, których nie można wykonać w MTP, to takie, które wymagają dostępu na poziomie bloków, np. Defragmentacja, formatowanie, partycjonowanie itp.
Lie Ryan,
Nie chcę przesyłać plików, chcę je edytować w ich lokalizacji na moim telefonie, tak jak na dysku flash. Nie sądzę, że możesz to zrobić za pomocą mtp, czy się mylę?
Matt

Odpowiedzi:

28

Krótka odpowiedź:

Obecnie nie możesz korzystać ze swojego urządzenia (dowolnego urządzenia, które opiera się na MTP), aby działać jako MSC, ze względu na specyfikację protokołu!

Opracowanie

Aby wyjaśnić, Galaxy Nexus używa jednej ogromnej partycji dla całego urządzenia, to tak, jakby powiedzieć, że: system, dane i sdcard są wszystkie razem.

Do Galaxy Nexus wybrano MTP, ponieważ pozwala na wykorzystanie tego dużego obszaru pamięci, który z systemowego punktu widzenia zapewnia lepszą komunikację z plikami, zapewnia bezpieczniejszy system plików i sprawia mniej problemów w utrzymaniu.

Dlaczego nie możesz tego zrobić tak, jak chcesz:

W Galaxy Nexus nie ma oddzielnych partycji, tylko jeden duży obszar do przechowywania. Nawet emulując system plików fat32, nadal trzeba będzie móc tłumaczyć między fat32 a ext4 na niskim poziomie. Jest to praktycznie niemożliwe.

Jeśli Galaxy Nexus ma partycję, możesz mieć dostęp na poziomie bloku, a tym samym dostęp do pamięci masowej.


Wersja długo nudna:


Krótkie tło

Mass Storage Class (MSC), powszechnie znany jako USB Mass Storage (UMS), które są używane do wykorzystania na naszych urządzeniach jest protokołem, który pozwala Serial Bus (USB) urządzenie uniwersalne, by stać się dostępne dla urządzenia hosta obliczeniowej , aby umożliwić przesyłanie plików między nimi. W złote dni wystarczyło podłączyć telefon, nacisnąć „tryb USB” i rozpocząć przenoszenie plików, edycję plików itp.


Media Transfer Protocol (MTP)

Wiele się zmieniło, kiedy mówimy o nowej metodzie transferu używanej w twoim urządzeniu, Media Transfer Protocol (MTP):

1 Wprowadzenie patrz strona 15 zip poniżej

Media Transfer Protocol (MTP) to protokół przeznaczony do wymiany treści oraz sterowania i kontroli przejściowych urządzeń pamięci masowej. Został opracowany jako rozszerzenie PTP lub Picture Transfer Protocol i jest skierowany przede wszystkim do cyfrowych aparatów fotograficznych, przenośnych odtwarzaczy multimedialnych i telefonów komórkowych.

Chociaż wprowadzenie wciąż pozostawia wątpliwości, protokół ten został opracowany i wdrożony w bardzo konkretnym celu: w celu ułatwienia przesyłania plików multimedialnych i powiązanych metadanych między urządzeniami:

1.1 Cel, patrz strona 15 zip poniżej

Głównym celem tego protokołu jest ułatwienie komunikacji między urządzeniami medialnymi, które mają przejściową łączność i znaczną pojemność pamięci. Obejmuje to wymianę obiektów binarnych i wyliczenie zawartości tego podłączonego urządzenia.


Obsługiwane typy plików?

W tym momencie wiemy już, że dotyczy to plików multimedialnych i urządzeń opartych na multimediach, ale pozostaje jedno pytanie, które widziałem w komentarzach: Czy możemy kopiować pliki inne niż pliki multimedialne (audio / wideo)? Tak możemy:

1.3 Model obiektowy MTP, patrz str. 15 zip poniżej

Termin „media” w „Media Transfer Protocol” służy do identyfikacji danych binarnych i nie jest ograniczony do formatów audio / wideo, do których jest powszechnie stosowany. Niektóre przykłady obiektów innych niż audio / wideo obejmują kontakty, programy, zaplanowane zdarzenia i pliki tekstowe.


Co z „edycją na żywo”?

Twoje pytanie dotyczy w szczególności korzystania z urządzenia (Galaxy Nexus) jako zewnętrznego napędu USB. Dlaczego nie da się tego zrobić? Protokół MTP ogranicza dane do operacji jednokierunkowej, która również wyjaśniła, że ​​pamięć urządzenia jest używana przez komputer jako plik lokalny:

4.2 Jednokierunkowy przepływ danych patrz strona 29 zip poniżej

Przepływ danych w MTP jest zawsze jednokierunkowy. Podczas inicjowania operacji dane przepływają tylko z inicjatora do obiektu odpowiadającego. W odpowiedzi na żądaną operację dane przepływają tylko od obiektu odpowiadającego do inicjatora. Podczas fazy binarnej wymiany danych dane mogą przepływać od obiektu odpowiadającego do inicjatora lub od inicjatora do obiektu odpowiadającego, ale nigdy jednocześnie. Dwukierunkowa, binarna wymiana danych musi być wykonywana przez wiele operacji.


Zalety kontra wady

Zalety

MTP niesie ze sobą pewne zalety, głównie w zakresie bezpieczeństwa i integralności danych użytkownika:

Omówienie implementacji Microsoft MTP

Gdy komputer hosta USB zamontuje partycję MSC, przejmuje absolutną kontrolę nad pamięcią, umożliwiając na przykład uszkodzenie systemu plików lub sformatowanie go do nieobsługiwanego typu.

Tymczasem MTP rozwiązuje ten problem, czyniąc z jednostki zarządzanego magazynu lokalny plik, który można zapisać lub odczytać.

Wady

MTP nie jest traktowany jako tradycyjny dysk wymienny, więc nie można użyć narzędzi odzyskiwania, aby uratować dzień.

Wsparcie jest nadal w toku, niektóre systemy operacyjne nadal wymagają oprogramowania innych firm.

Standardy MTP (jak wspomniano wcześniej) nie pozwalają na bezpośrednią modyfikację obiektów. Zamiast tego zmodyfikowane obiekty muszą zostać w całości ponownie załadowane.


Referencje:

Mam nadzieję, że wyjaśnia to, dlaczego MTP jest dobry (poprawa) , ale zły OTOH (użytkownik będzie musiał zmienić nawyki) .

Oto materiały do ​​czytania użyte do syntezy odpowiedzi:

Powyższą odpowiedź przypisuje się treści i autorom odnośników.

Zuul
źródło
3
Doceniam bardzo szczegółowy opis mtp, ale już zaakceptowałem fakt, że nie mogę używać mtp tak, jak chcę. Interesuje mnie znalezienie sposobu na ominięcie ograniczeń. Na przykład partycjonowanie pamięci wewnętrznej w celu utworzenia oddzielnej partycji montowanej. Jakieś sugestie, jak ominąć ograniczenia w mtp?
Matt
@Matt Komentarz stał się zbyt duży, dodałem wyjaśnienie w sekcji „krótkiej odpowiedzi”. Przepraszam, jeśli wcześniej nie wyraziłem się jasno.
Zuul
Dziękuję za dodane informacje, ale znowu byłem świadomy większości z nich. Chcę wiedzieć, że poza innymi rozwiązaniami telefon można ponownie podzielić na partycje za pomocą osobnej partycji FAT, która obsługiwałaby UMS? Jeśli tak to jak?
Matt
Ostatecznie przyznałem nagrodę ce4, ponieważ jego kod był najbliższym rozwiązaniem, ale dziękuję za szczegółowe informacje i udzieloną pomoc.
Matt
7

Możliwe jest wyeksportowanie pliku obrazu z zapętleniem przez USB jako UMS / MSC.

Na pewno będziesz potrzebować:

  • korzeń
  • Obsługa jądra : loopback (/ dev / block / loop0) i UMS (/ sys / devices / platform / usb_mass_storage /)
  • niestandardowa aplikacja do włączania / wyłączania tego lub niestandardowy skrypt inicjujący, aby zawsze eksportować plik obrazu
    Oto przykład łatwej do zhakowania aplikacji, potrzebne jest jednak trochę rozwoju ... Trzeba zmienić domyślne urządzenie blokujące (/ dev / block / mmcblk0pX ) do pętli0, a także wcześniej losetup loop0, a następnie buduj. Dodatkowo może być możliwe zamontowanie go na urządzeniu z Androidem, jeśli nie zostanie wyeksportowane, np. W / sdcard / fat

Oto krótki test na moim Galaxy Nexus (w trybie odzyskiwania):

#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
źródło
Nie mam teraz pod ręką urządzenia testującego (GNexus), czy ktoś byłby tak miły i rzuciłby okiem, czy UMS jest zawarty w CM9? Zobacz, czy to jest dostępne: / sys / devices / platform / usb_mass_storage / lun0 / file
ce4
1
Wczesne CM10 nie wydaje się, więc zgaduję, że CM9 też nie.
eldarerathis
@eldarerathis: Dzięki za opiekę! Może być skompilowany do innego jądra lub ktoś musi to umożliwić, aby sam działał.
ce4
@ ce4 To wygląda obiecująco, ale chciałbym zobaczyć więcej szczegółów wyjaśniających, jak to osiągnąć. Czy na stałe partycjonujesz pamięć telefonu, czy jest to inne rozwiązanie? Czy są jakieś wady tej metody, takie jak integralność systemu plików?
Matt
Używam telefonu jako dysku flash. Podłączam go do wspólnego komputera w pracy, edytuję dokument, a następnie zapisuję go i idę. Przeniesienie pliku do komputera iz powrotem tak naprawdę nie działa dla mnie. Nieco później wejdę na czat.
Matt
3

To jest wersja TL; DR.

Niestety, pamięć masowa USB jest po prostu niemożliwa z Galaxy Nexus.

Powodem tego jest to, że pamięć masowa USB zapewnia systemowi plików dostęp na poziomie bloku, a aby zachować integralność systemu plików, musi to być wyłączny dostęp. Dlatego telefony z Androidem odmontowują kartę SD, a aplikacje nie mogą używać danych na karcie SD, gdy telefon jest w trybie pamięci masowej USB.

Galaxy Nexus nie ma jednak karty SD. Dostęp do obszernej pamięci wewnętrznej telefonu.

MTP (patrz doskonałe wyjaśnienie @ Zuul) omija ten problem i pozwala zarówno telefonowi, jak i komputerowi na dostęp do plików bez konieczności blokowania telefonu. Wadą jest to, że nie masz wyłącznego dostępu na poziomie bloku, a obsługa systemu operacyjnego dla MTP po prostu jeszcze nie jest dostępna.

Jeśli jest to funkcja, bez której po prostu nie możesz żyć, najlepszym rozwiązaniem jest użycie innego telefonu. Nieprzypadkowo to jeden z powodów, dla których pozbyłem się Galaxy Nexus i dostałem DROID RAZR MAXX.

Michael Hampton
źródło
1
„Właśnie dlatego telefony z Androidem odmontowują kartę SD ...” Co z aplikacjami, które pozwalają na podwójny montaż sd (i wewnętrznej pamięci w tym zakresie) jednocześnie na komputerze i systemie Android? Miałem taką aplikację na moim Rezound i działała całkiem dobrze.
Matt
Nigdy nie słyszałem o żadnej takiej aplikacji. Masz dowód na jego istnienie?
Michael Hampton,
To brzmiało naprawdę ostro! google.hu/…
RR
1
I nigdy nie straciłeś żadnych danych? Masz więc szczęście.
Michael Hampton,
3
Tak, właśnie dlatego system na to nie pozwala.
Michael Hampton
1

Wygląda na to, że kompilacja 4 AOKP JB ma:

„Emulacja pamięci masowej USB dla niektórych urządzeń (i9 *)”

Sam jeszcze go nie użyłem.

Ηλίας
źródło
0

Możesz spróbować tej aplikacji XDA-Developers :

Uwaga: Ta aplikacja została opracowana we wczesnych dniach Ice Cream Sandwich Ports. W tym momencie żaden z portów nie miał natywnej obsługi pamięci masowej USB, a ta aplikacja miała służyć jako tymczasowe obejście używania UMS. Ta aplikacja nie będzie dla Ciebie interesująca, chyba że używany port ICS lub JB nadal nie obsługuje natywnie UMS. W takim przypadku przychodzi pomoc:

Aplikacja uruchamia się automatycznie po uruchomieniu urządzenia i automatycznie wykrywa, kiedy urządzenie jest podłączone przez USB do komputera. Następnie pojawi się powiadomienie na pasku powiadomień i stukając powiadomienie, otworzysz GUI, aby włączyć / wyłączyć pamięć masową USB; po prostu / prawie jak oryginalna funkcja UMS.

Jak dotąd brzmi całkiem dobrze - tylko twój Galaxy Nexus nie jest wyraźnie wymieniony na liście znanych obsługiwanych urządzeń. Niekoniecznie oznacza to, że nie będzie działać, ale w tej chwili nie wiadomo. Warto spróbować.

Izzy
źródło
To zostało już omówione, patrz komentarze OP. Niestety, to także ślepy zaułek. :(
ce4
Nie mogłem znaleźć komentarzy, do których się odwołujesz - ale jeśli jest to już znana opcja, przepraszam. A „ślepy zaułek” oznacza, że ​​już nie działa? O rany, chyba pomijam kolejne aktualizacje;)
Izzy
Bez urazy! :) oznaczało raczej „FYI”. „Oto apk” odnosi się do tego samego wątku, co twój link XDA.
ce4
Rozmawialiśmy na ten temat na głównej czacie z Androidem. Nie wiem, czy historia jest wystarczająco długa, ale można uzyskać więcej informacji, jeśli nadal można uzyskać do niej dostęp
ce4
Dzięki za informację, ce4 - niestety obecnie brakuje mi czasu, aby zagłębić się w nią głębiej. Po prostu widzę, że MTP nie jest jeszcze tak kompletne, jak powinno być do całkowitego wyłączenia UMS, więc byłem prawie pewien, że musi być jeszcze dostępne rozwiązanie. I przypomniałem sobie kilka wątków dotyczących ponownego włączania UMS na ICS i nowszych. Mam nadzieję, że wkrótce będzie coś wokół - ponieważ MTP wydaje się nie być odpowiedzią dla wszystkich.
Izzy