Ubuntu Touch is an open-source Linux distribution for mobile devices in active development by the UBports community. The project's goal is to give users privacy and freedom of choice over their mobile operating system. For those of us that want an alternative to Google's ecosystem, including Android Open Source Project (AOSP) this project is an exciting prospect.

In 2011, Canonical, the company behind Ubuntu Linux announced development of a mobile operating system for touchscreen devices called Ubuntu Touch. Its goal was a touchscreen version of Ubuntu offering convergence of mobile, laptop, IoT devices all together in one seamless experience. By 2017 the project was terminated, but thankfully the UBports volunteer community made a commitment to move the project forward. This amazing community has done just that. After watching progress for a couple years, it appears Ubuntu Touch is making strides to becoming a viable mobile OS alternative.

In this article, I'm going to install Ubuntu Touch on a Pixel 3a XL and then put it through the paces by making it my daily driver. I'll finish things up with my overall observations of performance and reliability.

Installation on Pixel 3a XL

I chose to install Ubuntu Touch on a Pixel 3a XL because it was noted as a "Top Choice" on the UBports list of supported devices, and I had a spare Pixel 3a XL in the shop. Notice they support 53 devices! This installation required very little command line interface thanks to their installer GUI (available for Linux, Mac, and Windows).  In total, the process took less than an hour and the steps are explained below.

Section 1 - Prepare the device

First, ensure these settings are enabled on the device.

  • Connect to WiFi
  • Enable Developer Options
        Settings → About Phone → tap Build number 7 times
  • Enable USB debugging
        Settings → System → Developer Options → USB Debugging
  • Enable OEM Unlocking
        Settings → System → Developer Options → OEM unlocking

Section 2 - Downgrade to Android 9.0

The instructions state "If the device is running an Android version above 9.0, you have to downgrade to the last 9.0 release. Please make sure to flash version PQ3B.190801.002 of the factory image before proceeding." The fastest way to accomplish this is with Android's web-based flashing tool. Using a Chromium-based browser (i.e. Brave) Let's head over to https://flash.android.com/ 

Step 1: Connect the phone to host computer using USB cable

Step 2: Enable popup permission in browser settings

Step 3: A pop-up window appears asking to grant access to ADB keys in order for Android Flash Tool to communicate with connected devices. Select Allow ADB access.

Step 4: When asked, select the device name from the menu

Step 5: Use the search field to enter keywords or the build number, or choose More releases option and select Android 9.0 from the dropdown list

Step 6: Press Install build

Step 7: A pop-up window asks to confirm and install. Press Confirm

Step 8: A pop-up window with license agreement appears. Press I accept

Step 9: The program begins to download and install the build

Step 10: When prompted, use the volume buttons on the phone to select Lock the bootloader, and power button to confirm. The program ends and the device reboots into the flashed Android 9.0

android flash tool
android flash tool

Section 3 - Install Ubuntu Touch using UBports Installer

Since installing Android 9.0 prompted us to lock the bootloader, we have to go through the phone's initial setup and follow Section 1 above.

Step 1: Download and install the UBports installer. I'm using Debian Linux, so I grab the .deb package and move it to my ~/.deb folder

Step 2: Open a terminal and install the .deb file with

$ sudo apt install ~/.deb/ubports-installer_0.10.0_linux_amd64.deb

Note: The list of dependencies below

The following additional packages will be installed:
  adb android-libbase android-libboringssl android-libcutils android-liblog android-libsparse
  android-libziparchive fastboot gconf-service gconf2 gconf2-common heimdall-flash
  libayatana-appindicator1 libayatana-indicator7 libdbusmenu-gtk4 libgconf-2-4
Step 3: Run the UBports Installer application
$ ubports-installer

Step 4: The program will prompt the following:

  • unlock the bootloader if not already done
  • select grant udev rules to the installer
  • select the operating system to install (Ubuntu Touch or Droidian) - in our case we want UT 20.04 stable
  • check box to Wipe Userdata
  • Press OK - the phone reboots several times
  • When prompted, select Recovery mode on the device - the installer finishes downloading and installing files

Step 5: The phone reboots once to a symbol that looks like LineageOS recovery mode, then a second time into the Ubuntu Touch environment

ubports installer

Initial Setup and First Impressions

After the welcome message, we are greeted with a few setup questions:

  • Select language - there is an impressive list of supported languages
  • At the No SIM card installed message, I insert a spare SIM card from Tello
  • Connect to Wi-Fi
  • Select time zone
  • Personalize device with a username
  • Select lock screen by creating a password, numerical passcode, or skip for no lock

Next is a tutorial offering tips on how to navigate by swiping. Swipe left to minimize or close an app. Swipe right to open the application drawer. Swipe down from the top to reveal notifications. Easy enough!

At the home screen, my first impression is very positive. It's so refreshing to see something besides a typical Android interface! The motion, icons, launcher, and background are all refined and smooth. It feels simple, intuitive and uncluttered yet stylish and sophisticated.

home screen
application drawer
system settings

Images: (1) home screen, (2) application drawer, (3) system settings

Basic Functionality

Testing basic functions on the Pixel 3a XL, it appears almost everything works.

  • Screen rotation - Similar to Android or iOS, Ubuntu Touch provides smooth screen rotation. Swiping down to expose system options, I can choose to turn it off.
  • Performance - apps open quickly, with no noticeable difference in speed from standard Android. Performing a quick reboot, I notice it takes roughly 20 to 30 seconds to boot to the home screen.
  • Bluetooth - I tried once to connect Bluetooth. It says connection enabled on the device but I get no sound transfer. That could be something I'm doing wrong, so I decide to test it later
  • Wi-Fi - stays connected, no issues 
  • GPS - To test GPS, I install uNav from the OpenStore, a navigation/maps app for driving. After granting location permission to the app, it says acquiring location for several minutes then disappears. I try again to tap the pin icon to acquire location. Same result (for some reason after about 24 hours of testing, the GPS location worked)
  • Volume control and sound works nicely. The dual speaker setup on the Pixel 3a XL are plenty loud
  • Onscreen keyboard - Keyboard is adequate and there are several keyboard themes and colors that you can customize the look and feel

System Settings

After using the phone for a day or two, I discovered settings that were valuable:

  • Accounts - Default list includes Google, Nextcloud, ownCloud, and Generic CalDAV
  • Auto-brightness setting is turned off by default. Go to System Settings > Brightness & Display > Adjust automatically 
  • Software-updater app is available to check for updates - I haven't noticed an update available yet
  • Sleep when Idle - default time is 1 minute; Go to System Settings > Battery > Sleep when idle > after 10 minutes

Apps and OpenStore

Instead of F-Droid, we have an app repository called OpenStore. And instead of thousands of apps, there are a couple hundred. That being said, remember this is a Debian-based Linux computer. So for the Linux enthusiast, installing and testing apt packages is as easy as getting on the terminal.

The suite of default apps that come pre-installed are:

  • Barcode Reader - separate from the camera; nice features
  • Calculator - works
  • Calendar - works
  • Camera - still image and video capture works
  • Clock - NTP address is com.ubuntu.clock/clock
  • Contacts - works, imported VCard successfully
  • External Drives - "SD Card Management"
  • File Manager - works
  • Gallery - works
  • Media Player - works
  • Messaging - works
  • Morph Browser - works (some J/S not working?)
  • Music - works
  • Notes - works
  • OpenStore - works, updates apps quickly
  • Phone dialer - works
  • System settings - icon-based interface vs menu based
  • Terminal - works
  • Weather - works, rain radar is impressive

Browsing through OpenStore, apps are categorized nicely. Although choices are limited, the apps that are available I found to be very useful. I found a flashlight app called uTorch. Since there was no flashlight app (that I could find), this was a nice addition. Other apps worth mentioning are uNav, DeltaTouch (Delta Chat client), Element client, Jitsi, Mastodon clients, and Telegram apps.

Voice Calls and Texting

This is where things get strange, at least for us in the United States. Without going into detail, telecom carriers in the US moved from LTE to VoLTE several years ago. However as of August 2023 VoLTE is not supported by Ubuntu Touch. Also, since 3G has been shutdown, that leaves us without the ability to place calls on a Pixel 3a XL running Ubuntu Touch in the United States.

What actually happened was altogether different. When I inserted my Tello (T-Mobile MVNO) SIM, everything just worked. How? Apparently T-Mobile has not turned off their 2G network. A little research shows the 2G network is scheduled for shutdown 2 April, 2024. So while 3G has been shutdown and VoLTE isn't yet supported on Ubuntu Touch, if you have a T-Mobile SIM, you're able to make and receive phone calls on its 2G network for a little while longer. Testing SMS messages works just fine too.

It honestly felt like I was getting away with something I wasn't supposed to know about. I was enjoying a Linux OS on my phone and reliably placing phone calls and texts on a forgotten 2G network.

With T-Mobile shutting down 2G in April of 2024, I am hopeful that by that time UBports will have a solution to support VoLTE. If not, those of us in the United States will have no way of placing voice calls over cellular networks. 

Summary

Exploring Ubuntu Touch and getting involved with the UBports community has given me renewed hope that Linux will someday be a production ready operating system for mobile phones. It's clear that adoption for Ubuntu Touch and Linux mobile devices is more prevalent in the EU and Asia. But one thing is for sure, where there is a will there is a way. I'm grateful for the UBports volunteers and every developer, maintainer, and tester that believes an open source Linux phone is on the horizon. If you agree, consider supporting UBports by developing, testing or a financial donation.

The OS is refined, smooth, and works impressively well on the Pixel 3a XL. If you are looking for a completely de-googled phone (not an Android) and you can live with basic functionality (calls, email, browsing, messaging, maps) from a smartphone, then keep an eye on Ubuntu Touch. The elephant in the room for users in the United States is whether VoLTE will be supported within the next year. If you're interested in purchasing a Pixel 3a or 3a XL with Ubuntu Touch, contact us and let us know.