Mi-septembre 2017, Jolla propose un kit pour compiler et flasher officiellement le Sony F5121. La scène Sailfish (de chez XDA et MAEMO), toujours prompte à réagir, met en ligne une image pré-compilée pour une communauté qui piaffe d’impatience.

Car le Jolla, smartphone premier du nom est sorti en décembre 2013 … Or déjà à l’époque, c’était loin d’être un terminal « up-to-date ». Mais 4 ans et 6 « releases » majeures plus tard, il faut bien reconnaître que si le smartphone fait correctement le boulot, Sailfish OS commence à se sentir à l’étroit. Les 1GO de ram sont constamment sollicités, même sans alien-dalvik (400 MO en stand-by) et les 2 cœurs du SOC qualcomm sont à la peine dès que l’on exploite un tant soit peu le multitâche ; bref il était temps de trouver un autre terminal. Certes l’intex Aqua fish est encore (un peu) dispo, mais ses caractéristiques sont loin de faire frémir le dernier geek technophile venu : l’annonce de disposer d’une image pour flasher un ex flagship de chez Sony, l’Xperia X, a fini d’enterrer l’Intex.


Je vous propose ici de détailler pas à pas, tout en « CLI », l’installation de cette image Sailfish OS sur ce Sony F5121, dit Xperia X.

Prérequis matériel :

  • 1 Sony F5121, dit xperia X, sous android 6 ou 7 stock, « opérateur free »,
  • 1 PC ou un MAC sous linux,
  • un câble USB/µUSB, data/charge (rigolez pas, ils se ressemblent) ;

les fichiers nécessaires :

et c’est tout … ou presque 😉

Préparation du terminal :
Le Sony est mis en mode développeur ce qui permet d’activer  déboggaage USB. Son bootloader est pret à être déverrouillé selon le protocole du Sony-AOSP-Program, ce qui se fait en 5 étapes et  qui vous fournit un code « 35499F201F54A67B », par mail.

Préparation sur votre linuxbox :
afin d’éviter toutes confusions, précisons qu’un PC sous Mageia6 est utilisé et que les androids-tools sont installés à la main dans une fenêtre d’émulateur de terminal (que l’on appellera par la suite terminal ou fenêtre de terminal) par la commande

> su -
> urpmi android-tools

qui nous met à disposition les « android-tools-4.4.2_r2-5.mga6 » ;
le fichier SailfishOS-2.1.1.26-f5121…tar.bz2 est désarchivé

> tar jxvf SailfishOS-2.1.1.26-f5121-0.0.1+master.20170125170904.537a491.8.tar.bz2

ce qui créé un répertoire SailfishOS-2.1.1.26-f5121…
dans lequel on place les fichiers make_ext4fs et SW_binaries_for_Xperia_AOSP_M_MR1_3.10_v12_loire.zip, sans les modifier.

Connexion entre le terminal et la linuxbox :
reprenez votre fenêtre de terminal ; branchez le Sony allumé sous android  au port USB du PC ; pour vérifier que le terminal est correctement reconnu par les outils de flash :

> dmesg
...
[1258923.590887] usb 2-1.2: new high-speed USB device number 41 using ehci-pci
[1258923.670749] usb 2-1.2: New USB device found, idVendor=0fce, idProduct=51e0
[1258923.670752] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1258923.670754] usb 2-1.2: Product: F5121
[1258923.670755] usb 2-1.2: Manufacturer: Sony
[1258923.670757] usb 2-1.2: SerialNumber: BH9039RL56
...
> lsusb
Bus 002 Device 020: ID 0461:4d51 Primax Electronics, Ltd 0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse]
Bus 002 Device 015: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 033: ID 058f:6335 Alcor Micro Corp. SD/MMC Card Reader
Bus 002 Device 045: ID 0fce:0dde Sony Ericsson Mobile Communications AB Xperia Mini Pro Bootloader
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 1210:25f4 DigiTech 
Bus 001 Device 023: ID 0a5c:200a Broadcom Corp. BCM2035 Bluetooth dongle
Bus 001 Device 022: ID 5543:0004 UC-Logic Technology Corp. Tablet WP5540U
Bus 001 Device 021: ID 1941:8021 Dream Link WH1080 Weather Station / USB Missile Launcher
Bus 001 Device 020: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
> adb kill-server
> fastboot-android
> 

RIEN, NADA, NICHTS, les outils Android ne le voient pas … Mais ce n’est pas si pire car le terminal de Sony est bien vu sur le port USB, seulement il n’est pas vraiment identifié : il va falloir dire à Linux ce que c’est et quoi en faire ; cela concerne la partie « Udev-RULE » du système ; la  mise à jours du fichier android-rules s’effectuera en y insérant une ligne pour le Sony :

> locate android.rules
/usr/lib/udev/rules.d/51-android.rules
vi /usr/lib/udev/rules.d/51-android.rules
i
# Sony F5121
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0660", GROUP="users"
:x

redémarrage du service udev :

> udevadm control --reload-rules

Tant qu’on y est, pour les utilisateurs de Mageia, modifions le script flash.sh pour qu’il invoque le bon programme : le packet android-tools vient avec un exécutable : fastboot-android, au lieu du fastboot des paquets debian : il faut adapter le script flash.sh à cela :

ligne 144 de flash.sh remplacez
FASTBOOT_BIN_NAME=fastboot
— par —
FASTBOOT_BIN_NAME=fastboot-android

 

Flash du Sony

Il ne reste plus qu’à déverrouiller le Sony pour le reflasher :

  1. débranchez le cable USB
  2. extinction du F5121
  3. redémarrage du F5121 en fastboot mode
    1. appuyez sur volume +
    2. maintenez cette dernière pour brancher l’USB°

Si ça vibre et qu’une petite lumière bleue s’allume,, c’est que c’est OK !

Apparemment, on peut aussi d’abord plugguer l’USB puis appuyer sur Volume+

Dans le terminal de la linuxbox :

>  dmesg
...
[1259867.661590] usb 2-1.2: new high-speed USB device number 45 using ehci-pci
[1259867.747726] usb 2-1.2: New USB device found, idVendor=0fce, idProduct=0dde
[1259867.747731] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1259867.747735] usb 2-1.2: Product: S1Boot Fastboot
[1259867.747738] usb 2-1.2: Manufacturer: Sony
[1259867.747741] usb 2-1.2: SerialNumber: BH9039RL56
...
> fastboot-android devices 
BH9039RL56      fastboot

Il serait dommage de s’arrêter là ; cependant il est bon de savoir que la technique proposée par Sony efface la partition TA qui contient la DRM-key, et qu’une fois perdue elle ne peut être restaurée qu’en remettant une version Sony-stock d’Android. Mais R.à.F de la DRM-Key alors poursuivons par le déverrouillage du bootloader ;

>  fastboot-android -i 0x0fce oem unlock 0x35499F201F54A67B
...
OKAY [  0.712s]
finished. total time: 0.712s

Attention, la valeur 0x35499F201F54A67B est fictive et ne dépend que de votre Xperia ; elle vous est fournie par Sony lors de la demande de déverrouillage.
Il ne reste plus qu’à flasher votre Sony :

> time ./flash.sh       
Detected Linux
Searching device to flash..
Found device with vendor id '0fce': Bus 002 Device 045: ID 0fce:0dde Sony Ericsson Mobile Communications AB Xperia Mini Pro Bootloader
Fastboot command: fastboot-android -i 0x0fce 
Flashing boot partition..
target reported max download size of 536870912 bytes
sending 'boot' (10810 KB)...
OKAY [  0.472s]
writing 'boot'...
OKAY [  0.074s]
finished. total time: 0.546s
target reported max download size of 536870912 bytes
erasing 'system'...
OKAY [  1.167s]
sending sparse 'system' (524284 KB)...
OKAY [ 24.645s]
writing 'system'...
OKAY [  3.926s]
sending sparse 'system' (71204 KB)...
OKAY [  3.396s]
writing 'system'...
OKAY [  0.524s]
finished. total time: 33.657s
target reported max download size of 536870912 bytes
erasing 'userdata'...
OKAY [  0.158s]
sending sparse 'userdata' (524284 KB)...
OKAY [ 24.599s]
writing 'userdata'...
OKAY [  3.967s]
sending sparse 'userdata' (524284 KB)...
OKAY [ 24.562s]
writing 'userdata'...
OKAY [  3.964s]
sending sparse 'userdata' (433964 KB)...
OKAY [ 20.617s]
writing 'userdata'...
OKAY [  3.238s]
finished. total time: 81.105s
Archive:  SW_binaries_for_Xperia_AOSP_M_MR1_3.10_v12_loire.zip
creating: tmp/vendor/
creating: tmp/vendor/sony/
creating: tmp/vendor/sony/loire-common/
... snip ...
inflating: tmp/vendor/sony/loire-common/proprietary/vendor/lib/libubifocus.so  
inflating: tmp/vendor/sony/loire-common/proprietary/vendor/lib/libxml.so  
Creating filesystem with parameters:
Size: 241172480
Block size: 4096
Blocks per group: 32768
Inodes per group: 7360
Inode size: 256
Journal blocks: 1024
Label: 
Blocks: 58880
Block groups: 2
Reserved block group size: 15
Created filesystem with 388/14720 inodes and 44453/58880 blocks
target reported max download size of 536870912 bytes
erasing 'cache'...
OKAY [  0.015s]
sending 'cache' (235520 KB)...
OKAY [ 10.612s]
writing 'cache'...
OKAY [  1.850s]
finished. total time: 12.477s
Flashing completed. Detach usb cable, press and hold the powerkey to reboot.
real    2m10.030s
user    0m2.539s
sys     0m4.792s

Puisqu’il insiste, démarrons le Sony’X :
déjà on apprend par un petit message de 5 secondes que notre terminal est Untrusted … Amusant pour un smartphone qui va arrêter de livrer votre intimité à toutes les applications Android qui la réclament, même que c’est Sony qui le dit
Puis démarrage de sailfish …
Configuration de l’environnement, phase d’apprentissage de l’UI Sailfish2.1, activation du mode développeur en 192.168.2.16 (chez moi), connexion au PC par l’USB, validation du mode développeur.
Toujours dans votre terminal :

>  ssh -x nemo@192.168.2.16

nemo@192.168.2.16's password: 
Last login: Fri Sep 29 16:55:06 2017 from 192.168.2.4
...
,---
| SailfishOS 2.1.1.26 (Jämsänjoki) (armv7hl)
'---
[nemo@Sailfish ~]$ devel-su
password
[root@Sailfish ~]$ uname -a
Linux Sailfish 3.10.84-g005c3d7 #3 SMP PREEMPT Wed Sep 27 22:27:25 UTC 2017 aarch64 aarch64 aarch64 GNU/Linux[root@Sailfish nemo]# 
[root@Sailfish ~]$ ls /lib/libc*so
/lib/libc-2.19.so  /lib/libcidn-2.19.so  /lib/libcrypt-2.19.so
[root@Sailfish ~]$ file /lib/libc-2.19.so
/lib/libc-2.19.so: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=0x2f511dee0fbd4ee6a1b9b6eff1d9bfae748f0ce5, for GNU/Linux 2.6.32, stripped
[root@Sailfish ~]$ top
top - 00:19:35 up 1 min,  1 user,  load average: 4.17, 1.66, 0.61
Tasks: 452 total,   5 running, 447 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.3%us,  1.3%sy,  0.0%ni, 97.7%id,  0.0%wa,  0.3%hi,  0.3%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  :  0.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2904576k total,   734608k used,  2169968k free,    19880k buffers
Swap:        0k total,        0k used,        0k free,   263284k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                   
5273 root      20   0  2516 1144  700 R  1.6  0.0   0:00.41 top                                                                                       
5079 nemo      20   0  9572  996  548 S  0.3  0.0   0:00.03 sshd                                                                                      
1 root      20   0 10288 3016 1660 S  0.0  0.1   0:01.53 systemd                                                                                   
2 root      -2   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                                                                  
3 root      20   0     0    0    0 S  0.0  0.0   0:00.05 ksoftirqd/0                                                                               
4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kworker/0:0                                                                               
...

Manifestement, ce n’est pas que ça va plus vite, mais c’est tout le temps réactif, même avec 12 applications, dont un player web, lancées simultanément :

  
[root@Sailfish nemo]# top
top - 00:38:22 up 19 min, 1 user, load average: 5.56, 4.89, 3.30
Tasks: 475 total, 5 running, 470 sleeping, 0 stopped, 0 zombie
Cpu0 : 18.0%us, 15.7%sy, 0.0%ni, 63.3%id, 0.0%wa, 2.6%hi, 0.3%si, 0.0%st
Cpu1 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 0.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2904544k total, 1514272k used, 1390272k free, 22772k buffers
Swap: 0k total, 0k used, 0k free, 395476k cached
...

On sent bien que Sailfish est carrément à l’aise ! Finalement, grand merci à Android et autres whats’app, facebook ou skype qui deviennent de plus en plus obèses et obligent les constructeurs à sortir des 3GO de ram en milieu de gamme … Un système vraiment efficaces, comme un Linux Stock (le même que celui des serveurs de calculs HPC) ne s’en porte que mieux !
Mais comme on est encore en « early access », une mise à jour du système est nécessaire :

[root@Sailfish ~]$ pkcon refresh
[root@Sailfish ~]$ pkcon install zypper
...
[root@Sailfish ~]$ zypper -n ref
...
[root@Sailfish ~]$ time zypper -n  dup
30 packages to upgrade, 9 to downgrade, 1 to reinstall, 2  to change vendor.
...
Additional rpm output:
add-oneshot: /etc/oneshot.d/0/dconf-update - job saved OK
There are some running programs that use files deleted by recent upgrade. You may wish to restart some of them. Run 'zypper ps' to list these programs.
real    7m25.619s
user    0m33.680s
sys     0m11.020s

Il faut enfin installer un patch pour que le bluetooth soit opérationnel :

[root@Sailfish ~] zypper -n in bluetooth-rfkill-event-hciattach

Profitons de l’occasion pour effectuer l’installation du store alternatif « openrepos » via l’application non officielle « storeman » ; retournez sur votre PC, dans votre fenêtre « terminal » :

[nemo@Sailfish ~]$ exit
[root@Sailfish ~]$ exit
> wget https://openrepos.net/sites/default/files/packages/6416/harbour-storeman-0.0.14-1.armv7hl.rpm
...
> scp harbour-storeman-0.0.14-1.armv7hl.rpm nemo@192.168.2.16:./Downloads
...
> ssh -x nemo@192.168.2.16 
nemo@192.168.2.16's password: 
Last login: Sat Sep 30 02:04:32 2017 from 192.168.2.4
NOTICE: Env value ignored HYBRIS_LD_LIBRARY_PATH=/usr/libexec/droid-hybris/system/lib:/vendor/lib:/system/lib
NOTICE: Env value ignored QT_OPENGL_NO_BGRA=1
,---
| SailfishOS 2.1.1.26 (Jämsänjoki) (armv7hl)
'---
[nemo@Sailfish ~]$ devel-su 
Password: 
[root@Sailfish nemo]# cd ~nemo/Downloads/
[root@Sailfish Downloads]# ls
harbour-storeman-0.0.14-1.armv7hl.rpm
[root@Sailfish Downloads]# rpm -ivh harbour-storeman-0.0.14-1.armv7hl.rpm 
Preparing...                ########################################### [100%]
1:harbour-storeman       ########################################### [100%]

On profite de ce que tout semble OK pour réaliser dans la foulée la Mise-à-Jours de la distribution; passons de la 2.1.1.26 à la 2.1.2.3 :


[root@Sailfish Downloads]# ssu re 2.1.2.3
Changing release from 2.1.1.26 to 2.1.2.3
Your device is now in release mode!
[root@Sailfish Downloads]# version --dup
REFRESHING CACHE AND DOWNLOADING PACKAGES
Finished transaction (status=1, runtime=1400320ms)
UPGRADING SYSTEM
...
Install (617 packages)
[root@Sailfish Downloads]# reboot

Pas de panique si l’Xperia boot 2 fois de suite …. C’est normal …

Quit à rajouter des trucs et des bricoles (le développement est plutot actif),les dépôts « mer-tools », entre autres, sont bien pratiques, alors activons les tout de suite :

ssh -x nemo@192.168.2.16

nemo@192.168.2.16's password: 
Last login: Tue Oct  3 23:10:50 2017
NOTICE: Env value ignored HYBRIS_LD_LIBRARY_PATH=/usr/libexec/droid-hybris/system/lib:/vendor/lib:/system/lib
NOTICE: Env value ignored QT_OPENGL_NO_BGRA=1
,---
| SailfishOS 2.1.2.3 (Kiiminkijoki) (armv7hl)
'---
[nemo@Sailfish ~]$ devel-su 
Password: 
[root@Sailfish ~]  ssu ar mer-tools 
[root@Sailfish nemo]# ssu ur   
[root@Sailfish nemo]# pkcon refresh 
Refreshing cache                                                                                                                                                              
Waiting in queue                                                                                                                                                              
Waiting for authentication                                                                                                                                                     
Waiting in queue                                                                                                                                                              
Starting                                                                                                                                                                       
Refreshing software list                                                                                                                                                 
[root@Sailfish nemo]# zypper -n ref
Repository 'adaptation-community' is up to date.
Repository 'adaptation-community-common' is up to date.
Repository 'apps' is up to date.
Repository 'hotfixes' is up to date.
Repository 'jolla' is up to date.
Repository 'mer-tools' is up to date.
Repository 'store' is up to date. 
[root@Sailfish nemo]# pkcon install jolla-settings-accounts 
Installing                                                                                                                                                                 
Waiting in queue                                                                                                                                                              
Starting                                                                                                                                                                         
...                                                                                                                                                            
Downloading packages                                                                                                                                                          
Installing packages                                                                                                                                                                                                           
[root@Sailfish nemo]# pkcon install htop less powertop strace
Installing                                                                                                                                                                 
Waiting in queue                                                                                                                                                              
Starting                                                                                                                                                                         
...                                                                                                                                                            
Downloading packages                                                                                                                                                          
Installing packages                                                                                                                                                                   
[root@Sailfish nemo]# pkcon install mce-tools
Installing                                                                                                                                                                    
Waiting in queue                                                                                                                                                              
Starting     
...                                                                                                                                                                                                                                                                                                                 
Downloading packages                                                                                                                                                          
Installing packages 
[root@Sailfish nemo]# mcetool --set-doubletap-mode=unlock
[root@Sailfish nemo]# mcetool --set-doubletap-mode=show-unlock-screen
[root@Sailfish nemo]# systemctl --user stop msyncd && systemctl --user enable msyncd 
Created symlink from /home/nemo/.config/systemd/user/user-session.target.wants/msyncd.service to /usr/lib/systemd/user/msyncd.service.
[root@Sailfish nemo]# systemctl stop ofono.service
[root@Sailfish lib]# chown radio:radio /var/lib/ofono
[root@Sailfish nemo]#systemctl start ofono.service 

Si vous avez prêté attention à cette séquence, il ne doit pas vous avoir échappé que vous avez installé le double-tap-to-unlock 😉 .
Si votre PC était correctement configuré, cela ne devrait pas vous prendre plus d’une heure. Maintenant, à vous de jouer : invocation du store via son icon sur le Sony’X … Poussez le dans ses derniers retranchements, et si ça buggue, signalez le, la version complète n’en sera que meilleure !

 

 

NB) Si vous avez l’impression que le Sony laggue, c’est probablement que vous ne tournez que sur 2 cœurs :
rajoutez ces lignes :

write /sys/devices/system/cpu/cpuquiet/nr_min_cpus 4
write /sys/devices/system/cpu/cpuquiet/nr_power_max_cpus 6
write /sys/devices/system/cpu/cpuquiet/nr_thermal_max_cpus 6
write /sys/devices/system/cpu/cpuquiet/rqbalance/balance_level 40
write /sys/devices/system/cpu/cpuquiet/rqbalance/nr_run_thresholds "50 100 150 400 450 4294967295"
write /sys/devices/system/cpu/cpuquiet/rqbalance/nr_down_run_thresholds "0 25 75 125 375 425"

au fichier /init.loire.pwr.rc, dans la zone init ; Mais normalement la MàJ règle ce problème.

 

 

Remerciements à Sthocs, Mousse04 et aux intrépides de talk.maemo.org

 

Forum_LINK

bandix400

bandix400

Auteur

Je suis passionné de génétique, d’informatique, de mécanique, et je m’arrête là car je manque déjà de temps pour tout faire ; autrement j’y rajouterais volontiers l’électronique, la musique, l’aquariophilie, le graphisme, le jeu Vidéo (simulation de conduite/FPS) et du ju-jitsu traditionnel.
bandix400

Les derniers articles par bandix400 (tout voir)

SFOS, mais en VO
Une Balance audio pour le jolla 1