ADB/Fastboot & MTP Over Linux (by Nihilus)

Shotokan - martedì 26 Febbraio

Premessa:

Milioni di persone stanno smadonnando (anche in questo preciso momento) per far funzionare Android su un sistema Linux based.
Dunque, un bel giorno uno compra un dispositivo Android e spera che ci sia un minimo di compatibilità con un sistema Linux, e invece cosa si trova davanti?! MTP, ripeto MTP (Media Transfer Protocol)! Un maledettissimo protocollo ideato da Microzozz per il trasferimento file (originariamente musica e foto) e legato al mondo ¨Winzozz Media Player / XBOX¨. Ma non è il caso di perdersi d’animo, colleghiamo il bel dispositivo al PC, e….e….e….ed è un miracolo se un OS Linux lo riconosce al primo colpo. Beh, si narra di rari casi nei quali Ubuntu abbia riconosciuto il dispositivo, ma la felicità è durata poco. E qui entrano in gioco i “Pr0grammat0ri PR0” che tirano fuori il loro kit di sviluppo per Android, collegano il cellulare e dicono ¨ma tanto con ADB fai tutto¨, e invece… Con le nuove versioni di Ubuntu e derivate il supporto ufficiale ad ADB non lo ha più Canonical, ma è passato a terzi (leggasi Google). Quindi una persona con un minimo di animo si reca su Google e pigia i tasti fino a comporre ¨MTP Ubuntu¨ e saltano fuori millemila superblog con la soluzione a portata di mano. Si inizia ad impallidire quando ci si rende conto che hanno TUTTI la stessa maledettissima guida (a volte copiata pure con errori) ed adattata con i piedi alle nuove versioni di Ubuntu. Ci siamo quasi ragazzi, lasciatemi sfogare ancora un po’ 😉 ed ecco che dopo ore passate a leggere qui e li spunta la salvezza: Simple MTP. Un promettente programma che a dire di alcuni blogger è la soluzione all’ ¨agonia MTP su Linux¨. Risultato?! I sorgenti nemmeno compilano. Ok ora ho finito.

ABD/Fastboot

Per chi non sa cosa siano, affari suoi, queste cose sono utili ai programmatori o a chi ha voglia di smanettare, dunque vi rimando a http://en.wikipedia.org/wiki/Android_Debug_Bridge#Android_Debug_Bridge e http://en.wikipedia.org/wiki/Fastboot#Fastboot.

Prerequisiti:

– Dispositivo Android
– Android SDK
– Java SDK7 (non strettamente necessario)

Installiamo Java SDK, da Terminale:

user@linux:~$ sudo su
root@linux:~$ add-apt-repository ppa:webupd8team/java
root@linux:~$ apt-get update
root@linux:~$ apt-get install oracle-java7-installer

Ora scaricate Android SDK dal sito ufficiale http://developer.android.com/sdk/index.html#download e scompattatelo sul Desktop o dove meglio vi pare. Da terminale entriamo nella cartella ¨adt-bundle-linux-*¨ e spostiamoci in ¨sdk/platform-tools¨ e avviamo il server ADB:

root@linux:~/adt-bundle-linux-x86_64/sdk/platform-tools$ ./adb start-server
root@linux:~/adt-bundle-linux-x86_64/sdk/platform-tools$ ./adb devices

Se l’output dell’ultimo comando mostra il codice identificativo del vostro dispositivo, seguito dalla scritta ¨device¨ avete avuto successo, di conseguenza funzionerà anche fastboot! 🙂

adbdevices

MTP

Prerequisiti:

– Dispositivo Android
– Qualsiasi ditribuzione derivante da Debian

Premetto che la guida è stata scritta per Ubuntu e derivate, ma è facilmente adattabile ad altri sistemi Linux. Veniamo alla tanto agognata guida per far funzionare MTP. Collegate il dispositivo al PC e aprite il Terminale e digitate:

user@linux:~$ sudo su
root@linux:~$ apt-get install mtp-tools mtpfs fuse
root@linux:~$ mkdir -p -m 777 /mnt/Android
root@linux:~$ gedit /etc/udev/rules.d/automount.rules &

A questo punto dovrebbe esserersi aperto in Gedit un file di testo nel quale dovrete inserire delle righette di configurazione 🙂 ma prima procuriamoci delle informazioni di vitale importanza. Abbiamo bisogno del VendorID e ProductID del nostro dispositivo, e ce li procureremo col comando ´lsusb´. Dunque da terminale digitate:

root@linux:~$ lsusb

lsusb

Avrete sotto mano la lista dei bus USB del PC, il vostro compito è trovare il vostro dispositivo Android collegato e segnarvi su un blocco note le informazioni necessarie. Il mio output è questo:

root@linux:~$ Bus 001 Device 004: ID 1004:61f9 LG Electronics, Inc.

Il mio dispositivo è un LG Optimus Dual, e le informazioni utili sono:

VendorID: 1004
ProductID: 61f9

Ora possiamo tornare a Gedit ed inserire questo codice, sostituendo TUOVENDORID, TUOPRODUCTID e TUOUSERNAME con i vostri dati:

# Android rules
SUBSYSTEM=="usb", ATTR{idVendor}=="TUOVENDORID", ATTR{idProduct}=="TUOPRODUCTID", ACTION=="add", MODE="0666", RUN+="/bin/su TUOUSERNAME -c '/usr/bin/mtpfs -o allow_other /media/phone'"
SUBSYSTEM=="usb", ATTR{idVendor}=="TUOVENDORID", ATTR{idProduct}=="TUOPRODUCTID", ACTION=="remove", RUN+='/bin/fusermount -u /media/phone'

Salvate il file e chiudete Gedit, e ritornate al Terminale:

root@linux:~$ modprobe fuse
root@linux:~$ mtpfs /mnt/Android

Ora dovrebbe essere montato il dispositivo, manca solo un piccolo passo:

root@linux:~$ cd /mnt/Android
root@linux:/mnt/Android$ nautilus &

Magicamente vedrete apparire tutti i vostri file 🙂 Per eseguire il dismount della periferica date da terminale il comando:

root@linux:~$ umount /mnt/Android
Theme made by Koala