postmarketOS in 2020-11: Apps, UIs & Devices

November 06, 202011 min. read

After a several month hiatus in blog posts, we're back to give you, our dear readers, an update on what has been happening in postmarketOS development land since our last post. It's quite a lot, and we do not want to leave out any juicy details, so to make it easier to digest we'll be splitting this update post into a two part series. Welcome to part 1!

Apps

Megapixels

Once camera drivers for your phone have been written and land in the Linux kernel, you might assume that you can just use any existing camera program on Linux to take some beautiful photos. But far from it!

Pretty much all of today's camera apps in the Linux world are built on top of the GStreamer framework (either directly or indirectly). GStreamer is not yet able to deal with subdevices and media graphs exposed by the V4L2 API in the kernel. @MartijnBraam would like to extend GStreamer eventually to make all apps using it work out of the box. But he also realized that it is a big undertaking and decided to write the simplistic GTK+3 app Megapixels, which directly talks to V4L2 without GStreamer. It uses device specific config files (shipped with the source) instead of trying to do complex automatic configuration, and comes with a mobile interface. Martijn's first target was of course the PinePhone, but this is just the start. From the latest rendition of his epiccamerablogposts:

I think with these changes the ov5640 is basically stretched to the limit of what's possible with the photo quality. The rest of the planned tasks is mainly UX improvement and supporting more different camera pipelines. Since postmarketOS supports a lot of phones and more and more run mainline Linux it should be possible to also run Megapixels on some of those.

Needless to say, we've made this app the default in postmarketos-ui-phosh. Beyond that, it made its way into the distributions from our friends at Arch Linux ARM, Manjaro and Mobian.

*Thanks to: @MartijnBraam *

Firefox

With a few config tweaks, the desktop version of Firefox 68 would work surprisingly well on mobile devices. Unfortunately this is not so much the case for later versions, and 68 was about to hit End of Life. @ollieparanoid stepped in and tweaked our config in multiple iterations, the final one being the distro-independent mobile-config-firefox repository with CSS UI tweaks created by using Firefox' own remote debugger. Besides making the UI fit the screen, the configs disables some clutter (e.g. first run page, post update page, "user messaging") and apply privacy tweaks (e.g. not sending search queries as you type to search engines). Furthermore it comes with a lightweight start page (pulled from your local install, not from the Internet), which provides a convenient link to install the privacy enhancing and performance/battery saving content blocker uBlock Origin. If you don't like these defaults, you could of course change the settings as you like or remove the mobile-config-firefox package altogether.

Just like Megapixels, this config is used by other distributions too. @a-wai from Mobian contributed !2 to tweak the installation of the custom CSS file.

*Thanks to: @a-wai, @ollieparanoid *

osk-sdl

Our full disk encryption initramfs keyboard osk-sdl is about to receive a major performance improvement (!1557), as we will be able to use GPU acceleration. Also the code has been cleaned up (!92, !95). The initramfs gets rebuilt with each osk-sdl upgrade now, not only with kernel upgrades (!1563).

*Thanks to: @craftyguy, @minlexx, @PureTryOut, @wczyz, @z3ntu *

User Interfaces

Phosh

Phosh was upgraded to the latest version 0.5.1 (!1623, !1656, !1680). Most noticeable are the new Torch and Undocked buttons in the top panel. You guessed right, the Torch allows you to see in the dark. Undocked indicates whether your phone is connected to a dock, that is, if there are more than one screen and a mouse attached. Then it will say Docked and the window handling of Phosh becomes more desktop-friendly.

Regarding default apps, we have added Megapixels as mentioned above, the image viewer eog and the file manager Nemo. Eog gets started from Nemo or Megapixels when trying to open an image file.

*Thanks to: @afontain, @Cogitri, @craftyguy, @guido.gunther, @MartijnBraam, @ollieparanoid, @TimotheeLF, @z3ntu *

Plasma

Plasma Mobile was upgraded by @PureTryOut to the latest version as well, which is based on KDE Plasma 5.20.1 (!1590). Among other changes, the homescreen has been redesigned. The icons at the bottom and the search bar aren't on a solid background anymore, just directly on the wallpaper. In !1643, the Peruse comic book reader app has been packaged by @z3ntu.

@PureTryOut also did the initial packaging of Plasma Bigscreen (!1522). This interface was made for TVs and could be used in the future if we start to replace abandoned smart TV software with postmarketOS. And of course today if you throw it on something like a Raspberry Pi or RockPro64 and connect that to your big monitor.

*Thanks to: @bshah, @PureTryOut, @z3ntu *

Sxmo


Sxmo in action. (bigger)

@milesalan contributed the packages of Sxmo into the postmarketOS pmaports repository (!1472):

Sxmo, or Simple X Mobile, is a collection of simple and suckless X programs and scripts used together to create a fully functional mobile UI adhering to the Unix philosophy for the PinePhone. You control the UI largely through using the PinePhone buttons (press different numbers of times quickly for different actions) and swipe gestures.

The project started as downstream project from postmarketOS, with PinePhone specific images. Now that the packages have been upstreamed, it is possible to install the UI not just on the PinePhone, but in theory on most of the phones that run postmarketOS.

*Thanks to: @milesalan *

Shelli

@unrznbl's TTY interface Shelli (introduced here) is at version 0.5.0 now (!1354). It features much better dynamic device path detection: power button, touch screen and brightness should all work on most devices. Moreover the new release brings good oFono integration with modem for SMS and voice. With all the modem related additions, the only thing missing for basic phone operations with Shelli is data and MMS.

Speaking of MMS. I will be working on integrating mmsd from the oFono project with Shelli. I hope this will help other UIs achieve good MMS support. See mms-stack for a good resource on the various ways MMS can be worked on. Help out!

Find more details on what works and which commands are present in the source tree.

*Thanks to: @unrznbl *

Devices

(Close to) Mainline

PinePhone and PineTab

For all the Linux enthusiasts who bought a PineTab or PinePhone (our own pmOS CE is sold out, but as of writing, the next iteration with Manjaro is in stock): we generated a new set of images and have exciting improvements to cover.


The postmarketOS CE came with pmbootstrap source all over the box.
Megi's tree and HDMI fix

The linux-postmarketos-allwinner kernel that both devices use is now following @megi's 5.9.x based source tree (!1614). He drives the PinePhone related kernel development forward like no other. Not only with his own patches, but also by having a sane tree that integrates relevant changes from other developers until they are upstreamed. Changes are easy to follow in his log and he makes frequent release tags when there is something worth packaging. This simplifies our workflow a lot, and by only carrying the few pmOS specific patches in pmaports (instead of an own git tree with mostly the same patches), it is easier to see where we deviate from this tree. We get a much quicker and more reliable workflow of upgrading the kernel and bug reports become more useful.

Such as the report that external HDMI was not working with most displays in a stock postmarketOS install (#735), although it worked when selecting postmarketOS in @megi's own multi-distro demo image. @ollieparanoid spent a day building kernels with different configs and patches, @bshah went through related kernel code line by line in both trees. Only after using the exact same kernel, we realized that the special bootloader p-boot made the difference. @megianalyzed it further and fixed the bug in the kernel.

List of improvements

Besides the HDMI fix, the most notable improvements for the PINE64 devices in postmarketOS are:

PineTab: Early Adopters edition

Support for the new display panel of the PineTab Early Adopters edition was added (!1627). By asking for the version after selecting the PineTab in pmbootstrap init, postmarketOS works with both the new version and the previous pinetab-dev.

*Thanks to: @bshah, @craftyguy, @djselbeck, @MartijnBraam, @megi, @ollieparanoid, @pedromoreno, @PureTryOut, @smaeul, @tmlind, @z3ntu *

Librem 5

@craftyguy keeps on upgrading and testing the Linux kernel and device configs provided by Purism for their Librem 5 phone with postmarketOS. In a guest post on the Purism blog, he describes his Adventures of porting postmarketOS to the Librem 5. One of the gems:

A lot of folks in the Purism Matrix channels are excited about “device convergence,” in particular using your phone with an external keyboard/mouse/monitor as you would a desktop PC. Not to be the one left out, I thought it might be fun to play Elder Scrolls 3: Morrowind (via OpenMW), which basically requires a keyboard/mouse to use. After packaging OpenMW in Alpine Linux, I was now able to play one of the best RPGs ever made on the devkit. Albeit, not at a super smooth frame rate, but that was to be expected given how early this hardware was and the current state of its support in Mesa.

*Thanks to: @craftyguy *

Modem

@Minecrell wrote a shiny new BAM DMUX kernel driver:

This adds a new, (imo) mainline-quality driver for the BAM DMUX interface that provides the network interface to the modem on MSM8916 and MSM8974. It replaces the old 20k+ driver I ported from downstream a while ago.

I spent almost the entire last week to write it from scratch. It lacks some performance optimizations of the downstream driver but otherwise it has much better code quality. Overall it seems to work just fine.

Additionally he wrote ModemManager patches to talk to the modem via rpmsg channels, so they can make use of this new driver (!1607). The merge request also contains reports about how this can be used with Dual SIM phones. All in all, his work makes voice calls, SMS and mobile data for both SoCs possible - with both oFono and with ModemManager!

@akulichalexander fixed outgoing calls in the oFono QMI modem driver (!1637).

*Thanks to: @akulichalexander, @aleksander0m, @Minecrell, @minlexx, @srxl, @TravMurav, @z3ntu *

Mainline all the phones and tablets!

The Samsung Galaxy SII can run on a mainline kernel now (!1598) and we have ongoing work to create a new shared linux-postmarketos-exynos4 kernel for the SII and SIII / SIII LTE (!1634).


The Samsung Galaxy SII running mainline, one of the two phones where it all began in 2017.

The shared MSM8916 packaging got a major update in (!1603). Its kernel was rebased onto 5.9-rc7, had major device tree rewrites and code cleanup. Besides that, the update brought the BAM DMUX driver mentioned above, as well as improved or initial support for the following devices (refer to the merge request for details):

MSM8953 has gotten similar shared kernel packaging, and is initially being used by the Motorola Moto G7 Power (!1558). The MSM8974 kernel was upgraded to 5.9 (!1572) and it is now being used for the mainline port of the Xperia Z2 Tablet LTE. Likewise, the (close to) mainline kernel of the OnePlus 6/6T was upgraded to 5.9 and got preparations for audio support (!1653).

What's more, the Google Nexus 7 2012 tablet has gotten support for the older PM269 variant (!1532) and its kernel was upgraded to 5.9 as well (!1528). A port for the single board computer Cubietech Cubieboard was added, and due to the great existing upstream support, it can directly use linux-edge from Alpine Linux (!1589).

*Thanks to: @aka_, @calebccff, @DolphinChips, @ichernev, @julianuu, @krzk, @lazzardo, @Minecrell, @minlexx, @Mis012, @mszyprow, @natsu1978@nergzd723, @NotJunak, @plata-gl, @Sekilsgs2, @symmetrist, @ThiagaoPlusPlus, @timbz, @TravMurav, @Ultracoolguy, @unrznbl, @wiktorek140, @WTechNinja *

Various device changes

How the N900 keyboard looks like in Finland and Sweden.

Nokia N900 users get support for Finnish and Swedish keymaps by @linusw (!1519) and @antoni.aloytorrens made Wi-Fi work with the ASUS Eee Pad Transformer (!1534).

The GCC-10 upgrade caused build failures for lots of kernels in our repositories. @z3ntu applied the small but now required patch to ~100 kernels that needed it, made sure all of our kernels are still building and fixed those that didn't (!1684).

In addition to the mainline related modem work, @Minecrell also made the downstream kernels work with modem again (!1640). This is useful to debug features that are broken in mainline, but work on downstream.

*Thanks to: @afontain, @antoni.aloytorrens, @dsankouski, @HenriDellal, @linusw, @M0Rf30, @rmcgu, @ThiagaoPlusPlus, @undevdecatos *

New device ports

In the last six months, the following devices were added to postmarketOS. As always, the ports range from barely booting with a downstream kernel to running fairly well on (close to) mainline. For categorization by usability, see the wiki.

Thanks to: everyone who ported these devices, see the contributors section in each device's wiki page.

End of Part One

That was quite a lot of new exciting developments in postmarketOS, but there's more! Part 2 will appear later this month. Once again, a huge thank you to all of our contributors and great community for support. Stay tuned!

If you'd like to contribute, contact us, or participate in other ways, you can find information on joining our IRC/Matrix channels on the wiki.

Comments