Volla Phone and Ubuntu Mobile

I have long been interested in alternative operating systems that get me out of the walled gardens of Apple and Android. Yes, I can root my phone, but that has always been a hacky short-term solution that ends up being more annoying, not less annoying than what I actually want. What I actually have always wanted was my laptop in my hand. Microsoft was trying to do with with Continuum before they ended life on Windows Mobile OS. They got the closest, and even had videos made about how great it would be to dock your phone and suddenly get all the power of the laptop, without having to carry it around just to access a file.

So when I saw Ubuntu Mobile I was cautiously optimistic. They claim similar – you can have a terminal and your files, and do anything you want! That’s a pretty good promise, even if the Ubuntu Mobile app ecosystem is lacking as of today. Down the road it could be amazing, and I could even help bring it over that line if I felt it was deserving of that by developing my own apps and publishing them for everyone else.  A truly open operating system without all that Google/advertising garbage in it. Imagine!

My first impression of the phone is that it looked and felt a little odd. A more drastic bevel than the iPhones that I’m used to and a much more rough feel where the sim card sits. It’s so rough that it made me think it was a button at first and after mashing it a few times and realizing it wasn’t I mentally stopped myself from trying. Not too bad though, and after a minute or so, I was already used to it.

The Volla phone came with a German plug, which was a little off-putting to spend hundreds on a phone and have to supply my own US plug. Not a huge deal – I have a thousand of them, but it was still strange that they didn’t have one in the box given they knew they were shipping to the United States.

I ordered one that came pre-installed with Ubuntu Mobile… or so I thought. Upon booting it actually came with a strange version of Android, likely their VollaOS. My impression of VollaOS is that it was so minimal it looked broken. All I could see was the word “Springboard” a thing that said “type anything” with no clear indication of what that is in reference to and a red dot that looked like it was recording something. After messing with it a bit I was able to figure out it was running some hybrid of Android. I wasn’t at all interested in trying out Android, so I immediately went to find the way to install Ubuntu myself. I wasn’t happy at all that I didn’t get what I ordered, but… I guess their company isn’t ready for mass market, by any stretch.

To install Ubuntu Mobile by hand you need to unlock the bootloader. This entails a lot of Android button pressing, running the UBports installer and clicking physical buttons on the phone. But not terrible, considering what things like this use to entail. And after a few minutes I was staring at a fresh install of Volla phone running Ubuntu Mobile. Huzzah! Home free, right? The land of awesomesauce! Uh, no… not so fast.

Before I get into the ugly, let me talk about the bad – the user experience isn’t great, I’ll be honest. I really wanted to like it but the gestures were awkward I felt and it wasn’t the same as Ubuntu in other more important ways.  Ubuntu Mobile doesn’t mimic the desktop version and that’s confusing – things like renaming/configuring user accounts for instance, don’t appear in the settings menu. So it was a lot of learning it for the first time. The gestures were strange, like swiping from the right to switch/kill apps took a lot of getting used to. The double swipe to the left to see apps also felt unnecessary and confusing. I definitely swiped the wrong way more than the correct way. I realize this is likely just the same as learning any new mobile OS, but I felt much less awkward going to any other OS than I did on Ubuntu Mobile – not because I didn’t know what it did, but because it felt somehow backwards or unnecessarily complex.

After messing around with the terminal app a bit, I realized it already had SSH installed. Some might consider that a good thing. I do not at all, especially since there was nowhere ever that said that that was occurring. This seems very scary, given that not everyone will chose a good password for their phone thinking that the only interface of attack is via a physical attack and no one is attacking something in their pocket. But SSH brute force is a very real thing that the Ubuntu Mobile environment seems to allow by default. I’d turn off SSH completely, or disable password based auth, but I have no idea what that would do to the rest of the system since it’s tied with the presentation layer. It also chose a name for me of “phablet“. I almost can’t imagine a worse username to force onto users, and it’s also not random so therefore even easier to brute force. Incidentally the machine name it chose by default was ‘ubuntu-phablet‘. This whole thing feels like it needs a re-think. At a very minimum this needs to be made more clear and give the user a warning.

Updating wasn’t possible due to two lock files in /var/lib/dpkg/ that were stubbornly still there and the real issue was / was mounted read only. I have no idea why the root directory would be read only out of the box – do they really want to prohibit you from using the terminal to install apps? That can’t be, so it seemed like an oversight. An oversight that was fixed with:

sudo mount -o rw,remount /

Things started to work better. I was able to install a couple apps via apt for instance. Okay, so the package manager works – that’s exciting. Like any good sys-admin my next thought was to get it up to date!

There were an enormous amount of out of date packages, even though I just installed this thing moments earlier:

address-book-app anbox anbox-common anbox-ubuntu-touch apparmor-easyprof-ubuntu apt-transport-https cameraplugin-aal
ciborium click-apparmor debootstrap dialer-app distro-info-data dnsmasq-base gir1.2-ubuntu-app-launch-2 hfd-service
hfd-service-tools indicator-datetime indicator-location indicator-network indicator-session indicator-sound
jumpercable libandroid-properties1 libapt-inst2.0 libcaca0 libconnectivity-qt1 libcurl3 libcurl3-gnutls
libdeviceinfo0 libdns-export162 libertine-qt-common libertine-tools libertine-xmir-tools libertined libglib2.0-0
libglib2.0-bin libglib2.0-data libglibutil libhardware2 libhogweed4 libhybris libhybris-common1 libhybris-test
libhybris-utils libirs-export141 libisc-export160 libisccfg-export140 libldb1 liblibertine1 libmedia1
libmediascanner-2.0-4 libmirclient9 libmircommon7 libmircookie2 libmircore1 libmirplatform16 libmirprotobuf3
libmirserver48 libmirwayland0 libnettle6 libprocess-cpp3 libqmenumodel0 libqt5bluetooth5 libqt5bluetooth5-bin
libqt5contacts5 libqt5feedback5 libqt5feedback5-hfd libqt5organizer5 libqt5systeminfo5 libqt5versit5
libqt5versitorganizer5 libqt5webengine-data libqt5webengine5 libqt5webenginecore5 libseccomp2 libsmbclient
libsystemsettings1 libthumbnailer-qt1.0 libubuntu-app-launch3 libubuntu-download-manager-client1
libubuntu-download-manager-common1 libubuntu-upload-manager-common1 libubuntugestures5 libubuntumetrics5
libubuntutoolkit5 libudm-common1 libudm-priv-common1 libunity-api1 libusermetricsinput1 libusermetricsoutput1
libwbclient0 lxc-android-config mediascanner2.0 messaging-app mir-client-platform-android-caf5
mir-client-platform-android5 mir-graphics-drivers-android mir-graphics-drivers-android-caf mir-utils morph-browser
morph-webapp-container nuntium ofono ofono-scripts powerd python3-apparmor-click python3-distro-info
python3-libertine python3-libertine-chroot qmenumodel-qml qml-module-morph-web qml-module-qtbluetooth
qml-module-qtcontacts qml-module-qtfeedback qml-module-qtorganizer qml-module-qtsysteminfo qml-module-qtwebengine
qml-module-ubuntu-components qml-module-ubuntu-components-labs qml-module-ubuntu-connectivity
qml-module-ubuntu-layouts qml-module-ubuntu-mediascanner0.1 qml-module-ubuntu-performancemetrics
qml-module-ubuntu-settings-components qml-module-ubuntu-test qml-module-ubuntu-thumbnailer0.1
qml-module-ubuntu-web-compat qtdeclarative5-ubuntu-addressbook0.1 qtdeclarative5-ubuntu-contacts0.1
qtdeclarative5-ubuntu-download-manager0.1 qtdeclarative5-ubuntu-keyboard-extensions0.1
qtdeclarative5-ubuntu-syncmonitor0.1 qtdeclarative5-ubuntu-telephony-phonenumber0.1
qtdeclarative5-ubuntu-telephony0.1 qtdeclarative5-ubuntu-ui-extras0.2 qtdeclarative5-ubuntu-ui-toolkit-plugin
qtdeclarative5-unity-notifications-plugin qtdeclarative5-usermetrics0.1 repowerd repowerd-data samba-libs
suru-icon-theme sync-monitor sync-monitor-helper sync-monitor-uoa telephony-service thumbnailer-service
ubports-qa-scripts ubports-wallpapers ubports-wallpapers-2018-10 ubuntu-app-launch ubuntu-app-launch-tools
ubuntu-download-manager ubuntu-keyboard ubuntu-keyboard-arabic ubuntu-keyboard-azerbaijani ubuntu-keyboard-bosnian
ubuntu-keyboard-bulgarian ubuntu-keyboard-catalan ubuntu-keyboard-chinese-chewing ubuntu-keyboard-chinese-pinyin
ubuntu-keyboard-croatian ubuntu-keyboard-czech ubuntu-keyboard-danish ubuntu-keyboard-data ubuntu-keyboard-dutch
ubuntu-keyboard-emoji ubuntu-keyboard-english ubuntu-keyboard-english-dvorak ubuntu-keyboard-finnish
ubuntu-keyboard-french ubuntu-keyboard-german ubuntu-keyboard-greek ubuntu-keyboard-hebrew ubuntu-keyboard-hungarian
ubuntu-keyboard-icelandic ubuntu-keyboard-italian ubuntu-keyboard-japanese ubuntu-keyboard-korean
ubuntu-keyboard-latvian ubuntu-keyboard-lithuanian ubuntu-keyboard-norwegian-bokmal ubuntu-keyboard-polish
ubuntu-keyboard-portuguese ubuntu-keyboard-romanian ubuntu-keyboard-russian ubuntu-keyboard-scottish-gaelic
ubuntu-keyboard-serbian ubuntu-keyboard-slovenian ubuntu-keyboard-spanish ubuntu-keyboard-swedish
ubuntu-keyboard-swiss-french ubuntu-keyboard-thai ubuntu-keyboard-turkish ubuntu-keyboard-ukrainian
ubuntu-mobile-icons ubuntu-mono ubuntu-push-client ubuntu-system-settings ubuntu-system-settings-libertine
ubuntu-touch-core ubuntu-touch-session ubuntu-touch-session-mir ubuntu-ui-toolkit-theme ubuntu-upload-manager
usermetricsservice wpasupplicant

I made the fatal mistake of thinking this was a fairly robust OS given that it’s basically a different UI on top of Ubuntu, and could handle updating in the same way that you’d update a laptop. So I attempted to update it with `sudo apt-get update;sudo apt-get -y upgrade` and everything seemed to be working for a while… until it stopped on:

Preparing to unpack .../wpasupplicant_2.4-0ubports10_arm64.deb ...

And there it sat for about 20 minutes with no indication of anything happening. I had SSHed into the phone to use my keyboard since the software keyboard leaves a bit to be desired – especially when doing more complex tasks. However, my shell lost it’s connectivity and wasn’t responding to commands at all – even hitting the space bar provided no visible input. Uh oh.

I rebooted it… no go. It would get past the Volla boot screen. And rebooted it again… nope. Whelp! It bricked the phone. It will no longer get past the Volla boot screen. If Ubuntu Mobile isn’t meant to be treated in this way, and updated in this way, these update paths should be intentionally broken to avoid accidental bricked devices. Just about anyone familiar with Ubuntu is going to treat it pretty much the same. Day one, hour one, update it to the most current packages, right? Even that is too much to ask for, for Ubuntu Mobile on Volla phone.

That was a very expensive mistake that doesn’t feel at all like something that should have permanently bricked the phone. It won’t even let me re-install the device now. The Volla phone comes with a SIM card tool, which I was hoping would allow me to press something somewhere on the device to hard reset it, but I couldn’t find anything in the manual or online to suggest this would actually work – if it does, it’s undocumented. UBports installer doesn’t even recognize it as a phone anymore, it’s that broken. It is now semi-permanently showing me the boot screen, with no physical switch to turn it off, and no access to the battery to at least give it a fast death. Instead it will slowly fade away and then find a home in the bottom of a box of expensive dead IT.

What I wanted was my laptop on a phone – what I got was a brick in the shape of a phone. There is a lot of work left to do on this for Ubuntu and Volla. I’m sure someone will say I shouldn’t have done X and not Y but with no guardrails and no way to re-install the device, it’s going to be hard to blame the user. Until it’s at least stable, I’d stay away from it unless you like to collect phone shaped paperweights.

To be fair, after letting the battery die down and it did let me go through UBports, and but it appears that no amount of re-installation attempts did complete.  It just kept landing me on UBports Recovery, which apparently doesn’t work in this state, regardless of which options I chose.  It kept saying

Update failed, please reboot and try again...

I still think Ubuntu Mobile has a ton of promise, and I very much look forward to a day when I can use it as a mini desktop environment and can build custom apps for it on a device that is rock solid, but today is sadly not that day.  Meanwhile in other news Microsoft somewhat silently allowed Ubuntu GUI apps to be installed, so there is a lot going on in the Ubuntu world and I’m excited to see what’s next.