On tente de rĂ©soudre les problĂšmes de connexion avec scrcpy en WIFI, ce billet complĂšte lâarticle : đ± Partage dâĂ©cran Android : « scrcpy »
Ce billet a été initialement écrit pour la version 1.21
de scrcpy. En 2024, scrcpy est en version 1.25
et les messages dâerreurs sont beaucoup moins ambiguĂ«s ce qui devrait rendre beaucoup simple la rĂ©solution de vos problĂšmes.
Erreur : « Connection refused »
Supposons que lâIP de votre smartphone sur votre local soit : 192.168.1.73
scrcpy --tcpip=192.168.1.73
Et que cela vous affiche lâerreur suivante :
scrcpy 1.21 <https://github.com/Genymobile/scrcpy>
failed to connect to '192.168.1.73:5555': Connection refused
ERROR: Could not connect to 192.168.1.73:5555
ERROR: Server connection failed
- En premier lieu, il faut vĂ©rifier que lâordinateur et le smartphone soient sur le mĂȘme rĂ©seau (typiquement le rĂ©seau de votre domicile).
- Ensuite vĂ©rifier que le rĂ©seau WIFI est autorisĂ© pour le dĂ©bogage sans fil (Utiliser la recherche pour trouver lâoption). En effet, par dĂ©faut ce droit expire dans un dĂ©lai de 7 jours.
Sur votre appareil Android, allez dans les paramÚtres : « WIFI » / « SSID_de_votre_réseau »
Pour votre Linux, vous pouvez utiliser (voir đ Exemples prĂȘts Ă lâemploi avec la commande « ip »:
ip -4 --json addr show | jq 'map( select( .flags | index("LOOPBACK") | not ) | select( .flags | index( "UP") ) | .addr_info[].local )'
Une fois ces points vĂ©rifiĂ©s, il faut sâassurer que la commande adb de votre Linux soit adaptĂ©e Ă votre appareil Android.
-
Version Android du smartphone
Vous trouverez cette information dans « à propos de lâappareil » :
Sur votre Linux, utilisez :
adb version
Ici, il sâagit de la version disponible dans les dĂ©pĂŽts Debian au moment de lâĂ©criture de ce billet.
Android Debug Bridge version 1.0.41
Version 28.0.2-debian
Installed as /usr/lib/android-sdk/platform-tools/adb
Dans lâexemple ci-dessus, on a un smartphone sous Android 12, hors depuis Android 11 le dĂ©bogage en WIFI nĂ©cessite lâutilisation de clĂ© de chiffrement. Hors ici la version 28.0.2 du SDK ne supporte pas la gestion des clĂ©s. La solution va donc passer par une mise Ă jour du SDK sur lâordinateur.
Si vous avez une version infĂ©rieure Ă Android 11, rebrancher le cĂąble USB pour faire votre premier appairage, en effet lâĂ©change de clĂ© se fait via USB sur les anciennes versions.
Exécutez :
adb tcpip 5555
puis relancer scrcpy :
scrcpy --tcpip=192.168.1.73 # Adaptez Ă votre IP
Conflit avec certaines applications
Les applications de type VPN ont comme mission de dĂ©tourner le trafic rĂ©seau et par nature empĂȘcheront le fonctionnement du dĂ©bogage sans fil.
Certaines applications servant Ă protĂ©ger votre tĂ©lĂ©phone, comme les bloqueurs de publicitĂ©, se comporte exactement comme un VPN en redirigeant le trafic rĂ©seau vers un service dâanalyse pour bloquer lâaccĂšs aux sites non dĂ©sirĂ©s.
Vous devrez dĂ©sactiver ce type dâapplication pour permettre le fonctionnement du dĂ©bogage sans fil, et donc permettre lâutilisation de scrcpy en mode WIFI.
-
Exemple avec Blokada
L'exemple reste pertinant mais notez que l'application Blokada n'est plus disponible aujourd'hui, et elle ne doit plus ĂȘtre utilisĂ©e.
On constate que lâIP pour le dĂ©bogage sans fil est 203.0.113.1 : Il sâagit certes dâune adresse IP rĂ©servĂ©e pour les rĂ©seaux locaux, mais ce nâest pas une IP habituelle. Cela trahi la prĂ©sence probable dâun logiciel qui intercepte le trafic rĂ©seau (Ă©ventuellement un logiciel qui vous espionne, mais cela peut ĂȘtre Ă©galement un logiciel qui vous protĂšge).
Ici le coupable Ă©tait Blokada, une application Android pour limiter la publicitĂ© et le « tracking ». Quâil suffit de dĂ©sactiver lors de lâutilisation de scrcpy.
Installation dâun SDK rĂ©cent et utilisation avec « scrcpy »
Pour Android 11 ou plus, vous aurez besoin au minimum de la version 30.0.0 du SDK.
Suivez ce lien pou la derniĂšre version de SDK Platform Tools.
Pour la suite nous supposerons que vous avez mis le contenu de lâarchive dans le dossier ~/Apps/platform-tools_r34.0.4-linux
.
Avant la premiĂšre connexion, les appareils doivent ĂȘtre appairĂ©s :
Rendez-vous dans la section des paramÚtres intitulée : « Débogage sans fil »
Vous devrez autoriser lâutilisation du rĂ©seau WIFI, afin que le dĂ©bogage ne soit actif que sur des rĂ©seaux de confiance.
AprĂšs lâactivation, vous devez rĂ©cupĂ©rer les informations nĂ©cessaires Ă lâappairage.
Pour cela on utilise lâentrĂ©e « Associer un appareil avec un code dâassociation »
Les valeurs de cette boite de dialogue sont temporaires, Ă part lâadresse IP, il nâest pas nĂ©cessaire de conserver ces valeurs aprĂšs lâexĂ©cution de la commande adb pair.
IP_DU_SMARTPHONE
: 192.168.1.73PORT_D_ASSOCIATION
: 39035 (valeur temporaire)CODE_D_ASSOCIATION
: 246911 (valeur temporaire)
Pour effectuer lâappairage, il faut utiliser une version rĂ©cente du programme adb avec la commande pair
comme suit :
adb pair IP_DU_SMARTPHONE
:PORT_D_ASSOCIATION
CODE_D_ASSOCIATION
Assurez-vous dâutiliser la bonne version d'adb, Ă©ventuellement en utilisant le chemin complet vers lâexĂ©cutable.
cd ~/Apps/platform-tools_r34.0.4-linux # On se met dans le bon répertoire
./adb pair 192.168.1.73:39035 246911 # On utilise le chemin relatif `./` pour forcer
# lâutilisation de la commande prĂ©sente dans ce rĂ©pertoire.
En cas dâĂ©chec exĂ©cutez :
adb kill-server
Et relancer la commande adb pair
.
Pour effectuer la connexion, vous devez vĂ©rifier le port qui a Ă©tĂ© attribuĂ© (Ă priori lâadresse IP reste la mĂȘme) :
Rappel dans cet exemple le dossier ~/Apps/platform-tools_r34.0.4-linux
correspond Ă la « bonne » version du SDK, il suffit alors dâexĂ©cuter :
ADB="${HOME}/Apps/platform-tools_r34.0.4-linux/adb" scrcpy --tcpip=192.168.1.73:37397
Le numéro de port changera à chaque fois que le débogage sans fil sera désactivé, puis réactivé.
Liens
- Unable to connect over TCP/IP,
- Documentation Android :
- android pair command not found ( Wireless Debugging ),
- adb server version (41) doesn't match this client (40),
- Téléchargement des outils de développement pour Android: SDK Platform Tools,
- La FAQ de jq en anglais,
- Le manuel de jq en anglais (Vous pouvez choisir la version de jq).
኿