Alguns aplicativos Ubuntu 13.04 não podem acessar arquivos em sistemas montados em MTP. Por quê?

14

O Ubuntu 13.04 vem com suporte a MTP para acessar arquivos em dispositivos Android mais recentes. Meu Nexus 10 funciona bem: depois de conectar, posso acessar os arquivos N10 com o Nautilus e copiar de e para o dispositivo. O Evince abrirá arquivos PDF diretamente do dispositivo, mas alguns aplicativos não conseguem abrir arquivos diretamente do dispositivo, como gedit ou libreoffice. O Gedit diz algo como:

Cannot open file mtp://[usb:001,009]/65537/5823/5824

Eu acho que o MTP está integrado no nível gvfs, portanto, todos os aplicativos habilitados para gvfs não devem acessar o dispositivo MTP? Por que evidenciar, mas não o gedit?

Eu sei que o MTP pode ser montado com fusível, mas seria bom se funcionasse com aplicativos regulares do Nautilus, como sftp: // ou smb: //.

jjchico
fonte
Eu tive esse problema ao usar uma máquina virtual vmware. Pode estar relacionado à latência na usb passthrough ou apresentando como mais de um dispositivo / subdevice e não ficar completamente passou por pura especulação
RobotHumans

Respostas:

29

A especificação MTP não suporta as operações básicas de abertura / leitura / gravação / fechamento necessárias para implementar o acesso normal a arquivos no Linux - apenas fornece upload / download de arquivos, e é isso que o back-end MTP implementa.

O Nautilus copiará os arquivos perfeitamente, mas assim que você tentar usar um aplicativo que não explique explicitamente o conjunto restrito de operações, você receberá um erro. O evince é um exemplo de aplicativo que o suporta (ele copia o arquivo para / tmp e o abre).

Então, é isso que está acontecendo no 13.04.

Agora, acontece que o Google implementou um conjunto de extensões MTP no Android que oferecem abertura / leitura / gravação / fechamento, e é possível fornecer acesso normal a arquivos com elas. Eu fiz esse trabalho no ramo de desenvolvimento do gvfs, mas ele perdeu a janela da versão 1.16, portanto, ele não aparecerá no Ubuntu até a 13.10, no mínimo. 14.04 e ainda não está lá

Enquanto isso, você pode usar meu ppa para instalar compilações nas quais suportei este trabalho.

https://launchpad.net/~langdalepl/+archive/gvfs-mtp

Por fim, é importante observar que essas extensões existem apenas na pilha MTP do Google. Você tem um Nexus 10, portanto ele funcionará como o Android convencional - mas alguém usando um dispositivo Samsung ou de outros fabricantes não terá essas extensões e talvez não tenha suporte para E / S de arquivo normal.

langdalepl
fonte
No entanto, parece que o Windows 7 tem esses recursos extras ou uma solução alternativa, e é bastante útil. Seria bom se esses "extras" foram implementadas no Ubuntu também
Álvaro
1
Como solução alternativa, uma operação de leitura pode ser apenas um download para / tmp e a leitura, que o Nautilus pode executar automaticamente para permitir que o usuário tenha a impressão de uma operação de leitura. E com coisas semelhantes, você pode emitir a gravação (faça o download para / tmp, modifique e faça o upload para o dispositivo) #
Álvaro
2
Nunca me senti confortável com o comportamento implícito de download / upload - pode ser uma surpresa muito desagradável para o usuário e não queria apresentá-lo. Considere o que acontece se você tiver um filme com vários gigabytes que deseja assistir, clique duas vezes nele e de repente ele começará a baixar para o seu / tmp, que é realmente um tmpfs ... Ou você deseja editar algum documento e você abre, faz algum trabalho e depois salva, mas o computador trava antes que o fs possa carregá-lo novamente, e o arquivo intermediário foi armazenado em / tmp, que é um tmpfs e, portanto, é perdido quando você reinicia. Hostil!
langdalepl
@ Álvaro Just FYI, a especificação MTP foi desenvolvida pela Microsoft. Muitos dos recursos do MTP parecem funcionar muito bem com os dispositivos Windows, mas não tanto em outros lugares.
RomaH 04/02
0

Eu tive problemas para tirar fotos da minha Fujifilm FinePix S1500. Mensagem de erro:

Operation not supported by backend

Eu o resolvi montando a câmera e copiando os arquivos da linha de comando usando o gphoto2.

Penhasco
fonte
1
Seria bom se você pudesse explicar exatamente como você deve usar o comando comogphoto2
Amith KK