====== 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 -