Jump to content
Sign in to follow this  
hDpouet

[Tuto] Utilisation de la sdcard externe avec Deezer sur ICS

Recommended Posts

Salut à tous,

J'vous propose un tutoriel qui permet d'outre passer une limitation de Deezer quant à l'utilisation d'une carte SD externe sur ICS (pour ma part ICSSGS avec la RC4.1)

Contexte :

Je suis un utilisateur de Deezer avec un compte premium et une SD externe de 8Go, j'étais auparavant sur une ROM 2.3.6 et donc avec ma carte SD externe montée sur "/mnt/sdcard/external_sd". Vous le savez surement, Deezer scrute l'emplacement du point de montage de la carte externe constamment et propose d'y déposer les musiques téléchargées si cet emplacement s'avère plus grand que la carte SD interne.

Malheureusement, sur ICS le point de montage de la SD externe est déplacé vers /emmc et par conséquent Deezer (ou tout autre application utilisant le chemin classique) est incapable de gérer cet espace supplémentaire.

Comme je l'ai dit plus haut, j'ai un compte premium, j'écoute énormément de musique en voiture, je ne pouvais pas me passer de la SD supplémentaire de 8Go. J'ai donc pas mal creusé la question, ça m'a pris quelques jours, j'ai testé des solutions plus ou moins viables ou farfelues, et j'en suis arrivé à un résultat très satisfaisant donc je souhaite partager la méthode que j'ai utilisé (parce que j'en ai pas mal ch**r !) via ce tutoriel que je vais tenter de faire au plus clair.

Avant toute chose, avant d'effectuer des modifications et autres manipulations sur votre téléphone, ayez bien conscience et connaissance des actions que vous allez effectuer. Ce tutoriel montre la voie pour résoudre (on va dire contourner un problème), et malgré que la solution proposée soit a priori peu dangereuse, les lignes qui suivent comportent peut-être des approximations (en fonction de votre SGS, de votre kernel, de votre ROM).

Donc pour éviter de faire cette manip' pour du beurre, ne suivez pas ce tuto si :

  • Vous n'êtes pas sous ICS
  • Ne rencontrez pas de problème avec votre carte SD externe et Deezer (ou une autre application éventuellement)
  • Vous êtes sur iPhone (haha on rigole bien chez moi)

Allez hop on décolle...

Prérequis :

  • Avoir le mode recovery et download (en cas de pépin)
  • Avoir un téléphone rooté
  • Avoir Superuser sur son téléphone.
  • Au cas où, faire une sauvegarde de votre système et de vos fichiers
  • Avoir installé ADB (si comme moi vous avez rencontré des ennuis allez faire un tour par là http://www.flashreal...ist-of-devices/ et pour l'utilisation un p'tit tour par là http://forum.frandro...se-servir-dadb/)
  • Posséder un editeur de texte supportant les retours à la ligne du type UNIX (notepad++ sous Windows fait l'affaire).

J'ai tenté des solutions à base de modification de la fstab (dans le fichier vold.fstab) => bootloop ou inefficace

La solution la plus propre aurait été de créer un lien symbolique (ln -s) de /mnt/sdcard/external_sd pointant vers /emmc malheureusement => impossibilité de créer le lien symbolique nécessaire (à cause du système de fichiers vfat je pense)

Au final, la solution fonctionnelle va consister à "binder" un chemin factice utilisé par Deezer vers le répertoire /emmc. En clair, le répertoire /mnt/sdcard/external_sd sera le point de montage du répertoire /emmc (qui je le rappelle est le point de montage de la carte SD externe sous ICS). Cette méthode a pour avantage de ne pas toucher au point de montage par défaut de la carte SD externe sous ICS, elle se contente de faire pointer un autre répertoire vers ce qui est déjà existant.

Allez on branche le téléphone en USB, on le place en mode debug et on commence avec ADB.

On va utiliser le shell du téléphone :

adb shell

Une fois sous le shell, on passe root :

su

On créé le répertoire opt dans le répertoire /data :

mkdir /data/opt

Si le répertoire existe déjà la commande retournera une erreur mais c'est évidemment sans conséquences

On créé également le future point de montage :

mkdir /mnt/sdcard/external_sd

Si ce répertoire existe déjà doit être intégralement vidé sinon on ne pourra pas le "binder"

On peut à présent sortir du shell :

exit
exit

Maintenant sous windows, vous allez ouvrir votre éditeur de texte et le placer en mode d'édition avec retour à la ligne type UNIX (cherchez dans les paramètres, ça dépend de l'éditeur que vous utilisez). Dans l'éditeur, vous creez un nouveau fichier, et vous y insérez :

#!/system/bin/sh

# Pousse un lien vers external_sd pour les apllications ayant besoin de ce chemin
mount -o bind /mnt/emmc /mnt/sdcard/external_sd

On sauvegarde ce fichier et on va le nommer autostart.sh (en fait le nom importe peu, mais il doit quand même être parlant). Ce fichier va devenir le script à exécuter pour créé notre point de montage.

Il nous reste à le pousser dans le téléphone dans le répertoire /data/opt, à l'aide de ADB ... :

adb push X:\<chemin_du_fichier_créé>\autostart.sh /data/opt

... et à le mettre en permission exécutable, il nous faut retourner sur le shell :

adb shell

Modification des permissions, et des droits d'exécution (toujours en root) :

su
chown root /data/opt/autostart.sh
chmod 755 /data/opt/autostart.sh

Et on quitte de nouveau le shell :

exit
exit

A ce stade, si vous exécutez le script autostart.sh, le point de montage devrait être effectif, mais on ne va pas se contenter de si peu. En effet, dans l'état actuel des choses il faudrait relancer le script à chaque fois qu'on éteint le téléphone, c'est pas très confort.

Alors chemise sur le bateau, on va utiliser l'application Script Manager (en version gratuite) dispo sur le market, et la paramétrer de sorte à lancer le script à chaque démarrage avec les droit super utilisateur.

Une fois Script Manager installé, lancez l'application, puis parcourez l'arborescence afin de vous retrouver dans le répertoire /data/opt, vous devriez voir apparaître votre autostart.sh. "Cliquez" dessus, dans la fenêtre qui apparaît, sélectionnez Su, sélectionnez Boot, et si ce n'est pas fait sélectionnez Is script. Pour terminer, on fait Run puis Save et si tout s'est bien déroulé, le point de montage est déjà opérationnel et aux redémarrages également.

Voilà voilà, y'a surement plus simple, y'a surement plus compliqué, dans tous les cas j'attends vos critiques / remarques / questions / suggestions. Merci de me corriger si vous pensez que mes explications ne sont pas ;)

Dams.

Edited by hDpouet
  • Like 1

Share this post


Link to post
Share on other sites

C'est pas mal ton truc mais vu que tu le fais démarré automatiquement... ne peut on pas se passer de la dernière étape? C'est à dire de faire le premier démarrage manuellement.

Share this post


Link to post
Share on other sites

En fait le démarrer a la main la première fois t'evite d'avoir à redémarrer ton SGS (et éventuellement de tester la manip aussi sans redémarrer).

Share this post


Link to post
Share on other sites

Une question, une fois le script lancé on ne peut plus monté la sd sur le pc, y'a pas une possibilité d'avoir un autre script pour faire un unmount du lien de montage? J'ai regardé un peu mais rien trouvé.

Merci :)

Share this post


Link to post
Share on other sites

Hello,

Juste un tout grand merci à hDpouet pour son tuto, il fonctionne nickel pour mon GT-I9000 tournant sous CM 7.1.

J'ai également créé un script de démontage en cas de besoin.

Merci encore d'avoir partagé ce tuto !

Share this post


Link to post
Share on other sites

Bonjour,

Une belle épine sortie du pied, merci ! Perso c'était surtout Navigon qui m'emm... depuis le passage en ICS.

J'ai une question. J'ai suivi ce tuto, et j'ai également fait un script umount, pour quand je branche mon tel à l'ordi.

Ya possibilité de faire un raccourci sur le bureau plutôt que d'aller chercher le script dans /data/opt ?

C'est pas bloquant, mais un raccourci sur le bureau ça serit plus facile :P

sinon j'ai apporté une légère modif à la manière de procéder de ce tuto.

A la base, je l'ai suivi, mais Android-SDK à mis 3 plombes à télécharger des composants, etc... et j'ai pas trouvé ça pratique.

Du coup j'ai simplement utilisé WinSCP sur mon pc pour attaquer le tel.

Ca revient au même, c'est juste une question de préférence.

Ci dessous un ptit tuto rapide (plagiat de ce tuto et d'autres, bien sûr^^ c'est juste une synthèse) :

Sur le téléphone, installer SSHDROID

Sur le Pc, installer WinSCP

Connecter le téléphone au Wifi, puis lancer SSHDROID

Lui donner les droits SUPER UTILISATEUR

Lancer WinSCP, le login et le mdp par défaut sont :

Login : root

mdp : admin

Sur WinScp, Aller à la racine, et vérifier qu'il y a bien les répertoires /mnt/emmc et /mnt/sdcard/external_sd

il devrait y avoir aussi un répertoire "data" à la racine.

Dans data, créer "opt"

Dans OPT, créer un fichier, qu'on va appeler par exemple "autostart.sh"

Dans ce fichier, copier les 3 lignes suivantes :

#!/system/bin/sh

# Pousse un lien vers external_sd pour les apllications ayant besoin de ce chemin

mount -o bind /mnt/emmc /mnt/sdcard/external_sd

Une fois sauvé, on va modifier les droits de ce fichier.

Toujours dans WinSCP, faites un clic droit sur le fichier, Propriétés, et vérifiez que Root soit bien propriétaire.

Donner aussi les droits 775 (avec les cases à cocher en dessous).

Sur lé téléphone, installez Script Manager (gratuit). Au cas o vous ne le trouviez pas, voici le lien :

http://market.android.com/details?id=os.tools.scriptmanager

Une fois Script Manager installé, parcourez l'arborescence afin de vous retrouver dans le répertoire /data/opt.

Vous devriez voir apparaître votre autostart.sh.

"Cliquez" dessus, dans la fenêtre qui apparaît, sélectionnez Su, sélectionnez Boot, et si ce n'est pas fait sélectionnez Is script.

Pour terminer, on fait Run puis Save (Perso j'ai pas Save, mais ça a marché quand même).

Si tout s'est bien déroulé le point de montage est opérationnel et aux redémarrages également.

  • Like 1

Share this post


Link to post
Share on other sites

"Sur WinScp, Aller à la racine, et vérifier qu'il y a bien les répertoires /mnt/emmc"

Si pas de repertoire emmc, que faire ? le créer ? avec quels droits...

merci de votre future aide..pardon pour la nooberie :(

Edited by froggyone

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  





×
×
  • Create New...