Obtendo dispositivos habilitados para MTP para trabalhar com o Ubuntu?

67
  

Uma vez que o acesso de armazenamento Ubuntu 13.04 a dispositivos externos via MTP deve funcionar fora da caixa através de um módulo GVFS-MTP. / p>      

Embora essa questão seja sobre o Galaxy Nexus, outros dispositivos Android, bem como Windows Phones e players de mídia habilitados para MTP também são compatíveis .

     

Para a solução de problemas , consulte este anuário .

Estou tendo alguns problemas para fazer transferências de arquivos trabalhando no MTP com o Galaxy Nexus. Eu estou usando o Kubuntu 11.10 64-bit, e é isso que eu fiz e os resultados que obtive:

  1. Adicionada regra para dispositivo em /etc/udev/rules.d/51-android.rules . A regra é a seguinte e funciona para adb :

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
    
  2. Reiniciado udev (e computador apenas para ter certeza).

Adb funciona, e todos os métodos de leitura do dispositivo via MTP parecem funcionar (eu tentei montar com o mtpfs, gmtp e usando o pacote mtp-tools diretamente). Quando tento escrever no dispositivo, no entanto, nada que eu tentei funciona.

Como exemplo, a execução de mtp-newfolder test_dir 0 0 fornece a seguinte saída:

libmtp version: 1.1.0
Device 0 (VID=04e8 and PID=6860) is a Samsung GT-P7510/Galaxy Tab 10.1.
Folder creation failed.
ERROR: Could not close session!

Se eu executar mtp-folders após uma falha no mtp-newfolder sem voltar a conectar o dispositivo, recebo a seguinte saída:

Attempting to connect device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung GT-P7510/Galaxy Tab 10.1.
PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
mtp-folders: Successfully connected
Friendly name: (NULL)
Error 1: Get Storage information failed.
Error 2: PTP Layer error 02fe: get_all_metadata_fast(): could not get proplist of all    objects.
Error 2: (Look this up in ptp.h for an explanation.)
Error 2: PTP Layer error 02fe: get_handles_recursively(): could not get object handles.
Error 2: (Look this up in ptp.h for an explanation.)
LIBMTP_Get_Storage()
: Resource temporarily unavailable
OK.

Acompanhado pelo seguinte no dmesg:

[ 1000.912082] usb 2-4: reset high speed USB device number 7 using ehci_hcd
[ 1001.045877] usb 2-4: usbfs: process 3166 (mtp-folders) did not claim interface 0 before use

Alguém tem alguma ideia sobre o que fazer?

EDITAR:

Eu também tentei o modo PTP. Mais uma vez, a leitura funciona bem, mas não consigo escrever nada no dispositivo.

    
por Leo 14.12.2011 / 10:01

6 respostas

36

Desde o Ubuntu 13.04, o acesso ao armazenamento de dispositivos externos via MTP é feito por meio de um módulo GVFS-MTP.

Pergunta relacionada: Existem algum plano para melhorar o suporte a mtp em futuros lançamentos do Ubuntu?

Para a solução de problemas, consulte esta resposta .

Para mim, foi um problema não ter os arquivos libmtp mais recentes no meu sistema. Então resolvi o problema e fiz este artigo para ajude os outros .

Resumo do link: Houve um erro no libmtp empacotado com versões antigas do Ubuntu. Esse bug já foi corrigido na última fonte de libmtp .

    
por Shannon_VanWagner 18.12.2011 / 11:22
21

Você já tentou sugestão de Bilal Akhtar em omgubuntu ?

Conectando seu telefone ou tablet Android ao Ubuntu com o MTPFS

  1. Configuração

    Primeiro, instale as ferramentas necessárias com sudo apt-get install mtp-tools mtpfs

    Conecte seu Galaxy Nexus ao seu computador. No seu telefone, abra a gaveta de notificações e clique em "Tipo de conexão USB". Certifique-se de que o MTP esteja selecionado.

    Em seguida, execute estes comandos:

    mtp-detect | grep idVendor
    mtp-detect | grep idProduct
    

    Você receberá uma saída como esta:

    Agora, execute estes comandos:

    gksu gedit /etc/udev/rules.d/51-android.rules
    

    Uma janela do Gedit deve abrir. Digite este texto, tudo em uma linha única :

    SUBSYSTEM=="usb", ATTR{idVendor}=="VENDORID", ATTR{idProduct}=="PRODUCTID", MODE="0666"
    

    Substitua VENDORID pelo idVendor anotado anteriormente. Da mesma forma, substitua PRODUCTID pelo idProduct anotado. No meu caso, eles eram 04e8 e 685c , respectivamente, mas podem ter sido diferentes para você.

    Salve e feche o arquivo. Em seguida, desconecte seu telefone e execute estes comandos:

    sudo service udev restart
    sudo mkdir /media/GalaxyNexus
    sudo chmod a+rwx /media/GalaxyNexus
    sudo adduser $USER fuse
    

    $USER é uma variável de shell padrão e deve ser o usuário que você deseja adicionar (geralmente você mesmo). Agora, execute este comando:

    gksu gedit /etc/fuse.conf
    

    Na janela do Gedit, remova o # no início da última linha (aquela que começa com #user_allow_other ) assim:

    Você está quase pronto! Agora, reinicie seu computador e execute esses três comandos:

    echo "alias android-connect=\"mtpfs -o allow_other /media/GalaxyNexus\"" >> ~/.bashrc
    echo "alias android-disconnect=\"fusermount -u /media/GalaxyNexus\"" >> ~/.bashrc
    source ~/.bashrc
    
  2. Uso

    Conecte seu telefone, verifique se seu telefone está usando o MTP e execute android-connect .

    Voila! Agora você pode navegar pelo conteúdo do seu telefone Android usando o Nautilus. Basta iniciar o gerenciador de arquivos e, na barra lateral, clicar no GalaxyNexus para navegar no conteúdo do seu celular como faria com um pendrive. Você também pode adicionar, remover e modificar arquivos como um sistema de arquivos normal.

    Para remover o telefone com segurança, basta executar android-disconnect .

  3. Conclusão

    De agora em diante, você só precisa executar android-connect para montar seu telefone e, em seguida, android-disconnect para remover seu telefone com segurança. Todo o resto deve ser tratado automaticamente. Eu tentei muitas maneiras de obter a montagem e desmontar para acontecer automaticamente no cabo de conexão, mas esta foi a melhor solução que eu poderia chegar.

    Estes dois comandos não requerem permissões de root para serem executados. Todos os usuários que são membros do grupo de usuários do fusível devem ser capazes de executar esses comandos sem acesso root.

    É isso! Você conectou com sucesso seu telefone Ice Cream Sandwich ao seu computador Ubuntu. O processo pode ser longo para um novato, mas tenho certeza que alguém vai aparecer e criar uma interface gráfica para tudo isso para que tudo aconteça sem problemas. :)

por desgua 17.12.2011 / 19:13
19

Conectando dispositivos via MTP com GVFS

Desde que o acesso ao armazenamento do Ubuntu 13.04 para dispositivos compatíveis com MTP funcionem fora da caixa através de um back-end de GVFS . Por favor, dê uma olhada em Existe algum plano para melhorar o suporte a mtp em futuras versões do Ubuntu? para instruções de instalação anteriores a 13.04.

Esta solução deve funcionar para todos os dispositivos Android fornecendo a funcionalidade MTP e provavelmente todos os dispositivos não Android com funcionalidade MTP, como Windows Phones e Portable Media Players .

Não se confunda

Houve alguma confusão, vamos tentar esclarecer as coisas:

  • Você não precisa fazer algo que possa anular sua garantia!

    • Você não precisa fazer root no seu dispositivo.
    • Você não precisa desbloquear o gerenciador de inicialização. (Você pode encontrar instruções para o Android dela e .

    Desbloqueio apenas se refere à lockscreen dos sistemas operacionais nesta resposta.

  • Você não precisa configurar o acesso do desenvolvedor ao seu dispositivo como ADB, fastboot ou algo semelhante por meio de determinadas regras do udev. (Você pode encontrar instruções para o Android no capítulo Configurando o acesso USB a ela e ou dela e .)

  • Até onde eu sei, você também não precisa do FUSE ou configurar opções relacionadas ao FUSE.

Problemas de solução de problemas

  1. Não consigo colocar arquivos no dispositivo.

    Seu dispositivo deve estar desbloqueado para acessar o armazenamento do dispositivo com o Ubuntu via MTP.

  2. Estou recebendo uma mensagem de erro informando que o dispositivo não pode ser montado.

    Se você receber a mensagem de erro abaixo, tente reconectar o dispositivo uma vez .

    Se a mensagem de erro aparecer novamente, abra uma nova janela do nautilus a partir do lançador (preferivelmente clicando no ícone do dispositivo) e provavelmente fechando a janela do nautilus atual. Possivelmente relacionado: Como criar regras do udev para desativar um dos dispositivos Android?

  3. Verifique se existem regras do udev para o seu dispositivo

    Abra um terminal e digite lsusb . Encontre o seu dispositivo na saída e anote o ID (por exemplo, 0fce:01b1 ). A primeira parte é o ID do fornecedor, a última parte, o ID do produto.

    Abra o arquivo de regras do mtp correspondente do udev com nano /lib/udev/rules.d/69-libmtp.rules e pesquise pelo ID do seu produto (use Ctrl + W ). Se você não conseguir encontrá-lo, crie uma entrada personalizada em /etc/udev/rules.d/69-libmtp.rules seguindo o padrão abaixo e reinicialização .

    # SONY Xperia Z2 MTP
    ATTR{idVendor}=="01b1", ATTR{idProduct}=="01b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
    

    Você deve considerar arquivar um bug contra o pacote libmtp (mais precisamente libmtp-common ) para ter o seu dispositivo incluído em versões futuras, se isso funcionou para você. / p>

  4. Ainda não consigo me conectar

    Seu dispositivo não é suportado pelo libmtp subjacente ou você pode ter o mesmo problema que eu tenho com o meu Lumia 620, por favor siga a solução alternativa (passos para se reproduzir) Eu postei em LP#1247572: O Nokia Lumia 620 (WP8) falha em montar de maneira confiável via gvfs-mtp no nautilus . (O dispositivo ainda não funciona sem falhas aqui, mas usar mtp-detect ajuda.)

    Você deve pesquisar o rastreador de bugs libmtp para o seu dispositivo e seguir as instruções para novos dispositivos em página do projeto para abrir um relatório de erros.

  5. O rastreador de bugs lista meu dispositivo como compatível, mas ainda não funciona

    Em alguns casos, um relatório de bug referente ao seu dispositivo pode já ter sido arquivado e resolvido em uma versão mais recente do libmtp do que a sua distribuição (por exemplo: Motorola Moto G ). Se for esse o caso, você terá que esperar que os repositórios oficiais sejam atualizados ou procurem um PPA atualizado.

    Uma lista atualizada de todas as versões da libmtp disponíveis através dos canais de software oficiais do Ubuntu e PPAs privados pode ser encontrada aqui (não se esqueça de expandir Outras versões do 'libmtp' em arquivos não confiáveis ). A partir de 2014/02/13 this PPA da Matthieu Baerts oferece o pacote mais recente da libmtp disponível para o Ubuntu.

    Aviso : este PPA contém uma variedade de pacotes diferentes e possivelmente instáveis. Eu aconselharia contra adicioná-lo ao seu sistema. Em vez disso, você pode baixar os pacotes libmtp separadamente e instalá-los manualmente em seu sistema.

    Por favor, familiarize-se com PPAs e seus riscos antes de continuar. Por favor, leia também o parágrafo abaixo sobre como restaurar seus pacotes originais antes de prosseguir com os seguintes passos:

    1. Vá até a página de detalhes do pacote do PPA e expanda a entrada libmtp
    2. Faça o download dos seguintes pacotes: libmtp-common , libmtp-runtime , libmtp9 , mtp-tools . Certifique-se de escolher a arquitetura certa para o seu sistema (geralmente será amd64 ).

      Aqui estão os links do pacote de 2014/02/13: libmtp-common , libmtp-runtime , libmtp9 , mtp-tools

    3. Prossiga para instalar manualmente os pacotes atualizados com o dpkg (altere $HOME/Downloads para sua pasta de download e certifique-se de que nenhum outro arquivo deb esteja presente:

      cd "$HOME/Downloads"
      sudo dpkg -i *.deb
      
    4. Quando tudo tiver sido instalado com sucesso, reinicie o computador, desbloqueie o dispositivo Android, conecte-o via USB e ele deverá aparecer no gerenciador de arquivos.

    Isso funcionou bem para mim (@Glutanimate) com o meu Motorola Moto G. Como eu estava executando o Ubuntu 12.04 LTS, primeiro tive que instalar uma versão atualizada de gnome-gvfs . Por favor, consulte instruções de instalação anteriores a 13.04 no topo para mais informações.

    Para desfazer as alterações se algo der errado ou se o dispositivo ainda não for reconhecido, você terá que instalar manualmente os pacotes originais. Vá para a visão geral da fonte do libmtp e encontre o seu lançamento do Ubuntu. Expanda a entrada em questão e prossiga com o download dos pacotes, exatamente como você fez na etapa 2 anterior. Continue com a instalação conforme descrito na etapa 3 e reinicie o sistema. Tudo deve estar de volta ao normal agora.

por LiveWireBT 15.06.2013 / 01:04
5

Todos os programas baseados em libmtp ainda parecem ter problemas com o Galaxy Nexus (como no libmtp 1.1.3). Programas baseados em gphoto2 funcionam para mim.

Pessoalmente, estou usando gphotofs , disponível em um pacote com o mesmo nome.

Use gphotofs ~/mymountpoint para montar e, em seguida, fusermount -u ~/mymountpoint para desmontar quando terminar.

    
por bseibold 07.07.2012 / 15:28
3

Instale o seguinte e reinicie:

sudo apt-get install gvfs-backends mtpfs jmtpfs libmtp-common mtp-tools libmtp-dev libmtp-runtime libmtp9 gmtp libdbus-cpp5 libgflags2v5 libgoogle-glog0v5 libmtp-dbg libmtp-doc libmtpserver-dev libmtpserver1 libprocess-cpp3 mtp-server
    
por mchid 11.10.2015 / 13:10
-1

Apenas uma pequena solução alternativa, conecte seu telefone com base no ICS ao bom e velho link do

adb install UMS1.0.apk
    
por jflaflamme 23.03.2012 / 20:57

Tags