
If you've been tinkering with ROMs for a while and want to take the leap to Sailfish OS on your Sony XperiaThis guide is designed for you. We'll calmly review which models are compatible, the actual support status for each, and all the key steps for installing official or prepared images, whether you just want to flash your device or if you'd like to... compile your own image and wear it to different Xperia devices.
It's important to be clear from the beginning that we're talking about a alternative system and in many cases in beta phaseEspecially on recent devices like the Xperia 10 IV and 10 V. The overall experience can be very good, but certain features—like the camera or fingerprint reader—may be broken or completely disabled. If you accept these limitations, you'll get a system in return. Lightweight, fluid, and very different from Androidwith a focus on gestures, privacy, and free software.
Sony Xperia models compatible with Sailfish OS and current status
Over the years, the Sony Xperia range has been the darling of Sailfish OS, both in terms of Sailfish X official such as through community ports and projects like Plasma MobileIn this article we will focus on models with more mature documentation and clear flashing tools: Xperia X, Xperia 10, Xperia 10 IV and Xperia 10 V, in addition to other teams based on the same Sony AOSP projects.
For Sony Xperia 10VJolla has announced official support, and a first beta version is now available for installation. This initial release has some significant flaws: The camera is disabled due to problems with Sony drivers. and the Battery level may freeze at a fixed percentage. Despite this, telephony, mobile data, WiFi, multimedia, Bluetooth and the rest of the basic functions are operational.
With the Xperia 10IV The situation is similar. According to the adaptation status published by Jolla, they work without major problems. GPS, Bluetooth, WiFi, tethering, modem, sensors and audio/video...in addition to the USB network. The main drawbacks, to this day, remain the camera that won't start and the fingerprint reader that remains unusable.
In slightly older models like the Xperia 10 (Android 9) and the Xperia X (Android 6/7) The support is much more robust. Here, the camera, telephony, data, most of the sensors, and the internal OTA updates They are considered stable or nearly so. There may be minor issues, such as a somewhat temperamental compass, details with certain gestures, or battery consumption that could be fine-tuned depending on the Sailfish version, but we are already talking about a fairly polished system for everyday use.
Basic requirements before installing Sailfish OS
Before you start flashing like there's no tomorrow, it's worth confirming a few requirements. The first is to make sure that your bootloader is unlockableThe second is to have a PC with Linux, Windows or macOS prepared with Fastboot, ADB and the tools that you will need, and the third, having enough space and time if you plan to compile.
Check if the bootloader can be unlocked
On most Xperia devices (old and new), the verification process is identical. Open the Phone app and enter the Sony service code. * # * # * # * # 7378423 as if you were going to make a call. You will enter a hidden menu where you will have to go to Service info> Configuration> Rooting StatusIf “Bootloader unlock allowed: Yes"You're on the right track; if instead it says "No" or that field doesn't even appear, You will not be able to install Sailfish OS on that device..
The models included in the program Sony Open Devices (like the Xperia X and the original Xperia 10) have a dedicated page on Sony's developer website that details, model by model, whether unlocking is permitted. From that same website, you can request the unlock code which you will then use with Fastboot.
Tools and environment on the computer
From GNU/Linux, the minimum required packages are: Fastboot and ADBOn Debian or Ubuntu-based distributions, you install them with:
sudo apt-get install android-tools-fastboot android-tools-adb
In Fedora and other RPM-based distributions, the typical package is:
sudo dnf install android-tools
If your idea is to take it a step further and compile your own images For devices like the Xperia 10 IV, 10 V, or the Xperia 10 (Android 9), you'll also need to prepare a complete Android build environment and the Sailfish OS Platform SDK/HADKFor these modern ports, a powerful host is recommended: 200-300 GB of disk space For code and builds, at least 50 GB just for downloads, a good multi-core CPU and generous RAM, following Google's recommendations for compiling AOSP 11/13.
Avoid connection drops: USB auto-suspend in Linux
There's one pesky detail that shouldn't be forgotten: in some GNU/Linux installations, especially when using USB 3.0 ports, the self-suspension of USB devices can cause errors such as “Requested download size is more than max allowed"or sudden disconnections during flashing. To be on the safe side, you can temporarily disable this auto-suspend:"
echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend
This setting prevents the kernel from "putting the port to sleep" in the middle of a partition write, which could leave the phone in an intermediate state and force you to repeat the entire unlocking or flashing process from scratch.
Preparing the Xperia: Developer options and Fastboot modes

Once you know your phone is a candidate and your PC is ready, it's time to fine-tune the Xperia itself. You need to activate the Developer options, USB debugging, and OEM unlockingand also familiarize yourself with how to get into Fastboot and Fastbootd.
Enable USB Debugging and OEM Unlocking
The path is very similar across all Xperia models. Go to Settings> Phone information and tap repeatedly on the “Build number” until Android tells you that you are already a developerThen go back and open the “Developer options” menu (in some cases within “System > Developer options”).
Within that menu, activate at least USB debugging y OEM unlockIt is important that your mobile phone has an internet connection when you enable OEM unlocking, because Android queries Google/Sony servers to see if your device can be unlocked.
How to enter Fastboot and Fastbootd
To unlock the bootloader and flash images, you will need to boot the Xperia in boot mode Fastboot (and on modern devices, also in) FastbootdThe classic method is:
- Turn off your phone completely.
- Connect the USB cable to the computer but leave it disconnected from the phone.
- Press and hold the key Turn up the volume on the Xperia and, without letting go, connect the cable to the mobile phone.
If you've done it correctly, the notification LED will light up. azulThis indicates that the device has entered Fastboot mode. Another convenient option, while Android continues booting, is to launch the following command from your computer:
adb reboot bootloader
In recent models, flashing scripts often restart the phone themselves. Fastboot to Fastbootd as needed. Fastbootd is an extended mode that allows access to additional logical partitions, essential in Xperia devices based on Android 11/13.
Unlock the bootloader of your Sony Xperia
Unlocking the bootloader is a point of no return: delete all data of the phone and may affect the official Sony warranty. Before proceeding, make sure that all the basic functions work on Android—calls, camera, mobile data, microphone, speaker, touchscreen—because it will always be easier to manage an RMA with the phone in its factory state than after installing Sailfish.
Request the unlock code on the Sony website
For the models covered by Sony Open Devices Obtaining the code is simple. You go to the Sony developer website, select your specific Xperia model, and enter the IMEI and an email account, and the page will return a unique unlock code.
That's the code you'll use with Fastboot. Keep in mind that you'll need to add the prefix at the beginning. 0x and that Fastboot is invoked with the Sony USB identifier (-i 0x0fce) when so specified in the documentation.
Execute the unlock command using Fastboot
With the phone in Fastboot mode (blue LED) and the PC terminal in the working folder, the typical command for an Xperia X would be something like:
sudo fastboot -i 0x0fce oem unlock 0xTU_CODIGO_DE_DESBLOQUEO
If everything goes well, Fastboot will display output like “OK"And in a few seconds the bootloader will be unlocked. From this moment on you will be able to flash Sailfish OS or other AOSP images for testing and ports.
Flash an official or pre-made Sailfish OS image
If you just want Install Sailfish OS from a ready-made ZIP file Without going into compilations, the procedure is shorter. This applies to both official Sailfish X images (Xperia X, Xperia 10, Xperia 10 II/III/IV/V) and packages generated by Jolla scripts for newer models.
Download and extract the Sailfish ZIP package
On officially licensed devices you must access the Jolla Shop With your account, purchase or activate the corresponding license and download the Sailfish OS ZIP file from the downloads section. The file name usually includes the Sailfish version, model, and variant, for example:
Sailfish_OS-Jolla-4.5.0.18-f5121-1.0.0.9.zipfor Xperia X F5121.Sailfish_OS-Jolla-4.5.0.18-f5122-1.0.0.9.zipfor Xperia X F5122.
Once you have the file, copy it to a convenient working directory and unzip itYou will see several elements: flashing scripts (flash.sh, flash-on-windows.bat), image fragments (sailfish.img001, img002…), README files and other auxiliary files.
Integrate Sony's proprietary binaries (vendor blobs)
In addition to the Sailfish ZIP you need the proprietary binaries that Sony publishes for AOSPThey arrive as ZIP files which, when extracted, generate an .img file containing drivers and closed components that Sailfish uses at runtime. Each device family has its own specific variant, for example:
- For Xperia X, something like this is used SW_binaries_for_Xperia_AOSP_M_MR1_3.10_v13_loire.zip.
- For Xperia devices based on Android 11 or 13, you'll find names like SW_binaries_for_Xperia_Android_11_4.19_v9a_lena.img o SW_binaries_for_Xperia_Android_13_5.4_v9a_ .img.
The pattern is always the same: you download the Sony ZIP file, unzip it, and copies the resulting .img to the same folder where you extracted the Sailfish OS ZIP file. It is crucial that the filename exactly matches the one expected by the flashing script; otherwise, you will see messages like “file not found"and the process will be aborted."
+If you want to use a different version of the binaries than the one provided by Jolla, you will need to edit the flashing script and the file of checksums (for example, md5.lst) to reflect the new name and its hash. Otherwise, the script will detect an integrity inconsistency and refuse to continue.
Run the flash.sh script on Linux
With the bootloader already unlocked, the Sailfish ZIP extracted, and the Sony binaries copied to the same directory, flashing from Linux is reduced to opening a terminal in that folder and running:
sudo bash ./flash.sh
The script will prompt you to connect or restart your mobile device. Fastboot/Fastbootd and it will begin writing the necessary partitions. Throughout the entire process, avoid touching the cable, the USB port, or the phone itself until the console displays something like “Flashing completed. Remove the USB cable and boot up the device by pressing power key”.
If you encounter errors such as “Requested download size is more than max allowed”, in some cases it can be resolved by reducing the Fastboot write block size, for example using -S 512K in the commands fastboot flashThis involves either tweaking the script or manually flashing the problematic partition.
Sailfish OS First Start-Up
Once the flashing process is complete, disconnect the phone from the PC and hold down the power button. You will usually see a warning message first. bootloader unlocked, then the Sony logo and, finally, the Sailfish startup animation.
During the first startup, the setup wizard will launch and guide you through choosing language, accept license, set a lock code, set date and time, connect to a network and log in with your Jolla accountThat account is the one that enables licensed content (such as the) Android support and the Aptoide Store) which you can install at that time or later from the Jolla Store.
Compile your own image: HADK and community ports
If your body is craving something more than flashing a ZIP file, Jolla publishes the HADK (Hardware Adaptation Development Kit)A very comprehensive manual explaining how to compile Sailfish OS from scratch for various AOSP devices, including modern Sony Xperia models.
Download the HADK and prepare the build host
The first step is to download the latest version of HADK and carefully read the initial notice and chapters 1 and 2, which explain the general workflow, the Platform SDK, and the main commands. Although the document sets minimum requirements, in practice it is recommended to have considerably more space of the originally suggested: up to 300 GB of disk space for Android 13-based devices and a good broadband connection to download around 50 GB of fonts and dependencies.
Then you will have to install the Sailfish OS Platform SDK and prepare the file ~/.hadk.env with key environment variables: manufacturer (VENDOR), model (DEVICE), internal build name (HABUILD_DEVICE), hardware family and base version of Android on which the port rests.
Example variables for Xperia 10 IV and 10 V (Android 13)
In the Xperia 10 IV and 10 V, the base is AOSP 13.0using specific branches of mer-hybris. A typical configuration for the Xperia 10 IV (commercial model xqcc54, internal name pdx225, Murray family) could be:
export VENDOR=sony
export DEVICE=xqcc54
export HABUILD_DEVICE=pdx225
export FAMILY=murray
export ANDROID_VERSION_MAJOR=13
export HAVERSION="sony-aosp-"$ANDROID_VERSION_MAJOR
At the Xperia 10V The values of DEVICE and HABUILD_DEVICE change (for example, to xqdc54 and pdx235, respectively), but the rest of the flow is very similar. The current HADK recommends following its guidelines. Chapters 3 and 4 to configure the environment and skip chapter 5, replacing it with specific commands that clone the correct repositories, synchronize AOSP, and prepare droid-hal for these new families.
Synchronize AOSP, apply patches, and compile hybris-hal
With the variables ready, you will need to install the tool repo from Google, which is the one that manages the AOSP manifestosIn summary, the flow typically includes steps such as:
- Clone the repository droid-hal-sony- with its submodules.
- Initialize
repopointing to the appropriate manifest mer-hybris (branch $HAVERSION) and launchrepo sync. - Clone droid-src-sony and apply the necessary patches with scripts like
droid-src/apply-patches.sh --mb. - Run
./setup-sources.sh --mbto set up the Android source tree. - Source of
build/envsetup.sh, Activate ccache and select the target withlunch aosp_$DEVICE-user.
On Sony devices with a modern kernel (such as the msm-5.4 commonYou will also need to build the kernel using scripts such as build-kernels-clang.shand make sure the image dtbo It is copied to the corresponding product directory. Then it is cloned. droidmedia and are compiled hybris-hal y droidmedia with a make -j$(nproc --all)which may take quite a while depending on your PC hardware.
Generate droid-hal packages, middleware, and syspart
With hybris-boot, hybris-recovery and the essential modules ready, you move on to Chapter 6 of the HADKThis explains how to integrate droid-hal into the Platform SDK and generate RPM packages. The most common approach is to use rpm/dhd/helpers/build_packages.sh with flags like –droid-hal for hardware, –gg for graphics and –mw for middleware and intermediate layers.
In parallel, the templates are being prepared for droid-system (contents of /system) and, depending on the case, also for vendorThe images are assembled. system.img y vendor.img generated by AOSP in temporary directories and scripts are used such as copy_tree.sh o copy_vendor.sh to dump its content into RPM template repositories (for example) droid-system-sony-template o droid-vendor-sony-template).
It's normal to find minor patch conflicts in files such as init*.rc o ld.config.28/29.txtwhich the mer-hybris documentation itself often indicates can be ignored or trivially resolved. What's truly important is ending up with the correct RPMs of droid-hal, droid-system, droid-hal-img-boot, droid-hal-version and company ready to be part of the final image.
Build the flashable image with MIC
When the hardware and middleware are ready, utilities such as the Platform SDK are installed. lvm2, atruncate, pigz and android-toolsVariables are defined as RELEASE (Sailfish version to generate) and EXTRA_NAME (suffix that identifies your build) and runs again build_packages.sh --mic.
This process generates a final flashable image in ZIP format which is left on a route like this:
$ANDROID_ROOT/SailfishOS-release-<version>-<device>-my1/
Inside you will find a file with a name like SailfishOS--my1-<version>-<device>-<hw-version>.zipwhich is the one you will then flash using Jolla's standard method for that model (flash.sh scripts, fastboot, etc.), just as you would with an official ZIP from the Jolla Shop.
Features of the Xperia 10 (Android 9) and Xperia X
Although the general HADK scheme resembles that of Xperia devices with Android 13, in devices like the Xperia 10 (Ganges family, Android 9) and the Xperia X (Loire, Android 6/7) There are relevant nuances: AOSP branches change, mer-hybris manifests change, and the way /system and /vendor are managed changes.
Xperia 10: Ganges family (Android 9, Pie)
The Xperia 10 is grouped into the hardware family ganges and it adapts on top of AOSP 9 (“foot”). Relevant environment variables include something like:
export VENDOR=sony
export DEVICE=i4113
export HABUILD_DEVICE=kirin
export FAMILY=ganges
export ANDROID_FLAVOUR=pie
export HAVERSION="sony-"$FAMILY"-aosp-"$ANDROID_FLAVOUR
The flow involves cloning droid-hal-sony-ganges-pie, prepare the rests droid-config-sony-ganges-pie, adjust package patterns to drag components like patterns-sailfish-consumer-generic y sailfish-porter-toolsand build both system and vendor. The specific templates droid-system-sony-pie-template y droid-vendor-sony-pie-template They are used as a basis for creating the necessary RPMs.
After completing these steps, you will be able to generate a flashable ZIP file very similar to those of other models and flash it following Jolla's guides for the Xperia 10, keeping in mind particular details such as replacing @DEVICES@ in some scripts by the value of $DEVICE in uppercase (I4113) and check the checksums if you modify the content.
Xperia X (F5121/F5122, base Android 6.0.1/7.x)
El Xperia X It is perhaps the oldest port, but also one of the most refined. The compilation is based on specific AOSP branches (for example) BRANCH=6.0.1_r80 or builds 7.x) that match the firmwares that Sony maintains as compatible for Sailfish X. It is essential that the Android build number whether it's 34.3.Axyyy or 34.4.Axyyy before unlocking, and avoid upgrading to higher versions at all costs.
If your Xperia X has a newer firmware (for example, 34.5.Aqzzz or 35.xAqzzz), it is recommended to perform a Downgrade using the Emma tool on Windows to revert to a supported build before unlocking the bootloader. In this model, syspart and vendor are also handled separately, creating specific RPMs such as droid-system-f5121/f5122 and relying on official Sony images for the Loire family as a source of blobs.
The final flashing process can be done entirely from Linux if the device was updated to a compatible Android base before unlocking. In other cases, Jolla's documentation describes an alternative "Linux path": flashing manually. system, mount partitions in recovery mode, copy blobs to /oem and then relaunch the flashing script to finish installing Sailfish.
State of adaptation, support and contribution of the community
Jolla maintains pages of Adaptation Status where, model by model, the features that work perfectly and those that are still lacking are listed. For the Xperia 10 IV and 10 V Sailfish 5.0.0 indicates that they are operational GPS, Bluetooth, WiFi, tethering, mobile data, modem, sensors, multimedia and USB networkwhile they continue to be out of order camera and fingerprint reader, which are under development.
At the Original Xperia 10 The picture is considerably more favorable: telephony, mobile data, graphical interface, WLAN, GPS, Bluetooth, camera, tethering, and internal Sailfish updates are all in good shape. It is noted, however, that some minor "non-productive" features may still exist, such as a battery consumption is somewhat high, sensors that need polishing (especially the compass) or details of behavior under certain load conditions.
El Xperia X It boasts a mature port, although with a history of pending improvements related to Bluetooth, navigation gestures, browser video playback, or performance in certain situationsMany of these issues have been fixed in subsequent versions. The documentation encourages advanced users to contribute in areas such as NFC, fingerprint sensor, reduced power consumption and graphic stability, taking as a reference the work done on other Xperia models such as the XA2 series.
If you want to go a step further and improve the Android base itself, Jolla reminds you that any improvements made to Sony's AOSP directly impacts Sailfish OSTherefore, it refers to Sony's official guides for compiling AOSP 11/13 for Open Devices, and even offers scripts for fastboot flashall Specific steps include flashing the OEM image of binaries, disabling verity and verification in vbmeta/vbmeta_system, cleaning metadata, and completing the AOSP installation before overlaying Sailfish.
In case of errors when compiling or flashing, the most direct way is still to go to the #sailfishos-porters channel on the OFTC networkwhere veteran developers and porters share solutions to typical problems: broken dependencies, cryptic messages from build_packages.sh (such as “None of the selected test suites…”) or necessary adjustments in manifests, scripts, and patches.
Among the recent innovations of the system, it is worth mentioning Sailfish OS 4.1 and later, which have been adding support for 64-bit Android apps on the Xperia 10 II, raising Android compatibility to API 29 (Android 10) on the Xperia XA2, Xperia 10 and 10 II, fixing rotation and notification errors in the Android container, incorporating a New audio recording appThis includes fixing the OneDrive backup upload issue and improving the calendar (event synchronization, birthdays, cancellation alerts in Exchange, etc.). In addition, useful features such as system-level ad blockingscientific mode on the calculator in portrait orientation and the option to add custom search engines in the browser.
Final considerations
Installing Sailfish X isn't just a matter of flashing: it involves acquiring a paid license In EU countries, Norway, or Switzerland (in the case of the Xperia X, it was set at around €49,90), you get the software package for flashing, support for Android apps, predictive text in several languages (including Spanish), compatibility with Microsoft Exchange, updates for at least a year, and official support. As always, Jolla recommends following the instructions to the letter. official installation instructions For Linux, Windows or macOS, see the information on their website, and check the Android phone's hardware before unlocking it to avoid warranty surprises.
If you've made it this far, you already have a fairly complete map of Which Xperia devices are compatible with Sailfish OS, what is their actual support status, and what paths can you take?: from simple flashing of an official image to compilation and home port with HADK.
Knowing how to unlock the bootloader, integrate Sony binaries, and handle Jolla scripts, it's possible to set up a fully functional Sailfish OS on an Xperia 10, 10 IV, 10 V, or Xperia X, within the limitations of each model, and also contribute to keeping this alternative ecosystem alive by sharing tests, patches, and experiences with the community. Share the information so that more people know about the topic.
