[GSI][arm64][A/AB] Ubuntu Touch (ubports)

Search This thread


New member
Jan 17, 2017

* Your warranty is now void.
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.

What is Ubuntu Touch?
Ubuntu Touch is the touch-friendly mobile version of Ubuntu.
This operating system is developed and maintained by UBports: An international community of passionate volunteers.
This means Ubuntu Touch is 100% community driven and independent.

What is Halium?
Halium is the collaborative project to unify the Hardware Abstraction Layer for projects which run GNU/Linux on mobile devices with pre-installed Android.

How it is a GSI?
First of all, I should mention ubports GSI definition is different from android, but both are generic.
ubports root file system was always generic and works for most cases, but devs were porting halium system image to add device-specific (HALs and configs) support to ubports Android container.
But after project treble which introduced in android 8, all device-specific parts of android system image moved to vendor partition and we can use "Generic system images" over one vendor partition.
In halium version 9, we use this adventure and have a totally generic system image + root file system.

The only Requirement of booting this GSI is having Halium patched kernel.
Keep in mind having android 9 firmware installed on the device as GSI base is mandatory (GSI can be used on android 8.0 and 8.1 vendors but experimental and not supported yet)

How to install?
For installation guide and kernel patchings details check ubports wiki page: Click Here


Whats suppose to work?
  • Bluetooth
  • Camera
  • Cellular Radio
  • Mobile Data
  • GPS
  • Graphics
  • Sensors
  • Sound
  • In-call Audio
  • Touch
  • Wifi
  • Vibration
  • Fingerprint
  • Anbox
  • Media Playback

Known bugs?
Bugs are very device specific and mostly should blame device kernel.
oh and of course VoLTE :)


Report Bugs:
Explain your bug in proper support telegram groups (from above)
Please don't ask about spoon-feeding or helping on building kernel or device specific builds.
Please don't ask about picking/reverting commits or any basic git commands.
bug reports without logs will be ignored
logs we need are: android logcat, kernel log, syslog
kernel log:
cat /var/log/syslog
sudo -s
LD_LIBRARY_PATH=/system/lib64 lxc-attach -e -n android -- /system/bin/logcat


Good luck
Download link not working


May 21, 2015
Hi there!
I don't know if erfanoabdi is still available for comments but I'd like to raise a theoretical question cos I'm confused with the UT/halium flashing...

It doesn't matter my devices (for test-bed I'll use a santoni/Redmi 4x) but for me as a non-expert it matters to understand better the process theoretically. I mean, some managed to Dual Boot santoni (android/UT) so it makes me wonder how/where halium-boot, rootfs and/or Ubuntu Touch GSI are flashed to? (see attached pictures)

As far as I understand, I flash halium-boot.img into "boot" partition.
That's perfect and this makes sense for the Dual Boot trick, later... BUT!

Where does the rest of stuff get flashed into??
I am totally confused (because of lack of knowledge) with 2 different files for flashing (after the 1st step of halium-boot.img flashing):

One "halium_halium_arm64_Halium 9 LXC_GSI-rootfs.tar.xz" (~150MB) file that contains only one android-rootfs.img file (OK, I will extract & flash it...) but which partition will it populate?!

I think that it will create a "UT system partition" inside my "Internal Storage"'s 28 GB (santoni). Only this makes sense for a later Dual Booting, because this way the existing Android /system partition remains intact for the Dual Booting... Correct?!

Next, there is also another file for my santoni ("ubuntu-touch-android9-arm64_HALIUM-9.tar.gz" ~580MB) containing a full Linux system tree (android, bin, boot, debian, ... tmp, userdata, usr & var folders) probably ready for flashing somewhere, but where & how??

This is my theoretical question...!
Probably there are 2 different methods for flashing either of these 2 tar files and this is what I cannot grasp!
Has it something to do with the 2 different halium 7.1 and 9.0 flash methods? Here me be confused as well...

I attach 3 images, 2 for the dual boot and the 3rd is my source for "halium_halium_arm64_Halium 9 LXC_GSI-rootfs.tar.xz" download for santoni, together with "halium-boot.img" and halium-UNLOCKED-recovery.img....

(I did manage to Treble-ize my santoni with LOS 16.1 and thus populate my /vendor partition with Oreo 8.1 stuff as a "BASE" needed for Halium 7.1 install. Correct??!
I can do it with a HavocOS install to step to Android 9.1 and thus populate my /vendor partition with Pie 9.1 stuff as a "BASE" needed for Halium 9.1 install. Correct??! )

But I'd just wish a "theoretical" reply and I'll try to answer the less important "rest"...
Thanks in advance!!!


  • dual-boot1.jpg
    144.1 KB · Views: 9
  • dual-boot2.jpg
    56.2 KB · Views: 9
  • dual-boot3_jenkins.jpg
    129 KB · Views: 9

Top Liked Posts