About two weeks ago I again put my SIM card into my Pinephone to see whether I can make it a daily driver device. The last time I tried this was nearly a year ago so I have that benchmark to compare it to as well as some new information now.
This week, some news about Waydroid made its way to the r/linux subreddit and in the comments I saw a Pinephone owner write about their experience with Waydroid and none of his complaints had anything to do with it being slow or clunky or broken, which is about what my experience was the last time I tested out Anbox about a year ago.
So it prompted me to check Waydroid out, and... it works remarkably well! It really surprised me. Waydroid makes use of containers to run Android directly on your own Linux kernel, without emulation, and so it performs very well -- some Android apps even run more smoothly than their native Linux counterparts!
I wasn't expecting that the Pinephone was ever going to be able to run Android apps smoothly on a GNU/Linux system, but now that it does, and does so this well, this is a game changer in terms of the Pinephone being "daily driver" ready. Finally, I have a way to use Slack and Discord from my Pinephone, something that was basically not possible at all before!
Now, to be clear: even without Android, there are a very good collection of Linux apps that already work well on the Pinephone. Having the option of Android for the odd proprietary app like Slack or Signal is nice to have. Read on to the full blog post for how Waydroid works right now, what are some of its pain points still, and a few screenshots of my Phosh app drawer showing everything I have installed on my Pinephone.
There are many advantages to running a GNU/Linux operating system over something like Windows 10 (performance, privacy/lack of telemetry, security) but one under-appreciated aspect of Linux is that it's easy to repair.
It's like one of those old cars where you can pop the hood and get into the engine and repair it yourself, as compared to many of the modern vehicles out there which have sealed components and require special tools to get into and you need to take them in to a specialist.
Every operating system "breaks" sometimes. When Windows breaks, it boots in to a blue screen of death with a frowney face :( and it offers some "automated troubleshooting tools" which never work. They just spin for a while before saying: sorry! And how do you even begin to fix something like that? What if "Safe Mode" doesn't even load up?
For a specific example, it's been an annual tradition for me that my Windows 10 install gets "stuck": it can not install the new Windows 10 update due to "reasons" that it can't troubleshoot away. It'll do the whole pomp and circumstance: reboot, attempt to install, fail, roll back install, reboot, and tell me how it failed. Only to keep retrying every time I reboot from that point onwards. And I'm a rather light user of Windows (perhaps too much so), I rarely boot into it and even then only to play a few games like Skyrim.
Linux "breaks" sometimes, too, and maybe one day it doesn't boot into the graphical desktop because your nVIDIA drivers got borked somehow or your WiFi stops working after an update. What do you do? First, you can try booting into an older kernel from the bootloader menu; most distros keep the last couple of kernels as options for exactly this case.
Or you can boot into single user (text mode) and have a shell prompt logged in as root, so you can troubleshoot the issue: check log files, edit configuration, install or uninstall programs, and fix it yourself. Everything is very modular in Linux distributions, so it's hard to take down the whole thing. Very rarely is your bootloader so broken that you can't get get into a working single user mode.
Granted, this does require you to have some knowledge about how Linux works, but the great thing is there's lots of good documentation out there. Just google for "your distro name + thing you want to do". The Arch Wiki is great no matter which distro you run, though some small details may differ if you're using Fedora or Ubuntu, so prefer the wiki closest to your own distro of choice. Information from the Debian Wiki and Fedora Wiki tend to be broadly applicable to other Debian and Fedora downstream distros, like Ubuntu and CentOS.
Some of the most important skills to learn that gets you 90% of the way to fixing a broken Linux OS:
In single user mode, basically only the Linux kernel and bash command line shell need to work, and it's very difficult for these to fail. No networking services start, no graphical desktop starts, and all video cards support text mode output regardless of any driver issues.
I basically never have to reinstall a Linux OS from scratch to fix any problems, and the times when I did, it was because I messed up and I learned to respect root privileges and double-check my commands. 🤣
The Pinephone is a smartphone that runs mainline GNU/Linux software instead of Android, and the software is still a work in progress. I've had a Pinephone since about May of 2020 and have been watching the rapid growth of the software ecosystem for it, so this blog post is kind of a "status update" in the form of screenshots of various apps that are already running great on this device.
I'm not a software developer in that space, so props to the whole open source community that's making this all come together!
The question is: "is this phone daily driver capable yet?" and to that I say: it's getting close! I haven't yet tested putting my SIM card into the phone and trying voice calls and SMS texts, but I've heard from others that these are working and reliable for a long time. MMS picture messages are still a work in progress though, and they say the phone doesn't wake up quickly if an incoming phone call comes in while the phone is sleeping.
All that aside, the big apps for me to have working to call this a daily driver phone should include:
And: I have basically all my bases covered and then some! This blog post goes through some of my favorite apps that work well on Linux mobile.
Update (Jan 24 2021): Chromium works very well and with better performance than Firefox + webapp support. Screenshots and info added to this post.
The Pinephone is a new smartphone in the works that will run mainline Linux as its operating system instead of Android, and already has a lot of Linux distributions that run on it. The idea is it would run all the same Linux software you get on desktops, servers or Raspberry Pi's and give you a private alternative to Android devices which send a lot of data up to Google.
They've already released some phones, and I have one that came installed with Ubuntu Touch, and I've been testing the operating systems as they progress. Linux on Mobile is still very early, most graphical apps don't fit on the tiny screen size of a smartphone, battery life can still be improved, camera quality can be improved. But progress is advancing rapidly and there's a growing number of apps that work and provide basic "smart phone" functions: calls, texts, email, calculator, calendar, maps, password manager (KeePass), web browsers.
My dream is to use a Pinephone as my daily driver, but it's still got a long ways to go, and I got impatient and instead installed a de-googled Android ROM onto my existing Pixel phone.
And having used both Linux and Android on mobile, I've determined that a de-googled Android ROM is a very solid alternative to a Linux phone while you wait for Linux phones to get better:
When we're talking about "Linux" the operating system, we really mean one of the thousands of Linux distributions that exist out there. Linux itself is just the kernel -- the lowest level part of the operating system that deals with hardware, drivers, process and memory management. A distribution is all the stuff on top: the software, the desktop environments and so on.
Most Linux distributions can be called "GNU/Linux" because they include the Linux
kernel and a suite of software tools from the GNU
project. These are mostly command-line programs like
less as well as
deeper system components like the GNU C Library
(glibc) which is used by basically every program on the system.
When you're new to Linux you may look at this enormous list of distributions and be paralyzed as to which one you should pick. Fedora, or Ubuntu? Or Debian or Arch?
People will often tell you: it doesn't really matter, all these distributions
are running more-or-less the same software and the biggest differences between
them is their package manager and
what format their software is shipped in. On Fedora you might
dnf install firefox
dnf update thunderbird whereas on Debian you would
apt install firefox
or on Alpine you'll
apk add firefox. Just learn
the set of commands for your distro of choice and you're good. Software on
Fedora-like distros come in .rpm packages, Debian-likes come in .deb, but mainly
you'll install software through the official repositories of your distro.
But there's more differences between the distros that they don't tell you about:
Docker is a commonly used tool in modern software development to deploy applications to web servers in a consistent, reproducible manner. It's been described as basically a "light-weight virtual machine" and it makes use of a Linux kernel feature known as containers.
How does it work?
In this post I'll try and briefly sum up what Linux containers do and what problem they solve for developers.
This blog post is non-technical: I won't be showing docker commands or any such details, there is plenty of better documentation on the Internet for that, but instead a high level overview of how we got here and what containers do for us today.
The Pinephone is "an open source smart phone supported by all major Linux phone projects." I'd been keeping my eye on these things for a few years now and finally got the Pinephone in my hands earlier this week to try it out.
The idea with devices like this (as well as the Librem 5 phone) is that it's a smartphone that runs standard mainline GNU/Linux software instead of Android. This means root passwords (or sudo), SSH servers, full admin control of the device, and ability to run all the familiar Linux software that you get on a desktop PC, server, or Raspberry Pi type of device.
Importantly this means no Google Play Services or built-in spyware and the user is in control of their device. More privacy, but not necessarily more security.
There are many Linux operating systems available for the device already and I've tested out Ubuntu Touch UBports, postmarketOS and Mobian/Phosh and here are some of my impressions so far.
See also: I'm maintaining a Linux on Phones page on my site's wiki to collect notes, config tweaks, software I found that works and so on.
I've been working on a videogame the past couple of years, off and on. It's called...
...for now. I have a better name picked out for it, but I'm going to be callling it Project: Doodle (while it's in alpha) so that the finished version will be distinct from the alpha versions, of which it may end up looking nothing like!
The theme of Doodle is centered around hand-drawn, side-scrolling platformer type mazes. You can draw your own levels using freehand and basic drawing tools, color in some fire or water, and drag in pre-made "Doodads" like buttons, keys and doors to add some interaction to your level.
Read more for a screenshot, more information and alpha version download links (Linux, Windows and Mac OS).
Recently, I was developing a Python/Flask app to implement Web Hooks for a third-party API that I was working with. The API recommended the use of ngrok during local development so that the server running on your local computer could be accessed publicly over the Internet (so that their API could reach yours).
ngrok is cool and all, but for their free plan they randomize the subdomain they give you every time you start the program. This meant I always had to log into my API account and change my Web Hook URL each day.
What ngrok is doing is nothing new: I've written about using SSH to forward ports between machines, and figured it should be easy enough for me to configure a subdomain on my own server that forwards traffic to another port that I could open when I need to.