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!
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 epic camera blog posts:
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
Beyond that, it made its way into the distributions from our friends at
Arch Linux ARM,
*Thanks to: @MartijnBraam *
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 *
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 *
@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.
Sxmo in action. (bigger)
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 *
@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 *
(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.
linux-postmarketos-allwinner kernel that both devices use is now
following @megi's 5.9.x based
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
(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. @megi analyzed 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:
- 60 FPS display framerate fix (!1661)
- Better quality for incoming calls
- Fix "high-pitched whine" from the speaker on boot
- Fix excessive mic noise on call (!1652)
- Front and back camera working, with autofocus (!1654)
- Fix suspend (!1636, !1651)
- Encrypted installs: allow unlock with keyboard (!1555)
- Fix USB network (#687)
PineTab: Early Adopters edition
Support for the new display panel of the PineTab Early Adopters edition was
asking for the version after selecting the PineTab in
postmarketOS works with both the new version and the previous
*Thanks to: @bshah, @craftyguy, @djselbeck, @MartijnBraam, @megi, @ollieparanoid, @pedromoreno, @PureTryOut, @smaeul, @tmlind, @z3ntu *
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 *
@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!
Samsung Galaxy SII
can run on a mainline kernel now
we have ongoing work to create a new shared
linux-postmarketos-exynos4 kernel for the SII and SIII / SIII LTE
The Samsung Galaxy SII running mainline, one of the two phones where it all began in 2017.
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
its kernel was upgraded to 5.9 as well
port for the single board computer
was added, and due to the great
existing upstream support, it can directly use
linux-edge from Alpine Linux
*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.
Plasma Mobile on the Samsung Galaxy Xcover 2, with (close to) mainline kernel.
- Acer Iconia Tab A500
- Amazon Fire HD 8 (2017)
- Amazon Fire 7 (2019)
- Arrow DragonBoard 410c
- Cubietech Cubieboard
- Essential PH1
- Fly Spark
- HTC One X+
- HTC HD2
- Huawei P8 Lite
- Motorola Moto Z Play
- Motorola Moto Z2 Force
- Motorola Moto G7 Power
- Motorola Moto X4
- motorola Moto E4
- OnePlus 6
- OnePlus 6T
- OPPO Mirror 5s
- Samsung Galaxy Ace 2
- Samsung Nexus S
- Samsung Galaxy Grand Prime (CAN)
- Samsung Galaxy Tab E 9.6 (SM-T561)
- Samsung Galaxy Tab E 9.6 (SM-T560)
- Samsung Galaxy J5 2015
- Samsung Galaxy S III Neo
- Samsung Galaxy Xcover 2
- Sony Xperia M2
- Sony Xperia M5
- Sony Ericsson Xperia Mini Pro
- Sony Xperia Z5
- Sony Xperia XA
- Vernee Thor
- Xiaomi Mi 4i
- Xiaomi Mi 4c
- Xiaomi Mi Note 2
- Xiaomi Redmi Note 5 Plus
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.