====== Replicant sur GT-i9100 (samsung S2) ====== {{ https://www.revistaproware.com/wp-content/uploads/2013/07/replicant.jpg?400 | }} --------------------- [[https://www.replicant.us/|Replicant]] est une distribution Android entièrement open-source n'étant pas équipe de logiciel privatif ou d'applications liée directement à Google. C'est un système d'exploitation mobile à base de logiciel libre mettant l'accent sur la liberté et la vie privée / sécurité Ce tutoriel est compatible pour Replicant 6.0 dont mon pc était sous Lubuntu 17.04 (zesty) (noyau 4.10) Une fois les installations faites, de nombreuses APK sont disponible sur le site [[https://www.apkmirror.com/|APKMirror]] ===== Pré-requis ===== Ressources documentaires : * http://papy-tux.legtux.org/doc1257/index.html Téléchargeons la dernière version système et le recovery respectif de Replicant : https://redmine.replicant.us/projects/replicant/wiki/ReplicantImages Puis vérifier la correspondance de la ROM grâce au **checksum** : sha256sum recovery-i9100.img sha256sum replicant-6.0-i9100.zip On aura besoin de ces paquets par la suite : apt-get install heimdall-flash android-tools-adb ===== Installer le recovery ===== Commençons par stopper totalement le smartphone puis appuyer sur les touches : Volume bas + Menu + Power Puis sélectionner le volume haut pour accepter de télécharger des données. Depuis le pc on peut faire : heimdall flash --KERNEL recovery-i9100.img Notons que --KERNEL conrrespond au nom de la partition logique que l'on peut retrouver en faisant "heimdall print-pit --no-reboot --stdout-errors" ===== Installer la ROM ===== Une fois le terminée, il va redémarrer en mode recovery. Il faudra alors suivre ces étapes : * Factory reset > Wipe data (keep media) > Yes * Apply update > Apply from ADB Depuis le pc on téléversera la ROM : adb sideload replicant-6.0-i9100.zip Terminons par supprimer toutes les informations concernant le mode usine : * Factory reset > Full factory reset > Yes * Reboot system now Le 1er démarrage va être lent car il paramétrera les applications de bases. Cela devrait prendre moins de 10 minutes. //Notons que la procédure est la même pour son upgrade// ===== Installer le firmware Wifi et Bluetooth ===== Les étapes qui vont suivre sont pas plus compliqué que précédemment, il suffit de télécharger une suite de fichiers. Créons d'abord un dossier qui les regroupera : mkdir firmware cd firmware for i in bcmdhd_{apsta,sta,p2p}.bin nvram_net.txt; do wget 'https://raw.githubusercontent.com/TheMuppets/proprietary_vendor_samsung/cm-14.1/i9100/proprietary/system/etc/wifi/'$i; done cd ../ wget https://redmine.replicant.us/attachments/download/1484/dhd.ko Il faut pas la suite s'assurer que le téléphone (en état de marche) puisse communiquer avec le pc. On se rend dans les paramètres en suivant ces menus : * Settings > Developer options > Android Debugging = enabled * Settings > Developer options > Root access = ADB only Il reste plus qu'a téléverser les fichiers avec les bon droits puis de faire un reboot pour prendre en compte les changements (se mettre en tant que root sur sa machine locale ) : adb root adb remount adb push dhd.ko /system/lib/modules/dhd.ko adb shell mkdir /system/vendor/firmware adb shell chown root:shell /system/vendor/firmware adb shell chmod g-w,o-w /system/vendor/firmware find firmware/ -type f -exec adb push {} /system/vendor/firmware \; adb reboot Activez le Wifi et vous devez maintenant être dans la capacité de voir les points d'accès environnant. En cas de soucis, plus de détails sont données à cet article : https://manurevah.com/blah/en/p/Replicant-6-Enabling-Wifi-on-Galaxy-2-i9100 ==== Debuggage ==== Si vous rencontrez ce type d'erreur : //ADB server didn't ACK* failed to start daemon *// Relancer le daemon ainsi : adb kill-server adb start-server ===== Installer le firmware GPS ===== Ci dessous, ce sont juste des prises de notes car à ce jour, c'est très mal supporté. mkdir gps cd gps for i in {libakm,libsec-ril,libsecril-client}.so ; do wget 'https://raw.githubusercontent.com/TheMuppets/proprietary_vendor_samsung/cm-14.1/i9100/proprietary/system/lib/'$i; done cd ../ wget https://github.com/TheMuppets/proprietary_vendor_samsung/blob/cm-14.1/i9100/proprietary/system/lib/hw/gps.exynos4.so adb push gps.exynos4.so /system/lib/hw/ find gps/ -type f -exec adb push {} /system/lib \; Sources : * https://redmine.replicant.us/projects/replicant/wiki/DeprecatedWikiStart#Galaxy-S-2-I9100 * https://github.com/TheMuppets/proprietary_vendor_samsung/tree/cm-14.1/i9100/proprietary/system/lib * https://paste.autarcie.org/?a3104993646e1c0e#2DGLVvZkDP2WZxL5Hbf8Rq7C1W35MVsDSD9pNDYskAKh (un paste pour pas endommager son SEO) ===== Build Image ===== Gardons en tête que les codes sources sont disponible ici : https://git.replicant.us/replicant/device_samsung_i9100/ Les prochaines étapes vont requières ~70Go d'espace disque et plusieurs heures d'installations. ==== Dépendances ==== C'est la première étape : dpkg --add-architecture i386 ; apt-get update Il faudra vérifier dans les sources.list si l'option "deb-src" est bien active pour ensuite exécuter les commandes suivantes : apt-get build-dep gcc binutils llvm-defaults apt-get install bash gcc-arm-none-eabi cmake python-dev swig ant bc proguard maven-debian-helper libemma-java libasm4-java libguava-java libnb-platform18-java libnb-org-openide-util-java libandroidsdk-ddmlib-java libmaven-source-plugin-java libfreemarker-java libmaven-javadoc-plugin-java ca-cacert curl gawk libgmp3-dev libmpfr-dev libmpc-dev git-core gperf libncurses-dev squashfs-tools pngcrush zip zlib1g-dev lzma libc6-dev-i386 g++-multilib lib32z1-dev lib32readline-dev lib32ncurses5-dev zlib1g-dev:i386 xsltproc python-mako schedtool gradle dirmngr libandroidsdk-sdklib-java eclipse-jdt libgradle-android-plugin-java android-sdk-build-tools android-sdk-platform-23 aapt lzop rsync Installons les outils de Google : mkdir ~/.bin cd ~/.bin git clone https://android.googlesource.com/tools/repo chmod a+x repo ln -s ~/.bin/repo/repo /usr/local/bin/repo ==== Initialiser le projet ==== Passons à la partie concernant le projet Replicant : mkdir ~/replicant-6.0 cd ~/replicant-6.0 repo init -u https://git.replicant.us/replicant/manifest.git -b replicant-6.0 repo sync Préconstruire les applications : gpg --recv-key 37D2C98789D8311948394E3E41E7044E1DBA2E89 vendor/replicant/get-prebuilts Ces deux commandes sont à relancer à chaque fois qu'on lance un "repo sync" ==== Construction ==== Nous aurons besoin de la toolchain (La compilation peut prendre plusieurs heures) : cd ~/replicant-6.0 ./vendor/replicant/build-toolchain Puis enfin compiler l'image Replicant (Idem, la patience est grandement requise) : ./vendor/replicant/build.sh i9100 Des binaires se trouverons dans out/host/linux-x86/bin/ et out/dist/i9100/ ===== Commandes utiles ===== * Lancer/stopper le service adb : adb start-server adb kill-server * Lister des téléphone connectés : adb devices * Executer une commande bash : adb shell ls /sdcard/ * Reboot parmis ces modes : adb reboot recovery adb reboot bootloader * Attend qu'un périférique se connecte : adb wait-for-device ==== Enregistrer son écran ===== Ajouter dans le bashrc : screenStream() { while true do adb exec-out screenrecord --output-format=h264 --size 1024x768 - done } Puis lancer sa diffusion : screenStream |ffplay -framerate 60 -probesize 32 -framedrop -bufsize 16M -sync video -