GITHUB PAGES IS ONLY FOR SEARCH ENGINES! CLICK HERE TO FIND OUT WHY! IF YOU ARE ON CATWITHCODE.MOE ALREADY, YOU MAY BLOCK JS AND THATS WHY YOU SEE THIS. GOOD FOR YOU :).

Everything about Ubuntu Touch on the Fairphone 5

In this entry I will document everything about using Ubuntu Touch on the Fairphone 5. I independently volunteer as a beta tester.

Update about Linux on Mobile: /Blog/2025.06.30_Linux_Phone_Opinion/Linux_Phone_Opinion.html

Many parts can be done on any Ubuntu Touch device!

This entry uses the "Everything about Fairphone 5 Modding" entry as a base and is written in the same structure:

/Blog/2023.11.13_Fairphone-5_Stuff/Fairphone-5_Stuff.html

After almost 10 years, it is nice to see the beautiful UI again. After backing up as much as possible with "Neo Backup" (TWRP still does not allow DATA backups), downloading all the packages (LinageOS, FairphoneOS 13&14 and the UT installer) and making sure the phone was fully charged, I started.

I also have opened a topic on the UBports forum with the help of "Keneda". It's a bit chaotic because I have to merge some wrongly split topics thx to me LOL. I will clone my report over there for the convenience of the devs (But my main place for ALL information will remain here :D).

I linked ALL sources, used guides and manuals and fixes from users (with names).

https://forums.ubports.com/topic/10472/beta-bug-reports-catwithcode

https://gitlab.com/ubports/porting/community-ports/android11/fairphone-5/fairphone-fp5/-/issues

Note: I test drove the Fairphone 5 with UbuntuTouch for around 17 days. Don't worry I hand a second, fully configured phone on hand just in case (And a Android Phone was ready to swap in) ;). I relyed on some Android apps to work but the main once are covered more or less, but especially the Signal installation explained below can be skipped as soon as waydroid works.



>> What works, what dose not



A list of stuff I tested with last tested Status and the Tickets if any:

UPDATED: 2025.06.29

SOFTWARE: r494 - 20250629-2096

βœ… WORKS | πŸ“ˆ WORKS, BUT STILL TESTING | βž– NOT TESTED YET | β­• ISSUES | ❌ NOT WORKING






Snap's:

Snaps do work on the Fairphone 5. Compatibility far better now, but still hit or miss.

Snaps can be enabled with the app "Snapz0r". The only issue I have is that it lets you uninstall things in ways where you don't know what is being done. It is great for installing snap and seeing whats on the phone but I installed and managed snap's with the terminal.

Snap also dose not allow some hardware access, camera or Microphones for example.

Here are the apps I tested:




>> Lessens when working with Ubuntu Touch:






>> Guides:



Fixing Libertine create:

Libertine is not as often used as you might expect what causes fucked create processes sometimes. That has way to often to do with core and the uname version. That can be forced and fixed by following this tutorial by "NewBit"

https://forums.ubports.com/post/73301

You just need to create the script in your Downloads folder and then create a script inside you home folder. Make both executable and execute the replacement script and in a separate remote terminal launch the creation process. Sadly if it still fails you have to retry again, cancel the install to the end and then check the log what went wrong. And sadly every retry requires a re-download of every package because reasons.

They wrote in the guide to replace the uname in the / system as well. That can be done with a remount of / BUT it is very important to after the container is running and working to FIRST replace the fake uname with the real one again in /.

sudo mount -o remount,rw /

In case the issue is the same but it somehow dose not work:

I tried the linked tutorial and it did not work. Somehow it always replaces the uname. Sooo... I made the method way more aggressive and brute force. Here's how I did it (VERY IMPORTANT: I WILL NOT EXPLAINED IT AND IT DOSE STUFF THAT CAN BACKFIRE!)

  1. PC: adb shell
  2. sudo mount -o remount,rw /
  3. Create ~/fixLibertine.sh


  4. ---

    while ! test -f "/home/phablet/.cache/libertine-container/linuxapps/rootfs/bin/uname"; do
    sleep 0.1
    echo "Still waiting"
    done

    sleep 0.2

    while ! test -f "/home/phablet/.cache/libertine-container/linuxapps/rootfs/bin/unameaaaaaaaaaaaaaaaaaa"; do
    cp ~/Downloads/uname ~/.cache/libertine-container/linuxapps/rootfs/bin/uname.orig
    cp ~/Downloads/uname ~/.cache/libertine-container/linuxapps/rootfs/bin/uname
    done


    ---

  5. Create ~/Downloads/uname


  6. ---

    #!/bin/bash

    unameparams="$(uname "$@")"

    revision_number=$(echo $unameparams | grep -oE '[0-9]{1}\.[0-9]{1,2}\.[0-9]{1,3}' | grep -oE '[0-9]{3}')

    echo $unameparams | sed -E 's/[0-9]{1}\.[0-9]{1,2}\.[0-9]{1,3}/4.14.250/'


    ---

  7. sudo mv /bin/uname /bin/uname.orig
  8. sudo chmod 755 ~/Downloads/uname
  9. sudo cp ~/Downloads/uname /bin/uname
  10. sudo cp /bin/uname.orig ~/Downloads/uname.orig
  11. Start a second adb shell
  12. libertine-container-manager create -i "linuxapps" -n "linuxapps"
  13. In the second shell: ./fixLibertine.sh
  14. PROFIT?
  15. sudo mv /bin/uname.orig /bin/uname
  16. cd ~/.cache/libertine-container
  17. tar -czvf linuxAppsBackup.tar.gz linuxapps
  18. PC: adb pull /home/phablet/.cache/libertine-container/linuxAppsBackup.tar.gz
  19. PC: adb pull /home/phablet/.local/share/libertine/ContainersConfig.json
  20. cd ~/.local/share/
  21. tar -czvf libTraBack.tar.gz libertine-container
  22. PC: adb pull /home/phablet/.local/share/libTraBack.tar.gz
  23. PROFIT!
  24. libertine-container-manager install-package -p firefox
  25. libertine-container-manager install-package -p pavucontrol
  26. Reload HomeScreen and test Firefox
  27. !!!PROFIT!!!

I highly HIGHLY H-I-G-H-L-Y recommend to backup as I did. You don't want to write into the system storage (DON'T FORGET TO REVERT THE CHANGES!!!) and risk Soft-Bricks every time and you don't want to relay on the sometimes broken Libertine Repository for reset or new creating. Then at least you have a reset point you can also use as a base for new containers (Just edit the .conf file and add a new container, copy the media folder and copy the chroot container to the cache location). No re-downloads, easy experimentation and also a way to restore on update issues.






Backups:

TWRP is sadly not an option. It can be booted with fasboot boot twrp.img and it even can decrypted all partitions (unlike with Android) but it can not backup anything because it dose not know how to work with a Linux (or more precisely Ubuntu Touch) partition. It finds everything but that's it.

I think the best way to do this is to just β€œadb pull /home/phablet”. It backups everything the user changes. All system changes like Waydroid or Snaps must be done beforehand but then just overwrite everything in the home folder with your old config. This will probably crash a lot of stuff and a hard-reboot is needed to prevent overwrite of configs but it works.






App Replacements (Moving in/Getting fully Setup):

List of apps that can be used/can be replaced or the best way to use them (and sometimes a explanation why it is done that way).






Installing Signal (Desktop):

(((Warning: The way to get root inside a container might have chnaged. I tested this once and it still works but I am not sure what way to get root is the right way to dos it. But I don't use any of these Signal steps because they are near unmaintainable.)))

This was a lot of work. And believe me when I say: be prepared for a lot of jank.

I got Signal Desktop fully working. Yes its a bit janky to use, but keyboard, UI, Calls, Microphone, Popup-notifications (EVEN WHEN THE SCREEN IS OF FOR A LONG TIME! !BUT! only if you leave Signal, meaning: Open Signal without opening a chat (too safe battery) and then swith to a other App or simmular. Off screen detection in X11 is a little inconsistent) (Not notifications in the Ubuntu Touch notifications center) and File Browser work. Video call dose work but dose not get any feed (Probably a Libertine limitation): https://forums.ubports.com/topic/10431/

History on how I got there:

I tried to use it natively (did not work), Snap (Works best but OSK is not working...), and the with Libertine and Flatpak (dependencies-Hell). The last thing I wanted to try was Libertine native. Signal-Desktop is a self packaged Electron app. Meaning it has (nearly) everything it needs build in. And that guess was right! BUT to get it to work there were two issue. glibc is exactly 0.01v too old... yes that little. The second issue was to get Signal-Desktop for arm64. There is currently no official versions BUT I found a git repository that has the current version forked. They use the latest source and build it with custom build-scripts in the GitHub build pipeline. This as save as its gonna get with this amount of jank.

Signal uses more battery then it should. It uses a little less if you close it and reopen it and don't open any chats.

WARNING: THIS USES UNOFFICIAL SIGNAL FORK! It builds with the Source and just different build setups but still be careful! ALSO: YOU ARE ON YOUR OWN!

The best is to have two terminals open on your PC to be able to push and work inside the container at once.

Replace "focal-2" if your container ID is different.

THIS WILL BREAK AT SOME POINT! DEBUG CAN BE DONE WITH ENTERING THE CONTAINER AND CHECKING LOG WITH: "nano nano /home/phablet/.local/share/libertine-container/user-data/focal-2/.config/Signal/logs/main.log"


Current known Issues:

THIS IMAGE IS EDITED! EVERYTHING WAS WORKING NORMALLY! JUST REMOVED INFORMATION!

ScreenShot of working Signal-Desktop




Installing a usable Browser (FULL FIREFOX):

Installing as usable browser is possible with Libertine.

Open Libertine and create a new Container, open view and show log. Then wait until nothing happens anymore for 2 minutes. Then install the package "Firefox". Make sure to open the container and show the shell log while it is doing its thing. After it is done and Firefox (and VIM...) is in your Homemenu you can install a other app called "pavucontrol". Open it once. After that you can start Firefox. It will be way to small and unusable. You need to do a few modifications to fix that. We will fix the scaling, the UI and a few other things.

When changing the UI connect a mouse to right click or make precise inputs can be helpful. You must configure the UI now because later Firefox will crash when moving UI elements. Make everything as large as possible (density) and remove all elements you don't need. Add resize to the bookmarkbar and set it to always be visible. The enable TitelBar to make the Titelbar go away (LOL). If you need a reference, an image is at the end of this section.

Fixes:

This is how Firefox looks when everything was done right:

ScreenShot of working Firefox




Installation:

I had LinageOS installed, so I flashed the Stock Android 13 Rom (Android 14 was already out but the installer wants Android 13. It is very important to use the right Android Version).

It is also important to install Android 13 once before switching and then enable Developer mode AND OEM unlock. Then install should work. Else it will not be able to change the slot or flash firmware or format partitions.

I use Arch (BTW.) and used the official UBports Installer. It did all the udev stuff for me and flashed the phone without any issues.

I use a very good USB 3.2 cable that came with a SanDisk SSD (I think something like "SanDisk Extreme Portable" or along those lines.). It's short, it's annoying, but it's the only USB-C cable I trust with stuff like this. I hate the inconsistency with USB-C cables.

I had so many issues in the past with OEM cables or even good ones that were out of spec. If you ever have problems with low level flashing, it could be the cable. Try different ones until you find a reliable one.

I want to use this part to make it oven more clear once more: THE USB CABLE CAN F*CK YOU OVER WITH THIS! IF IT JUST REFUSES TO WORK IT COULD JUST BE THE CABLE, OR "C to C" OR "A TO C" OR EVEN 3.0 VS 2.0! WHAT EVER COMBINATION!

https://devices.ubuntu-touch.io/installer/

Sources: