Skip to content

Instantly share code, notes, and snippets.

@Mimickal
Created April 1, 2023 22:31
Show Gist options
  • Save Mimickal/288f64abdc4b268ebf6e98399f4e98c2 to your computer and use it in GitHub Desktop.
Save Mimickal/288f64abdc4b268ebf6e98399f4e98c2 to your computer and use it in GitHub Desktop.
Mia's epic journey into the world of alternative mobile operating systems

Mobile Linux Adventure

In this document I describe the process of installing and using Ubuntu Touch, a true Linux OS for smartphones.

Background

First, a small rant. ("Shut up, just take me to the Linux stuff")

Over the past 15 years or so, smartphones have weaseled their way into every aspect of our lives. We use them for social media, messaging, photography, online banking, and sometimes -- if we're truly unlucky -- phone calls. We also use them for 2-Factor Authentication, a form of ID arguably stronger than our actual government IDs. Phones aren't just useful, they're necessary. Government entities and big tech are well aware of this fact, and take advantage of it to harvest unprecedented amounts of data on everybody. Carriers also take advantage of this fact by bleeding customers for money at every turn. All of this is with little to no regulation or oversight.

The Mobile Binary

Today your choice is mostly either Apple with the iPhone and iOS, or Google with an Android device. We were not always stuck with this binary. Blackberry shipped its own operating system well into Android's lifespan. Microsoft tried to unify desktop and mobile devices with Windows Phone. Neither of these are viable options anymore.

Fortunately, we do have manufacturer-agnostic Android-based operating systems, like LineageOS and GrapheneOS. These are reasonable, and let you continue using the Android apps you're used to. There are also Linux-based mobile operating systems gaining traction, like Ubuntu Touch. Unfortunately, trying to use any of these is like waking up in a field of land mines.

Locks All The Way Down

When you start digging into alternatives to the mobile hegemony, you'll find a fractal of infuriating issues.

First of all, alternative mobile operating systems simply don't support many types of phones. A lot of the support that is there is community-driven, so some devices may only partially work.

Secondly, even if your phone's model is supported, you might not be able to use it. Why? Did you buy your phone through your cell service provider? If so, forget it. Carriers lock phones to their networks, all the way down to the bootloader. You paid to get in, you'll pay to get out, and the phone becomes a brick. Even if your phone is unlocked, you'll often need a specific (often older) version of your phone manufacturer's flavor of Android. Will their website provide a download for it? Who knows!

Do you have an Apple device? If so, double-forget it. With Android you might have the ability to unlock the device. With Apple they go out of their way to ensure you certainly don't.

Locks All The Way Up Too

There are some interesting devices in this space. The PinePhone and Fairphone are open devices built to support custom mobile OSes. They are also user-repairable, have replaceable batteries, and even have a headphone jack! They're mostly from European companies, probably aided by some commie European regulation that makes them more consumer-friendly or something, but they ship to the US.

Ok, so you'll just buy a new, unlocked phone that supports the OS you want, right? Well there's still a snag. Ultimately, no matter how "Libre" you are with your own devices, if you want mobile service you still need to go through a carrier. Some carriers, like AT&T, have a whitelist of specific devices that can use their networks. If your device isn't on that list, you can go sit and spin. Weird how these guys also sell phones, right? Maybe it's connected...

TL;DR

The motivation for using Linux on a phone is this:

  • Your data is being sold.
  • Smartphone manufacturers make Android and iOS suck.
  • Alternatives give the user some control back.
  • Most devices don't support the alternatives.
  • The devices that do might be carrier-locked (or locked out by the carrier).

Ubuntu Touch

I will be running Ubuntu Touch on a Google Pixel 3a. The Pixel 3a is fully supported in Ubuntu Touch and can be bought for ~$50 USD used. I'm not convinced Linux can replace my daily driver yet, so this is a good price for this experiment.

Installing Ubuntu Touch

Ubuntu Touch provides really good information and equally good tools for flashing the OS onto your device. Google also plays nice by still providing the necessary image for the Pixel 3a.

I successfully got Ubuntu Touch installed following those directions, without much fuss. The only "fuss" was that the flash-all.sh script that comes with the Pixel image needed a newer version of adb than my Linux desktop had installed. This is easy enough to fix by downloading a newer version of adb, extracting it, and adding the extracted directory to the start of the $PATH variable.

Initial Impressions

Ubuntu Touch comes with sane default applications, like a calendar, clock, music player, and app store. It also comes with a file browser and terminal, which you'd think would be standard on Android, but usually isn't. There's no cruft here. All of these apps are useful.

The app store, OpenStore supports logging in with an Ubuntu One account, but it's unclear what benefit this has. I initially thought this might offer functionality like Android does, where you can send apps to your phone from your desktop with a shared account, but that doesn't seem to be a thing.

Opening the terminal reveals a familiar Linux interface. I tried sshing into my desktop to write this sentence. I managed to log in and get Vim down to this line, but couldn't get much further with the default keyboard's lack of esc and arrow keys. This is a silly novelty with my current hardware, but a phone with an actual keyboard would have some real functionality here.

Initial Frustrations

My issues are almost entirely around the UI. I don't like the UI very much. I was expecting it to be unfamiliar, but that's not actually a problem. I can find things fairly easily, the gestures are intuitive, but the layout is annoying.

Dragging from the top brings down the phone's controls. So far so good. We have controls for sound, wifi, bluetooth, and location, except... they're stacked horizontally in a bar that scrolls off the screen. When you select an option, the large amount of blank space below this bar is populated with the options for that control (volume sliders, wifi names, etc...). This wouldn't even make sense if there were a lot of settings for each tile, but there aren't.

This weird lack of usability is present all over the UI. In no particular order, here are some other annoying elements I've found:

  • No option for 24-hour clock.
  • No option for temperature in celsius.
  • Login uses a password or numeric code, no option for a pattern like Android.
    • The login page shows a 3x4 keypad for the numeric code.
    • Other places that need the code don't use this keypad (such as the terminal). I need to picture the keypad in my head and translate the motion for entering the code to the actual numbers. If you've ever used a keypad before, you know why this is annoying.
      • If that doesn't sound annoying, is [7][8][9] on top or bottom?
  • There's no back button anywhere.
    • I need to drag from the right side of the screen and close the app entirely to get back to the home screen.
  • No setting for system dark theme.
    • The system has a dark theme, and apps will respect it, but you can't enable it without an external app.
  • Default keyboard takes up around 40% of the screen, with no option to adjust the height.
  • Can't display battery percentage on home screen.
  • Some apps, notably UT Tweak Tool, don't show up on the OpenStore app, but do in the web version, with no clear reason why.
  • Sometimes the keyboard just doesn't show up until you close and reopen the app.

Workarounds

There are workarounds for some of the above. 24-hour clock and temperature in celsius can be achieved by setting the system language to UK English. System-wide dark theme can be enabled with a third-party app like UT Tweak Tool (which, as mentioned, didn't show up in the app store for me).

Battery

I went to bed with Wifi turned on and the Pixel at 50% battery. It was dead when I woke up (roughly 8 hours later). There is a nice graph that shows the battery usage over time. Turns out wifi is a monumental drain on the battery. Turning it off causes the graph to practically flat-line. With wifi turned off, the phone should last at least all day.

Cell Service

I stuck a T-Mobile SIM card into the Pixel. Ubuntu Touch picked it up immediately. I went into the menu and enabled cellular data, which allowed me to send text messages, but not receive them. I also couldn't access the internet or make calls.

There's another option in the mobile network settings for "Connection type". The UI for this makes it look like a list of supported types ("2G Only", "2G/3G", "2G/3G/4G"), but actually this is a widget for selecting what type of network to use. I selected "2G/3G/4G" and immediately received the text I was expecting.

The APN configuration is done automatically (I think it's pulled from the SIM card? Not sure). I followed the APN setup guide for T-Mobile here, which allowed me to make a call, once. The UI for setting these values is oddly finicky, and seems to just not save the settings most of the time. Because of this, I have no idea what settings even worked.

I never got mobile internet working.

Ubuntu Touch Conclusion

This is really disappointing. Initial impressions of Ubuntu Touch were good, but consistently poor UI design, lack of functionality with my mobile carrier, and crazy battery drain on wifi makes it pretty much entirely unsuitable for any serious use cases. I bet I could fix a lot of my issues by meddling in the config files directly, but doing that is not practical on a device with no real keyboard.

The real achievement of Ubuntu Touch is having the Linux kernel running on a phone. It proves that this concept is sound. The problem here is entirely in the execution of the UI. I want to try another "distro".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment