How-To :: montando dispositivos com “Android” no Linux


Diferentemente do artigo HOW-TO :: SCRIPT PARA MONTAR CELULARES COM ANDROID 4.X NO DEBIAN, simplesmente não consegui acessar meu smartphone com Android no Slackware Current como usuário normal (somente como root), mesmo o usuário estando com as configurações padrão da instalação, tendo criado o arquivo /etc/fuse.conf conforme a dica, etc.


OpenBox já dominando meu Slackware Current! rsrs
OpenBox já dominando meu Slackware Current! rsrs

Pesquisando, encontrei a solução criando uma regra para o UDEV de modo a reconhecer meu dispositivo corretamente.

No Slackware (dependendo do tipo de instalação) o pacote libmtp vem instalado por padrão, o que é muito bom, mas aproveitei para tentar com o jmtpfs, o qual se instala facilmente assim:

# sbopkg -i jmtpfs

Ou assim:

# wget http://slackbuilds.org/slackbuilds/14.1/system/jmtpfs.tar.gz
# tar xf jmtpfs.tar.gz
# cd jmtpfs
# wget https://github.com/JasonFerrara/jmtpfs/archive/v0.5.tar.gz
# chmod a+x jmtpfs.SlackBuild
# ./jmtpfs.SlackBuild
# installpkg /tmp/jmtpfs-*.tgz

Identificando o dispositivo.

Conecte o seu dispositivo numa porta USB qualquer e execute os comandos abaixo:

# jmtpfs -l
# mtp-detect
identificando o dispositivo
identificando o dispositivo

Feito isto, observe (ou anote) os campos referentes ao productId e ao vendorId, como no exemplo abaixo:

[16651:16623 0:359] 07:41:27 Dom Abr 05 [root@slackware: +1] /home/edps
(1:359)# jmtpfs -l
Device 0 (VID=1004 and PID=61f1) 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, 22, 0x61f1, 0x1004, UNKNOWN, UNKNOWN

É muito simples identificá-los, porque seguem a ordem do texto entre parênteses, logo, os campos são: productId:0x61f1 e vendorId:0x1004.

Já com o mtp-detect parte do log foi esse:

[1166:1040 0:3] 08:42:57 Dom Abr 05 [root@slackware: +1] /home/edps
(1:3)# mtp-detect
Unable to open ~/.mtpz-data for reading, MTPZ disabled.libmtp version: 1.1.6

Listing raw device(s)
Device 0 (VID=1004 and PID=61f9) is a LG Electronics Inc. V909 G-Slate.
   Found 1 device(s):
   LG Electronics Inc.: V909 G-Slate (1004:61f9) @ bus 1, dev 3
Attempting to connect device(s)
ignoring libusb_claim_interface() = -6PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
Android device detected, assigning default bug flags
Error 1: Get Storage information failed.
Error 2: PTP Layer error 02fe: get_handles_recursively(): could not get object handles.
Error 2: Error 02fe: PTP: Protocol error, data expected
USB low-level info:
   bcdUSB: 512
   bDeviceClass: 0
   bDeviceSubClass: 0
   bDeviceProtocol: 0
   idVendor: 1004
   idProduct: 61f9
   IN endpoint maxpacket: 512 bytes
   OUT endpoint maxpacket: 512 bytes
   Raw device info:
      Bus location: 1
      Device number: 3
      Device entry info:
         Vendor: LG Electronics Inc.
         Vendor id: 0x1004
         Product: V909 G-Slate
         Vendor id: 0x61f9
         Device flags: 0x08008106
Configuration 0, interface 0, altsetting 0:
   Interface description contains the string "MTP"
   Device recognized as MTP, no further probing.

Se observarem bem, houve diferença na identificação do productId, que no jmtpfs foi 61f1 e no mtp-detect foi 61f9, mas independente disso adotei o valor obtido pelo jmtpfs para criar a seguinte regra do UDEV:

# LG L90.
SUBSYSTEM=="usb", ATTR{idVendor}=="0x1004", ATTR{idProduct}=="0x61f1", MODE="0600", OWNER="edps"

Então, se for do seu interesse, crie o arquivo /etc/udev/rules.d/51-android.rules, identifique seu dispositivo, copie o modelo acima e o modifique (além dos valores já citados, altere o “dono” para o seu usuário).

O seguinte modelo também foi utilizado e funcionou da mesma forma:

# LG L90.
SUBSYSTEM=="usb",
ATTR{idVendor}=="0x1004",
ATTR{idProduct}=="0x61f1", MODE="0666"
uma das regras usadas
uma das regras usadas

Independente do modelo seguido, ao final execute os seguintes comandos, dependendo da distribuição:

Debian e derivados.

# /etc/init.d/udev restart
# udevadm control --reload-rules

Ubuntu e derivados.

# service udev restart
# udevadm control --reload-rules

Slackware.

# /etc/rc.d/rc.udev force-reload
# udevadm control --reload-rules

Distros que usem Systemd.

# udevadm control --reload-rules

Se de cara não funcionar, reinicie o PC e veja se o dispositivo é reconhecido.

Este slideshow necessita de JavaScript.

Problemas?

Sempre tem que ter não é mesmo? felizmente meu smartphone LG L90 conectou fácil usando qualquer uma das regras, ficando o acesso de leitura e escrita ainda mais rápido, funcionando também no OpenBox tendo em vista que já mandei o XFCE pro saco! mas infelizmente, aquele Razr D3 o qual foi motivo do outro artigo não funcionou de jeito nenhum no Slackware Current, nem mesmo como root:

Este slideshow necessita de JavaScript.

Sendo assim não garanto que isto vá funcionar para todos, mas uma coisa que garanto é: se não quer ter problemas de montagens desses malditos aparelhos com Android que use o KDE, Gnome3, Cinnamon, ambientes que sei que funcionam (não tenho certeza sobre o Gnome3).

Referências.

http://source.android.com/source/initializing.html#configuring-usb-access

http://www.linuxquestions.org/questions/linux-newbie-8/slackware-mount-mtp-as-a-non-root-user-4175495577/

https://wiki.archlinux.org/index.php/android#Figure_out_device_IDs

https://wiki.archlinux.org/index.php/MTP

fui!

Anúncios
How-To :: montando dispositivos com “Android” no Linux

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s