Skip to content

Instantly share code, notes, and snippets.

@Mimickal
Last active June 20, 2023 04:34
Show Gist options
  • Save Mimickal/c48b0622665fff39d4c429cd505ca119 to your computer and use it in GitHub Desktop.
Save Mimickal/c48b0622665fff39d4c429cd505ca119 to your computer and use it in GitHub Desktop.
Mia's second epic journey into the world of alternative mobile operating systems

Mobile Linux Adventure 2

In this document I disown Ubuntu Touch and try out Droidian, another true Linux OS for smartphones.

I will be making callbacks to part 1, so it's worth a skim if you haven't read it yet.

Droidian (a Mobian derivative)

Ubuntu Touch was an abject failure, but I still have faith in the concept. This time I will be using Droidian with the Phosh GUI. Droidian is a modification of Mobian, so I expect many things will be the same between them. Thankfully, Droidian also supports the Google Pixel 3a, so I can reuse the same phone from last time.

Installing Droidian

Droidian's installation instructions aren't as detailed as Ubuntu Touch's, but they make up for it with an installer that does everything for you.

My Pixel 3a still had Ubuntu Touch and the unlocked fastboot bootloader installed on it from part 1. I may have gotten to skip some initial setup because of this.

I first tried droidian-installer, the Linux app that does it all for you. This app ran into a bunch of errors downloading the required packages. It also -- bafflingly -- reports errors with buttons for "retry", "ignore", and "report bug", but not "cancel installation". The app would trudge on with the installation despite the errors, which sketched me out, but thankfully didn't hurt the phone. I may have gotten lucky.

Thankfully, Droidian also provides a command-line script that can do this installation for you. They even had a pre-packaged version for my specific phone. I downloaded the google_sargo-api28 version, since I am using a Pixel 3a. This script successfully installed Droidian with no fuss.

Initial Impressions

Ok, I need to come clean here, this is not actually my first time seeing Droidian live. I had previously played around with Mobian on a friend's first generation Pinephone. I found the UI to be much more intuitive than Ubuntu Touch. The Pinephone hardware just wasn't strong enough to give a good experience, but the software had a lot of promise. If I didn't know this was Linux, I would have assumed I was looking at a different flavor of Android.

Observations While Tweaking Settings

Logging in

Droidian comes with a default password, "1234". Logging in immediately greeted me with the list of pre-installed apps and an notification that updates were ready to install, which let me choose whether or not I wanted to install them. This is good parity with desktop Linux and shows active development.

Settings Menu

The phone settings menu closely resembles Android. Actually, it resembles the Pixel's specific flavor of Android. I see options for "networks", "appearance", "notifications", "sound", "date & time", and everything else I'd expect, as well as some fun extra things like "printers" and "removable media".

Appearance

I looked at "appearance" first. Droidian comes with a light and dark theme pre-installed, and makes it very easy to switch between the two. I enabled the Dark theme.

Date & Time

Next, going off of a previous frustration with Ubuntu Touch, I go to "Date & Time" to set the phone to my preferred 24-hour setting. Happily, the option is right there, and enabled by default. The phone can also determine the proper timezone for you, but will only do this if you give it location permissions. If you choose not to grant this permission, it allows you to manually select the timezone instead. I like the user freedom here.

I chose to manually select the timezone. A world map silhouette popped up, allowing me ot select a city. This is where we get into my first frustration. In portrait mode, the map is too zoomed in to see the whole world. In landscape mode I can see the whole world, but the on-screen keyboard blocks most of it with seemingly no way to dismiss it. I can type a city in manually to side-step this. The first city I thought of was Orlando, Florida. No results. So I tried Miami, Florida. Still no results. Philadelphia, Pennsylvania? No results. New York, New York? Finally a result! I selected New York from the list, which highlighted it on the map, but... now what? There is no button to "confirm" or go back to the previous page.

This is annoying, but I can turn on "Automatic time", which only requires an internet connection to determine my local time.

Switching and Closing Apps

This is a good time to talk about switching between apps. On Pixel Android, there is always a set of controls at the bottom of the screen. A back button, a button to bring up the app list, and a button to show and close running apps.

Droidian's equivalent is the bottom tray. This tray combines the function of all 3 of the Pixel's buttons in one place. You swipe up to close apps. This was a little awkward to get used to, but I actually like having these controls all in one place.

There is some awkward behavior where mini "half-windows" appear over the window you are currently looking at. This can be seen with the settings in the Mobile Network menu and the "Software" app. These windows sometimes have a back button, but sometimes don't. All of them can be dismissed using the bottom tray, but that's a little awkward.

Screen Orientation

Messing with the time settings also exposed me to the screen orientation settings. In the top drag-down menu, I can set the orientation to portrait or landscape, but not "automatic". As far as I can tell, there is not an option to have the screen orientation determined automatically.

There are also portrait and landscape settings in the "Displays" settings menu, but these are flipped. As in, "landscape" is actually portrait and vice-versa. I believe this is a weird holdover from desktop Linux settings.

Some menus don't fit on the screen in Portrait mode. The timezone selector was not an isolated incident. The "Multitasking", "Search" menu also doesn't fit.

Changing The Password

As mentioned before, Droidian comes with a default password. What I did not realize is that it also comes with a default username that uses this same password. You will want to change immediately before connecting to the internet.

Despite this weirdly insecure default behavior, the password changing UI has some annoyingly opaque requirements for passwords to be considered "good enough", and will not let you set a password it deems insecure. I would much rather it simply warn you about bad passwords, but let you use them anyway.

You can sidestep this nonsense by opening the terminal and using passwd like you would on desktop Linux. You will also want to do sudo passwd, because the super user also has 1234 as the default password. Note that this matches the password needed on the lock screen. That is ridiculous and awful for both usability and security.

Unfortunately, there does not appear to be an option to use a pattern to unlock the screen like Android.

You could sort of work around this limitation by logging in as a low-permissions user with a numeric password. The problem is that any remotely user-friendly lock screen password would also be trivially guessable via brute forcing over ssh. This is a fundamental limitation of having the underlying Linux user double as the desktop environment's user.

Terminal

Since we just had to enter the terminal, let's talk about that. The first thing I noticed is a small top row on the on-screen keyboard for ctrl, alt, and the arrow keys. This is very nice, and was sorely missing from Ubuntu Touch. Ctrl + d even closes the app entirely, which is a nice touch. As I said with Ubuntu Touch, this isn't very useful with the on-screen keyboard, but would be pretty nice with a physical keyboard plugged in.

Using Droidian

Ok, let's try doing some stuff with Droidian.

Mobile Network

Just like last time, I am using a T-Mobile SIM card. Droidian did not automatically detect my SIM card when I inserted it. I had to restart the phone, but on reboot it successfully detected the mobile network. Opening the top drop-down, I see the mobile network can also be toggled off easily, though it takes some time to renegotiate 4G when turned back on.

It was not immediately obvious, but I ended up needing to go into the "Mobile Network" settings and change "Network Mode" to "2G, 3G, 4G (Preferred)" to receive SMS messages.

Text Messages

I sent my friend an SMS message. She received it successfully. She responded, but I did not receive the response. I changed my Network Mode (see above) then received the message and a copy of the message a minute or two later.

Browse The Internet

Droidian comes with Firefox, my browser of choice. With the default Mobile Network configuration, Firefox cannot access the internet. I used the same instructions as before to set my APN for T-Mobile, but this did not seem to help.

Like Ubuntu Touch, I never got the mobile internet working on Droidian.

Taking Pictures

The camera does not work at all. All I see is a black screen.

Making Phone Calls

It says a lot about me that trying to make a phone call came after seeing if the internet would work.

I tried to call my friend. It took a while for the call to start ringing, and before it started ringing, I noticed the 4G icon changed to a 2G icon. The call went through, and I could hear my friend.

My friend tried to call me, but it went straight to voice mail. I never received a notification for a missed call.

Battery

The wifi battery drain issue with Ubuntu Touch seems to not be a problem with Droidian. Battery drain seems pretty reasonable, and I think the phone would last for a day from full charge.

Workarounds

Here I will list the operations I tried that required a non-obvious trick

  • Changing time: Just use "Automatic Date & Time" that determines time using your internet connection.
  • Changing Password: In order to sidestep the strict password requirements, open the terminal and use passwd.
  • Closing half-windows: These behave as normal windows. Use the bottom tray to close them.
  • Setting a Mobile Network Access Point: You need to select the Access Point after adding it. The radio button on the left side should be filled in.

Conclusion

Droidian is better than Ubuntu Touch. It is much closer to the mobile experience I am used to coming from Android. Unfortunately, like Ubuntu Touch, there are some show-stopping issues that prevent me from even really playing with it at home.

For one, there seems to be a consistent issue with properly using the mobile network. It could be I'm making a mistake in configuration somewhere, but I'm not sure what I could be doing differently. Regardless, not being able to receive calls or use the internet automatically disqualifies Droidian from being a daily-driver. The camera not working make me just not even want to carry the device at all.

More importantly, the lock screen usability issues hint at a much deeper problem. At first, I thought the lack of lock screen usability was just a quirk of Ubuntu Touch (and to be fair, some of it was). Seeing the user login behavior with Droidian made it clear that this is actually a more fundamental issue with Linux on a phone.

Both Droidian and Ubuntu Touch are desktop operating systems with a mobile-looking GUI. The GUI is trying its best to mask the need for a keyboard, but ultimately the operating system itself was built from the ground up with the expectation that the user has a keyboard. That's why the lock screen can't have a pattern. That would require the underlying Linux user to be able to log in with a pattern. That's also why you can't use a short passcode -- because it would be trivially guessable via a brute force attack. A low-permission login user won't even solve this problem, because then you'd just need to prompt for a password before opening any apps. I really don't believe mobile Linux will be even remotely viable until all levels of the user system have been modified to address this issue. Honestly, it might be best to see how Android solved this problem and start from there.

Edit: as a little extra salt in the wound, I held down the button to power off my Pixel 3a after writing this. The power off button was grayed out, presumably because I need to be logged in to have permission to turn off the device. You know, like desktop Linux.

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