So, my BraveHeart edition arrived on Monday. It’s pretty nice.
I’ve wanted a Linux phone for a while now. Not entirely sure why, but Android always felt “stuffy” to me. I’ve never wanted to do anything advanced with my smartphone because everything just sucks in the Android land:
- developing for Android is a complicated and very specific (and in some ways bloated) process if you want a native app;
- changing how the system looks or works is complicated and not always possible;
- there’s a bunch of apps I don’t need but can’t remove;
- I could barely control the apps I used.
I’m sure there is a reason for all of this and it’s not just Android’s fault and I could have figured out the complexities if I really wanted and put some time into it. However, I always thought this “some time” would end up being “a lot of time” and I’d just waste it on something I never cared much for.
If only there was a way to have the degree of control that I’m used to, and use the software I’m familiar with…
What I got
I expected to receive my PinePhone in some small plastic box, but nope, it came in a fancy cardboard box along with a USB Type A <-> USB Type C cable and a small note that described what exactly I now own. As much as I’d like to provide pictures, I’m just not equipped well enough to take pictures that would be at least a little presentable. If you want, you can take a look here.
I will point out something that no picture will tell you, though: the materials are surprisingly nice. The box, the small plastic bags and the phone itself are a joy to touch. This is probably how every phone is packaged these days, but still.
The phone came with postmarketOS preinstalled. The only GUI there was an application that could run some basic hardware tests. Only the modem didn’t work, but that’s because I hadn’t plugged in a SIM card.
Trying Plasma Mobile
The first thing I did after playing with the hardware test program was installing postmarketOS with the Plasma Mobile environment on an SD card. The installation process was simple, just a matter of running a script a couple times.
There isn’t much to say about my Plasma Mobile experience, to be honest. It’s raw. The phone app just showed a white screen (maybe because I didn’t have a SIM card plugged in), I couldn’t get the Angelfish browser to display a single web page, the camera app failed to display any kind of picture, the on-screen keyboard was a little wonky, the lock screen expects you to enter your user account password with a numerical keyboard.
However, Firefox worked pretty well, the pages took little time to load and I managed to play some Youtube videos. I also tried KolourPaint, which seemed to be pretty snappy. These programs are definitely not an option for everyday use, though, since the interface is very much desktop-oriented. Telegram Desktop worked well and provided a sane mobile interface, but the screen was a little cut off on the right side.
Building a kernel
As much as I like postmarketOS, I’d like to use the same distribution on my phone and on my desktop: Funtoo Linux. One of the important steps in the installation process is configuring and building the Linux kernel. I tried using the kernel source tree with Debian patches, but turns out it doesn’t have drivers for a lot of the PinePhone components, including the LCD display.
Luckily, Pine64 provides their own version of the Linux kernel. While it does provide the drivers, booting it turned out to be a problem. As a person with little experience in embedded, I had no idea what U-Boot was and how it worked. Now, after some googling, I’ve got some idea, but the relevant information is pretty scarce. I’d appreciate it if somebody sent me a link to some good U-Boot documentation.
Debugging the booting process was pretty much impossible because I didn’t have any output from the device, not even serial console. In the end, the trick to get it working was to stop acting smart and just use the default configurations. I’m still planning to experiment with different configs, of course.
Now I’ve got a postmarketOS root file system with a kernel built by me. Installing Funtoo should be easy now, I just need to figure out the graphical environment I’m going to use.
UPD: Installing Funtoo took a little longer than I thought it would because I had no way to actually interact with the system. I had to resort to some nasty tricks: I enabled autologin and wrote my commands in .bash_profile. Of course, that meant plugging the SD card into my laptop to change that file every time I wanted to run a different command. It’s not that bad but don’t repeat my mistakes, just get a TTL serial cable or something.
Conquering the Wild West, of course! Linux isn’t perfect on desktop, let alone on phones. But I see a lot of potential here: finally, a system that is controlled by YOU and with an environment that doesn’t suck (at least I hope it won’t when it’s usable). I’ll try to help this cause in any way I can. I’ve got some pretty ambitious ideas already, we’ll see where it goes.