Transférer des fichiers entre un ordinateur sous Linux et un smartphone sous Android

Ayant fait l’acquisition d’un smartphone sous Android 8 il y a de ça quelques jours, l’une des premières choses que j’ai essayée de faire c’est d’uploader/téléverser de la musique sur mon appareil.

Il faut préciser que mon ordi tourne sous Linux Debian 10. J’ai un dual boot Windows avec licence, mais je l’utilise très peu, sauf pour les jeux.

J’ai donc utilisé mon moteur de recherche préféré (on se demande lequel quand on achète un android!) et cherché comment mettre de la musique sur le smartphone. Ayant eu un smartphone de la même marque il y a de ça une dizaine d’années, j’ai cru que j’allais brancher mon câble USB et voir apparaître le dossier où mettre ma musique! Bye bye iTune! O que non, ça n’est plus aussi simple!!!!

Je n’ai pas forcément essayé de comprendre le pourquoi du comment, mais j’ai trouvé une solution qui me convient. Certes, elle a l’inconvénient de demander des connaissances réelles en informatique et en particulier des commandes Unix. ça n’est pas un problème pour moi et j’espère pour vous aussi!!!

Bon, j’avais commencé par utiliser AirDroid, qui est possède une jolie interface web permettant de communiquer entre le smartphone et mon ordi via une interface web https://web.airdroid.com/

Grosse, grosse déception : impossible de téléverser/uploader des fichiers de plus de 30 Mo et une limitation du nombre total de Mo uploadés, vraiment basse. La solution c’est une version premium payante.

Alors je suis allé me promener, il faisait beau, je suis allé acheter des piles pour ma télécommande de télé. Bref, j’ai réfléchi et je me suis dit : NO WAY!

Comme indiqué là https://vxlabs.com/2014/11/06/use-adb-to-bypass-dog-slow-mtp-transfer-of-files-from-android-to-linux/ il existe une alternative pour qui connaît un peu les commandes shell sous Linux. L’interface s’appelle ADB (Android Debug Bridge) https://developer.android.com/studio/command-line/adb

Cela suppose donc des connaissances des lignes de commande et a priori de travailler sous Linux! En fait tout ce dont on a besoin est le Android SDK Platform-Tools package https://developer.android.com/studio/releases/platform-tools … qui est disponible sous Linux, Windows et Mac.

Il semblerait donc que ce soit jouable sous Windows aussi (Mac est orienté Unix, donc rien d’étonnant là). Il restera à apprendre quelques lignes de commandes, qui sont accessibles à un utilisateur de niveau « moyen-supérieur ». Si vous voulez un truc avec une interface graphique et tout, passez votre chemin…

Je ferai peut-être un post sur la mise en place et l’utilisation de ADB sous Windows, vu que j’ai le dual boot.

Bon ADB : bien je suis trop content : ça marche! Je vais détailler la marche à suivre

Tout d’abord, vous trouverez tout ce dont vous avez besoin dans les pages suivantes https://developer.android.com/studio/command-line/adb, https://developer.android.com/studio/releases/platform-tools

Pour commencer, vous devez télécharger le Android SDK Platform-Tools, il suffit de cliquer sur le lien dans la page https://developer.android.com/studio/releases/platform-tools « Download SDK Platform-Tools for Linux » (si vous êtes sous Linux naturellement). Enregistrer le fichier, créer un répertoire, dé-zippez le ensuite dans un terminal (gnome-terminal pour moi):

cd
mv ~/Downloads/platform-tools_r30.0.5-linux.zip .
unzip platform-tools_r30.0.5-linux.zip
cd platform-tools/

Dans le répertoire platform-tools, vous avez un certain nombre d’exécutables dont adb, qui est celui qui nous intéresse ici.

Alors vous pouvez télécharger le SDK complet https://developer.android.com/studio/intro/update#sdk-manager, si vous avez en tête de faire du dev pour Android, mais je ne l’ai pas fait parce que ça bouffe des Go et surtout dans le but d’y aller doucement.

Tout d’abord, il faut activer le mode développeur sur votre smartphone. Ce qui est indiqué, c’est :

On Android 4.2 and higher, the Developer options screen is hidden by default. To make it visible, go to Settings > About phone and tap Build number seven times.

Sur Android 4.2 et supérieur, l’écran des options du développeur est caché par défaut. Pour le rendre visible, allez dans Paramètres > À propos du téléphone et appuyez sept fois sur Numéro de build.

Perso, comme je n’avais pas traduit le texte, j’ai cru qu’il fallait taper sept fois le « numéro de build » qui faisait déjà une vingtaine de caractères, argh! Et où? That was the question!

Bon, je suis allé dans Paramètres > A propos du téléphone > Informations sur le Logiciel. Là j’ai « tapé » sept fois sur « Numéro de version » et j’ai rentré mon mot de passe (celui pour déverrouiller le téléphone). Et miracle, ça marche! Dans « Paramètres » apparaît un onglet « Options de développement ». Je clique dessus, je l’active si besoin et j’active « Débogage USB » si ce n’est pas déjà le cas.

Bon je suis très fort, mais c’est avec mon moteur de recherche préféré, toujours lui, que j’ai trouvé la solution détaillée ici : https://www.samsung.com/uk/support/mobile-devices/how-do-i-turn-on-the-developer-options-menu-on-my-samsung-galaxy-device/ en Anglais, mais avec de belles illustrations.

OK, maintenant vous savez que j’ai un Samsung Galaxy (d’occaz). Il doit y avoir moyen trouver la procédure équivalente pour activer les options de développement sur n’importe quel smartphone sous Android.

Ensuite, j’ai connecté mon Samsung à mon ordi via un cable USB. J’ai dû accepter un certain nombre de trucs, peut-être retaper mon mot de passe (je ne sais plus exactement) :

When you connect a device running Android 4.2.2 or higher, the system shows a dialog asking whether to accept an RSA key that allows debugging through this computer. This security mechanism protects user devices because it ensures that USB debugging and other adb commands cannot be executed unless you’re able to unlock the device and acknowledge the dialog.

Lorsque vous connectez un appareil fonctionnant sous Android 4.2.2 ou supérieur, le système affiche une boîte de dialogue vous demandant si vous acceptez une clé RSA qui permet le débogage via cet ordinateur. Ce mécanisme de sécurité protège les appareils des utilisateurs car il garantit que le débogage USB et les autres commandes adb ne peuvent être exécutés que si vous êtes en mesure de déverrouiller l’appareil et d’accuser réception de la boîte de dialogue.

Pour info, une clef RSA est une clef pour système de cryptage asymétrique qui permet à un ordi de se connecter à un autre ordi en toute sécurité. Il y a une clef publique et une clef privée. Je l’utilise pour me connecter en « ssh » sur des serveurs sans avoir à taper à chaque fois mon mot de passe. Pour plus d’information, vous pouvez chercher « chiffrement RSA » sur votre moteur de recherche … préféré.

Bon maintenant, on va connecter le smartphone à votre ordinateur via la Wifi (cool!)

Là je reprends presque exactement ce qui est indiqué dans https://developer.android.com/studio/command-line/adb, à la section « Connect to a device over Wi-Fi (Android 10 and lower) », comme indiqué, pour un Android 10 ou inférieur. J’ai un smartphone sous Android 8, donc c’est bien pour moi. Sinon il faut se référer à la section « Connect to a device over Wi-Fi (Android 11+) », que je n’ai pas lue pour être honnête.

1. Le cable usb branché, je tape

./adb tcpip 5555

puis je peux déconnecter mon cable USB

2. Il faut trouver l’adresse ip de votre smartphone, qui commence par 192.168 (adresse sur le réseau local). Comme indiqué dans le document su-cité, Paramètres > Connexions > Wi-Fi, puis sélectionner « Réseau Actuel » et l’adresse ip locale apparaît, 192.168.1.24 pour moi par exemple. (puis taper sur « annuler » pour revenir en arrière).

./adb connect 192.168.xxx.xxx (remplacer par votre adresse ip naturellement)
./adb device

List of devices attached
192.168.xxx.xxx:5555 device

3. Ensuite, on peut commencer à jouer!

# pour voir ce qu'il y a sur la carte SD
./adb shell ls /sdcard
# pour voir ce qu'il y a dans le répertoire Music du la carte SD
./adb shell ls /sdcard/Music
# pour initier un shell
./adb shell
$ ls
$ ls sdcard
$ ls storage/0E64-F84B/DCIM/Camera/  # le nom du répertoire dans storage "0E64-F84B" est certainement différent chez vous, "DCIM" contient les photos
$ exit

Pour copier les photos depuis le smartphone dans le répertoire /home/benaroya/Images/samsung/Camera (remplacer benaroya par votre nom d’utilisateur!!!), on utilise la commande pull

./adb pull storage/0E64-F84B/DCIM/Camera/ /home/benaroya/Images/samsung

Pour copier un fichier audio depuis votre ordinateur vers le smartphone, utiliser la commande push

./adb push Brooke_Annibale_song_1.mp3 /sdcard/Music

Si vous aimez la Pop/Folk, je vous conseille Brooke Annibale, c’est de la balle. Je l’ai découverte sur Audiotree Live que je vous recommande aussi.

Enfin, pour fermer la connexion (important)

./adb devices -l
./adb -s mydevice disconnect

remplacer mydevice par le code qui apparaît après « device: »
sinon pour déconnecter tous les appareils d’un coup, taper ./adb disconnect tout simplement.

Nous avons vu comment télécharger vos photos sur votre ordi local et comment téléverser votre musique sur votre smartphone via la Wi-Fi. Il ne reste plus qu’à jouer la musique, avec Poweramp par exemple (il faut re-scanner toute la musique dans ce cas).

Le seul défaut de la procédure, c’est qu’il faut brancher le smartphone à votre ordinateur via un câble USB pour initier la connexion TCP. Mais je trouve ça super chouette de téléverser de la musique via la WiFi de cette manière.

Et voilà!!!

Remarque a posteriori : on peut aisément mettre le répertoire contenant l’exécutable « adb » dans le PATH, de manière à ne pas avoir à se placer dans le répertoire en question puis taper ./adb à chaque manip.