sabato 3 agosto 2013

go-mtpfs: far riconoscere il proprio dispositivo Android a Linux.

Dopo aver letto qui e là numerose guide su come far riconoscere il proprio dispositivo Android al nostro linux ero arrivato ad un punto morto, con mtpfs che richiedeva minuti per la connessione e alla fine quando si andava a visitare la cartella montata si otteneva un bell'errore di socket disconnesso che impediva qualsiasi esplorazione del contenuto del mio cellulare.
Per fortuna poi ho scoperto go-mtpfs e le cose son cambiate. Vediamo come.
Da premettere che io ho un Nexus 4, quindi ovviamente la guida è testata solo ed esclusivamente con quel dispositivo. Però cercherò di farla il più generale possibile sperando di renderla compatibile con tutti.
EDIT: il metodo è stato testato con successo anche da un mio amico su Nexus 7.

1° Passo: attivazione dell'opzione Debug USB.
  • Dal vostro dispositivo Android andate su Impostazioni -> Info dispositivo -> cliccate 7 (si, sette) volte sulla voce Numero Build. Un avviso a schermo vi dirà che è stata attivata la modalità sviluppatore.
  • Sempre da vostro dispositivo Android andate ora su Impostazioni -> Opzioni sviluppatore e attivare l'opzione Debug USB.

2° Passo: identificazione del dispositivo Android.
Collegate il vostro dispositivo Android al PC. Aprite un terminale e date il comando:
lsusb
Otterrete qualcosa di simile:
Bus 001 Device 007: ID 18d1:4ee2 Google Inc. Nexus 4 (debug)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 192f:0416 Avago Technologies, Pte. ADNS-5700 Optical Mouse Controller (3-button)
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Ovviamente la voce che ci interessa è quella relativo al nostro device (nel mio caso la prima, riconoscibile dalla dicitura Google Inc. Nexus 4 (debug)).
Segnatevi il codice separato dai due punti (nel mio caso quindi 18d1:4ee2).
Adesso aprite con i permessi di root ed il vostro editor di testo preferito il file /etc/udev/rules.d/51-android.rules:
sudo gedit /etc/udev/rules.d/51-android.rules
e al suo interno scrivete una riga del genere:
# LG Nexus 4
SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", ATTR{idProduct}=="YYYY", MODE="0666"
con al posto di XXXX la parte a sinistra dei due punti nel codice che ci siamo salvati prima e al posto di YYYY la parte di destra del codice.
Nel mio esempio quindi ottengo:
# LG Nexus 4
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0666"
Salvate il file e chiudetelo.
Adesso non ci resta che dare i permessi di esecuzione a questo file. Da terminale digitare:
sudo chmod +x /etc/udev/rules.d/51-android.rules
Perfetto, ora possiamo passare al passo successivo.

3° Passo: installazione programmi necessari.
Ora andremo ad installare i programmi necessari che svolgeranno il lavoro "sporco" di montaggio del dispositivo Android. Come anticipato prima useremo go-mtpfs che è l'unico che personalmente ha funzionato per me, oltre ad essere, a detta di molti, il più veloce nello scambio di file tra dispositivo e PC (il classico mtpfs infatti pare sia limitato).
  • Su Archlinux è tutto molto semplice, basta installare da AUR il pacchetto go-mtpfs-git:
    yaourt -S go-mtpfs-git
  • Su Debian e derivate (Ubuntu...) dovete prima aggiungere un nuovo repo:
    sudo add-apt-repository ppa:webupd8team/unstable
    sudo apt-get update
    Dopodiché potrete installare tutto il necessario dando da terminale:
    sudo apt-get install go-mtpfs
  • Per tutte le altre distro, bisogna procedere compilando il programma. Per fare questo basta seguire le indicazioni scritte nella pagina ufficiale del progetto che potete trovare qui: https://github.com/hanwen/go-mtpfs
Installato go-mtpfs, aprite un terminale e digitate:
sudo groupadd fuse
sudo gpasswd -a [user] fuse
con al posto di [user] il vostro nome utente.
Ora che tutto è pronto riavviate il vostro PC per far in modo che tutti i cambiamenti prendano piede.

4° Passo: collegamento.
Dopo aver riavviato siamo pronti per il collegamento.
Collegate il dispositivo al PC via USB, aprite un terminale e create un punto di mount per il vostro dispositivo. Io vi consiglio di farlo nella vostra home perché a me con sudo ha dato problemi. Per far questo da terminale digitiamo:
mkdir ~/Android
Adesso finalmente possiamo montare il nostro dispositivo! Diamo da terminale:
go-mtpfs ~/Android
e se tutto è andato secondo i piani navigando nella cartella Android appena creata (nella vostra home) potrete accedere alla memoria del vostro dispositivo collegato via USB!

Quando avrete finito di fare quello che volete con i file del vostro dispositivo, per smontarlo correttamente (attenzione a NON scollegare l'USB manualmente e basta, creereste danni al vostro filesystem!) digitare il seguente comando sempre in un terminale:
sudo umount ~/Android
Fatto ciò adesso potrete procedere con la disconnessione manuale del cavo USB.


Nota finale: d'ora in poi quando vorrete collegare il vostro dispositivo Android al PC vi basterà semplicemente collegarlo via USB e utilizzare soltanto gli ultimi 2 comandi per montare e smontare il vostro dispositivo, ossia:
go-mtpfs ~/Android
per montarlo e
sudo umount ~/Android
per smontarlo.