my profile picture

My Pinephone Setup

Why I went minimal

2022-03-01

The Pine64 Pinephone[0] is my first Linux device. It sounds crazy, but I've been wanting to use linux for quite a while. I made an effort to switch to FOSS on android, but due to the fact that my phone's bootloader was locked, I couldn't install LineageOS. All this time I was aware that the core of my phone, it's kernel, was closed source and probably out-of-date. This nudged me to research Linux. The more I looked, the more there was to like. At first I tried installing Arch linux on WSL (Windows Subsystem For Linux) but this was unsuccessful. I wanted a truly native Linux device, but was unable to afford my own computer. This is where the Pinephone comes in, where I could kill two birds with one stone. Not only would I get a new phone of which I had complete control, but I'd also have a native Linux device. Now, I use my Pinephone as more than a phone. It's my communicator, my general purpouse computer and my development device. Calling it a phone just doesn't do this device justice. It's a desktop computer. One that happens to fit in your pocket. Keeping all this in mind, my usecase is relatively light. I need it for schoolwork, coding and testing programs, web browsing, communication, and video/audio streaming. The reason it can remain as my sole device is because I don't need to run heavy software like Autodesk. I need to do very basic tasks, and the Pinephone fulfills them and more.

Now for my setup. I bought the Pinephone Convergence Edition and it arrived on the first of November, 2021. I wasted no time in setting up Arch Linux ARM (Danctnix)[1] with the SXMO interface[2], and started daily-driving the device the next day. Why these choices? I was instantly drawn to Arch's do-it-yourself nature in my Linux research. It's main advantages on the Pinephone are it's speed and bleeding-edge-ness. In my experience, new features and important updates come frequently on mobile linux, so it's crucial not for packages to get stuck in testing repositories. The power of the AUR is definitely a nice plus. Thanks to the minimalness of Arch and SXMO, resource-intensive tasks like cutting music with Audacity are still quite fast. The SXMO interface is notoriously difficult to learn, but I found it easy to manage. The learning curve was steep for the first day or so, but after that I've been more productive than I ever was on Android.

The SXMO interface on my Pinephone

I've been daily driving the Pinephone Keyboard Case[3] for a few weeks, and I can say with confidence that it completes my setup perfectly. While it certainly deserves it's own article, there are plenty of articles published about it already. Navigating terminal applications is super easy, and it's transformed my general-purpose computer/phone into a productivity powerhouse. Writing essays and doing homework is now doable without connecting an external keyboard with the convergence dock. I've gotten used to how close together the keys are, and rearranged the caps to the Dvorak keyboard layout. The extra battery capacity certainly helps, and now I only really charge my Pinephone twice a week at maximum.

Before we get to my list of applications, I'd like to explain my choice of terminal-based applications over ones with a GUI. It seems like an odd decision for a mobile device, but there are a few qualities that make them my priority. First, they are much more reliable and have fewer crashes than GUI apps. Second, they are lightning fast and easy to navigate both with the virtual keyboard and keyboard case. Lastly, TUI apps are much more cross-platform than many traditional programs. All of the terminal apps I use are made for desktop computers, providing a huge and active community surrounding them that extends beyond the mobile Linux space.

Security

cOTP[4] : A simple one-time-password generator written in rust and made for the terminal. Supports both HOTP and TOTP, and password protection is definitely a bonus. The database is encrypted with GPG and the TUI is easy to use. If you aren't already using multi-factor-authentication, get on that! Beware, it is written in Rust, so compiling on the Pinephone takes a while.

Bitwarden CLI[5] : The famous FOSS password manager has some work to do on their command line interface. First off, master password access is not stored locally for a certain amount of time, so you have to type in your master password every input or set an environment variable. It takes -- let me grab a stopwatch -- 15 seconds to get a response from the server. And that's not just crappy internet speed. Worst of all, it's based on Node. Drew gives a great explatation on why that's so painful[6]. Why do I use it then? It gives me a quick way to retrive passwords from my Bitwarden account, and it's still certainly faster than their Electron app.

Amazfish on my PinePhone displaying my heartrate

Pinetime Connectivity

I love my PineTime. There are definitely going to be a few articles about it in the future (embedded firmware development anyone?) but for now I'll be explaining how I link the two wonderful worlds of my Pinephone and PineTime. I use Siglo[7] for firmware updates and time syncronyzation, and Amazfish[8] for notfication support. The accelerometer in my PineTime physically shorted a while ago, so I don't use the step counter. The heart rate monitor isn't really my focus. Notifications are the best part about the PineTime for me. Getting a text or email on my wrist without pulling out my pocket-sized computer is a huge bonus. Best of all, background pairing with Amazfish makes it seamless.

When on my PinePhone displaying my calendar

Utilities

Ansiweather[9] : A weather-retriving script that fits in well with sxmo's whole "everything is scriptable" functionality. Displays weather in the terminal, no fancy UI needed. Ansiweather strikes the perfect balance beween being feature-packed and highly configurable, yet being so easy to use.

Calc[10] : Exactly what it says on the tin. Fantastic for basic arithmetic, not so much for complex calculus. (Thanks for the hand Wolfram|Alpha!)

Mepo[37]: It's delightful to see the development progress of the OSM viewer from Miles. Touch support and offline usage are main goals of Mepo, and while it's still pre-1.0 software, it's perfectly usable for getting around on SXMO. On arch, you have to manually install Zig 0.8.1 because Alpine linux is stuck on that version (as of the time of writing).

TTYescape[11]: A wonderful feature standard on PostmarketOS[12]. On Danctnix, it's still a pull request at the time of writing. With this installed, you can escape to a TTY by pressing a hardware button combination on the Pinephone(Pro). A wonderful utility to have when things go south during package testing and development.

Vis[13]: The standard text editor on SXMO, Vis is a fork of Vim that not only has an updated look and feel, but also a new-and-improved command language (borrowed from Sam).[14]

When[15]: Simple CLI calendar, no fancy TUI needed. Works by editing a file listing your upcoming events, allowing you to use the text editor of your choice. Just type "when" into your terminal for a summary of your events the next two weeks. Works well for a basic schedule, but might be tough to manage for really, really busy people.

Yay[16]: Yes, I know that pacman wrappers and AUR helpers are more than controvertial. I choose to use Yay because I need an easy way to update the 11 AUR packages I have installed, and a pacman wrapper is just the easiest way to do it. Being a new user to Linux, I forced myself to manually build packages and dissect PKGBUILDs for my first month of using Arch. My goal was to be able to diagnose if something went wrong in the build process (which, it turns out, has been super helpful).

Audacity on my PinePhone cutting some music

Multimedia

Audacity[17]: While the famous FOSS music editor has come under fire for "telemetry", it's hard to argue that it's still the best in the business. By hiding toolbars and keeping the keyboard shortuct menu handy, Audacity becomes quite usable with the keyboard case. My current project with it is to record all my vinyl so that I can listen to it on-the-go.

ePDFview[18]: Regardless of how abominable the PDF format may be, I often need to view them for school. This X11/Wayland compatible application keeps it simple, and by hiding toolbars, viewing PDFs in both portrait and landscape mode works.

imv[19]: This simple image viewer seems tailor-made for terminal use. Along the lines of mpv, nice features like slideshow presentations are supported.

Newsboat[20]: Not only does Newsboat's TUI make keeping up on RSS feeds easy, but the built in podcast player works well on the Pinephone. Great for keeping up on Megi's Pinephone development log!

Toot on my PinePhone showing my Mastodon feed

Connectivity

Gomuks[21]: Ever wanted to get Matrix protocol notifications on your Pinephone, without the sluggishness of an Electron UI? Now you can! By hiding any sidebars and turning off chat formatting, Gomuks works well on mobile with a virtual or physical keyboard.

neomutt[22]/msmtp[23]: The classic terminal based email client, paired with a reliable smtp client makes sending and reciving emails a breeze. Especially convenient are mailing-list specific email display, making it easy to keep the sxmo development emails organized.

Toot[24]: Posting, replying, favoriting, and keeping track of important news in the Fediverse is easy with Toot. Toot bundles a TUI and CLI, making for maximum productivity and minimum distractions. The unorthodox interfaces help me not to get sucked into the endless scroll of social media.

Weechat[25]: I don't use IRC much, but when I do, Weechat is my go-to. The well established chat application works just as well on the Pinephone as on any other platform.

Qutebrowser on my PinePhone opening up DuckDuckGo

Browsing and Productivity

gmni[26]: When I want to read gemini:// exclusive articles, gmnlm is a lightweight solution. It's a line-based gemini browser that is very useful, especially on slow or metered connections like data or public wifi.

Qutebrowser[27]: For someone accustomed to Vim's keybindings, this web browser is easy to use. A powerful command language and extensive configuration options give it a slight learning curve, but that only leads to greater productivity. Based on webkit, my only gripe is that the start-up time of Qute isn't as fast as my previous browser, Surf. I find line-based browsers difficult to manage for web content made for a GUI, like interactive content and pictures. Qute is the next most minimal thing.

Libreoffice[28]: The powerful desktop office software comes to mobile Linux! Libreoffice is usable in landscape mode on the Pinephone, and while I prefer a text editor for basic functions like note taking, Libreoffice is perfect for schoolwork. By changing the UI settings to those made for "smaller screens", it makes using Libreoffice on the pinephone productive. Using the full desktop software rather than a watered-down web interface (looking at you, Google Docs) is priceless.

Nextcloud Desktop[29]: If you use Nextcloud services, having the desktop app on your Pinephone is a must-have. With the convenient icon next to the clock in Sway, it's easy to check notifications and share files with just a tap. I automatically back up folders in my home directory, and set XDG-user-dirs to correspond to those folders. This automatically backs up my downloads, documents, music, and whatever else I want.

Calling, Texting, and Modem Stuff

I use Biktor's open modem firmware[30], and have found that it's increased my call/text reliability greatly. Thanks to a semi-recently published markdown file in his code repo, I've been able to tweak modem settings to my needs. Namely simulating call tones on my end, rather than silence while waiting for the call to start.

Visual Voicemail works well thanks to the notification interface built into vvmd[31]. Dialing into my voicemail box is a thing of the past, but due to recent security concerns[32] brought to light by Kop I may be switching back to dialing in the near future. I haven't gotten the MMS settings for my carrier (Mint Mobile) right yet, but it's not my top priority right now as I don't use it all to often anyway. I've found that sending a nextcloud share link works well enough.

Hardware Support

In December, my Pinephone's wifi and bluetooth chip stopped working. To be clear, this is not a widespread issue, and to my knowledge there are very few people who have experienced a physical shorting or breakage of the wifi/bluetooth module. I tried as many troublesooting steps as I could with help from the community chatrooms. I got online with Pine64's support team[33], and they guided me through a few more troubleshooting steps. They eventually had me send my Pinephone's mainboard to them for testing. I was uncomfortable at the thought of popping off my Pinephone's midframe, as that wasn't something I'd done yet. I thought it would be challenging to replace the heart of my main computer, but with the guidance of Martijn's video[34] and the right screwdriver, it was super easy! It took me no more than 20 minutes to replace the old board with the new, and Pine64 support was speedy and helpful. My new board works great and I haven't had any more hardware issues since.

Wrapping Up

Lately, I've been learning C programming solely on my Pinephone. With the guidance of Practical C Programming by Steve Oualline[35], I write software in Vis and compile with gcc. I plan to develop firmware for Linux ARM in the future, taking inspriation from projects like megi's P-boot bootloader.[36]

My Pinephone setup is curated specifically for me, that's my favorite thing about Linux in general. Anyone can use whatever software stack they want, with open hardware and firmware making it all possible. You don't have to use these programs, but I encourage you to try them out. That's the beauty of FOSS, you have variety and free choice.

Links/Notes

  1. pine64.org/pinephone
  2. github.com/dreemurrs-embedded/Pine64-Arch
  3. sxmo.org
  4. wiki.pine64.org/wiki/PinePhon(Pro)Keyboard
  5. github.com/replydev/cotp
  6. github.com/bitwarden/cli
  7. drewdevault.com/2021/11/16/Cash-for-leftpad
  8. github.com/alexr4535/siglo
  9. github.com/piggz/harbour-amazfish
  10. github.com/fcambus/ansiweather
  11. isthe.com/chongo/tech/comp/calc
  12. github.com/dreemurrs-embedded/Pine64-Arch/pull/268
  13. postmarketos.org
  14. github.com/martanne/vis
  15. sam.cat-v.org
  16. lightandmatter.com/when/when.html
  17. github.com/Jguer/yay
  18. audacityteam.org
  19. gihtub.com/JotaRandom/epdfview
  20. sr.ht/~exec64/imv
  21. newsboat.org
  22. github.com/tulir/gomuks
  23. neomutt.org
  24. marlam.de/msmtp
  25. github.com/ihabunek/toot
  26. weechat.org
  27. sr.ht/~sircmpwn/gmni
  28. qutebrowser.org
  29. libreoffice.org
  30. nextcloud.com
  31. github.com/Biktorgj/pinephonemodemsdk
  32. gitlab.com/kop316/vvmd
  33. gitlab.com/kop316/vvm-disclosure
  34. pine64.com/support
  35. youtube.com/watch?v=5GbMoZ_zuZs
  36. oualline.com/books/index.html
  37. xnux.eu/p-boot-demo
  38. sr.ht/~mil/mepo