Como posso usar meu Galaxy Nexus como uma unidade de armazenamento USB externa?

29

Acabei de adquirir o Galaxy Nexus e aprendi que ele não suporta o modo USB Mass Storage. Ele suporta apenas MTP e PTP. Uso meu telefone regularmente como uma unidade flash USB no trabalho, então isso é um problema. Posso transferir arquivos para a frente e para trás com o MTP, mas preciso editar arquivos diretamente no meu telefone .

Gostaria de encontrar uma maneira de continuar usando o telefone como uma unidade externa e poder acessar os arquivos diretamente no armazenamento do meu telefone sem transferir os arquivos para frente e para trás, no entanto, tenho várias restrições: A rede no meu trabalho não é ' t conectado à internet, ele não tem wifi e os computadores não têm Bluetooth e isso não muda. Idealmente, não precisaria instalar nada no computador, mas se não houver outras opções, consideraria isso.

Existem hacks ou soluções alternativas que me permitirão usar meu Galaxy Nexus como uma unidade flash externa da maneira que descrevi?

Posso criar uma partição FAT montável separada no armazenamento de telefones que eu posso acessar de um computador com Windows XP e também do sistema operacional Android da maneira que é possível com outros dispositivos que possuem cartões de armazenamento externos?

O telefone: é um Galaxy Nexus com root e desbloqueado no VZW e atualmente executando o CM9.

Matt
fonte
Não tenho 100% de certeza, mas acho que o kernel padrão nem é capaz de fazer isso. você precisa de um kernel de pós-mercado ou apenas uma ROM personalizada para fazer isso. G Nexus GSM: guia de atualização completo do Cyanogenmod9 (4.0.4 atm, 4.1 CM10 ainda está em um estágio muito inicial). Aqui está um apk que também pode ajudar. precisa de raiz.
CE4
Obrigado, esse tópico parece promissor, exceto por isso . Espero que não seja verdade, caso contrário, terei um GN à venda.
Matt
2
Eu não acho que você necessariamente precisa de um cartão SD separado para UMS uso, mas acho que você não precisa de uma partição separada (FAT formatado) para que ele funcione, a la o Kindle Fire, que não tem um slot para cartão SD externo.
23412 eldarerathis
1
Eu acho que você precisa expandir um pouco o porquê do MTP / PTP não ser adequado ao seu uso. Apesar do nome, o MTP pode realmente transferir qualquer arquivo arbitrário, não apenas arquivos de mídia. As únicas operações que você não pode fazer em MTP são aquelas que requer bloco de nível de acesso, por exemplo, desfragmentação, a reformatação, particionamento, etc.
Lie Ryan
Não quero transferir arquivos, quero editá-los no local deles no meu telefone, como se fosse uma unidade flash. Não acredito que você possa fazer isso com o mtp, estou enganado?
Matt

Respostas:

28

Resposta curta:

Atualmente, você não pode fazer uso do seu dispositivo (qualquer dispositivo que dependa do MTP) para atuar como um MSC, devido às especificações do protocolo!

Elaboração

Para esclarecer, o Galaxy Nexus usa uma partição massiva para todo o dispositivo, é como dizer que: sistema, dados e sdcard estão todos juntos.

O MTP foi selecionado para o Galaxy Nexus porque permite o uso dessa grande área de armazenamento, que, do ponto de vista do sistema, garante uma melhor comunicação com os arquivos, fornece um sistema de arquivos mais seguro e oferece menos problemas de manutenção.

Por que você não pode fazer do jeito que deseja:

Não há partições separadas no Galaxy Nexus, apenas uma grande área de armazenamento. Mesmo emulando um sistema de arquivos fat32, ainda seria necessário converter entre fat32 e ext4 em um nível baixo. Isso é praticamente impossível.

Se o Galaxy Nexus tivesse uma partição, você poderia ter acesso no nível de bloco e, portanto, acesso ao armazenamento em massa.


Versão longa e chata:


Fundo curto

A MSC ( Mass Storage Class ), comumente conhecida como USB Mass Storage (UMS), que todos costumamos usar em nossos dispositivos, é um protocolo que permite que um dispositivo USB (Universal Serial Bus) se torne acessível a um dispositivo de computação host , para habilitar transferências de arquivos entre os dois. Nos dias dourados, basta conectar o telefone, clicar no "modo USB" e começar a mover arquivos, editar arquivos, etc ...


Protocolo de transferência de mídia (MTP)

As coisas mudaram muito, quando falamos do novo método de transferência que está sendo usado no seu dispositivo, o Media Transfer Protocol (MTP):

1 Introdução veja a página 15 zip abaixo

O Media Transfer Protocol, ou MTP, é um protocolo desenvolvido para troca de conteúdo e comando e controle de dispositivos de armazenamento temporário. Foi desenvolvido como uma extensão do PTP, ou Picture Transfer Protocol, e é direcionado principalmente para câmeras digitais, tocadores de mídia portáteis e telefones celulares.

Embora a introdução ainda deixe margem para dúvidas, este protocolo foi desenvolvido e implementado com uma finalidade muito específica: facilitar a transferência de arquivos de mídia e metadados associados entre dispositivos:

1.1 Finalidade ver página 15 zip abaixo

O objetivo principal deste protocolo é facilitar a comunicação entre dispositivos de mídia com conectividade transitória e capacidade de armazenamento significativa. Isso inclui a troca de objetos binários e a enumeração do conteúdo desse dispositivo conectado.


Tipos de arquivo suportados?

Neste ponto, já sabemos que isso é para arquivos de mídia e dispositivos baseados em mídia, mas uma pergunta que eu vi nos comentários permanece: Podemos copiar arquivos que não sejam arquivos de mídia (áudio / vídeo)? Sim, nós podemos:

1.3 Modelo de Objeto MTP, consulte a página 15 zip abaixo

O termo "mídia" em "Protocolo de transferência de mídia" é usado para identificar quaisquer dados binários e não está restrito aos formatos de áudio / vídeo aos quais é comumente aplicado. Alguns exemplos de objetos que não são de áudio / vídeo incluem contatos, programas, eventos agendados e arquivos de texto.


E a edição ao vivo?

Sua pergunta diz respeito especialmente ao uso do seu dispositivo (Galaxy Nexus) como uma unidade de armazenamento USB externa. Por que isso não pode ser feito? O protocolo MTP limita os dados a uma operação unidirecional, que também explicou que o armazenamento do dispositivo é usado pelo computador como um arquivo local:

4.2 Fluxo de dados unidirecional na página 29 zip abaixo

O fluxo de dados no MTP é sempre unidirecional. Ao iniciar uma operação, os dados fluem apenas do Iniciador para o Respondente. Ao responder à operação solicitada, os dados fluem apenas do Respondente para o Iniciador. Durante a fase de troca de dados binários, os dados podem fluir do Respondente para o Iniciador ou do Iniciador para o Respondente, mas nunca ambos. A troca de dados binários e bidirecionais deve ser realizada por várias operações.


Vantagens vs desvantagens

Vantagens

O MTP traz algumas vantagens, principalmente no que diz respeito à segurança e integridade dos dados do usuário:

Visão geral da implementação do Microsoft MTP

Quando um computador host USB monta uma partição MSC, ele assume o controle absoluto do armazenamento, permitindo, por exemplo, que o sistema de arquivos seja corrompido ou reformate para um tipo não suportado.

Enquanto isso, o MTP supera isso, tornando a unidade de armazenamento gerenciado um arquivo local que pode ser gravado ou lido.

Desvantagens

O MTP não é tratado como uma unidade removível tradicional, portanto, nenhuma ferramenta de recuperação pode ser usada para salvar o dia.

O suporte ainda está em andamento, alguns sistemas operacionais ainda exigem software de terceiros.

Os padrões MTP (como mencionado anteriormente) não permitem a modificação direta de objetos. Em vez disso, os objetos modificados devem ser carregados novamente por inteiro.


Referências:

Espero que isso esclareça por que o MTP é bom (melhoria) , mas o OTOH é ruim (o usuário terá que mudar de hábito) .

Aqui está o material de leitura usado para sintetizar a resposta:

A resposta acima é creditada no conteúdo e nos autores desses links de referência.

Zuul
fonte
3
Aprecio a descrição muito detalhada do mtp, no entanto, já aceitei o fato de que não posso usá-lo da maneira que desejo. O que me interessa é encontrar uma maneira de contornar a limitação. Por exemplo, reparticionando o armazenamento interno para criar uma partição montável separada. Alguma sugestão de como contornar as limitações do mtp?
Matt
@ Matt O comentário estava se tornando muito grande, eu adicionei um esclarecimento na seção "resposta curta". Desculpe se não me esclareci antes.
Zuul
Obrigado pelas informações adicionadas, mas novamente eu já estava ciente da maior parte disso. O que estou interessado em saber é que, com exceção de outras soluções, o telefone pode ser re-particionado com uma partição FAT separada que suporta UMS? Se sim, como?
Matt
Acabei concedendo a recompensa ao ce4 porque o código dele era o mais próximo de uma solução, mas obrigado pelas informações detalhadas e pela ajuda que você forneceu.
Matt
7

Pode ser possível exportar um arquivo de imagem em loopback via USB como UMS / MSC.

Você definitivamente precisará de:

  • raiz
  • suporte ao kernel : loopback (/ dev / block / loop0) e UMS (/ sys / devices / platform / usb_mass_storage /)
  • aplicativo personalizado para ativar / desativar este ou um script init personalizado para sempre exportar o arquivo de imagem
    Aqui está um exemplo de um aplicativo fácil de hackear, embora seja necessário um pouco de desenvolvimento ... É necessário alterar o dispositivo de bloco padrão (/ dev / block / mmcblk0pX ) para o loop0 e também desmontar o loop0 antecipadamente, e depois construir. Além disso, pode ser possível montá-lo no dispositivo Android se não for exportado, por exemplo, em / sdcard / fat

Aqui está um pequeno teste no meu Galaxy Nexus (no modo de recuperação):

#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
fonte
Não tenho nenhum dispositivo de teste (GNexus) em mãos no momento. Alguém seria tão gentil e veria se o UMS está incluído no CM9? Basta ver se este estiver disponível: / sys / devices / plataforma / usb_mass_storage / lun0 / arquivo
CE4
1
O CM10 inicial não parece, então eu acho que o CM9 também não.
Eldarerathis 27/07/12
@eldarerathis: Obrigado por olhar! Ele pode ser compilado em um kernel diferente ou é necessário permitir que ele funcione.
ce4 28/07/12
@ ce4 Parece promissor, mas eu adoraria ver mais detalhes explicando como fazer isso. Você está particionando novamente o armazenamento do telefone permanentemente ou esse é um tipo diferente de solução? Há alguma desvantagem nesse método, como a integridade do sistema de arquivos?
Matt
Eu uso meu telefone como uma unidade flash. Eu o conecto a um computador compartilhado no trabalho, edito um documento, salve-o e pronto. Transferir o arquivo para o computador e vice-versa não funciona realmente para mim. Vou conversar um pouco mais tarde.
Matt
3

Esta é a versão TL; DR.

Desculpe, o armazenamento em massa USB é simplesmente impossível com o Galaxy Nexus.

A razão para isso é que o USB Mass Storage concede ao PC o acesso em nível de bloco ao sistema de arquivos e, para manter a integridade do sistema, ele deve ser um acesso exclusivo. É por isso que os telefones Android desmontam o cartão SD e os aplicativos não podem usar dados no cartão SD enquanto o telefone está no modo USB Mass Storage.

O Galaxy Nexus, no entanto, não possui um cartão SD. É o volumoso armazenamento interno do telefone que está sendo acessado.

O MTP (consulte a excelente explicação de @ Zuul) contorna isso e permite que o telefone e o PC acessem os arquivos sem que o telefone precise ser bloqueado. O lado negativo é que você não obtém acesso exclusivo em nível de bloco, e o suporte ao sistema operacional para MTP ainda não está disponível.

Se esse é um recurso que você simplesmente não pode viver sem, então sua melhor aposta é usar outro telefone. Não por coincidência, essa é uma das razões pelas quais me livrei do Galaxy Nexus e peguei um DROID RAZR MAXX.

Michael Hampton
fonte
1
"É por isso que os telefones Android desmontam o cartão SD ..." E os aplicativos que permitem a montagem dupla do sd (e armazenamento interno) no computador e no sistema operacional Android simultaneamente? Eu tinha esse aplicativo no meu Rezound e funcionou muito bem.
Matt
Eu nunca ouvi falar de nenhum aplicativo como esse. Tem evidências de sua existência?
22412 Michael JacksonJul
Isso soou muito duro! google.hu/…
RR
1
E você nunca perdeu nenhum dado? Você é muito sortudo, então.
Michael Hampton
3
Sim, é exatamente por isso que o sistema não permite isso em primeiro lugar.
22412 Michael JacksonJul
1

Parece que o AOKP JB build 4 possui:

"Emulação de armazenamento em massa USB para determinados dispositivos (i9 *)"

Ainda não o usei.

Ηλίας
fonte
0

Você pode experimentar este aplicativo XDA-Developers :

Nota: Este aplicativo foi desenvolvido nos primeiros dias de Ice Cream Sandwich Ports. No momento, nenhuma das portas tinha suporte nativo ao USB Mass Storage e este aplicativo foi concebido como uma solução temporária para o uso do UMS. Portanto, este aplicativo não será interessante para você, a menos que a porta ICS ou JB que você usa ainda não suporte nativamente o UMS. Se for esse o caso, aqui vem a ajuda:

O aplicativo inicia automaticamente após a inicialização do dispositivo e detecta automaticamente quando o dispositivo está sendo conectado via USB a um computador. Em seguida, uma notificação aparece na barra de notificação e, tocando na notificação, você abrirá uma GUI para ativar / desativar o USB Mass Storage; quase / quase como o recurso UMS original.

Até agora, parece muito bom - apenas o Galaxy Nexus não é mencionado explicitamente na lista de dispositivos suportados conhecidos. Isso não significa necessariamente que não funcionará, mas no momento não é conhecido. Vale a pena tentar.

Izzy
fonte
Isso já foi discutido, veja os comentários do OP. Infelizmente, também é um beco sem saída. :(
ce4 30/07/2012
Não consegui encontrar os comentários a que você se refere - mas se essa já é uma opção conhecida, peço desculpas. E "beco sem saída" significa que não funciona mais? Oh Deus, acho que vou pular as próximas atualizações;)
Izzy
Sem ofensa! :) era mais "FYI". O "aqui está um apk" refere-se ao mesmo segmento que o seu link XDA.
CE4
Tivemos uma conversa bastante longa no chat principal do Android sobre isso. Não sei se há uma história longa o suficiente, mas ele tem mais algumas informações, se você ainda pode acessá-lo
CE4
Obrigado pela informação, ce4 - infelizmente, atualmente, sinto falta do tempo para aprofundar isso. Acabei de ver que o MTP ainda não está tão completo quanto deveria para desativar completamente o UMS, então eu tinha certeza de que ainda havia uma solução disponível. E lembrei-me de alguns tópicos sobre como ativar o UMS novamente no ICS e superior. Espero que haja algo em breve - já que o MTP parece não ser a resposta para todos.
Izzy