#howto - Scrcpy: gestire Android da computer

Scritto da il
Redatto da
ubuntu
fedora
archlinux
windows
macos
android

NOTA:

Un articolo precedente su SCRCPY è disponibile a questo indirizzo con informazioni meno aggiornate. Questo articolo ne aggiorna le informazioni sul precedente.

Un computer può essere controllato da Android mediante l’utilizzo di due protocolli, SSH e VNC.

Anche l’inverso è possibile, come dimostra Scrcpy (contrazione di “screen copy”).

Scrcpy permette di trasferire l’audio in uscita dello smartphone al computer, di inviare file via drag & drop, di condividere e registrare lo schermo, di utilizzare il telefono come webcam, di simulare il collegamento di mouse e tastiera, di condividere la clipboard (copia-incolla), e molto altro.

Funziona senza permessi di root, essendo uno strumento che si affida ad ADB (Android Debug Bridge).

Prerequisiti

Per utilizzare Scrcpy è fondamentale:

  • su computer, installare ADB;
  • su Android, abilitare sia le opzioni sviluppatore che il debug USB (o Wireless).

ADB

ADB in ambienti Linux è una dipendenza già prevista implicitamente e perciò automaticamente installata, solitamente.

Le istruzioni per la sua installazione, lì dove l’installazione manuale sia necessaria, verranno trattate congiuntamente all’installazione di Scrcpy nei prossimi paragrafi.

Opzioni sviluppatore

I passaggi necessari sono pochi e semplici ma dipendono sia dal dispositivo che dalla versione del sistema operativo.

In genere, per abilitare le impostazioni sviluppatore è sufficiente recarsi nelle impostazioni del dispositivo, raggiungere la schermata sulle informazioni del dispositivo, e individuare la dicitura “Numero build” (o simili) su cui bisogna cliccare sette volte.

La pagina dedicata su [android.com] spiega come attivare le opzioni sviluppatore per alcuni dispositivi.

Essendo un’operazione ordinaria, per conoscere l’esatta procedura per altri dispositivi è sufficiente effettuare una ricerca in rete.

Una volta sbloccata la sezione delle opzioni sviluppatore, bisogna recarvisi per preparare il dispositivo ad essere controllato da un dispositivo terzo.

Debug USB

Qualora si desideri una connessione via cavo (ideale per raggiungere il massimo delle prestazioni) bisogna abilitare il debug USB (impostazioni sviluppatore).

Sebbene non sia un’operazione necessaria, è possibile verificare che tutto sia andato a buon fine lanciando ADB da terminale:

adb devices

In caso di esito positivo, apparirà una sequenza di caratteri esadecimali (composta da cifre 0-9 e lettere a-f) seguita dall’identificativo del proprio dispositivo quando ve ne sono due o più (altrimenti apparirà un generico “device”).

Debug Wireless

Una connessione senza cavo implica necessariamente un peggioramento delle prestazioni, eppure potrebbe essere più indicata in determinate circostanze (cavi difettosi, necessità di allontanare i dispositivi tra loro, e così via).

Sempre dalle impostazioni sviluppatore, va attivato il debug Wireless.

Si noti che l’opzione wireless è disponibile solo su versioni di Android più recenti (e spesso sui firmware custom), mentre su versioni Android meno recenti (senza root) è obbligatorio collegarsi prima via USB e poi spostarsi su una connessione Wireless (ogni singola volta).

Va chiarito fin da subito che non è compito di ADB crittografare le comunicazioni, pertanto il traffico è in chiaro e chiunque sia collegato alla rete può intercettarlo.

Nel caso si voglia proseguire comunque con una connessione wireless non sicura, bisogna inserire dapprima adb tcpip 5555 (dove 5555 è proprio la porta convenzionalmente usata da ADB in modalità wireless) e poi adb connect ADDRESS, dove ADDRESS è l’indirizzo del proprio dispositivo.

Qualora non funzionasse, sarà necessario eseguire adb connect ADDRESS:PORT, dove ADDRESS e PORT sono forniti dal dispositivo Android stesso nella schermata di abilitazione del debug wireless.

Se la crittografia è proprio imprescindibile, non si deve necessariamente rinunciare al wireless: lo spiega il prossimo paragrafo.

ADB via tunnel SSH

Su reti ritenute non sicure, è possibile avviare il server ADB dietro tunnel SSH (che cos’è?) così da arginare il problema.

Questa soluzione si applica ad esempio nei casi in cui ci si voglia connettere a un dispositivo via Internet, o più semplicemente se ci si vuole accertare che nessun dispositivo avente accesso alla propria LAN possa intercettare tutto il traffico in chiaro.

Istruzioni e maggiori informazioni sono disponibili su GitHub.

Installazione

Si può installare il software per lo più tramite i vari package manager delle distribuzioni.

Debian e Ubuntu

Sebbene Scrcpy si possa installare via Apt,

apt install scrcpy

la versione disponibile nei repository (al momento di scrittura) è obsoleta e non supporta nuove funzionalità (come il trasferimento dell’audio).

In tal caso, è consigliato installare Scrcpy in altri modi, ad esempio da sorgente.

Fedora

dnf copr enable zeno/scrcpy && dnf install scrcpy

Arch Linux

pacman -S scrcpy

Windows

L’installazione Windows può essere manuale: qui la pagina delle release.

In alternativa, Winget, Chocolately e Scoop sono tre package manager disponibili per Windows (sebbene solo il primo sia ufficiale).

Per installare Scrcpy usando Winget:

winget install scrcpy

Oppure, con Chocolately:

choco install adb scrcpy

Oppure, con Scoop:

scoop install adb scrcpy

Maggiori informazioni sulla pagina GitHub.

MacOS

Si può installare su MacOS tramite Brew:

brew install android-platform-tools scrcpy

Maggiori informazioni sulla pagina GitHub.

Altre installazioni (Linux)

Consultare la pagina GitHub dedicata.

Come usare Scrcpy

Nei paragrafi seguenti sono presentati i più frequenti casi di utilizzo di Scrcpy: ad ognuno di essi è stata creata.

Come condividere lo schermo

È sufficiente invocare scrcpy:

scrcpy

In caso di problemi, specie su versioni obsolete di Scrcpy, può essere utile limitare la lunghezza del lato maggiore della risoluzione utilizzando il parametro -m:

scrcpy -m 1920

Per disabilitare qualsiasi interazione con il dispositivo (modalità read-only) si può usare la flag --no-control:

scrcpy --no-control

Siccome lo schermo viene condiviso su un’altro schermo, potrebbe essere utile spegnere lo schermo fisico e al contempo anche evitare che il telefono vada in stand-by:

scrcpy --turn-screen-off --stay-awake

Scrcpy offre un parametro apposito anche per limitare i frame per secondo (sebbene potrebbe funzionare solo da Android 10 in su):

scrcpy --max-fps=60

Anche il bitrate (la velocità di trasferimento, misurata in bit al secondo) può essere limitato.

Scrcpy consente di agire separatamente sul video e sull’audio (--video-bit-rate e --audio-bit-rate), e sono supportati i suffissi K (1000, mille) e M (1000000, un milione):

scrcpy --audio-bit-rate=16K --video-bit-rate=2M

Se si conosce in anticipo quale dovrà essere l’orientamento dello schermo iniziale, questo può essere cambiato:

scrcpy --lock-video-orientation     # orientamento corrente (default)
scrcpy --lock-video-orientation=0   # orientamento base (verticale)
scrcpy --lock-video-orientation=1   # 90°  (orizzontale)
scrcpy --lock-video-orientation=2   # 180° (verticale, al contrario)
scrcpy --lock-video-orientation=3   # 270° (orizzontale)

Per guadagnare un po’di spazio, la barra superiore della finestra può essere rimossa:

scrcpy --window-borderless

Per partire direttamente a schermo intero:

scrcpy --fullscreen

Scorciatoie da tastiera

Quando la finestra di Scrcpy è in focus, alcune combinazioni di tasti permettono di eseguire determinate azioni.

Di seguito una tabella repilogativa, dove con il tasto MOD si intendono sia l’Alt sinistro che il tasto Super (solitamente Windows) sinistro (si possono usare a propria preferenza: funzionano entrambi e possono essere cambiati con --shortcut-mod):

Azione Descrizione
MOD + h / tasto centrale Tasto Home
MOD + b / MOD + cancella / tasto destro tasto Back
MOD + s Tasto App Switch
MOD + m Tasto Menu
MOD + f Entra ed esci dalla modalità a schermo intero
MOD + Ruota lo schermo in senso antiorario
MOD + Ruota lo schermo in senso orario
MOD + Alza il volume
MOD + Abbassa il volume
MOD + p Accendi e spegni lo schermo (tasto Power)
Tasto destro (a schermo spento) Accendi lo schermo (tasto Power)
MOD + n Abbassa la tendina delle notifiche
MOD + SHIFT + n Alza la tendina delle notifiche
MOD + c Copia da Android a computer
MOD + x Taglia da Android a computer
MOD + v Incolla da computer ad Android
MOD + o “Spegni” lo schermo ma preserva la condivisione (risparmia batteria) o riaccendilo
MOD + SHIFT + o Riaccendi lo schermo, se precedentemente “spento”
CTRL + tasto sinistro Fai zoom in o zoom out

Come trasferire l’audio in uscita

Nota: funziona solo a partire da Scrcpy 2, su Android 11 e superiori.

Per far sì che l’audio sia trasferito dallo smartphone al computer via ADB, a causa delle limitazioni di Android è necessario che lo schermo sia acceso nel momento in cui viene invocato Scrcpy.

Solitamente è sufficiente lanciare scrcpy senza alcun altro parametro:

scrcpy

Qualora lo schermo fosse spento o non fosse possibile connettere il flusso audio, Scrcpy fallirà silenziosamente, trasmettendo solo il video.

Per forzare Scrcpy a non partire senza il trasferimento audio, bisogna ricorrere alla flag --require-audio:

scrcpy --require-audio

Come inviare file via drag & drop

Scrcpy consente il trasferimento di file sul dispositivo semplicemente trascinando e rilasciando (drag & drop) i file sulla finestra di Scrcpy.

Scrcpy, di default, salva i file nella cartella dei download, ossia /sdcard/Download/. La cartella di destinazione si può modificare grazie al parametro --push-target seguita dal percorso della cartella sul dispositivo.

In particolare, quando viene trascinato un file APK, Scrcpy tenterà di installarlo come applicazione.

Qualora questo comportamento non sia desiderato, Scrcpy consente di disabilitarlo (incluso ogni altro tipo di interattività, come quello di mouse e tastiera):

scrcpy --no-control

Come registrare lo schermo

Il principio di funzionamento di Scrcpy lo rende particolarmente adatto nel caso sia necessario registrare schermate che sarebbero troppo dispendiose per l’accoppiata processore e memoria interna.

Utilizzando Scrcpy, il flusso video viene direttamente trasferito al computer che si occuperà di salvare su disco la registrazione, in modo da non far riportare evidenti perdite di performance sul dispositivo Android.

Nell’esempio seguente, viene fatta partire la registrazione del solo flusso video, escludendo quello audio a causa della flag --no-audio:

scrcpy --no-audio --record=file.mkv

Come utilizzare il telefono come webcam

Grazie ai driver V4L, è possibile creare un dispositivi virtuali, come videocamere, e far loro trasmettere flussi video arbitrari.

Per maggiori informazioni su come iniziare il setup di v4l2loopback, un modulo per il kernel Linux necessario per creare una videocamera virtuale, è possibile consultare questa pagina GitHub.

Una volta terminata la configurazione di v4l2loopback, va istruito Scrcpy a trasmettere il flusso video a /dev/videoN, dove N è in genere un numero piccolo, solitamente 1 o 2 (consultare ls /dev/video*, spesso N è il maggiore tra di essi):

scrcpy --v4l2-sink=/dev/videoN

La finestra di playback può essere disattivata con la flag --no-video-playback: qualora si scelga di disattivarla si tenga presente che, se proprio necessario, è sempre possibile controllare cosa stia trasmettendo la propria videocamera utilizzando ffplay, VLC o MPV:

ffplay -i /dev/videoN
vlc v4l2:///dev/videoN
mpv v4l2:///dev/videoN

Come condividere la clipboard (copia-incolla)

Di default, Scrcpy consente già la sincronizzazione della clipboard tra computer e Android.

Qualora la clipboard non venga sincronizzata (da computer ad Android), potrebbe essere necessario ricorrere al metodo basato su key events, attivabile con la flag --legacy-clipboard, oppure utilizzare le scorciatoie da tastiera.

Al contrario, la flag --no-clipboard-autosync disabilita questo comportamento, che di default non è sempre desiderabile per motivi di privacy e sicurezza.

Maggiori informazioni

I sorgenti di Scrcpy sono disponibili su GitHub, mentre il subreddit dedicato è raggiungibile su r/scrcpy.

history_edu Revisioni