Connettere lo smartphone al pc via adb

tools Foto di Pixabay: Pexels.com

Android Debug Bridge, adb, permette di connettere device ad un pc. Oltre che consentire l'accesso all'intero file system del device invece che della sola parte multimediale, mette a disposizione un set di comandi per la manipolazione di:

Do per scontata la presenza degli android tools e la conoscenza di come si attivi la modalità sviluppatore per accedere alla parte di debugging.

Modalità di connessione

Posso collegare il device all'host in 3 modi: usb, tcpip, wireless (da android 11 in poi).

Probabilmente la modalità usb è quella più sicura trattandosi di un collegamento fisico, ma il wireless, per me, è una gran comodità.

USB

Giusto per dovere di cronaca. Chiunque possegga un telefono android, credo l'abbia fatto almeno una volta.

  1. Collegare il telefono alla porta usb del pc.
  2. Abilitare il Debug Usb dalle opzioni sviluppatore.
  3. Autorizzare l'host sul device.

Come avviene l'autorizzazione

L'autorizzazione dell'host consiste in un'autenticazione con chiave pubblica. Sull'host, in ~/.android (almeno sui sistemi *nix) è presente:

Quando si avvia il server adb sull'host per la prima volta, viene generata una coppia di chiavi. La chiave pubblica dell'host viene inviata al device durante la prima connessione, ed è quella che deve essere accettata dal device affinché sia possibile accedervi via adb. Quando si effettua una “revoca delle autorizzazioni” sul device, si cancellano le chiavi pubbliche che devono essere riaccettate se avviene una nuova connessione.

Il file adb_known_hosts.pb contiene gli identificativi dei device connessi all'host via adb.

Se si vuole rigenerare la coppia di chiavi per ruotarle, si può ricorrere al seguente comando:

adb keygen adbkey

che produce una chiave privata rsa-2048 e la corrispondente chiave pubblica.

Le chiavi così generate andranno posizionate in ~/.android e il daemon adb andrà riavviato.

adb kill-server
adb start-server

TCPIP

L'abilitazione della modalità tcpip richiede il preventivo collegamento fisico all'host in modalità usb. Una volta abilitata, questa rimarrà la modalità di collegamento predefinita finché il daemon sarà attivo.

Wi-Fi

A differenza della modalità tcpip, non richiede un collegamento fisico all'host perché il pairing viene fatto sia sulla rete a cui ci si assesta, sia sull'host attraverso un PIN. Inoltre ogni connessione avviene su una porta randomica.

Una volta che l'host è autorizzato, basterà effettuare una connect alla porta opportuna anche se il server venisse riavviato.

Usare ADB su un host con dispositivi multipli connessi

Quando più device sono connessi ad un host, per lanciare un comando, dobbiamo sapere come selezionare il device corretto via adb. Ci vengono in aiuto due flag, “-s” e “-t”, che selezionano il device rispettivamente in base al seriale o al “transport id”, informazione che ottengo con adb devices. Faccio l'esempio di 3 device, due connessi via usb e uno connesso via wireless (da Android 11 in poi) su cui vogliamo aprire una shell.

adb devices
List of devices attached
141*****             device
52004************    device
<ip>:<porta>         device

Per avere l'info sul transport id è necessaria la modalità “verbose”

adb devices -l

List of devices attached
141*****             device usb:1-3 product:<serial_product_1> model:<model_name_1> device:<device_name_1> transport_id:10

52004************    device usb:1-2 product:<serial_product_2> model:<model_name_2> device:<device_name_2> transport_id:8

<ip>:<porta>         device product:<serial_product_3> model:<model_name_3> device:<device_name_3> transport_id:11

da cui: adb -s 141***** shell o adb -t 10 shell, per aprire una shell sul primo device.

adb -s 52004************ shell o adb -t 8 shell, per aprire una shell sul secondo device.

adb -s <ip>:<porta> shell o adb -t 11 shell, per aprire una shell sul terzo device.

Riferimenti:

#adb #android #bash