segunda-feira, 4 de abril de 2016

Montando o seu celular pelo MTP no GNU/Linux



Existe várias maneiras de transferir arquivos entre o celular e o computador, podendo ser pelo WI-FI com Apps do celular, ou pelo Bluetooth, mas pelo cabo usb é mais prático, principalmente se o mesmo está sempre do lado do computador, sem precisar ter que digitar IPs, ou senha para permitir a conexão.

No Salix a montagem de celular pelo MTP e a transferência de arquivos funciona pelo Thunar normalmente com boa velocidade na transferência de arquivos, mas apresenta dois problemas inconvenientes que são:

Os arquivos vindos do celular para o computador com a montagem feita pelo Thunar os nomes dos mesmos ficam completamente diferente e sem extensão ficando com nomes como 618, 619, 620 e assim sucessivamente, mas isto não acontece enviado do computador para o celular.

O segundo problema é que todos os arquivos armazenados no celular como vídeos, mp3, fotos, etc não são abertos pelos programas associados aos mesmos no computador, sendo executado o programa mas não abrindo o arquivo clicado no qual será exibido uma mensagem de erro.

Tentei usar primeiramente o mtpfs pela linha de comando para montar o celular, mas a montagem não funciona como deve, pelo menos na distro Salix, mesmo o celular sendo reconhecido.

Melhor programa para montagem por MTP

A melhor solução para MTP é o programa jmtpfs que pode ser obtido em https://github.com/JasonFerrara/jmtpfs/archive/v0.5.tar.gz

Para quem usa o sbopkg faça:

$ sudo sbopkg -i jmtpfs

Agora, conecte o celular pelo cabo usb para ver se o programa jmtpfs reconhece o mesmo

$ jmtpfs -l
Device 0 (VID=22b8 and PID=2e82) is UNKNOWN.
Please report this VID/PID and the device model to the libmtp development team
Unable to open ~/.mtpz-data for reading, MTPZ disabled.Available devices (busLocation, devNum, productId, vendorId, product, vendor):
1, 2, 0x2e82, 0x22b8, UNKNOWN, UNKNOWN


IMPORTANTE:
Caso o seu modelo de celular, não seja suportado nativamente, você deverá criar uma linha no arquivo /lib/udev/rules.d/69-libmtp.rules para o mesmo copiando uma das linhas já existente da que contém a marca do seu celular, editando apenas idProduct que será sempre um número diferente para outro modelo diferente da mesma marca pois provavelmente não exista o seu modelo neste arquivo de acordo com o exibido pelo comando mtp-detect ou jmtpfs -l onde o idVendor deverá ser sempre o mesmo número para a mesma marca, por exemplo Motorola.
Se não não existir a marca do seu celular no /lib/udev/rules.d/69-libmtp.rules dificilmente o mesmo funcionará pelo MTP mesmo que você coloque o número do idVendor e o idProduct exibido pelos comandos citados.

Exemplo:
# Moto E 2ª edicão
ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e82", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"

Onde o idProduct é o número exclusivo para o modelo Moto E 2ª edição e o idVendor 22b8 é o número exclusivo pra todos os celulares e tablet da marca Motorola.

Após alterado o arquivo /lib/udev/rules.d/69-libmtp.rules 

$ cd /etc/rc.d (para distro Slackware e Salix)
$ sudo ./rc.udev force-restart (ou reinicie o computador)

Criar o ponto de montagem para o celular

$ sudo mkdir /mnt/celular
$ sudo chmod 777 /mnt/celular

Montar o celular

$ jmtpfs  /mnt/celular/

Para montar o seu celular a tela do mesmo deve está desbloqueada, pois senão não funcionará.
Pronto agora você ponto acessar o ponto de montagem com qualquer gerenciador de arquivos ou pelo terminal e os arquivos vindo do celular para o computador não ficam mais com nomes como 618, 619, 620... além de poder abrir os arquivos normalmente que estiver no celular pelos seus programas que estão associados, e onde tem a vantagem de poder utilizar uma janela de terminal, sendo que a montagem feita pelo Thunar não permite abrir uma janela de terminal a partir do mesmo  dentro do celular.
Outro ponto importante usando o jmtpfs você acessar o seu celular como se fosse um pendrive.

Verificando a montagem do celular

$ df -hT
Sist. Arq.     Tipo         Tam. Usado Disp. Uso% Montado em
/dev/sda6      ext4         132G   18G  108G  14% /
tmpfs          tmpfs        1,5G  8,0K  1,5G   1% /dev/shm
/dev/sda4      ext4         289G  170G  104G  63% /mnt/dados
/dev/sda1      fuseblk      146G   21G  126G  14% /mnt/win
jmtpfs         fuse.jmtpfs  3,7G  758M  3,0G  21% /mnt/celular

$ mount | grep celular
jmtpfs on /mnt/celular type fuse.jmtpfs (rw,nosuid,nodev,user=nando)


Criando um atalho no desktop para acesso rápido ao celular

Primeiro crie o scrip zcelular em /usr/local/bin com permissão 755 do chmod com o conteúdo abaixo.

zenity --info --text "O celular será montado em alguns segundos, após clicado em OK" 
jmtpfs /mnt/celular ; thunar /mnt/celular


Nota:
Troque thunar pelo seu gerenciador de arquivos favoritos.

Agora crie um lançador no seu gerenciador de janelas usando o botão direito do mouse, escolha Criar lançador..., e preencha conforme abaixo.

Nome: Montar celular
Comentário: Montar celular pelo MTP
Comando: zcelular
Diretório de trabalho: /usr/local/bin
Ícone: Escolha um ícone para o lançador

Clique no botão Criar.


Após criado o ícone no seu Desktop, clique sobre o mesmo usando o botão direito do mouse e escolha Propriedades, guia Permissões, marque a opção "Permitir que este arquivo execute como um programa" Clique em Fechar.



MTP no  Android Marshmallow 6.0

Nas versões inferior ao Android Marshmallow 6.0 era bem mais prático e automático, bastando conectar o celular com o cabo usb no computador e desbloquear o celular para o computador reconhecer as unidades de cartão SD e de armazenamento interno imediatamente, agora se você atualizou o seu celular para o Android Marshmallow 6.0 ou adquirir um de fábrica com o mesmo já instalado terá dois passos a mais; após desbloquear o celular  puxe a barra de notificações para baixo e em Usar USB para, clique em Transferir arquivos (MTP) para o computador reconhecer as unidades de cartão SD e de armazenamento interno. 






Procedimentos realizados no Salix 14.1 onde foi usado os celulares Samsung SM-G3502T (suportado nativamente) e o Moto E 2ª geração (não suportado nativamente, tendo que incluir o mesmo no arquivo /lib/udev/rules.d/69-libmtp.rules).

Nenhum comentário:

Postar um comentário