postmarketOS Bloghttps://postmarketos.org/blog/feed.atom2024-03-13T00:00:00+00:00postmarketOS bloggershttps://postmarketos.org/logo.svgpostmarketOS in 2024-03: systemd and more trusted contributorshttps://postmarketos.org/blog/2024/03/13/pmOS-update/2024-03-13T00:00:00+00:00<p>It's mid-March, and here comes a new update on what has happened in
postmarketOS for the last month! For the Core Team, this month has been
characterized for the classic post-FOSDEM hangover: a mix between a huge
amount of excitement, and the realization that real life exists, and not every
weekend there's FOSDEM. As you hopefully all know, part of that excitement has
been the final touches for making systemd changes public. If you have not
read <a href="https://postmarketos.org/blog/2024/03/05/adding-systemd/">the systemd announcement</a>
yet, please make sure to do so. But in short, systemd gets added for KDE
and GNOME based UIs and will be the default there in pre-built images,
and we put in a lot of work to make sure that Sxmo can still use OpenRC
and it is even possible to build your own KDE and GNOME based images with
OpenRC if you prefer. However, it's also been an exciting month for other
reasons. Since we started writing the last post, there has been more than
150 MRs merged in the
<a href="https://gitlab.com/groups/postmarketOS">postmarketOS namespace</a>, and this
seems to be a consistent upwards trend!</p>
<h2 id="scaling-up-thoughts-and-improvements"><a class="toclink" href="#scaling-up-thoughts-and-improvements">Scaling up: thoughts and improvements</a></h2>
<p>The last month has been incredibly busy for the Core Team and the Trusted
Contributors. It has been most likely
the month with the most MRs opened and merged in a while if not ever.
This means increased work for everybody, while the rest of the ecosystem
continues moving forward, as for example with the KDE
<a href="https://kde.org/announcements/megarelease/6/">Plasma 6</a> release! Reviewing all
these MRs is not an easy task, and sometimes the list of pending MRs and opened
issues grows, and we can take a bit to get to your contributions. This would have
been much harder without the Trusted Contributors program, but we certainly have
room for improvement. If you have ideas of things that we could be doing better,
or how to improve our technical and social processes, do not hesitate to reach out
in <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">chat</a> or at
<a href="https://fosstodon.org/@postmarketOS">mastodon</a>.</p>
<h2 id="looking-for-plasma-maintainers"><a class="toclink" href="#looking-for-plasma-maintainers">Looking for Plasma maintainers</a></h2>
<p>The upgrade to Plasma 6 has been a huge amount of effort, and
<a href="https://gitlab.com/PureTryOut">Bart</a> more or less completely did it by himself.
If you are a happy Plasma user in postmarketOS or Alpine and would not only like
to see it become better, but actively take part in that, then consider becoming
a Plasma maintainer in Alpine/postmarketOS! You can reach out to us via IRC and
matrix in the postmarketos-devel channel, and tag <code>@PureTryOut</code>. Maintainers
don't need to be able to do everything, every small bit of work that could be
taken from the current only maintainer would already be a huge help.</p>
<h2 id="so-whats-new"><a class="toclink" href="#so-whats-new">So what's new?</a></h2>
<ul>
<li>We have 10 new device ports: Google Asurada, Corsola, and Cherry
Chromebooks; Samsung Galaxy J5 (2017), J7 Pro, and A32 4G; Xiaomi Mi 9T /
Redmi K20 and Redmi 12 and Note 9; and Clockwork Tech ClockworkPi uConsole CM4.
This has been a very successful month in terms of device ports, thanks to all
our contributors!</li>
<li><a href="https://gitlab.com/longnoserob">Robert Eckelmann</a> became a Trusted
Contributor! He is the first non-developer to join, and comes with great ideas
and contributions. Welcome to the team!</li>
<li>We added
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4795">more options</a>
for community devices, so there is better support for peripherals and other
features. Thanks Luca!</li>
<li>We extended our custom
<a href="https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/2238">recommends logic</a>,
and now use it
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4756">GNOME</a> and
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4798">KDE</a> UIs.
This warranties a more consistent experience through different UI. Thanks
Clayton and Bart! (This was already shipped as part of the pmbootstrap 2.2.x
releases, but not explicitly mentioned in the 2024-02 update blog post.)</li>
<li>Finally <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4732">drop</a>
osk-sdl as advertised. Thanks Clayton and <a href="https://gitlab.com/okias">David</a>!</li>
<li>Remove unused screen deviceinfo variables
<a href="https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/2253">from the template</a>.
Thanks <a href="https://gitlab.com/andrisas">Andras</a>!</li>
<li>Started work on using zstd-compressed firmware for some kernels
(<a href="https://gitlab.com/postmarketOS/postmarketos-mkinitfs/-/issues/39">#39</a>). Lots of people from the team
worked together on this, as well as with Alpine in order to reduce the
size of shipped firmware. Thanks Newbyte, Clayton, f_, and Arnav!</li>
<li>Multiple kernels were updated to the newest LTS version (6.6), and others
continued to be updated to the latest stable release, 6.7. Thanks a lot to all
our kernel maintainers!</li>
<li>Continue the work on wallpapers, with
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4810">some fixes</a>
to the N900 and more new
<a href="https://gitlab.com/postmarketOS/artwork/-/merge_requests/31">artwork</a>
available. Thanks <a href="https://gitlab.com/sicelo">Sicelo</a> and
<a href="https://gitlab.com/dikasetyaprayogi">dikasp</a>!</li>
<li>Port
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4826">msm8916 devices</a>
to use extlinux. Thanks Nikita!</li>
<li>Start integrating <a href="https://www.mypy-lang.org/">Mypy</a> into CI of multiple of
our tools, and bump pmbootstrap's minimum required Python version to 3.9
(<a href="https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/2265">!2265</a>). Thanks Newbyte and Pablo!</li>
<li>Install non-free firmware
<a href="https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/2255">by default</a>,
see the related <a href="/edge/2024/02/15/default-nonfree-fw/">edge blog post</a>
for reasoning. In the process, also add
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4794">more firmware</a>
in generic x86_64 packages. Thanks Clayton!</li>
<li>Start offering to build images for a few
<a href="https://wiki.postmarketos.org/wiki/Device_categorization#Official_Images">testing devices</a>
under some conditions.
In consequence, devices don't need to be moved to community to get pre-built
images. Thanks Oliver!</li>
<li>All remaining infrastructure has been moved from the old and less reliable
server to the new server, and the subscription for the old server has been
canceled (so we don't need to pay for it anymore). Thanks Luca!</li>
</ul>
<h2 id="and-whats-next"><a class="toclink" href="#and-whats-next">And what's next?</a></h2>
<ul>
<li><a href="https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/61987">GNOME 46</a>
coming to alpine in some weeks.</li>
<li>Continue our path towards
<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2632">systemd</a> integration
with KDE and GNOME.</li>
<li>We plan to do some changes to the devices categorization, to help device
maintainers, and ensure consistent quality among devices of the same category.</li>
<li>More workforce will be available to join the team. Stay posted!</li>
</ul>
<h2 id="conclusion"><a class="toclink" href="#conclusion">Conclusion</a></h2>
<p>We are very happy with what we got done this month together, and that the systemd
news were mostly received positively. There even was a
<a href="https://fosstodon.org/@martijnbraam/112050130609050413">poll on Mastodon</a> with 539
people, of which 72% voted for systemd. We hope to keep bringing great news, while
serving our community and collaborating closely with other projects.</p>
<p>If you appreciate the work we're doing on postmarketOS, and want to support us,
consider <a href="https://opencollective.com/postmarketos">joining our OpenCollective</a>.</p>Adding systemd to postmarketOShttps://postmarketos.org/blog/2024/03/05/adding-systemd/2024-03-05T00:00:00+00:00<p><a href="/static/img/2024-03/systemd.jpg"><img alt="A OnePlus 6 running postmarketOS with tmux showing systemctl status and hostnamectl from systemd, surrounded by a GNOME and a KDE gear" class="wfull border" src="/static/img/2024-03/systemd.jpg" /></a></p>
<p>You heard it here first folks: systemd is coming to postmarketOS! As a mobile
oriented OS, our main goal has always been to work for everyone. From technical
folks to casual users. postmarketOS should have all the benefits you expect
from a Linux based distribution, such as being free software, respecting your
privacy, getting updates until your device physically breaks, respecting your
attention and not shoving advertisements in your face. Your phone should be a
tool you use, not the other way around.</p>
<p>This is of course not an easy task, one of the main blockers we found as we
collaborate more closely with KDE and GNOME developers is that they have a
hard time with our OpenRC-based stack. In
order to get KDE and GNOME working at all, we use a lot of systemd
<a href="https://en.wikipedia.org/wiki/Polyfill_(programming)">polyfills</a> on top of
OpenRC. So while we are technically "not using systemd", in practice we already
do use a large chunk of its components to get KDE and GNOME running, just
different versions of those components. While we are very grateful for everybody
who works on these polyfills, we must point out that most aren't a full
replacement, and take additional effort to support and maintain. As much as we
might want to romanticise the idea of spending 6, 12, 24 months attempting to
come up with an even vaguely competitive alternative to systemd, we would quite
simply rather be working on making postmarketOS better.</p>
<p>So, after first seriously considering this idea almost a year ago, we have made
the decision to fix these incompatibilities and friction by just providing a
version of postmarketOS that builds on top of systemd. We are happy to announce
that it works, and we already have <strong><a href="https://mirror.postmarketos.org/temp.fdcc091b56f5/">proof-of-concept images available that
you can try out right now!</a></strong></p>
<p>The proof-of-concept images were made only for a few devices, as they had to be
built manually. You can also build your own by following the steps in the issue
below, or wait for us to get this integrated into the build system. The patches
that made the proof-of-concept possible currently live in branches of
pmaports.git and pmbootstrap.git, and will go through the usual review process
before we merge them. Read the following issue for an overview of building your
own images, what tasks still need to be done and where you could help out if
you are interested: <strong><a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2632">#2632</a></strong></p>
<p>As with text editors, some people are really passionate about their favorite
init systems. When discussing this announcement, please keep a friendly tone.
Remember that we all share the love for free and open source software, and that
our communities work best if we focus on shared values instead of fighting over
what implementations to use.</p>
<p>This has been a pretty huge undertaking for us - as part of our effort to
sustainably grow postmarketOS into the mobile OS we all want it to be. If you
like what we do, please consider joining our
<a href="https://opencollective.com/postmarketOS">OpenCollective</a>.</p>
<h1 id="qa"><a class="toclink" href="#qa">Q&A</a></h1>
<h2 id="what-about-openrc-s6-runit-dinit"><a class="toclink" href="#what-about-openrc-s6-runit-dinit">What about OpenRC, s6, runit, dinit?</a></h2>
<p>For the die-hard fans of OpenRC and people who just have other use cases, such
as building a very minimal system that doesn't need all the polyfills anyway:
Don't worry, as long as OpenRC is in Alpine Linux (on which postmarketOS is
based), you will still be able to select it in
<a href="https://wiki.postmarketos.org/wiki/Pmbootstrap">pmbootstrap</a>
when building your own images. Here is how it will look like, a new question in
<code>pmbootstrap init</code>:</p>
<p><a href="/static/img/2024-03/pmbootstrap_init.png"><img alt="pmbootstrap init asks whether the user wants to use systemd or not" class="" src="/static/img/2024-03/pmbootstrap_init.png" /></a></p>
<p>We have shown this announcement to <a href="https://sxmo.org">Sxmo</a> maintainers in
advance, and they decided to stay with OpenRC. So pre-built images of Sxmo will
continue to be OpenRC based and we plan to make it so that pmbootstrap doesn't
ask about systemd after choosing Sxmo as UI.</p>
<p>Besides OpenRC, <a href="https://skarnet.org/software/s6/">s6</a>,
<a href="https://smarden.org/runit/">runit</a> and
<a href="https://davmac.org/projects/dinit/">dinit</a> are in Alpine. Right now we
don't have any UI using them in postmarketOS, but in theory they could be used
as well.</p>
<h2 id="is-alpine-cool-with-this"><a class="toclink" href="#is-alpine-cool-with-this">Is Alpine cool with this?</a></h2>
<p>Of course we also considered how this announcement would impact our (very
good!) relationship with Alpine Linux, which doesn't ship systemd. Even though
we are adding systemd, we certainly aren't planning to move away from Alpine.
We use Alpine for its incredibly fast package manager, the very readable and
easy to write APKBUILD package descriptions (that neatly allow splitting into
subpackages), the small/simple/secure musl libc, the awesome stable release
schedule, and just the huge selection of packages available in their repos. We
have shared this blog post with the Alpine devs before this publication, and we
hope that they understand our reasoning.</p>
<h2 id="whats-wrong-with-the-polyfills"><a class="toclink" href="#whats-wrong-with-the-polyfills">What's wrong with the polyfills?</a></h2>
<p><a href="https://en.wikipedia.org/wiki/Polyfill_(programming)">Wikipedia</a> describes the
term polyfill as "code that implements a feature of the development environment
that does not natively support the feature". Here is an overview of the ones
we have in our stack for compatibility with systemd, how maintained they are
and what they are missing.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2024-03/polyfills.svg"><img alt="A table of polyfills currently in use in postmarketOS.
maintained, implements all features: openrc-settingsd, eudev;
maintained, missing features: elogind, superd, logbookd;
unmaintained: waked, corecollector" class="w400min" src="/static/img/2024-03/polyfills.svg" /></a>
</div><div class="grid-text">
<ul>
<li>
<p><a href="https://gitlab.com/postmarketOS/openrc-settingsd/"><code>openrc-settingsd</code></a>
(<code>hostnamed</code>, <code>localed</code>, <code>timedated</code>): provides various D-Bus APIs that allow
UIs to change locales, timezones etc. Originally, this was maintained by
Gentoo's GNOME desktop team until we took over maintenance in 2021. Pablo
wrote about it: "Luca and me have spent some precious time on fixing crashes
and old legacy code on that, which we'd happily spend somewhere else. For a
long time it would just crash upon trying to change language on first boot,
and things like that."</p>
</li>
<li>
<p><a href="https://github.com/eudev-project/eudev"><code>eudev</code></a> (<code>udev</code>): userspace devfs
daemon, forked from systemd code.</p>
</li>
</ul>
</div></div>
<ul>
<li>
<p><a href="https://github.com/elogind/elogind"><code>elogind</code></a> (<code>logind</code>): also forked from
systemd code, implements the login1 D-Bus interface and systemd C APIs. Big
chunks of the functionality are removed with
<a href="https://github.com/elogind/elogind/blob/c36155c75f3c9288bcde42fa92ed2a8ade4031cd/src/libelogind/sd-journal/journal-send.c#L473"><code>#if 0</code></a>
in the code, such as
<a href="https://www.freedesktop.org/software/systemd/man/latest/sd_journal_stream_fd.html"><code>sd_journal_stream_fd</code></a>.
This breaks getting proper logs from <code>gnome-session</code>.</p>
</li>
<li>
<p><a href="https://sr.ht/~craftyguy/superd/"><code>superd</code></a> (<code>systemd --user</code>): runs various
daemons in the user's session, such as
<a href="https://gitlab.com/mobian1/callaudiod">callaudiod</a> for accepting phone
calls. It is crucial that if these daemons are crashing, they are properly
restarted. superd was invented to be compatible with systemd user service
files, and as of writing it is being used in Sxmo. But due to various
incompatibilites it does not integrate well enough with <code>gnome-session</code> and
cannot be used there. So right now we just don't supervise userspace daemons
there and they don't restart if they crash. We can't use it with Plasma
either, and if we had proper systemd user services instead, Plasma would have
a faster session startup since parts of the session could be started in
parallel and were synced (without race conditions).</p>
</li>
<li>
<p><a href="https://git.sr.ht/~martijnbraam/logbookd"><code>logbookd</code></a> (<code>journald</code>): receives
kernel log messages and syslog messages and stores them in a sqlite database
for querying. It works with daemons, but it does not implement the journalctl
API and so one looses all session logs of a GNOME session.</p>
</li>
<li>
<p><a href="https://gitlab.com/seath1/waked"><code>waked</code></a> (<code>systemd.timer</code>): a
proof-of-concept to let alarm clock apps wake the system from suspend at
requested times. The project is
<a href="https://gitlab.com/seath1/waked/-/issues/3">unmaintained</a>, and at least in
GNOME clocks, <code>systemd.timer</code> will be used to implement this functionality on
a maintained API. We don't have any other polyfill for <code>systemd.timer</code>.</p>
</li>
<li>
<p><a href="https://github.com/Cogitri/corecollector"><code>corecollector</code></a>
(<code>systemd-coredumpd</code>) <sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup>: Not needed to run KDE and GNOME, but a very
useful tool that many developers expect to be able to use to easily retrieve
coredumps and associated metadata, without first figuring out how to
configure them properly. It is great that there is a polyfill for it, but it
is unmaintained since 2020. Plasma Mobile developer Devin wrote:
"When debugging crashes, it’s incredibly useful to be able to view
coredumps and attach a debugger after the fact with coredumpctl, this
can help us obtain backtraces that would otherwise be hard to
replicate again with a debugger attached. We can also then enable
DrKonqi’s coredumpd integration, which can allow users to get
notifications about process crashes and see them from a GUI. DrKonqi
also has optional integration with our Sentry instance, which we can
enable on developer installs to automatically send crashes to a web
dashboard for us."</p>
</li>
</ul>
<h2 id="what-about-systemd-and-musl-libc"><a class="toclink" href="#what-about-systemd-and-musl-libc">What about systemd and musl libc?</a></h2>
<p>Alpine Linux is based on musl libc, whereas systemd officially only supports
glibc. Our current understanding having spoken to systemd developers is that we
should be able to find a path that brings us much closer to upstream, if not
entirely.</p>
<h2 id="what-fancy-new-features-will-we-get-with-systemd"><a class="toclink" href="#what-fancy-new-features-will-we-get-with-systemd">What fancy new features will we get with systemd?</a></h2>
<ul>
<li>Granular <a href="https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html">privilege controls</a></li>
<li>Powerful service <a href="https://trstringer.com/systemd-critical-chain/">dependency</a>
and <a href="https://www.ctrl.blog/entry/systemd-service-hardening.html">security</a>
analysis features</li>
<li>Tight <a href="https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html#">cgroups integration</a> both static and dynamic</li>
<li>Socket activation (so you can print from your phone without having CUPS running all the time!)</li>
<li>Built in <a href="https://www.thegoodpenguin.co.uk/blog/reducing-boot-time-with-systemd/">boot-time analysis</a></li>
</ul>
<h2 id="what-does-this-mean-for-device-maintainers"><a class="toclink" href="#what-does-this-mean-for-device-maintainers">What does this mean for device maintainers?</a></h2>
<p>For devices where we build KDE- and GNOME-based images, any custom services
will need a systemd version. We plan to adjust the existing device ports as
part of integrating systemd.</p>
<div class="footnote">
<hr />
<ol>
<li id="fn:1">
<p><a href="https://cogitri.github.io/post/05-introducing-corecollector/">Introducing Corecollector, a coredump collector written in D - Cogitri's blog</a> <a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
</ol>
</div>FOSDEM 2024 + Hackathonhttps://postmarketos.org/blog/2024/02/14/fosdem-and-hackathon/2024-02-14T00:00:00+00:00<p><a href="/static/img/2024-02/fosdem-cover.jpeg"><img alt="A collection of stickers and phones at the Linux on Mobile FOSDEM stand" class="wfull border" src="/static/img/2024-02/fosdem-cover.jpeg" /></a></p>
<p>As is quickly becoming tradition, the postmarketOS team made their way to FOSDEM
at the beginning of February again. We rarely get the chance to have the entire
core team in the same place (unfortunately we still had Dylan missing). As such
we took the chance to not only take part in this wonderful conference in
Brussels, but also spend three additional days hacking away in a nice
distraction-free apartment that we booked, powered by the donations we receive
on OpenCollective. It was extraordinary, we had so much focus, did an enormous
amount of planning and tackling of hard tasks, wrote new code,
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4732">removed</a>
legacy code, worked on infrastructure and just had a good time. There is a lot
coming up, you can expect to read more in blog posts and merge requests in the
next weeks and months. That being said, we wanted to share some of the
highlights, especially for the people supporting us. Without you, this would
have been significantly harder to organise.</p>
<h3 id="fosdem-saturday"><a class="toclink" href="#fosdem-saturday">FOSDEM Saturday</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2024-02/fosdem-stand.jpg"><img alt="Us at the FOSDEM Linux on Mobile stand" class="w300 border" src="/static/img/2024-02/fosdem-stand.jpg" /></a>
<br><span class="w300">
By the fact that Clayton lost his voice on Saturday, you can tell it was busy.
</span>
</div><div class="grid-text">
Compared to a typical Saturday morning, some of us got up really early to
prepare our corner of the <a href="https://linuxonmobile.net/">Linux on Mobile</a> stand,
together with all the other amazing projects. It involved some last minute
flashing, placing stickers on the table, configuring the phones to not blank
their screen and so on. Some of us stayed at the table for more or less the
whole day and had incredible conversations with all the people coming by.
Compared to last year where we were in the H building, being in Aw (awwww!)
seemed a bit more remote
(<a href="https://archive.fosdem.org/2023/assets/campusmap-6166e45e7e736823c218c45ac65e02f5f7237111253db302da17bbaa0f4b5683.png">map</a>)
and one might think that this would lead to less people coming by. But far from
it!
</div></div>
<p>FOSDEM is known for many things taking place in parallel and so did, in
addition to the countless stands, an incredible amount of devrooms have talks
going on at the same time. One of these devrooms was
<em>FOSS on Mobile Devices</em>. Again a collaboration with our friends from projects
such as Mobian, Sailfish OS, Ubuntu Touch, PureOS and NemoMobile. Folks
related to postmarketOS gave a few talks and helped running the devroom. At the
same time, quite a few people streamed the talks and had some good questions in
the Matrix chat that were asked to the presenters in the short Q&A sessions
after each talk. The devroom was a total blast, we were happy to have so many
amazing presentations there! All talks were recorded and
<a href="https://fosdem.org/2024/schedule/track/foss-on-mobile-devices/">have been uploaded</a>
if you have some hours to kill.</p>
<p>After everyone left ULB in the evening, we spontaneously decided to go to the
GNOME Beers event. Even our two renown KDE devs Bart and Luca joined in and
made it out alive!</p>
<h3 id="fosdem-sunday"><a class="toclink" href="#fosdem-sunday">FOSDEM Sunday</a></h3>
<p>As the devroom was "only" taking place the whole Saturday, the people who spent
all day in it could get the full stand experience. Thanks to help from the Sxmo
IRC channel, we figured out how to make the Sxmo demo phone not blank its
screen as well (it is actually a standard feature that can be accessed through
the menu). We made a post-it with instructions for our favorite tiling window
manager based phone UI and people were happy to give it a try and to learn the
combinations (if you really try and have a guide infront of you, you can get
the hang of it in a couple of minutes). We had many more great conversations,
and handed out a lot of stickers. Thanks to everybody who came by, it was
amazing!</p>
<p>Again, in parallel, talks were visited, and at the end of the day we were
surprised to be not kicked out of the cafeteria after FOSDEM was basically
over. Big cheers to Raffaele, Peter and Sebastian for sticking around and
joining us in recording
<a href="https://cast.postmarketos.org">postmarketOS podcast #38</a>.</p>
<h3 id="hackathon"><a class="toclink" href="#hackathon">Hackathon</a></h3>
<p>One of the first things we did on Monday morning, was taking pictures off from
a wall and use it for nice visual planning with post-its. As mentioned earlier,
we will make separate blog posts for the bigger things in the near future, but
here are some of the topics that we discussed and worked on with intense focus:</p>
<ul>
<li>
<p>Did a big prioritization of projects within postmarketOS, such as VoLTE,
cameras, HW testing-setup, PipeWire and power management. To drive them
forward effectively, we matched them with possible grants and funding
opportunities and contected people from the community who could possibly work
on them. (If you are interested and really have knowledge in one of these
areas, reach out to us!)</p>
</li>
<li>
<p>Moving forward with migrating away from gitlab.com
(<a href="https://gitlab.com/postmarketOS/postmarketos/-/issues/49#note_1733384851">why?</a>).
We have two promising new places where we could go, and did a video call with
one of them.</p>
</li>
<li>
<p>Discussed potentially shipping Flatpak packages from Flathub by default. From
discussions with both KDE and GNOME people, it is clear that this is their
preferred choice of how users should install their apps. By now probably
everybody knows the upsides of sandboxing and having a clear path for
shipping updated apps with a stable base system (i.e. new apps on
postmarketOS stable, without backporting them through a service pack). The
downsides are that not all devices have enough space or resources for them,
and that Flathub only supports x86_64 and aarch64 (no 32-bit architectures or RISC-V). We still need to figure
out the details, but the idea is to ship it by default for the UIs and device
combinations where it makes sense in terms of being desired by upstream (the
folks providing the UI) and in terms of having a great experience on the
device. And that if you build your own image, you can just choose it as you
prefer. See <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4820">!4820</a> and <a href="https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/2254">!2254</a> for more
information.</p>
</li>
<li>
<p>Worked on improving the status and handling of non-free firmware. The thing
is, it would be very nice if you could use your phone without non-free
firmware. But in practice, the mechanism we have right now is hard to
maintain, not well tested, and consequently you would sometimes even get an
image with non-free firmware installed even though you selected that you
don't want to have it. Furthermore, in modern phones you sometimes cannot
even charge your phone without proprietary firmware. So in reality the
feature of opting out of non-free firmware doesn't really work anymore and we
will probably just remove it. <a href="https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/2255">!2255</a> works towards that.</p>
</li>
<li>
<p>Had a very fruitful discussion about device maintainership and
categorization. We discussed on how to improve the status of main and
community devices, and possible ideas to help maintainers in their tasks.
We have had a very positive experience with the creation of the Trusted
Contributors procedure, and we hope to be able to replicate the success when
it comes to device maintenance. You can expect a blog post about this soon™.
If you are curious, our notes are in <a href="https://gitlab.com/postmarketOS/postmarketos/-/issues/59">#59</a>.</p>
</li>
<li>
<p>Applied to GSoC with some smaller, yet very useful
<a href="https://postmarketos.org/gsoc/">project ideas</a>. We have not done this
before, but trying it out at least once seems useful.</p>
</li>
<li>
<p>Reviewed pmbootstrap patches, made new performance and other improvements to
it and released <a href="https://gitlab.com/postmarketOS/pmbootstrap/-/tags/2.2.0">2.2.0</a>.
While at it, we made all PyPI releases deprecated - since pmbootstrap does
not have dependencies on other Python packages it does not offer a benefit
for us while at the same time adding a few more steps to the release process.
We have been recommending to install from either
<a href="https://wiki.postmarketos.org/wiki/Pmbootstrap#From_package_manager">distros' package managers</a>
or <a href="https://wiki.postmarketos.org/wiki/Pmbootstrap#From_git">git</a> for quite
some time now.</p>
</li>
<li>
<p>Improvements to the infrastructure were made, and we continued to move
services over from the old server to the new one. With the work in January
we already managed to get the infrastructure stable again (back when
everything was running on the old server, it really wasn't in a good state).
Now the goal is to move the rest over as well, so we don't need to pay for
the old and less reliable server anymore in addition to the nice new one.</p>
</li>
<li>
<p>Did a lot of smaller tasks, such as archiving Megapixels in the pmOS
namespace (now that Martijn made a
<a href="https://gitlab.com/megapixels-org/Megapixels/-/tags/1.8.0">new release</a> in
his megapixels-org namespace, which also holds WIP code for
<a href="https://blog.brixit.nl/megapixels-2-0/">Megapixels 2.0</a>, yay!), and moving
forward with integrating the new wallpapers (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4716">!4716</a>).</p>
</li>
<li>
<p>Watched <a href="https://fosstodon.org/@postmarketOS/111886441429318021">The Gnome Mobile</a>,
don't miss the reviews.</p>
</li>
</ul>
<p>On reflection, this has possibly been one of the most productive (and fun) weeks
for the project in a very long while. And your donations have been a clear
enabler for this to happen. So if you appreciate the work we're doing on
postmarketOS, and want to support us, consider
<a href="https://opencollective.com/postmarketos">joining our OpenCollective</a>.</p>postmarketOS in 2024-02: More trusted contributorshttps://postmarketos.org/blog/2024/02/07/more-tcs/2024-02-07T00:00:00+00:00<p>It's February, and we are still sticking to our new year resolutions and
greeting the month with a blog post update! Among other topics, this month
has been crazy busy with infrastructure migrations (you might have noticed
the performance and reliability improvements with the postmarketOS server!).
And of course FOSDEM was a few days ago! We have stayed in Belgium and are
half-way through a 3-day hackathon with most of the team. It is very exciting
to be able to meet in person, and we are getting lots of work and long-term
planning done. We have financed part of this through
your <a href="https://opencollective.com/postmarketos">donations</a>, so they are already
making an impact, thanks to everybody! We will make sure to write a summary
blog post for FOSDEM and the Hackathon once it is all over!</p>
<h2 id="governance-more-ways-to-become-a-trusted-contributor"><a class="toclink" href="#governance-more-ways-to-become-a-trusted-contributor">Governance: more ways to become a Trusted Contributor</a></h2>
<p>Through the last months, we have been working on improving the governance
structure of the project. And this month we followed up by
<a href="https://postmarketos.org/blog/2024/01/28/how-to-become-tc2/">refining the process</a>
to become a Trusted Contributor. Now, you don't need to be a developer to
become official part of the postmarketOS team! There are plenty of ways to
contribute to the project that are not just with code. We want to encourage
people to do so, and give them credit for what they do!</p>
<p>And seems like the Governance improvements are actually having an impact on
the project. Since last update, we have welcomed two new Trusted Contributors:
<a href="https://gitlab.com/funderscore">Ferass El Hafidi</a> and
<a href="https://gitlab.com/Arnavion">Arnav Singh</a>! They have both been doing great
work around different parts of the project, and we are very happy to have them
on-board! Maybe next month we can introduce our first non-developer of the team?</p>
<h2 id="so-whats-new"><a class="toclink" href="#so-whats-new">So what's new?</a></h2>
<ul>
<li>After a short break, we released a new
<a href="https://cast.postmarketos.org/episode/37-Clayton-goes-full-time-v23.12-smart-speakers-musl-locales/">podcast episode</a>, and recorded another at FOSDEM!</li>
<li>We moved pmbootstrap back to
<a href="https://postmarketos.org/blog/2024/01/17/moving-pmbootstrap/">gitlab.com</a>.</li>
<li>Work on generic Intel and AMD devices. There has been lots of work put to
rework and improve the packaging and hardware support on first install.
Thanks Clayton!</li>
<li>The Pinebook Pro has a
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4736">new maintainer</a>!
There was a call to move it out of community due to the lack of maintenance,
and <a href="https://gitlab.com/QC8086">Quade Curry</a> stepped up. Thanks a lot!</li>
<li>Work on the new
<a href="https://gitlab.com/groups/postmarketOS/-/epics/2">kernel config fragments</a>
implementation has continued. Thanks Jenneron, Clayton, and Arnav!</li>
<li>We have 4 new supported devices: Samsung J6, OnePlus 9 Pro, Samsung Galaxy
Tab 4 7.0 Wi-Fi, and Amazon Fire TV Stick Lite. Also, 2 other devices gained
mainline support: OnePlus 9, Motorola Moto G 4G.</li>
<li>Dozens of kernels were updated to the latest linux 6.7 release. We were able
to demo some of them at FOSDEM, and got great feedback about the fact that
all our devices are running the latest kernel. Thanks to all of our kernel
contributors!</li>
<li>Work on merging some of our low-level components into
<a href="https://gitlab.com/postmarketOS/buffybox">BuffyBox</a> has started! Thanks
<a href="https://gitlab.com/cherrypicker">cherrypicker</a>!</li>
<li>We merged some good improvements and generalization for
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4721">exynos5420</a>
devices. Thanks <a href="https://gitlab.com/Grimler">Grimler</a>!</li>
<li>mkinitfs and boot-deploy got some cleanups and improvements related to
EFI booting and the deprecated osk-sdl. Thanks Caleb and Clayton!</li>
<li>The Fairphone 5, the newest device we support, got some further
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4761">improvements</a>.
Thanks Luca!</li>
<li>Mate and LXQT got some small improvements. Thanks
<a href="https://gitlab.com/jakko">Jakko</a>!</li>
<li>btrfs installations do now get a much better
<a href="https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/2233">default experience</a>
on first install. Thanks <a href="https://gitlab.com/papiris">papiris</a>!</li>
<li>We got an artist design
<a href="https://gitlab.com/postmarketOS/artwork/-/merge_requests/25">wallpapers</a>
specific for postmarketOS. They are not integrated yet, but we're
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4716">working on it</a>.</li>
<li>We moved from self-hosting our email to <a href="https://www.migadu.com">Migadu</a>.
This was enabled by your donations, as we know that we can pay for it long-
term, and frees up some of our time to do more exciting postmarketOS stuff!</li>
<li>The Mastodon <a href="https://mastodon.social/@pmOS_devices">pmOS devices bot</a> is up
and running again. Make sure to follow it if you're interested in the new
devices that keep coming. Thanks Raffaele!</li>
<li>A new
<a href="https://gitlab.com/postmarketOS/pmbootstrap/-/tags/2.2.0">pmbootstrap release</a>
is out. It contains many fixes and improvements, including some relevant
performance improvements during build, several envkernel changes, and much
more. Thanks Ollie and all the contributors!</li>
</ul>
<h2 id="and-whats-next"><a class="toclink" href="#and-whats-next">And what's next?</a></h2>
<p>We of course have great dreams and big plans coming out of the hackathon.
Short-term plans are not so ambitions, but still exciting!</p>
<ul>
<li>We hope to ship the new
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4716">wallpapers</a>
soon.</li>
<li>The work on the kconfig fragments will certainly continue!</li>
<li>We will switch the latest GTK release, with
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4773">new renders</a>.</li>
<li>We will
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4732">stop supporting</a>
osk-sdl at a close point in time.</li>
<li>We will improve the way we handle the recommended packages for
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4756">GNOME</a> and
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4798">KDE</a>, so
there is a more similar experience in-between different UIs of the same
desktop.</li>
</ul>
<h2 id="conclusion"><a class="toclink" href="#conclusion">Conclusion</a></h2>
<p>Last month's blog post seems to have been well received, so we hope to continue
with this series! In general, this month there seems to have been a bit less
throughput in terms of features, but not every month there's a member starting
to work on the project full-time! Also, we have all been preparing for FOSDEM,
and the output from FOSDEM and the hackathon will hopefully make a big impact.
So we look forward to continue the work and keep you updated!</p>
<p>If you appreciate the work we're doing on postmarketOS, and want to support us,
consider <a href="https://opencollective.com/postmarketos">joining our OpenCollective</a>.</p>How to become a Trusted Contributor, part 2https://postmarketos.org/blog/2024/01/28/how-to-become-tc2/2024-01-28T00:00:00+00:00<p>After our
<a href="https://postmarketos.org/blog/2023/12/03/how-to-become-tc/">How to become a Trusted Contributor</a>
blog post was received with great enthusiasm by the community (and already have
two new TCs since, shout out to @travmurav and @f_), we thought that it would
be a great idea to expand its scope. We know that people have been contributing
to postmarketOS in many ways, not just via code reviews and submitting patches.
So if you have been contributing to postmarketOS for the past six months or
longer and don't fancy yourself a developer, there is now a path for you to
become a Trusted Contributor too!</p>
<p>Some examples of what types of contributions can qualify you as a Trusted
Contributor include:</p>
<ul>
<li>making <a href="https://wiki.postmarketos.org/wiki/Accessibility">accessibility</a> improvements</li>
<li>supporting others in our chat rooms</li>
<li>supporting others in our issue trackers</li>
<li>creating artwork or other promotional materials</li>
<li>writing blog posts for postmarketOS.org (the main and/or "edge" blogs)</li>
<li>podcast / audio editing</li>
</ul>
<p>If you're curious how to get started with any of those things today, in hopes
of applying to be a TC later, please do not hesitate to
<a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">reach out to us in chat</a>!
If you find other tasks that we didn't think of, which would also have a good
impact on the project or our community, feel free to reach out as well.</p>
<p>Trusted Contributors enjoy street cred (public contributions to a large FOSS
project can look good on a resume!) and their own <code>@postmarketos.org</code> email
address.</p>
<p>The process to apply is largely the same as
<a href="https://postmarketos.org/blog/2023/12/03/how-to-become-tc/#the-new-process">what we detailed previously</a>:
file <a href="https://gitlab.com/postmarketOS/apply-for-trusted-contributor/-/issues/new">a new confidential issue</a>
in our application repo, find existing team members to endorse you, and list
out your contributions and achievements to support your application.</p>
<p>We also got a bit of behind-the-scenes audio for you in
<a href="https://cast.postmarketos.org/episode/37-Clayton-goes-full-time-v23.12-smart-speakers-musl-locales/">the podcast</a>.
That's it, thanks for reading this blog post!</p>Moving pmbootstraphttps://postmarketos.org/blog/2024/01/17/moving-pmbootstrap/2024-01-17T00:00:00+00:00<p>For the last ~18 months we've used SourceHut for pmbootstrap development to
evaluate potentially making it the home for all of postmarketOS development.</p>
<p>We originally laid out some important features that we would need to make this a
reality, the biggest one being able to review patches with a web UI where one is
able to post comments, make suggestions, etc, (similar to how it works on other
forges). Neither the SourceHut team nor we had time to work on that.</p>
<p>During this time we have also been trying out the e-mail based workflow. It has
its advantages, and obviously it works extremely well for some projects. But for
the postmarketOS team it has mostly increased friction.</p>
<p>So for now we decided to move pmbootstrap back over to GitLab.com, where the
rest of our source code repositories are, and we are in the process of finding
an alternative hosting solution that will either be a GitLab instance or a
similar alternative. We are sorry for the back and forth on this issue, and
appreciate everybody that contributed to the discussion.</p>Call For Tegra U-Boot Testershttps://postmarketos.org/blog/2024/01/13/call-for-tegra-u-boot-testers/2024-01-13T00:00:00+00:00<p><div class="grid"><div class="grid-text">
<p>We currently have a generic port for Nvidia Tegra 2/3/4 devices using U-Boot
as bootloader, supporting 9 different devices at the time of writing. This
wouldn't have been possible without the work of Svyatoslav Ryhel (also known as
<a href="https://wiki.postmarketos.org/wiki/User:Clamor">Clamor</a>), who has been working
on Tegra devices for the last few years and is also a maintainer of Nvidia
Tegra SoCs in U-Boot.</p>
<p>The
<a href="https://wiki.postmarketos.org/wiki/Nvidia_Tegra_armv7_(nvidia-tegra-armv7)">wiki page</a>
has a list of supported devices. </p>
<p>Svyatoslav ported most of these devices without owning one, just relying on
testing from people. This means anyone having such a device can reach him
and eventually will be able to replace the old proprietary vendor bootloader
with U-Boot.</p>
<p>If you're interested, you can reach out Svyatoslav in
<a href="https://matrix.to/#/#postmarketOS-on-tegra:matrix.org">#postmarketOS-on-tegra:matrix.org</a>
matrix room or e-mail him to get personal contacts at
<a href="mailto:clamor95@gmail.com">clamor95@gmail.com</a>.</p>
</div></div>postmarketOS in 2024-01: Infrastructure and bug reportshttps://postmarketos.org/blog/2024/01/08/infrastructure-and-testing/2024-01-08T00:00:00+00:00<p>It's a new year, aaand of course that means we're all having big grandiose
thoughts about our projects. postmarketOS is no different, and in pursuit of
transparency and reflection we got inspired to write this very blog post about
those plans and what has been happening recently.</p>
<p>First things first, As you may know, we recently <a href="https://opencollective.com/postmarketos">launched on
OpenCollective</a>, and WOW, the feedback
has been honestly amazing. We on the core team definitely didn't expect this
level of generosity, and we're hard at work finding the best ways to use this
money to improve the sustainability and reliability of postmarketOS.
OpenCollective let's us easily manage expenses, pay people for their work, and
receive donations. With everything being 100% transparent. We're extremely
excited for the autonomy that this gives us.</p>
<h2 id="preparing-for-the-future"><a class="toclink" href="#preparing-for-the-future">Preparing for the future</a></h2>
<p>We've been having a bit of a tough time with our infrastructure recently. So we
decided to make use of some of the donated money to invest in a bigger, better
and more reliable server and started to move services over. Towards the end of
January the major bottlenecks should be resolved (we are working hard on it
behind the scenes), and infrastructure should be nice and fast again.</p>
<p>In the further future, we would like to host our package repository and device
images totally separately to our other services to minimise the risk of
<em>unplanned outages</em>.</p>
<p>We will also eventually get a second dedicated server which will work as a
CI runner. We currently benefit from GitLab.com's ("Free premium for Open
Source projects"), without which it would not be possible to operate
postmarketOS. While we are very grateful towards GitLab for this, it would
be better if we didn't rely on it as GitLab may decide at any time to be
not as generous in the future. Therefore we are continuing to reducing our
dependency on such infrastructure.</p>
<p>Among other things, we hope that these changes will allow us to continue
supporting more main and community devices - where we provide prebuilt images -
and leave us room for some other experiments we have in mind.</p>
<h2 id="testing-and-ci"><a class="toclink" href="#testing-and-ci">Testing and CI</a></h2>
<p>Testing is one of the things that currently holds us back. We support so many
devices with so many different configurations that making changes to some of our
more core components (like the initramfs) is extremely difficult. The testing
team <a href="https://wiki.postmarketos.org/wiki/Testing_Team">which you can join here</a>
helps a lot, but it's certainly understandable that folks may not want to
test potentially risky changes, or some of the more boring housekeeping things.
It can also be challenging to provide a good method for <em>how</em> to test some
features (i.e. if it's not a codepath which is hit under normal usage).</p>
<p>Writing a testing guide is always useful, but there's no reason we can't do
better - we already have the wonderful <code>pmbootstrap ci</code> command which lets you
run CI for most of our repos locally, and we plan to have proper automated
testing eventually which will let us properly validate a lot of the most
important things.</p>
<h2 id="so-whats-new"><a class="toclink" href="#so-whats-new">So what's new?</a></h2>
<p>The month of December has been surprisingly interesting, considering the time of
year and just how ready everyone seemed to be for the holidays.</p>
<ul>
<li><a href="/blog/2023/12/18/v23.12-release/">We released the stable v23.12 version</a>,
based on Alpine 3.19. Note that most of the other changes here are not
included in this stable release, but are available in our rolling edge
channel.</li>
<li>The postmarketOS team grew by one, with <a href="https://gitlab.com/TravMurav">Nikita
Travkin</a> being the first Trusted Contributor to
be elected with <a href="https://postmarketos.org/blog/2023/12/03/how-to-become-tc/">the new
process</a>.</li>
<li>postmarketOS gained support for 5 new devices, as well as a new generic x86_64
device for all your favourite x86 tablets, and even laptops or regular PCs.
Honorable mention to the Quartz64 which gained support in late November.</li>
<li>We shipped <a href="https://git.sr.ht/~martijnbraam/logbookd">logbookd</a>, a very cute
logging implementation which actually saves to storage(!!!), so you can
retrieve logs from previous boots. It also adds well-needed coloured output,
allows for some (slightly fuzzy) service filtering, and includes kernel logs
by default. Thanks Martijn.<ul>
<li>Shortly after, we
<a href="https://gitlab.com/postmarketOS/pmaports/-/commit/7efcec020d35491fae66e65c3bcad6e7c9d83638">fixed</a>
an issue where syslog wasn't actually being enabled, resulting in both
logbookd and openrc-syslog competing, oops!</li>
</ul>
</li>
<li>We <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4050">finally shipped sensors on
SDM845</a>, only
to discover that <a href="https://gitlab.com/postmarketOS/pmaports/-/commit/4a0a5456f1b0e0542cf666e6220457b414bece21">the OnePlus 6T accelerometer was upside
down</a>,
yes, this was a pretty bad lapse in testing to let this one through, and
definitely a lesson learnt.</li>
<li>The CODEOWNERS file <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4662">was cleaned up and gained its own
CI</a>, this will
help us keep it in shape and we eventually hope to have it for most devices so
that the correct folks get notified about changes to their devices. Thanks
Luca.</li>
<li>The postmarketOS artwork package <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4614">was
updated</a> to
correctly show up in GNOME wallpaper settings. Thanks Pablo.</li>
<li>The ARMv7 Tegra devices were <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4606">all moved
to</a> a common
device package, relying on U-Boot to pick the correct DTB. Amazing work
Svyatoslav (@Clamor).</li>
<li>cgroups are now <a href="https://gitlab.com/postmarketOS/pmaports/-/commit/bfa873343a78c066affc78cf8644bbf6d7763c10">enabled by
default</a>,
to simplify using services like Docker or many of the other things cgroups are
useful for. Thanks Clayton.</li>
<li>Unl0kr <a href="https://gitlab.com/postmarketOS/pmaports/-/commit/0aa9524204e9c9c002c860b87c972bc2ebf025f3">was
upgraded</a>
with a workaround to fix inputs being dropped when typing fast on a physical
keyboard. Thanks Jane and Ollie <a href="https://github.com/calebccff/lv_drivers/pull/5">for implementing the
fix</a>.</li>
<li>systemd-boot was
<a href="https://gitlab.com/postmarketOS/pmaports/-/commit/e9ccc5ae232a510c428cc014e3c16eea4d80d338">upgraded</a>
with an important patch landing upstream, and other improvements. Thanks
Clayton.</li>
<li>A whole lot of <a href="https://lomiri.com/">Lomiri</a> packages have been
<a href="https://pkgs.alpinelinux.org/packages?name=*lomiri*&branch=edge&repo=&arch=aarch64&maintainer=">making their way into Alpine</a>,
bringing us ever closer to Lomiri on postmarketOS. This is thanks to a
longstanding effort by <a href="https://fosstodon.org/@z3ntu">Luca Weiss</a>, and more
recently <a href="https://mstdn.social/@justsoup">@Justsoup</a>.</li>
</ul>
<h2 id="and-whats-next"><a class="toclink" href="#and-whats-next">And what's next?</a></h2>
<p>Currently in the pipeline are quite a few really nice improvements, feel free to
check them out and test them (only IF they ask for testing!) - but please try
not to bother developers. In no particular order:</p>
<ul>
<li>Using <a href="https://gitlab.com/groups/postmarketOS/-/epics/2">kernel config
fragments</a> for kernel
configuration, instead of having full-blown kernel configs next to each
kernel and testing it with CI checks.</li>
<li>A way to <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4646">retrieve logs on failed
boots</a>, this
will make it much easier for users to report bugs and provide enough useful
information that they can be properly triaged.</li>
<li>Amlogic boards will be <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4601">switching to upstream
U-Boot</a>! A
really nice improvement.</li>
<li>The generic x86_64 device is <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4673">gaining vendor-specific
features</a> such
as intel/AMD microcode. These will be pre-installed, but able to be removed to
save on space.</li>
<li>We recorded a podcast episode at the end of November, which is <em>still not
out yet</em> for various reasons (it's been a really busy holiday season!). This
will be out soon, but in the mean time you can check out
<a href="https://media.ccc.de/c/37c3">all the awesome talks from 37c3</a>
(fun fact: together with linmob we
<a href="https://linmob.net/37c3/">almost had a Linux Mobile assembly</a> there).</li>
<li>FOSDEM 2024 is coming up! If you are there, check out the
<a href="https://fosdem.org/2024/schedule/track/foss-on-mobile-devices/">FOSS on Mobile Devices</a>
devroom, and the <a href="https://fosdem.org/2024/news/2023-11-20-accepted-stands-fosdem-2024/">Linux on Mobile</a>
stand.</li>
</ul>
<h2 id="conclusion"><a class="toclink" href="#conclusion">Conclusion</a></h2>
<p>It has been a while since we did the postmarketOS in YYYY-MM blog posts. This
is an experiment to bring them back. Let us know if you enjoyed reading this
post. Depending on that (and depending on just how much other stuff needs to be
done), we may write them more regularly again.</p>
<p>If you appreciate the work we're doing on postmarketOS, and want to support us,
consider <a href="https://opencollective.com/postmarketos">joining our OpenCollective</a>.</p>v23.12: The One We Asked The Community To Namehttps://postmarketos.org/blog/2023/12/18/v23.12-release/2023-12-18T00:00:00+00:00<p><a href="/static/img/2023-12/v23.12.webp"><img alt="A big variation of the postmarketOS logo, around it are phones with Sxmo, Plasma Mobile, Phosh and GNOME Shell on Mobile; the phones are lying on top of lots of postmarketOS stickers on a piece of cardboard." class="wfull border" src="/static/img/2023-12/v23.12.webp" /></a></p>
<p>The year is coming to a close. As always, it is the time to reflect and to get
the second stable postmarketOS release of the year done. postmarketOS v23.12 is
based on the excellent
<a href="https://alpinelinux.org/posts/Alpine-3.19.0-released.html">Alpine Linux 3.19</a>.
Besides upgrading everything to new versions, for the first time we have
support for a lot of Chromebooks and
<a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_450/625/626/632_(MSM8953)">MSM8953</a>-based
Xiaomi devices!</p>
<p>v23.12, like previous releases, is geared mainly towards Linux
enthusiasts as explained in our article <a href="/state">state of postmarketOS</a>.</p>
<h2 id="supported-devices"><a class="toclink" href="#supported-devices">Supported Devices</a></h2>
<p>The amount of supported devices has been increased to 45 (from 31 since
<a href="/blog/2023/06/07/v23.06-release/">v23.06</a>).</p>
<p><div class="grid"><div class="grid-side">
<p><a href="https://wiki.postmarketos.org/wiki/File:Google-peach-pit-mate.jpg"><img alt="Photo of the google-peach-pit chromebook" class="w300 border" src="/static/img/2023-12/Google-peach-pit-mate.jpg" /></a>
<br><span class="w300">
postmarketOS v23.12 can be used to breathe new life into the Samsung
Chromebook 2 11.6" and many other Chromebooks for the first time!
</span></p>
<p><a href="/static/img/2023-12/msm8953.webp"><img alt="Photo of a bunch of MSM8953 devices" class="w300 border" src="/static/img/2023-12/msm8953.webp" /></a>
<br><span class="w300">
A typical gathering of MSM8953 devices running postmarketOS v23.12.
</span></p>
</div><div class="grid-text">
<ul>
<li>ASUS MeMO Pad 7</li>
<li>Arrow DragonBoard 410c</li>
<li>BQ Aquaris X5</li>
<li>Fairphone 4</li>
<li>Google Chromebooks with x64 CPU <span class="new">new</span></li>
<li>Google Gru Chromebooks <span class="new">new</span></li>
<li>Google Kukui Chromebooks <span class="new">new</span></li>
<li>Google Oak Chromebooks <span class="new">new</span></li>
<li>Google Trogdor Chromebooks <span class="new">new</span></li>
<li>Google Veyron Chromebooks <span class="new">new</span></li>
<li>Lenovo A6000</li>
<li>Lenovo A6010</li>
<li>Motorola Moto G4 Play</li>
<li>Nokia N900</li>
<li>ODROID XU4 <span class="new">new</span></li>
<li>OnePlus 6</li>
<li>OnePlus 6T</li>
<li>PINE64 PinePhone</li>
<li>PINE64 PinePhone Pro</li>
<li>PINE64 Pinebook Pro</li>
<li>PINE64 RockPro64</li>
<li>Purism Librem 5</li>
<li>SHIFT6mq</li>
<li>Samsung Chromebook <span class="new">new</span></li>
<li>Samsung Chromebook 2 11.6" <span class="new">new</span></li>
<li>Samsung Galaxy A3 (2015)</li>
<li>Samsung Galaxy A5 (2015)</li>
<li>Samsung Galaxy E7</li>
<li>Samsung Galaxy Grand Max</li>
<li>Samsung Galaxy S III (GT-I9300 and SHW-M440S)</li>
<li>Samsung Galaxy S4 Mini Value Edition</li>
<li>Samsung Galaxy Tab 2 7.0"</li>
<li>Samsung Galaxy Tab 2 10.1"</li>
<li>Samsung Galaxy Tab A 8.0</li>
<li>Samsung Galaxy Tab A 9.7</li>
<li>Wileyfox Swift</li>
<li>Xiaomi Mi A1 <span class="new">new</span></li>
<li>Xiaomi Mi A2 Lite <span class="new">new</span></li>
<li>Xiaomi Mi Note 2</li>
<li>Xiaomi Pocophone F1</li>
<li>Xiaomi Redmi 2</li>
<li>Xiaomi Redmi 4 Prime <span class="new">new</span></li>
<li>Xiaomi Redmi 5 Plus <span class="new">new</span></li>
<li>Xiaomi Redmi Note 4 <span class="new">new</span></li>
<li>Xiaomi Redmi S2/Y2 <span class="new">new</span></li>
</ul>
</div></div>
<p>The ODROID HC2 is not available in v23.12 anymore. It can still be used with
postmarketOS edge. If you are interested in getting it back into the stable
release, the first step would be you stepping up to maintain the port - let us
know in the issues or chat.</p>
<h3 id="user-interfaces"><a class="toclink" href="#user-interfaces">User Interfaces</a></h3>
<!-- ordered alphabetically -->
<ul>
<li>
<p><a href="https://release.gnome.org/45/">GNOME Shell on Mobile 45_git20230908</a>
replaces 44_git20230405 from v23.06</p>
</li>
<li>
<p><a href="https://phosh.mobi/releases/rel-0.33.0/">Phosh 0.33</a>
replaces version 0.30 from v23.06 SP1.</p>
</li>
<li>
<p><a href="https://kde.org/announcements/plasma/5/5.27.10/">Plasma 5.27.10</a>
replaces version 5.27.8 from v23.06.</p>
</li>
<li>
<p><a href="https://lists.sr.ht/~mil/sxmo-announce/%3CCXIQYCSF6FI9.28OPMYXGT91GL%40willowbarraco.fr%3E">Sxmo 1.15.1</a>
replaces version 1.14.0 from v23.06.</p>
</li>
</ul>
<h2 id="notable-changes"><a class="toclink" href="#notable-changes">Notable Changes</a></h2>
<ul>
<li>
<p>Unlocking of encrypted installations is now done with
<a href="https://gitlab.com/cherrypicker/unl0kr">unl0kr</a> by default, the
successor to osk-sdl (<a href="/edge/2023/10/04/osk-sdl-deprecated/">more</a>).</p>
</li>
<li>
<p>The default USB networking gadget was changed from RNDIS to NCM
(<a href="/edge/2023/10/29/rndis-ncm/">more</a>).</p>
</li>
<li>
<p>The default image viewer in Phosh and GNOME is now Loupe, instead of
previously Eye of GNOME (EoG) (<a href="/edge/2023/08/24/eog-replaced-with-loupe/">more</a>)</p>
</li>
<li>
<p>The <a href="https://wiki.postmarketos.org/wiki/Upgrade_to_a_newer_postmarketOS_release">release upgrade process</a>
has been made more robust. There are additional safety checks for a too small
boot partition and for having hardcoded versions or packages installed via
<a href="https://wiki.postmarketos.org/wiki/Mrtest">mrtest</a>. Additionally a bug was
fixed that caused Alpine mirrors without <code>/alpine/</code> in the URL to not get
properly replaced during the upgrade.</p>
</li>
<li>
<p>Installation images have been removed. We used to provide these for the
PinePhone (Pro), Librem 5 and Pinebook Pro as a convenient method to install
postmarketOS encrypted without building your own image with pmbootstrap
first, and to install from micro SD cards to the internal storage. A rewrite
of the installer code has been in progress for quite some time, with the goal
to support more devices and to have a more automated testing. The new code
base is not ready yet however, and due to regressions with the old code base
it was not feasible to keep the installer images for v23.12. So it was
decided to adjust the installation instructions in the wiki for the affected
devices to explain how the same types of installations can be accomplished
without the installer images for v23.12.</p>
</li>
<li>
<p>ZRAM can be enabled via the following command. We plan to enable it
automatically once it is more tested in edge (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4598">!4598</a>).</p>
</li>
</ul>
<div class="codehilite"><pre><span></span><code># rc-update add zram-init default
</code></pre></div>
<h2 id="testing-and-known-issues"><a class="toclink" href="#testing-and-known-issues">Testing And Known Issues</a></h2>
<p>A <em>huge thank you</em> to device maintainers and the testing team, and people who
spontaneously decided to take part in testing this new release
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2409">#2409</a>) and fixing bugs right before finalizing it! If you
would like to join the fun next time, add yourself to the
<a href="https://wiki.postmarketos.org/wiki/Testing_Team">Testing Team</a>.</p>
<p>Notable regressions:</p>
<ul>
<li><a href="https://gitlab.com/postmarketOS/postmarketos-release-upgrade/-/issues/15">#15</a>: we got one report of getting stuck
at boot with <code>unsupported 'crypto_LUKS' filesystem</code>. This was after upgrading
a PinePhone install with FDE. If you are also affected, please report back
and see the issue for workarounds.</li>
<li><a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2434">#2434</a>: shift-axolotl: boot fails with FDE</li>
<li><a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2407">#2407</a>: shift-axolotl: audio profiles broken</li>
</ul>
<p>Notable issues with new device ports:</p>
<ul>
<li><a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2435">#2435</a>: google-oak: audio is broken</li>
<li><a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2375">#2375</a>: google-veyron: USB port dead after resume/wakeup</li>
</ul>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How To Get It</a></h2>
<h3 id="new-installation"><a class="toclink" href="#new-installation">New Installation</a></h3>
<p>For new installs, see <a href="/download">download</a> and make sure to read the wiki page
for <a href="https://wiki.postmarketos.org/wiki/Devices">your device</a>.</p>
<h3 id="upgrade"><a class="toclink" href="#upgrade">Upgrade</a></h3>
<p>For existing installations, see the
<a href="https://wiki.postmarketos.org/wiki/Upgrade_to_a_newer_postmarketOS_release">upgrade to a newer postmarketOS release</a>
wiki article.</p>
<p>Recommended manual steps after upgrading:</p>
<ul>
<li><a href="/edge/2023/10/04/osk-sdl-deprecated/">Replace osk-sdl with unl0kr</a></li>
<li><a href="/edge/2023/08/24/eog-replaced-with-loupe/">Replace eog with loupe</a></li>
</ul>
<h2 id="the-road-ahead"><a class="toclink" href="#the-road-ahead">The Road Ahead</a></h2>
<p>Members of the postmarketOS community and wider Linux Mobile scene can be found
at <a href="https://linmob.net/37c3-assembly/">37C3</a> and
<a href="https://fosdem.org/2024/">FOSDEM 2024</a> (see the related stand and devroom). We
have a lot of plans for postmarketOS for 2024 and beyond, towards making it
more reliable and more! To accelerate that development, consider
<a href="https://wiki.postmarketos.org/wiki/Contributing">contributing</a> or
<a href="/blog/2023/12/14/pmos-on-oc/">making a donation</a>.</p>
<h2 id="a-community-effort"><a class="toclink" href="#a-community-effort">A Community Effort</a></h2>
<p>A big thanks to everybody who contributed to postmarketOS, to Alpine or to any
of the numerous upstream components we use — without you this would not be
possible!</p>postmarketOS needs your help!https://postmarketos.org/blog/2023/12/14/pmos-on-oc/2023-12-14T00:00:00+00:00<p>We'd like to announce that <a href="https://opencollective.com/postmarketos">postmarketOS is now accepting donations on Open
Collective</a>!</p>
<p>This is a big change for us; until now we've accepted donations but have
largely discouraged them because frankly we've had little use for them. We
thought it was somewhat pointless to ask folks for donations and have the money
sitting around waiting for something to happen with it...</p>
<p>But times are changing! And we now have some pretty good reasons for accepting
donations!</p>
<h3 id="what-has-changed"><a class="toclink" href="#what-has-changed">What has changed?</a></h3>
<p>postmarketOS now has one developer working full-time (our very own
<a href="https://freeradical.zone/@craftyguy/111506290148662542">craftyguy</a>),
with the likelihood that more will join in the future. Donations will be used
to pay developers for their work, and it will have a direct impact on how fast
postmarketOS development can go.</p>
<p><a href="https://postmarketos.org/blog/2023/05/21/call-for-testers/">Our testing team</a>
is excellent, and we would like to support them further by designing new
infastructure for automated testing/CI on real devices that folks want to use
with postmarketOS. Donations will be used to pay for this new infrastructure
and its ongoing maintenance.</p>
<p>"Hackathons", where we bring postmarketOS developers from all over to one
physical location to work on postmarketOS together, have been extremely valuable
for accelerating postmarketOS development. Donations will be used to fund these
events and associated travel costs.</p>
<h3 id="why-open-collective"><a class="toclink" href="#why-open-collective">Why Open Collective?</a></h3>
<p>All contributions and expenses are public on Open Collective, so our finances
are completely transparent. Anyone at any time can see how we are funded and
what we are spending money on.</p>
<p>Our fiscal host on the platform is Open Collective Europe. We chose them
because we believe their values/goals are closely aligned with ours and they
have experience hosting other established free software project. Open
Collective Europe allows us to operate as a non-profit organization (NPO) and
frees up some of our time from having to manage finances. </p>
<p>Going forward, this is the preferred way to contribute financially to
postmarketOS.</p>
<p>We'd also like to extend a <strong>big</strong> thank you to NLnet, our previous fiscal
host, for their many years of service!</p>
<p>As postmarketOS continues to grow, we must adapt to enable ourselves to scale
up both as a stabilising distribution, and as a community of users and
developers who want to actually own the hardware they paid for.
By donating to us, you contribute to our long term sustainability and help us
prove that "free" software doesn't have to come with a catch.</p>
<p>Please consider donating on <a href="https://opencollective.com/postmarketos">our Open Collective
page</a> if you can, your help is greatly
appreciated!</p>How to become a Trusted Contributorhttps://postmarketos.org/blog/2023/12/03/how-to-become-tc/2023-12-03T00:00:00+00:00<p>During the past team meetings, we have reworked the process for becoming a
Trusted Contributor (TC). To make it easier, more transparent, and to allow the
postmarketOS community to continue to grow as we review and integrate an
increasing amount of patches to improve stability, bring cool new features and
support more and more devices and usecases.</p>
<h2 id="what-is-a-trusted-contributor"><a class="toclink" href="#what-is-a-trusted-contributor">What is a Trusted Contributor?</a></h2>
<p>In postmarketOS, a Trusted Contributor is somebody who:</p>
<ul>
<li>...has been supporting the project through positive contributions for a long
time (could be own patches or just code review)</li>
<li>...has a good idea of how the project works, what our standards are regarding
<a href="https://postmarketos.org/coc">Code Of Conduct</a>, for getting devices into
various
<a href="https://wiki.postmarketos.org/wiki/Device_categorization">categories</a>,
<a href="https://wiki.postmarketos.org/wiki/Rules_for_merging">rules for merging</a>,
etc.</li>
</ul>
<p>They have the responsibilities and permissions to:</p>
<ul>
<li>Merge patches into most branches</li>
<li>Do code reviews (a bit more officially than a regular community member, they
can hit the approve button.)</li>
<li>Close/move issues</li>
</ul>
<p>Additional perks for TCs:</p>
<ul>
<li>A faster moving project! Our development workflow involves code review for
most repositories (pmaports, etc.), so the more active TCs we have giving
meaningful code reviews, the faster everyone's patches can get merged.</li>
<li>Regular reviewers may prioritize each others patches as it makes sense.</li>
<li>If desired, a possibility to become a Core Team member at some point.
This is completely optional, as being a Core Team member means additional
responsibilities (see below), and may as such not be desirable for every TC.
We had people stepping down from the Core Team to becoming a TC in the past
for being able to better focus on TC tasks / writing patches.</li>
<li>Fame and glory of being a Trusted Contributor! In all seriousness, it is
very useful to be able to point out just how much you have been contributing
to free software projects in your free time, e.g. when applying for a job.</li>
</ul>
<h2 id="why-we-needed-a-new-process"><a class="toclink" href="#why-we-needed-a-new-process">Why we needed a new process</a></h2>
<p>The previous process was not documented anywhere. But it was more or less: be
very active in the project for a long time until a Core Team member notices
your activity and asks you if you would like to become a Trusted Contributor.</p>
<p>This had several downsides:</p>
<ul>
<li>The time until a potential new TC gets noticed would not be consistent.</li>
<li>Due to not being documented, it was not apparent at all how one could become
a TC or that we even want people to get involved to the point that they could
become new TCs.</li>
<li>It is very likely that this lead to less people becoming a TC, which in turn
means slower patch reviews and overall slower progress for postmarketOS.</li>
</ul>
<h2 id="the-new-process"><a class="toclink" href="#the-new-process">The new process</a></h2>
<p>From now on we have this three step process for becoming a TC:</p>
<ol>
<li>
<p>Be active in the community (postmarketOS, Alpine or related projects) for at
least six months, doing all of these:</p>
<ul>
<li>Submit your own patches, and take part in the code review process from
patch author's side.</li>
<li>Do code reviews of other people's patches.</li>
<li>Help out in issues, community chats, etc.</li>
</ul>
</li>
<li>
<p>Take note of the Core Team members and Trusted Contributors that you have
interacted most with (<a href="https://wiki.postmarketos.org/wiki/Team_members">who?</a>).
You will need two people from TC or the Core Team to endorse you becoming TC.</p>
</li>
<li>
<p>Apply as Trusted Contributor by
<a href="https://gitlab.com/postmarketOS/apply-for-trusted-contributor/-/issues/new">creating a confidential issue</a>.
A <a href="https://gitlab.com/postmarketOS/apply-for-trusted-contributor/-/blob/master/.gitlab/issue_templates/Default.md">template</a>
asks you about your prior experience in postmarketOS etc.</p>
</li>
</ol>
<h2 id="who-are-these-core-team-members-you-have-been-talking-so-much-about"><a class="toclink" href="#who-are-these-core-team-members-you-have-been-talking-so-much-about">Who are these Core Team members you have been talking so much about?</a></h2>
<p>In addition to TCs, the governance model of postmarketOS also has a Core Team.
They have the same duties as TCs, but additionally:</p>
<ul>
<li>Need to take part in (often very long)
<a href="https://wiki.postmarketos.org/wiki/Core_Team_Meetings">meetings</a>
to discuss and steer the direction of the project</li>
<li>Take care of behind-the-scenes organizational matters, maintain our
infrastructure, etc.</li>
<li>Create releases and service packs</li>
<li>Make releases of pmOS projects (pmbootstrap, postmarketos-mkinitfs, ...)</li>
</ul>
<p>We considered making a process for becoming a Core Team member as well. But
given that we currently have eight Core Team members and the overhead actually
increases to organize and do related team meetings with each new team member
(contrary to the code review process, where more TCs mean faster code
review), we do not plan to accept new team members at the moment. However if
somebody already is a TC and is convinced that it would be good for
postmarketOS if they became a Core Team member, and they would have the time
to actually do it: reach out to the Core Team via private message on matrix or
email, and we may consider it.</p>
<h2 id="moving-forward"><a class="toclink" href="#moving-forward">Moving forward</a></h2>
<p>So this is the process we came up with, and it may change as we refine and
learn from the results. We have a lot more exciting things planned, but let's
get the v23.12 release out first. Happy hacking!</p>v23.06 SP1: Through Staginghttps://postmarketos.org/blog/2023/09/10/v23.06-sp1/2023-09-10T00:00:00+00:00<p><a href="/static/img/2023-09/n900_sp1.jpg"><img alt="Nokia N900 with v23.06 SP1 installed, showing a terminal with neofetch, on top of the latest c't magazine with an article about postmarketOS in which the string "Nokia N900" was highlighted manually with a text marker" class="wfull border" src="/static/img/2023-09/n900_sp1.jpg" /></a></p>
<p>Yes, it is still possible to receive up-to-date software for the Nokia N900 in
2023. You can install postmarketOS v23.06 SP1 on it and upcycle it, possibly as
SSH client on-the-go with its glorious hardware keyboard. Or use it as small
webserver for a home project with built-in uninterruptible power supply, as
mentioned in the c't magazine article in the picture. This service pack brings
quite a few improvements for the N900, such as a power button action prompt
that shows up when you press the power button and an improved terminal with a
scrollbar.</p>
<p>"Through Staging" is the title of the service pack, because for the first time,
it was available in a
<a href="https://wiki.postmarketos.org/wiki/Staging_repositories">staging repository</a>
before the release. This allowed testing it without building packages locally
beforehand. If you would like to get early access to future service packs,
consider joining the
<a href="https://wiki.postmarketos.org/wiki/Testing_Team">testing team</a>.</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<p>All devices:</p>
<ul>
<li>Phosh upgrade from 0.27.0 to <a href="https://phosh.mobi/releases/rel-0.30.0/">0.30.0</a>
(phosh, phoc, squeekboard, phosh-mobile-settings)</li>
<li>temp/gtk+3.0: fix Phosh boot splash (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4332">!4332</a>)</li>
<li>temp/gtk+3.0: upgrade to 3.24.37-2pureos3 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4261">!4261</a>)</li>
<li>main/postmarketos-base-ui: depend on tzdata (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4175">!4175</a>)</li>
<li>main/postmarketos-base: migrate wrong timezone configurations (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4308">!4308</a>) (*)</li>
<li>cross/crossdirect: improve rust handling (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4234">!4234</a>)</li>
<li>linux-postmarketos-omap: upgrade to 6.4.3 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4253">!4253</a>) (*)</li>
<li>linux-postmarketos-exynos4: upgrade to 6.4.2 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4241">!4241</a>) (*)</li>
<li>linux-postmarketos-qcom-sm6350: upgrade to 6.4.2 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4236">!4236</a>) (*)</li>
<li>main/mobile-config-firefox: upgrade to 4.0.3 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4232">!4232</a>) (*)</li>
<li>temp/gnome-shell-mobile: add desktop-file-utils dependency (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4210">!4210</a>) (*)</li>
<li>main/postmarketos-mkinitfs-hook-*: show Loading splash once done (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4212">!4212</a>) (*)</li>
</ul>
<p>Nokia N900:</p>
<ul>
<li>Restore modem (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4320">!4320</a>, <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4282">!4282</a>)</li>
<li>Let user choose power button action (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4312">!4312</a>)</li>
<li>Switch to urxvt terminal (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4312">!4312</a>)</li>
<li>Increase terminal and i3 font sizes (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4363">!4363</a>)</li>
<li>Fix hwkbd on unl0kr (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4320">!4320</a>)</li>
<li>Fix volume keys on N900 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4228">!4228</a>)</li>
<li>Use elogind for suspend (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4312">!4312</a>)</li>
<li>Drop broken conky default config (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4309">!4309</a>)</li>
<li>Do not open terminal for nagbar actions (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4320">!4320</a>)</li>
<li>Re-add twl for basic soc reset (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4321">!4321</a>) (*)</li>
<li>Disable twl off idle features (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4317">!4317</a>) (*)</li>
<li>Block non-critical modules (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4227">!4227</a>) (*)</li>
</ul>
<p>PINE64 PineBook Pro:</p>
<ul>
<li>Enable s2idle in elogind (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4194">!4194</a>)</li>
</ul>
<p>Purism Librem 5:</p>
<ul>
<li>Kernel upgrade to 6.4.5pureos1 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4355">!4355</a>) (*)</li>
</ul>
<p><code>(*)</code>: These fixes were already backported to v23.06 before releasing SP1.</p>
<h2 id="notes"><a class="toclink" href="#notes">Notes</a></h2>
<p>For users upgrading from before v23.06 SP1: some of the N900 improvements
require manually copying the defaults from <code>/etc/skel</code> to your home dir.</p>
<p>Running out of space after installing v23.06 on Android devices is a known bug
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2235">#2235</a>). Read the issue for workarounds, a fix is being
developed.</p>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users
of the v23.06 release will receive this service pack automatically on their
next system update. If you read this blog post right after it was published, it
may take a bit until binary packages and new images are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community
members and upstream projects.</p>v23.06: From the GNOME Mobile 2023 Hackfesthttps://postmarketos.org/blog/2023/06/07/v23.06-release/2023-06-07T00:00:00+00:00<p><a href="/static/img/2023-06/v23.06.jpg"><img alt="A lot of phones on a table, most of them running postmarketOS (also one with a Debian logo), and lots of stickers, mostly for postmarketOS, and a beer coaster of the cultivation space" class="wfull border" src="/static/img/2023-06/v23.06.jpg" /></a></p>
<p>After FOSDEM 2023 a few people found themselves hacking collaboratively on
postmarketOS in a local cafe in Brussels. It was so productive and fun that we
figured doing a proper hackathon this year would be great. While we were
planning, we realized that also a GNOME Mobile Hackfest would take place soon —
so we just did a postmarketOS hackathon right before GNOME Mobile's event. In
fact, this post and the release are brought to you right from the Hackfest!</p>
<p>v23.06, like previous releases, is geared mainly towards Linux
enthusiasts as explained in our article <a href="/state">state of postmarketOS</a>.</p>
<h2 id="supported-devices"><a class="toclink" href="#supported-devices">Supported devices</a></h2>
<p>This stable release is available for the following 31 devices:</p>
<ul>
<li>ASUS MeMo Pad 7</li>
<li>Arrow DragonBoard 410c</li>
<li>BQ Aquaris X5</li>
<li>Fairphone 4</li>
<li>Lenovo A6000</li>
<li>Lenovo A6010</li>
<li>Motorola Moto G4 Play</li>
<li>Nokia N900</li>
<li>ODROID HC2</li>
<li>OnePlus 6</li>
<li>OnePlus 6T</li>
<li>PINE64 PineBook Pro</li>
<li>PINE64 PinePhone</li>
<li>PINE64 PinePhone Pro</li>
<li>PINE64 RockPro64</li>
<li>Purism Librem 5</li>
<li>SHIFT6mq</li>
<li>Samsung Galaxy A3 (2015)</li>
<li>Samsung Galaxy A5 (2015)</li>
<li>Samsung Galaxy E7</li>
<li>Samsung Galaxy Grand Max</li>
<li>Samsung Galaxy S III (GT-I9300 and SHW-M440S)</li>
<li>Samsung Galaxy S4 Mini Value Edition</li>
<li>Samsung Galaxy Tab 2 7.0"</li>
<li>Samsung Galaxy Tab 2 10.1"</li>
<li>Samsung Galaxy Tab A 8.0</li>
<li>Samsung Galaxy Tab A 9.7</li>
<li>Wileyfox Swift</li>
<li>Xiaomi Mi Note 2</li>
<li>Xiaomi Pocophone F1</li>
<li>Xiaomi Redmi 2</li>
</ul>
<p>The list is the same as in the previous v22.12 release (+ SP1), except that the PineTab
has been removed. The PineTab can still be used with postmarketOS edge. If you
are interested in getting it back to the stable release, the first step would
be you stepping up to maintain the port - let us know in the issues or chat.</p>
<h2 id="highlights"><a class="toclink" href="#highlights">Highlights</a></h2>
<ul>
<li>
<p>For the first time, this stable release includes GNOME Mobile! If you haven't
followed the amazing progress that was made to bring GNOME to phones and
tablets, see
<a href="https://blogs.gnome.org/shell-dev/2022/05/30/towards-gnome-shell-on-mobile/">Towards GNOME Shell on Mobile</a>,
<a href="https://blogs.gnome.org/shell-dev/2022/09/09/gnome-shell-on-mobile-an-update/">GNOME Shell on mobile: An update</a>
and <a href="https://conf.linuxappsummit.org/event/5/contributions/161/">GNOME Mobile Show & Tell</a>
(<a href="https://www.youtube.com/live/watch?v=J7-3Qj_oVMM&t=14272">video</a>).</p>
</li>
<li>
<p><a href="https://blogs.gnome.org/pabloyoyoista/2023/03/05/gs-and-pmos-a-bumpy-road/">Lots of improvements to GNOME Software</a></p>
</li>
<li>
<p>Translations (<code>lang</code>) is installed by default now, and the default locale is
<code>en_US.UTF-8</code> instead of <code>C.UTF-8</code></p>
</li>
<li>
<p>USB tethering is now functional
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3819">pma!3816</a>)</p>
</li>
<li>
<p>Minimum password length in installer images has been changed from 8 to 6</p>
</li>
<li>
<p>PineBook Pro: backlight control and audio works by default</p>
</li>
</ul>
<h3 id="user-interfaces"><a class="toclink" href="#user-interfaces">User Interfaces</a></h3>
<!-- ordered alphabetically -->
<ul>
<li>
<p>GNOME Shell on Mobile 44_git20230405 <span class="new">new</span></p>
</li>
<li>
<p><a href="https://gitlab.gnome.org/World/Phosh/phosh/-/releases/v0.27.0">Phosh 0.27</a>
replaces version 0.26 from v22.12 SP2. The document viewer Evince has been
added to the apps that get installed by default.</p>
</li>
<li>
<p><a href="https://plasma-mobile.org/2023/01/30/january-blog-post/">Plasma 5.27.5</a>
replaces version 5.26.5 from v22.12.</p>
</li>
<li>
<p><a href="https://lists.sr.ht/~mil/sxmo-announce/%3CCRJLVDQWO5TS.3BLF8Y8EG3GGG%40yellow-orcess%3E">Sxmo 1.14.0</a>
replaces version 1.12.0 from v22.12.</p>
</li>
</ul>
<h2 id="testing-and-known-issues"><a class="toclink" href="#testing-and-known-issues">Testing and known issues</a></h2>
<p>A huge thanks to everyone at the newly formed
<a href="https://wiki.postmarketos.org/wiki/Testing_Team">Testing Team</a>, who helped
greatly in finding and getting a number of regressions and bugs fixed right
before finalizing the release!</p>
<p>Notable regressions:</p>
<ul>
<li>Sxmo on Pocophone F1: screen keeps waking up
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2160">#2160</a>)</li>
<li>A3/A5/A7/E5/E7/Grand Max: audio regressions, e.g. speaker is not set to mono
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1788">#1788</a>)</li>
<li>Nokia N900: does not boot from pre-built image (workaround: install with pmbootstrap)
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/2161">#2161</a>)</li>
</ul>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How To Get It</a></h2>
<h3 id="new-installation"><a class="toclink" href="#new-installation">New installation</a></h3>
<p>For new installs, see <a href="/download">download</a> and make sure to read the wiki page
for <a href="https://wiki.postmarketos.org/wiki/Devices">your device</a>.</p>
<h3 id="upgrade"><a class="toclink" href="#upgrade">Upgrade</a></h3>
<p>For existing installations, see the
<a href="https://wiki.postmarketos.org/wiki/Upgrade_to_a_newer_postmarketOS_release">upgrade to a newer postmarketOS release</a>
wiki article. Note that you still need to make sure to have a stable network
connection when performing the release upgrade (there were plans to make it
more resilient, but it wasn't possible to do it in time for the release).</p>
<p>Manual steps after upgrading to this release:</p>
<ul>
<li>If you have <code>gnome-software</code> installed, make sure to also install <code>gnome-software-plugin-apk</code></li>
<li>Librem 5: to make the camera work, remove megapixels and install millipixels</li>
<li>Consider installing <code>lang</code> for translations</li>
<li>Consider removing <code>postmarketos-hidden-desktop-entries</code>
(<a href="https://postmarketos.org/edge/2023/05/22/removed-hidden-entries/">more information</a>)</li>
</ul>
<h2 id="a-community-effort"><a class="toclink" href="#a-community-effort">A community effort</a></h2>
<p>A big thanks to everybody who contributed to postmarketOS, to Alpine or to any
of the numerous upstream components we use — without you this would not be
possible!</p>Call For Testershttps://postmarketos.org/blog/2023/05/21/call-for-testers/2023-05-21T00:00:00+00:00<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-12/op6.jpg"><img alt="OnePlus 6 on the beach, showing a terminal" class="w200 border" src="/static/img/2021-12/op6_thumb.jpg" /></a>
</div><div class="grid-text">
<p><a href="https://alpinelinux.org/posts/Alpine-3.18.0-released.html">Alpine Linux 3.18</a>
has been released recently, which means the next postmarketOS release v23.06
will be available
<a href="https://wiki.postmarketos.org/wiki/Creating_a_release_branch#Timeline">shortly</a>.</p>
<p>In preparation for the release we created a new testing team. This is our way
of getting the community directly involved into the testing process, which has
been mostly done by the developers before. If you are already a postmarketOS
user, consider joining the testing team to make sure that the new release runs
as good as possible on your particular phone! After the release, we plan to
make service packs available early to the testing team as well.</p>
<p>=> <em><a href="https://wiki.postmarketos.org/wiki/Testing_Team">Read more about / join the testing team</a></em></p>
</div></div>
<p>While they won't make it into the v23.06 release just yet, recently a lot of
<a href="https://wiki.postmarketos.org/wiki/Chrome_OS_devices">Chrome OS devices</a>
were added to postmarketOS edge. A lot of those Chromebooks
are so similar that in theory they should work even though we were only able to
actually test on a few of them. If you happen to own one of these many
Chromebooks and would like to run postmarketOS with a mainline Linux kernel on
it: Give it a try, <a href="/issues">write an issue</a> if it does not work, and consider
joining the testing team to get new changes first and make sure we catch
regressions for your particular device.</p>
<p>On the topic of testing, stability and support expectations, etc. we also have
a new <a href="/state">state of postmarketOS</a> page.</p>
<p>That's it for today, stay tuned for the v23.06 release and have a nice day!</p>v22.12 SP2: The One With The Nice Pull-Down Menuhttps://postmarketos.org/blog/2023/04/10/v22.12.2-release/2023-04-10T00:00:00+00:00<p><a href="/static/img/2023-04/sp2.jpg"><img alt="A SHIFT6mq standing on grass. It runs postmarketOS v22.12 SP2 with Phosh 0.26.0 and shows the nice pull-down menu." class="wfull border" src="/static/img/2023-04/sp2.jpg" /></a></p>
<p>Phosh upstream did this really nice Quick Settings menu style refresh that we
are happy to ship with this service pack, among other improvements. Without a
long introduction, enjoy the full list of changes:</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p>Phosh:</p>
<ul>
<li>Upgrade Phosh from 0.24.0 to <a href="https://gitlab.gnome.org/World/Phosh/phosh/-/releases/v0.26.0">0.26.0</a></li>
<li>Upgrade Phoc from 0.24.0 to <a href="https://gitlab.gnome.org/World/Phosh/phoc/-/releases/v0.26.0">0.26.0</a></li>
<li>Upgrade phosh-mobile-settings 0.24.1 to <a href="https://gitlab.gnome.org/guidog/phosh-mobile-settings/-/releases/v0.26.0">0.26.0</a></li>
</ul>
</li>
<li>
<p>Fix Waydroid: it was broken for several devices since the upstream image had
been updated to LineageOS 18 (Android 11) and required new kernel options
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3901">!3901</a>,
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3975">!3975</a>)</p>
</li>
<li>
<p>Tuba:</p>
<ul>
<li><a href="https://tuba.geopjr.dev/">Tuba</a> is a GTK4 Fediverse client, forked from
the unmaintained <a href="https://github.com/bleakgrey/tootle">tootle</a>.</li>
<li>Add version <a href="https://github.com/GeopJr/Tuba/releases/tag/v0.2.0">0.2.0</a></li>
</ul>
</li>
<li>
<p>mobile-config-firefox: upgrade from 3.2.0 to <a href="https://gitlab.com/postmarketOS/mobile-config-firefox/-/tags/4.0.0">4.0.0</a></p>
</li>
<li>
<p>Millipixels:</p>
<ul>
<li><a href="https://source.puri.sm/Librem5/millipixels/">Millipixels</a> is a fork of
the Megapixels camera application that works with the Librem 5.</li>
<li>Add version <a href="https://source.puri.sm/Librem5/millipixels/-/commit/a18031a561b63775a63394f7d962e099f0b6a09b">0.21.0</a></li>
<li>Upgrade dependency libcamera from 0.0.1 to <a href="https://github.com/libcamera-org/libcamera/releases/tag/v0.0.4">0.0.4</a></li>
</ul>
</li>
<li>
<p>Purism Librem 5</p>
<ul>
<li>Upgrade kernel from 6.2.0 to 6.2.8
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3986">!3986</a>)</li>
<li>Upgrade librem5-base from 54 to
<a href="https://source.puri.sm/Librem5/librem5-base/-/blob/7e7ec167bdcb53c57c70776c0bddb9da58e99f0e/debian/changelog">58</a>
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3989">!3989</a>)</li>
</ul>
</li>
<li>
<p>PINE64 PinePhone Pro:</p>
<ul>
<li>Upgrade kernel from 6.1.10 to 6.2.7
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3967">!3967</a>)</li>
<li>Enable Lazy RCU scheduler (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3928">!3928</a>)</li>
<li>Fix SD->eMMC installer prompt
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3978">!3978</a>,
<a href="https://wiki.postmarketos.org/wiki/PINE64_PinePhone_Pro_(pine64-pinephonepro)#Installing_postmarketOS">related wiki notes</a>)</li>
</ul>
</li>
<li>
<p>Samsung Galaxy S III:</p>
<ul>
<li>Upgrade exynos4 kernel from 6.0.2 to 6.1.0
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3717">!3717</a>)</li>
</ul>
</li>
<li>
<p>Samsung Galaxy Tab 2 (7 inch, 10.1 inch):</p>
<ul>
<li>Upgrade omap kernel from 6.1.0 to 6.2.1
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3911">!3911</a>)</li>
</ul>
</li>
<li>
<p>Xiaomi Mi Note 2:</p>
<ul>
<li>Upgrade qcom-msm8996 kernel from 6.0.2 to 6.1.14
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3910">!3910</a>)</li>
</ul>
</li>
<li>
<p>PINE64 Pinebook Pro, RockPro 64:</p>
<ul>
<li>Enable kexec
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3999">!3999</a>)</li>
</ul>
</li>
<li>
<p>PINE64 PinePhone, PineTab:</p>
<ul>
<li>Enable FSCACHE and NFS caching
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3979">!3979</a>)</li>
</ul>
</li>
</ul>
<h2 id="notes-on-sp1"><a class="toclink" href="#notes-on-sp1">Notes on SP1</a></h2>
<p>As we found out later, the fix for high CPU consumption on the PinePhone
(original, not Pro) and PineTab mentioned in SP1 only works if postmarketOS is
installed to the SD card, not it if is installed to the eMMC. This is being
investigated in
<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1946">#1946</a>.
If you are affected, consider installing to SD card in the meantime or consider
contributing towards getting it fixed.</p>
<p>Careful readers will notice that it would have more sense to include
Millipixels in SP1 already, as we had backported related improvements in the
Librem 5 packaging. We missed it, but it is included here instead.</p>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users
of the v22.12 release will receive this service pack automatically on their
next system update. If you read this blog post right after it was published, it
may take a bit until binary packages and new images are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community
members and upstream projects.</p>v22.12 SP1: The One With A Photo Of A Librem 5 Taking A Photo Of A Librem 5 Taking A Photohttps://postmarketos.org/blog/2023/02/26/v22.12.1-release/2023-02-26T00:00:00+00:00<p><a href="/static/img/2023-02/sp1.jpg"><img alt="A Librem 5 running postmarketOS photographing a melting snow chicken/monster thing" class="wfull border" src="/static/img/2023-02/sp1.jpg" /></a></p>
<p>With the first service pack for v22.12 you can now reliably take photos of that
melting snow chicken/monster in your garden with a Librem 5! Thanks to new
Phosh related upgrades, it's also possible to use a bunch of cool widgets on
the lockscreen. Enable them in Phosh Mobile Settings, lock your phone and swipe
to the left. And there it is, your calendar or emergency contact information or
whatever you have configured! And there's more, find the detailed changelog
below.</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p>New device:</p>
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Grand_Max_(samsung-grandmax)">Samsung Galaxy Grand Max</a></li>
</ul>
</li>
<li>
<p>Phosh:</p>
<ul>
<li>Upgrade Phosh from 0.22.0 to <a href="https://gitlab.gnome.org/World/Phosh/phosh/-/releases/v0.24.0">0.24.0</a></li>
<li>Upgrade Phoc from 0.21.1 to <a href="https://gitlab.gnome.org/World/Phosh/phoc/-/releases/v0.24.0">0.24.0</a></li>
<li>Upgrade phosh-mobile-settings 0.21.1 to <a href="https://gitlab.gnome.org/guidog/phosh-mobile-settings/-/releases/v0.24.1">0.24.1</a></li>
<li>Upgrade feedbackd 0.0.1 to <a href="https://source.puri.sm/Librem5/feedbackd/-/releases/v0.0.3">0.0.3</a></li>
<li>Upgrade feedbackd-device-themes 0_git20220202 to <a href="https://source.puri.sm/Librem5/feedbackd-device-themes/-/releases/v0.0.3">0.0.3</a><ul>
<li>OnePlus 6: fix no ringtone on incoming call, no sound on SMS (<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1928">#1928</a>)</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Plasma Mobile:</p>
<ul>
<li>Upgrade Plasma from 5.26.4 to <a href="https://kde.org/announcements/plasma/5/5.26.5/">5.26.5</a></li>
</ul>
</li>
<li>
<p>Purism Librem5:</p>
<ul>
<li>Upgrade kernel from 6.1.1 to 6.2.0 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3896">!3896</a>)</li>
<li>Fix unreliable back camera with millipixels (<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1947">#1947</a>)</li>
<li>Enable MGLRU (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3850/">!3850</a>)</li>
<li>Disable modem power management to make it more reliable (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3902">!3902</a>)</li>
</ul>
</li>
<li>
<p>PINE64 PinePhone & PineTab:</p>
<ul>
<li>Upgrade kernel from 6.1.3 to 6.1.9 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3858">!3858</a>)</li>
<li>Fix high CPU consumption (<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1901">#1901</a>)<ul>
<li>Upgrade U-Boot from 2022.07 to 2023.01 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3806">!3806</a>)</li>
<li>Upgrade arm-trusted-firmware from 2.7.0 to 2.8.0 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3806">!3806</a>)</li>
<li>Apply this fix by manually
<a href="https://wiki.postmarketos.org/wiki/PinePhone_U-Boot_Upgrade">upgrading u-boot</a>
or installing from a new image that has SP1 included</li>
</ul>
</li>
<li>Enable DRAM frequency stats drivers and governors (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3864">!3864</a>)</li>
</ul>
</li>
<li>
<p>PINE64 PinePhonePro:</p>
<ul>
<li>Upgrade kernel from 6.1.0 to 6.1.10 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3817">!3817</a>)</li>
<li>Changed default CPU frequency governor to schedutil (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3719">!3719</a>)</li>
</ul>
</li>
<li>
<p>Replace postmarketos-base dependency on sudo with cmd:sudo (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3721">!3721</a>)</p>
</li>
</ul>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users
of the v22.12 release will receive this service pack automatically on their
next system update. If you read this blog post right after it was published, it
may take a bit until binary packages and new images are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community
members and upstream projects.</p>v22.12: The One With Napali Callinghttps://postmarketos.org/blog/2022/12/18/v22.12-release/2022-12-18T00:00:00+00:00<p><a href="/static/img/2022-12/v22.12.jpg"><img alt="A skadeboard leaning on a railing infront of a river, with a smartphone on top of one axe displaying the welcome app of postmarketOS v22.12" class="wfull border" src="/static/img/2022-12/v22.12_header.jpg" /></a></p>
<p>No matter if you can still whip out a skateboard around this time of year to do
kickflips and indy 900s, or if you'd need a snowboard for that: the all-new
postmarketOS v22.12 release is out! As usually, it's based on the latest
iteration of excellent upstream developments in Alpine. See the
<a href="https://alpinelinux.org/posts/Alpine-3.17.0-released.html">3.17</a> release notes
for more about that.</p>
<p>v22.12, like previous releases, is geared mainly towards Linux
enthusiasts; it may be a bit rough around the edges so expect some bugs and
make sure to read the known issues section in this very blog post. Help
with identifying and resolving issues is always greatly appreciated.</p>
<h2 id="supported-devices"><a class="toclink" href="#supported-devices">Supported devices</a></h2>
<p>The amount of supported devices has been increased to 31 (from 29 since
<a href="/blog/2022/07/17/v22.06.1-release/">v22.06 SP1</a>).</p>
<ul>
<li>ASUS MeMo Pad 7</li>
<li>Arrow DragonBoard 410c</li>
<li>BQ Aquaris X5</li>
<li>Fairphone 4 <span class="new">new</span></li>
<li>Lenovo A6000</li>
<li>Lenovo A6010</li>
<li>Motorola Moto G4 Play</li>
<li>Nokia N900</li>
<li>ODROID HC2</li>
<li>OnePlus 6</li>
<li>OnePlus 6T</li>
<li>PINE64 PineBook Pro</li>
<li>PINE64 PinePhone</li>
<li>PINE64 PinePhone Pro (<a href="/blog/2022/07/17/v22.06.1-release/">v22.06 SP1</a>)</li>
<li>PINE64 PineTab</li>
<li>PINE64 RockPro64</li>
<li>Purism Librem 5</li>
<li>SHIFT6mq</li>
<li>Samsung Galaxy A3 (2015)</li>
<li>Samsung Galaxy A5 (2015)</li>
<li>Samsung Galaxy E7 (<a href="/blog/2022/07/17/v22.06.1-release/">v22.06 SP1</a>)</li>
<li>Samsung Galaxy S III (GT-I9300 and SHW-M440S)</li>
<li>Samsung Galaxy S4 Mini Value Edition</li>
<li>Samsung Galaxy Tab 2 7.0"</li>
<li>Samsung Galaxy Tab 2 10.1" <span class="new">new</span></li>
<li>Samsung Galaxy Tab A 8.0</li>
<li>Samsung Galaxy Tab A 9.7</li>
<li>Wileyfox Swift</li>
<li>Xiaomi Mi Note 2</li>
<li>Xiaomi Pocophone F1</li>
<li>Xiaomi Redmi 2</li>
</ul>
<h2 id="highlights"><a class="toclink" href="#highlights">Highlights</a></h2>
<p>As with all releases, you won't find a description of each and every commit
that was done in postmarketOS edge and Alpine edge before the new release was
cut. That's what <code>git log</code> is for. But here are some highlights.</p>
<h3 id="calls-for-sdm845-on-mainline"><a class="toclink" href="#calls-for-sdm845-on-mainline">Calls For SDM845 On Mainline</a></h3>
<p>All devices listed above don't run an Android kernel - their kernels are
(close to) proper mainline Linux. If you have been following this project for
some time, you know that getting phone calls working on proper mainline Linux
is not a trivial task. In the Android world this relies on proprietary programs
in userspace that talk to the vendor's Android kernel fork on one hand, and
modem on the other hand.</p>
<p>With mainline, the functionality from the downstream kernel needs essentially
to be re-implemented to get accepted upstream. And everything that the
proprietary userspace code did needs to be replicated in free software code,
mostly by extending ModemManager/oFono and writing tools like
<a href="https://gitlab.com/postmarketOS/q6voiced">q6voiced</a> to glue everything
together. The latter was originally written for the
<a href="https://wiki.postmarketos.org/wiki/MSM8916_Mainlining">MSM8916</a> SoC where
phone calls have been working for quite some time in postmarketOS. But with
this very release, it is also possible to use it to call your friends from
<a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_845_(SDM845)">SDM845</a>
based devices such as the OnePlus 6/6T, SHIFT6mq or Xiaomi Pocophone F1. As
mentioned earlier, this is hot new experimental new stuff, expect serious bugs.
But nevertheless, we are excited to share this amazing achievement!</p>
<h3 id="user-interfaces"><a class="toclink" href="#user-interfaces">User Interfaces</a></h3>
<ul>
<li>
<p><a href="https://lists.sr.ht/~mil/sxmo-announce/%3C87y1sbw6jd.fsf%40momi.ca%3E">Sxmo 1.12.0</a>
replaces version 1.9.0 from v22.06. This version and previous release
<a href="https://lists.sr.ht/~mil/sxmo-announce/%3C87k06k2r0b.fsf%40momi.ca%3E">Sxmo 1.11.0</a>
introduced quite a few improvements for
<a href="https://sxmo.org/deviceprofile">deviceprofiles</a> and explicit support for the
OnePlus 6/6T, Pocophone F1, Samsung Galaxy S III, Samsung Galaxy Tab A 9.7
(2015) and Xiamo Redmi 2. There's other cool changes too, read the original
announcement posts for more information. Originally it was planned to do a
Sxmo 1.10.0 release specifically for v22.06 SP3, but that version was skipped
and now you're just getting all of the great improvements at once.</p>
</li>
<li>
<p><a href="https://gitlab.gnome.org/World/Phosh/phosh/-/releases/v0.22.0">Phosh 0.22</a>
brings another style refresh and 10% steps for the battery info icon, as well
as actions for notifications on screen. Previously we had 0.21 in v22.06 SP2.
Additionally we changed the default text editor from gedit to
gnome-text-editor for new installs, and ship
<a href="https://gitlab.gnome.org/guidog/phosh-mobile-settings">phosh-mobile-settings</a>.
If that is too many settings apps for your taste, we hear you and have been
<a href="https://gitlab.gnome.org/guidog/phosh-mobile-settings/-/issues/19">brainstorming</a>
on how to consolidate them.</p>
</li>
</ul>
<!-- version: see pkgs.alpinelinux.org: angelfish, plasma-settings etc. -->
<ul>
<li><a href="https://plasma-mobile.org/2022/09/27/plasma-mobile-gear-22-09/">Plasma Mobile Gear 22.09</a>
includes, among lots of other things, great improvements for the Shell,
Homescreen and Dialer when compared to 22.04, that we had in the previous
pmOS release. Take a look at the release notes for 22.09 and
<a href="https://plasma-mobile.org/2022/06/28/plasma-mobile-gear-22-06/">22.06</a> to
get a nice visual impression of everything that has been happening in KDE's
mobile UI. Regarding what gets installed by default, we decided to no longer
install Firefox by default in Plasma Mobile. Having both Firefox and Plasma
Mobile's own Angelfish just takes up too much space in the installation
image. Note that you can of course still install Firefox
<a href="https://wiki.postmarketos.org/wiki/Firefox#Installation">manually</a>.</li>
</ul>
<h2 id="known-issues"><a class="toclink" href="#known-issues">Known Issues</a></h2>
<p>This release, testing didn't go as smoothly as in the previous releases.
Especially on the less common devices, such as the PineTab, RockPro64 and some
of the Androids, we weren't able to ensure that there are no regressions. If you
are affected, consider helping out with related issues, create
<a href="https://wiki.postmarketos.org/wiki/How_to_report_issues">new</a> issues where
missing and consider becoming a co-maintainer for your device. That would be
the best way to ensure it keeps working with new postmarketOS releases.</p>
<ul>
<li>PineTab: does not boot for some users
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1727">#1727</a>),
camera regression
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1840">#1840</a>)</li>
<li>PinePhone: mpv video decoding regression (workaround: <code>--vd-lavc-dr=no</code>)
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1809">#1809</a>)</li>
<li>Sxmo on Pocophone F1: call audio regression
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1821">#1821</a>)</li>
<li>Xiaomi Mi Note 2: a minute delay with black screen during boot
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1850">#1850</a>)</li>
</ul>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How To Get It</a></h2>
<p>For existing installations, see the
<a href="https://wiki.postmarketos.org/wiki/Upgrade_to_a_newer_postmarketOS_release">upgrade to a newer postmarketOS release</a>
wiki article. And for new installs, see <a href="/download">download</a> and make sure to
read the wiki page for
<a href="https://wiki.postmarketos.org/wiki/Devices">your device</a>.</p>
<h2 id="wrapping-up"><a class="toclink" href="#wrapping-up">Wrapping up</a></h2>
<p>And so we end another postmarketOS release cycle, and another year. Everything
you read above, and the many, many more small improvements that would be too
plentiful to recount here, would not have been possible without the amazing
postmarketOS community. A big thanks to everybody who contributed to
postmarketOS, to Alpine or to any of the numerous upstream components we use!</p>v22.06 SP3: The One Where We Upgraded All The Kernelshttps://postmarketos.org/blog/2022/10/23/v22.06.3-release/2022-10-23T00:00:00+00:00<p><a href="/static/img/2022-10/sp3.jpg"><img alt="" class="wfull border" src="/static/img/2022-10/sp3.jpg" /></a></p>
<p>Recently several WLAN security bugs were fixed in the linux kernel
(<a href="https://seclists.org/oss-sec/2022/q4/20">oss-sec list</a>,
<a href="https://www.phoronix.com/news/Linux-WiFi-Malicious-Packets">phoronix</a>). This
service pack brings related CVE patches to all devices in postmarketOS stable.</p>
<p>Usually service packs are for carrying features over from edge to stable, and
security fixes are backported directly to stable without waiting for a service
pack. However this time the fix was not a trivial patch (like the one for
<a href="https://gitlab.com/postmarketOS/pmaports/-/blob/v22.06/device/.shared-patches/linux/cve-2022-0847-dirty-pipe.patch">dirtypipe</a>),
and we decided to just upgrade the kernel to version 6.0.2 where possible. This
needed additional time for packaging and testing, and it made sense to bundle
this all in a service pack and have a proper announcement around it. So here
we are!</p>
<p>As of writing, 6.0.3 is out already. But this is fine, the point is to bring a
version we tested on the devices to stable, it doesn't need to be the very
latest one as long as the important security bugs are fixed in the release we
ship (in this case the WLAN CVEs, which are fixed in 6.0.2).</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>linux-postmarketos-allwinner: upgrade to 6.0.2_git20221017-r1<ul>
<li>Used by pinephone, pinetab</li>
</ul>
</li>
<li>linux-purism-librem5: add wifi CVE backports</li>
<li>linux-pine64-pinephonepro: add wifi CVE backports</li>
<li>linux-postmarketos-exynos4: upgrade to 6.0.2<ul>
<li>Used by samsung-m0</li>
</ul>
</li>
<li>linux-postmarketos-omap: new aport (6.0.2)<ul>
<li>Used by samsung-espresso-3g</li>
</ul>
</li>
<li>linux-postmarketos-qcom-msm8916: upgrade to 6.0.2<ul>
<li>Used by
arrow-db410c,
bq-paella,
lenovo-a6000,
lenovo-a6010,
motorola-harpia,
samsung-a3,
samsung-a5,
samsung-gt510,
samsung-gt58,
samsung-serranove,
wileyfox-crackling,
xiaomi-wt88047</li>
</ul>
</li>
<li>linux-postmarketos-qcom-msm8996: upgrade to 6.0.2<ul>
<li>Used by xiaomi-scorpio</li>
</ul>
</li>
<li>linux-postmarketos-qcom-sdm845: upgrade to 5.19.16<ul>
<li>Used by
oneplus-enchilada,
oneplus-fajita,
shift-axolotl,
xiaomi-beryllium</li>
</ul>
</li>
<li>linux-postmarketos-rockchip: upgrade to 6.0.2<ul>
<li>Used by pinebookpro, rockpro64</li>
</ul>
</li>
<li>linux-asus-me176c: upgrade to 5.4.219</li>
<li>linux-odroid-hc2: add wifi CVE backports</li>
<li>linux-nokia-n900: downgrade to 5.15.74<ul>
<li>Yes, this is actually a downgrade. The N900 was on 5.18.1 before, which
is EOL. On the other hand, 5.15 is a longterm release and received the
CVE fixes. Upgrading to a higher version is currently not possible until
a USB regression is figured out
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1761">pma#1761</a>).</li>
</ul>
</li>
</ul>
<p>Refer to the <a href="https://wiki.postmarketos.org/wiki/Devices">devices</a> wiki
page for looking up codenames and details on each device.</p>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users
of the v22.06 release will receive this service pack automatically on their
next system update. If you read this blog post right after it was published, it
may take a bit until binary packages and new images are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community
members and upstream projects.</p>v22.06 SP2: The One That Swipeshttps://postmarketos.org/blog/2022/09/04/v22.06.2-release/2022-09-04T00:00:00+00:00<p><a href="/static/img/2022-08/welcome_swipe.jpg"><img alt="" class="wfull border" src="/static/img/2022-08/welcome_swipe.jpg" /></a></p>
<p>Here it is, after a bit of delay to figure out why the new Phosh version didn't
boot on the Samsung Galaxy S III. Now that the reason is known and a workaround
is in place, we also happened to hit the timeframe where fixup versions of
these huge Phosh and Phoc releases were made. Enjoy the following changes on
stable!</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p><a href="https://gitlab.gnome.org/World/Phosh/phosh/-/tags/v0.21.0">Phosh 0.21.0</a> and
<a href="https://gitlab.gnome.org/World/Phosh/phoc/-/tags/v0.21.1">Phoc 0.21.1</a> are
huge upgrades from the previous versions 0.17.0 and 0.13.1. Both skipped a
lot of version numbers to 0.20.0 in case you are wondering. Most excitingly
it is now possible to swipe up and down to make menus show up. Also the
lockscreen has been reworked, it's now possible to use the top menu there and
for everyone who configured Phosh with pmOS tweaks to show the battery
percentage, you will be able to see that right on the lockscreen too. See the
changelogs of (Phosh)
<a href="https://gitlab.gnome.org/World/Phosh/phosh/-/releases/v0.20.0">0.20.0</a> (and
the 3 betas linked there),
<a href="https://gitlab.gnome.org/World/Phosh/phosh/-/releases/v0.21.0">0.21.0</a> and
(Phoc)
<a href="https://gitlab.gnome.org/World/Phosh/phoc/-/tags/v0.20.0">0.20.0</a>,
<a href="https://gitlab.gnome.org/World/Phosh/phoc/-/tags/v0.21.0">0.21.0</a>,
<a href="https://gitlab.gnome.org/World/Phosh/phoc/-/tags/v0.21.1">0.21.1</a>
for a detailed list of changes.</p>
</li>
<li>
<p><a href="https://gitlab.com/postmarketOS/postmarketos-welcome/-/tags/0.6.0">postmarketOS-welcome 0.6.0</a>
informs about how menus are now opened in Phosh (so users who did not read
this blog post are not confused). Also the logic was changed to make it show
up once when booting into this new Phosh version.</p>
</li>
<li>
<p><a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3365">linux-postmarketos-qcom-sdm845 5.19.0</a>
is a well-tested upgrade from edge for the SDM845 based SHIFT6mq, OnePlus
6/6T and Xiaomi Pocophone F1.</p>
</li>
<li>
<p><a href="https://gitlab.com/MartijnBraam/powersupply/-/tags/0.8.0">powersupply 0.8.0</a>
(previously 0.6.0) is relevant for the SDM845 SoC as well, as it brings the
necessary quirks to show the charging/discharging rate, temperature and USB current
limits for SDM845 too.</p>
</li>
<li>
<p>PinePhone Pro now has a workaround to fix audio if not having proper SMBIOS
information coming from the bootloader
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1601">pma#1601</a>). This
was properly fixed in Tow-Boot
<a href="https://github.com/Tow-Boot/Tow-Boot/releases/tag/release-2021.10-005">2021.10-005</a>.</p>
</li>
<li>
<p>PinePhone: kernel upgrade to
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3368">5.19.2</a> and
the <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3324">AF8133J magnetometer</a>
driver is now enabled</p>
</li>
<li>
<p>PinePhone (Pro): add the upower fwupd plugin to prevent (modem firmware)
upgrades if the phone is not connected to AC
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3320">pma!3320</a>)</p>
</li>
<li>
<p><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S_III_(samsung-m0)">Samsung Galaxy S III</a>:
HDMI out had to be disabled as the kernel driver reports the wrong state when
it is unplugged and that leads to the newer Phosh stack not starting up. This
seems to be a rarely used feature as it requires an original dock/adapter
from the time period. If you have one however and would like to fix this in
the kernel, please
<a href="https://gitlab.gnome.org/World/Phosh/phosh/-/issues/828">reach out</a>.</p>
</li>
</ul>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users of the v22.06 release will receive this
service pack automatically on their next system update. If you read this blog post right after it was published, it may
take a bit until binary packages and new images are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community members and upstream projects.</p>Considering SourceHut, Part 2https://postmarketos.org/blog/2022/08/26/considering-sourcehut-2/2022-08-26T00:00:00+00:00<p><a href="/static/img/2022-07/sourcehut.jpg"><img alt="" class="wfull border" src="/static/img/2022-07/sourcehut_thumb.jpg" /></a></p>
<p>We recently added a post, <a href="/blog/2022/07/25/considering-sourcehut/">Considering SourceHut</a>,
where we explained our desire to move from our current source code and issue
hosting on gitlab.com to SourceHut. Along with a tentative rollout plan and a
call out to postmarketOS contributors to give their feedback in an issue
created specifically for that purpose
(<a href="https://gitlab.com/postmarketOS/postmarketos/-/issues/49">postmarketos#49</a>).
After receiving a lot of thoughtful feedback (and yes we did read them all!)
from contributors and community members who read the post, we felt is was
necessary to provide an update.</p>
<p>So is moving to SourceHut the best decision for postmarketOS? We don't know.
Some of the feedback we received was supportive of the move to SourceHut, some
was against it, and others showed up to advocate for moving to other hosting
solutions.</p>
<p>What we do know is, now would be the best time to <em>try</em> it.</p>
<p>Acting now would allow us to have a slow and safe roll out plan where we can
get some real experience with having part of pmOS on SourceHut, without
disrupting the workflow of most contributors. All the while, we would still
have the option to revisit and, if necessary, roll back any changes at the end
of this testing phase.</p>
<p>After another postmarketOS core team meeting to discuss this topic, we decided
that this is what we will do. We'll move pmbootstrap.git (again, only the git
repository, not the issues!) to SourceHut soon. In January of 2023, we will
review how well that worked or not, and based on that continue with the plan or
revert and do something else. We are looking forward to seeing first patches
sent in!</p>
<p>If you haven't read the post yet
(<a href="/blog/2022/07/25/considering-sourcehut/">Considering SourceHut</a>), or the
comments on the issue we created for gathering feedback
(<a href="https://gitlab.com/postmarketOS/postmarketos/-/issues/49">postmarketos#49</a>),
then we invite you to do so since they provide a lot more context.</p>Considering SourceHuthttps://postmarketos.org/blog/2022/07/25/considering-sourcehut/2022-07-25T00:00:00+00:00<p><a href="/static/img/2022-07/sourcehut.jpg"><img alt="" class="wfull border" src="/static/img/2022-07/sourcehut_thumb.jpg" /></a></p>
<p>After gitlab.com's
<a href="https://about.gitlab.com/blog/2022/03/24/efficient-free-tier/">recent changes</a>
to the free tier, we have been seriously reconsidering if gitlab.com is still
the best development platform for postmarketOS. It was not at all an easy
question to answer for us, given how much we depend on a place for our code,
issues and CI. To reflect this rather long thought process we already had, we
decided to publish this short blog post with the most important thoughts we
currently arrived at together with a
<a href="https://cast.postmarketos.org/episode/20-Considering-SourceHut-special/">41 minute discussion on the podcast</a>
where we go into a lot more detail.</p>
<blockquote>
<p><strong>UPDATE 2022-07-27:</strong> we added a FAQ at the bottom, please read it before
asking questions elsewhere. At the bottom you'll also find a link to the
GitLab issue where we hope to discuss any feedback or concerns.</p>
</blockquote>
<h2 id="selfhosting-is-too-much-effort"><a class="toclink" href="#selfhosting-is-too-much-effort">Selfhosting is too much effort</a></h2>
<p>It's important to us that the software we use could be selfhosted. But there's
a lot of maintenance effort that comes with running a selfhosted instance of
pretty much any code hosting or CI infrastructure related software: making sure
it is constantly available, has no unpatched vulnerabilities, doesn't run into
performance problems etc. All the time we would spend on that is time we can't
spend actually hacking on phones. We would very much like to avoid that.</p>
<p>So platforms where we would need to selfhost either the whole code forge or
CI for it are out of the picture. As you can guess from the title,
<a href="https://sourcehut.org/">SourceHut</a> is the prime candidate right now and there
we could just use the official instance at <a href="https://sr.ht/">sr.ht</a> for
everything, including CI. In fact, we have been using the CI component already
since end of 2019 to
<a href="/blog/2019/12/14/new-build-infra/">build all packages and images</a>.</p>
<h2 id="why-sourcehut"><a class="toclink" href="#why-sourcehut">Why SourceHut</a></h2>
<p>SourceHut is a great match for the
<a href="https://wiki.postmarketos.org/wiki/About_postmarketOS#Principles">postmarketOS principles</a>:</p>
<ul>
<li>AGPL licensed, no <a href="https://en.wikipedia.org/wiki/Open-core_model">Open-core model</a></li>
<li>No tracking or advertising</li>
<li>It's <a href="https://forgeperf.org/">fast</a></li>
</ul>
<h2 id="patch-workflow"><a class="toclink" href="#patch-workflow">Patch workflow</a></h2>
<p>The most controversial point about this move would be the patch workflow. In
2022, many developers are now used to the merge request / pull request
submit and review workflow via web UI. On SourceHut, developers are supposed to
send patches via <a href="https://git-send-email.io/">git send-email</a>.</p>
<p>While there are <a href="https://drewdevault.com/2018/07/02/Email-driven-git.html">good reasons</a>
for this approach, after many long discussions we realized that if we just
switched over one day and required everybody to use git send-email, we would
probably drive away many of the great contributors that made postmarketOS what
it is today.</p>
<p>But we can have the best of both worlds. The workflow of pushing your code to
your own repository on SourceHut and then creating the patch mail like a MR/PR
with a few clicks in the web UI is already implemented. Right now the review
process is only possible via mail, but compositing code reviews on the web is
planned as well
(<a href="https://todo.sr.ht/~sircmpwn/lists.sr.ht/111">lists.sr.ht#111</a>). We talked to
Drew DeVault (the main developer of SourceHut) and he told us that having the
whole review process in the web UI available is one of the top priorities for
SourceHut.</p>
<h2 id="rollout-plan"><a class="toclink" href="#rollout-plan">Rollout plan</a></h2>
<p>With all that in mind, we wrote the following tentative rollout plan. Note that
we only move pmbootstrap.git, not even the pmbootstrap issues, and no other
repository, starting from some time in August until December of 2022. Most
people are contributing to pmaports.git, so they won't be affected by this
change, but it will give us as maintainers a good chance to practice the email
based workflow with one of the most important postmarketOS git repositories.</p>
<p>Afterwards, in January of 2023 there's a chance to roll back if this experiment
failed. If it went well, we would move pmbootstrap issues and once the web UI
based patch review workflow is implemented, we would move pmaports.git and
everything else over as well.</p>
<h3 id="timeline"><a class="toclink" href="#timeline">Timeline</a></h3>
<h4 id="2022-0809"><a class="toclink" href="#2022-0809">2022-08/09</a></h4>
<p><small>
(UPDATE 2022-08-26: changed from "2022-08" to "2022-08/09")
</small></p>
<ul>
<li>Migrate pmbootstrap.git repo (only the git repository, <em>not</em> the issues
etc)</li>
<li>Adjust CI as necessary</li>
<li>Get comfortable with the patch workflow</li>
<li>By using it, find out what else would be missing for us</li>
</ul>
<h4 id="2022-12"><a class="toclink" href="#2022-12">2022-12</a></h4>
<ul>
<li>v22.12 release</li>
</ul>
<h4 id="2023-01"><a class="toclink" href="#2023-01">2023-01</a></h4>
<ul>
<li>Review the idea of moving to SourceHut based on experience with pmbootstrap.git<ul>
<li>If it failed: abort here, move pmbootstrap.git back to gitlab.com</li>
<li>We didn't move the issues or anything else, so it's easy</li>
</ul>
</li>
<li>Check if web based patch workflow is implemented enough<ul>
<li>If not, we work towards implementing it ourselves</li>
<li>Two months to implement before moving pmaports</li>
</ul>
</li>
</ul>
<h4 id="2023-02"><a class="toclink" href="#2023-02">2023-02</a></h4>
<ul>
<li>Import pmbootstrap issues</li>
<li>Archive pmbootstrap repo</li>
<li>pmbootstrap is now completely in sourcehut</li>
</ul>
<h4 id="2023-03"><a class="toclink" href="#2023-03">2023-03</a></h4>
<ul>
<li>Move pmaports.git + issues at the same time</li>
<li>Rewrite CI stuff, mrhlpr etc.</li>
<li>Add tools for local CI checks for patch workflow</li>
<li>Archive pmaports</li>
</ul>
<h4 id="2023-05"><a class="toclink" href="#2023-05">2023-05</a></h4>
<ul>
<li>Move all other repositories + issues (fine if takes more than a month)</li>
</ul>
<h4 id="2023-06"><a class="toclink" href="#2023-06">2023-06</a></h4>
<ul>
<li>v23.06 release</li>
</ul>
<h2 id="what-do-you-think"><a class="toclink" href="#what-do-you-think">What do you think?</a></h2>
<p>If you have contributed to postmarketOS in the past, we are really curious
about what you think about all of the above. Do you like the idea? Did we miss
something? What are your hopes and concerns? We would be happy to read your
feedback in
<a href="https://gitlab.com/postmarketOS/postmarketos/-/issues/49">postmarketos#49</a>.</p>
<h2 id="faq"><a class="toclink" href="#faq">FAQ</a></h2>
<h3 id="i-dont-like-the-email-workflow"><a class="toclink" href="#i-dont-like-the-email-workflow">I don't like the email workflow</a></h3>
<p>As mentioned above at the end of the <a href="#patch-workflow">patch workflow</a> section
and in more detail in
<a href="https://cast.postmarketos.org/episode/20-Considering-SourceHut-special/#1993.0">Clayton's take</a>
in the podcast:</p>
<ul>
<li>SourceHut is prioritising to implement an entirely web-based flow for
contributors.</li>
<li>This is a hard-requirement for us as maintainers to ensure that postmarketOS
is accessible to as many contributors as possible.</li>
<li>We will not switch over pmaports.git (which is what most people actually
interact with, the repository that has the package build recipes) before this
is implemented.</li>
</ul>
<h3 id="why-not-giteacodebergother-github-inspired-forge"><a class="toclink" href="#why-not-giteacodebergother-github-inspired-forge">Why not Gitea/Codeberg/other GitHub-inspired forge?</a></h3>
<p>We explored using Gitea or Codeberg, and eventually concluded that compared to
SourceHut the only benefit it would offer is the GitHub/Lab style contributor
workflow. This didn't seem like a compelling enough reason to pursue it.</p>
<p>Gitea doesn't have its own CI and thus would require us to use an external
service — like SourceHut CI. Codeberg's integrated CI is in a closed testing
phase and may break at any time
(see <a href="https://codeberg.org/Codeberg-CI/request-access#disclaimers-and-caveats">here</a>)
whereas we have been using SourceHut CI since end of 2019 for building packages
and images already and found it to be highly reliable.</p>
<p>Considering SourceHut's pledge to make contributing possible without email, and
the other bonuses of working with them directly, Gitea becomes a hard sell in
comparison.</p>
<p>We are definitely in a unique position given we already use SourceHut's
infrastructure — this isn't meant to be a competition between forges.</p>
<h3 id="what-about-a-gitlab-instance-hosted-elsewhere"><a class="toclink" href="#what-about-a-gitlab-instance-hosted-elsewhere">What about a GitLab instance hosted elsewhere?</a></h3>
<p>GitLab's Open-core licensing model doesn't align as well with the postmarketOS
principles as a fully libre service. It was a big improvement over the entirely
proprietary GitHub which we used before, but now that we are already
considering to switch platforms again, we might as well try to use something
that is again much closer aligned to our own values.</p>
<p>As mentioned, SourceHut carries a lot of other benefits such as the
potential to drastically improve productivity for both maintainers and
contributors, which we would not get by using another GitLab instance.</p>v22.06 SP1: The One Where We Added The Pro & E7https://postmarketos.org/blog/2022/07/17/v22.06.1-release/2022-07-17T00:00:00+00:00<p>The first service pack for the v22.06 release is here! It adds two new devices to the stable release that did not make
it into the original release of v22.06. It also has a few nice stability improvements and adds
the new Megapixels and postprocessd changes for improved picture quality on the PinePhone.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2022-07/ppp-stable.jpg"><img alt="" class="w300 border" src="/static/img/2022-07/ppp-stable_thumb.jpg" /></a>
<br><span class="w300">
A photo of the PPP running postmarketOS v22.06. Shot with Megapixels and
postprocessd.
</span>
</div><div class="grid-text">
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p><a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3280">PINE64 PinePhone Pro</a> has been added, with support
for the postmarketOS installer. Just like with the OG PinePhone, the installer allows using encryption and installing
from SD to eMMC. Find installation instructions in the <a href="https://wiki.postmarketos.org/wiki/PINE64_PinePhone_Pro_(pine64-pinephonepro)">updated wiki page</a> as always.</p>
</li>
<li>
<p><a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3188">Samsung Galaxy E7</a> has been backported
to the stable release too. Again, reading the device's <a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_E7_(samsung-e7)">wiki page</a> is a good idea.</p>
</li>
<li>
<p><a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3235">Modem udev rules</a>
have been added to improve the stability when using the Biktorgj firmware on the PinePhone modem</p>
</li>
<li>
<p><a href="https://gitlab.com/postmarketOS/megapixels/-/tags/1.5.2">Megapixels 1.5.2</a>
is now available together with the updated version of postprocessd for
improved picture quality and faster postprocessing on the supported
Megapixels devices. To make use of it, run "<code>apk add postprocessd</code>" in existing
installations. New installation images will have it installed by default.
See the video <em>Megapixels and postprocessd improvements</em>
(<a href="https://spacepub.space/w/56a99cf0-0428-45b6-a11e-ba7ce0173b7c">PeerTube</a>,
<a href="https://www.youtube.com/watch?v=Ypc3pfzSajo">YouTube</a>) for details.</p>
</li>
</ul>
</div></div>
<ul>
<li><a href="https://gitlab.com/postmarketOS/osk-sdl/-/tags/0.67">osk-sdl 0.67</a> powers
the device off when pressing the power button (in case you don't feel like
unlocking your phone on boot right now), and fixes the issues with slow input
when using an external keyboard. <b>UPDATE 2022-07-20:</b> We've gotten two
reports that input is broken with this osk-sdl version on the PinePhone;
although we can't reproduce it yet, the osk-sdl update has been reverted.
Details and recovery instructions in
<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1618">pma#1618</a>.</li>
</ul>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users of the v22.06 release will receive this
service pack automatically on their next system update. If you read this blog post right after it was published, it may
take a bit until binary packages and new images are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community members and upstream projects.</p>v22.06 Release: The One Where We Started Using Release Titleshttps://postmarketos.org/blog/2022/06/12/v22.06-release/2022-06-12T00:00:00+00:00<p><a href="/static/img/2022-06/welcome-to-v22.06.jpg"><img alt="" class="wfull border" src="/static/img/2022-06/welcome-to-v22.06.jpg" /></a></p>
<p>As we learned last winter, taking six weeks for following up on Alpine's
November release isn't ideal. While some free software hackers prefer to hack
on their favorite projects during the holidays, others take their well deserved
break far away from computers. We got it done regardless, and planned to cut
the release schedule in half to have it easier next time. The v22.06 release
right here was the trial run for the new schedule... and we made it. Here it
is, only three weeks after
<a href="https://alpinelinux.org/posts/Alpine-3.16.0-released.html">Alpine Linux 3.16</a>
dropped and still <a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1541">properly tested</a>:
the postmarketOS v22.06 release!</p>
<p>v22.06, like previous releases, is geared mainly towards Linux
enthusiasts; it may be a bit rough around the edges so expect some bugs. Help
identifying and resolving issues is always greatly appreciated.</p>
<h2 id="supported-devices"><a class="toclink" href="#supported-devices">Supported devices</a></h2>
<p>The amount of supported devices has been increased to 27 (from 25 since
<a href="/blog/2022/04/18/v21.12.4-release/">v21.12 SP4</a>).</p>
<p><div class="grid"><div class="grid-side">
<p><a href="/static/img/2022-06/shift6mq.jpg"><img alt="" class="w300 border" src="/static/img/2022-06/shift6mq_thumb.jpg" /></a>
<br><span class="w300">
The SDM845 based SHIFT6mq sitting comfortably on a brick wall, running Phosh
and postmarketOS tweaks. Not in the picture: the super exciting
<a href="https://tuxphones.com/the-shift-we-need/">background story</a>!
</span></p>
<p><a href="/static/img/2022-06/pinetab.jpg"><img alt="" class="w300 border" src="/static/img/2022-06/pinetab_thumb.jpg" /></a>
<br><span class="w300">
Martijn before fixing <a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1558">pma#1558</a>: "main issue with pinetab audio is that I don't know where my pinetab is"
</span></p>
</div><div class="grid-text">
<ul>
<li>ASUS MeMo Pad 7</li>
<li>Arrow DragonBoard 410c</li>
<li>BQ Aquaris X5</li>
<li>Lenovo A6000</li>
<li>Lenovo A6010</li>
<li>Motorola Moto G4 Play</li>
<li>Nokia N900 (<a href="/blog/2022/01/17/v21.12.1-release/">v21.12 SP1</a>)</li>
<li>ODROID HC2</li>
<li>OnePlus 6</li>
<li>OnePlus 6T</li>
<li>PINE64 PineBook Pro</li>
<li>PINE64 PinePhone</li>
<li>PINE64 PineTab</li>
<li>PINE64 RockPro64</li>
<li>Purism Librem 5</li>
<li>SHIFT6mq <span class="new">new</span></li>
<li>Samsung Galaxy A3 (2015)</li>
<li>Samsung Galaxy A5 (2015)</li>
<li>Samsung Galaxy S III (GT-I9300 and SHW-M440S) <span class="new">new</span></li>
<li>Samsung Galaxy S4 Mini Value Edition</li>
<li>Samsung Galaxy Tab 2 7.0" (<a href="/blog/2022/04/18/v21.12.4-release/">v21.12 SP4</a>)</li>
<li>Samsung Galaxy Tab A 8.0</li>
<li>Samsung Galaxy Tab A 9.7</li>
<li>Wileyfox Swift</li>
<li>Xiaomi Mi Note 2</li>
<li>Xiaomi Pocophone F1</li>
<li>Xiaomi Redmi 2</li>
</ul>
</div></div>
<h2 id="highlights"><a class="toclink" href="#highlights">Highlights</a></h2>
<p>As with all releases, you won't find a description of each and every commit
that was done in postmarketOS edge and Alpine edge before the new release was
cut. That's what <code>git log</code> is for. But here are the highlights.</p>
<h3 id="release-upgrades-now-possible"><a class="toclink" href="#release-upgrades-now-possible">Release Upgrades Now Possible</a></h3>
<p>First of all, we are happy to announce that one can now upgrade from one
release to the next one. We made it work for Sxmo, Phosh and Plasma Mobile.
A script that
<a href="https://gitlab.com/postmarketOS/postmarketos-release-upgrade/-/pipelines">runs every night</a>
ensures that this doesn't break for v21.12 -> v22.06 (and v22.06 -> edge to
prepare for the next release). While we don't officially support it, the script
even allows switching between all possible versions. Say from postmarketOS edge
to v22.06 if you are tired of living on the edge. Thanks to Alpine's package
manager apk it works fast and reliable. For now this is CLI based, in the
future it should be possible to hook this up to graphical apps like GNOME
Software and KDE Discover. More on upgrading
<a href="https://wiki.postmarketos.org/wiki/Upgrade_to_a_newer_postmarketOS_release">in the wiki</a>.</p>
<div class="codehilite"><pre><span></span><code><span class="c1"># apk add postmarketos-release-upgrade</span>
<span class="c1"># postmarketos-release-upgrade</span>
<span class="o">>>></span><span class="w"> </span><span class="n">You</span><span class="w"> </span><span class="n">are</span><span class="w"> </span><span class="n">about</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">upgrade</span><span class="w"> </span><span class="n">from</span><span class="w"> </span><span class="n">v21</span><span class="o">.</span><span class="mi">12</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">v22</span><span class="o">.</span><span class="mi">06</span>
<span class="o">>>></span><span class="w"> </span>
<span class="o">>>></span><span class="w"> </span><span class="n">This</span><span class="w"> </span><span class="n">will</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="n">done</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">following</span><span class="w"> </span><span class="n">steps</span><span class="p">:</span>
<span class="o">>>></span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="n">upgrade</span><span class="w"> </span><span class="n">packages</span><span class="w"> </span><span class="n">of</span><span class="w"> </span><span class="n">v21</span><span class="o">.</span><span class="mi">12</span>
<span class="o">>>></span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="n">dry</span><span class="w"> </span><span class="n">run</span><span class="p">:</span><span class="w"> </span><span class="n">upgrade</span><span class="w"> </span><span class="n">packages</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">v22</span><span class="o">.</span><span class="mi">06</span>
<span class="o">>>></span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="n">upgrade</span><span class="w"> </span><span class="n">packages</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">v22</span><span class="o">.</span><span class="mi">06</span>
<span class="o">>>></span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="n">prompt</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">reboot</span>
<span class="o">>>></span><span class="w"> </span>
<span class="o">>>></span><span class="w"> </span><span class="n">A</span><span class="w"> </span><span class="nb">log</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">backup</span><span class="w"> </span><span class="n">of</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">apk</span><span class="o">/</span><span class="n">repositories</span><span class="w"> </span><span class="n">will</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="ow">in</span><span class="p">:</span>
<span class="o">>>></span><span class="w"> </span><span class="o">/</span><span class="k">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">postmarketos</span><span class="o">-</span><span class="n">release</span><span class="o">-</span><span class="n">upgrade</span><span class="o">/</span><span class="mi">2022</span><span class="o">-</span><span class="mi">06</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">164229</span>
<span class="o">>>></span><span class="w"> </span>
<span class="o">>>></span><span class="w"> </span><span class="n">It</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">strongly</span><span class="w"> </span><span class="n">recommended</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">do</span><span class="w"> </span><span class="n">this</span><span class="w"> </span><span class="n">via</span><span class="w"> </span><span class="n">SSH</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">tmux</span><span class="o">/</span><span class="n">screen</span><span class="o">.</span>
<span class="o">>>></span><span class="w"> </span><span class="n">More</span><span class="w"> </span><span class="n">information</span><span class="p">:</span><span class="w"> </span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">postmarketos</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="n">upgrade</span>
<span class="o">>>></span><span class="w"> </span>
<span class="o">>>></span><span class="w"> </span><span class="n">This</span><span class="w"> </span><span class="n">upgrade</span><span class="w"> </span><span class="n">should</span><span class="w"> </span><span class="n">work</span><span class="w"> </span><span class="n">fine</span><span class="p">,</span><span class="w"> </span><span class="n">but</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">worst</span><span class="w"> </span><span class="n">case</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">device</span>
<span class="o">>>></span><span class="w"> </span><span class="n">may</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">boot</span><span class="w"> </span><span class="n">anymore</span><span class="o">.</span><span class="w"> </span><span class="n">Make</span><span class="w"> </span><span class="n">backups</span><span class="w"> </span><span class="n">of</span><span class="w"> </span><span class="n">important</span><span class="w"> </span><span class="n">data</span><span class="w"> </span><span class="n">first</span><span class="o">!</span>
<span class="o">>>></span><span class="w"> </span>
<span class="o">>>></span><span class="w"> </span><span class="n">Proceed</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">upgrade</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">v22</span><span class="o">.</span><span class="mi">06</span><span class="err">?</span><span class="w"> </span><span class="p">[</span><span class="n">y</span><span class="o">/</span><span class="n">N</span><span class="p">]</span><span class="w"> </span>
</code></pre></div>
<p><div class="grid"><div class="grid-side">
<p><a href="/static/img/2022-06/phosh_karlender.jpg"><img alt="" class="w300 border" src="/static/img/2022-06/phosh_karlender.jpg" /></a>
<br><span class="w300">
Phosh 0.17.0 with the new postmarketOS welcome screen and karlender
</span></p>
</div><div class="grid-text">
<h3 id="user-interfaces"><a class="toclink" href="#user-interfaces">User Interfaces</a></h3>
<ul>
<li>
<p><a href="https://lists.sr.ht/~mil/sxmo-announce/%3C3FV34P1BUD8B6.34I97X4SKLKHH%40yellow-orcess.my.domain%3E">Sxmo 1.9.0</a>
supports device profiles, has improved bluetooth support and uses pipewire
by default. The incall menu and audio management were improved, as well as
superd being used to supervise user services.</p>
</li>
<li>
<p><a href="https://gitlab.gnome.org/World/Phosh/phosh/-/releases/v0.17.0">Phosh 0.17.0</a>
brings a slight style refresh and other minor improvements over the version
0.15.0 we had in stable since
<a href="/blog/2022/02/11/v21.12.2-release/">v21.12 SP2</a>. The
<a href="https://gitlab.gnome.org/World/Phosh/phosh/-/releases/v0.20.0_beta1">huge update</a>
that is currently in the works will be backported via service pack once it's
ready. GNOME is at 42, and a lot of GTK applications were ported to GTK4 and
libadwaita. To fill the lack of a calendar application installed by default,
we ship <a href="https://gitlab.com/loers/karlender/">karlender</a> now.</p>
</li>
<li>
<p><a href="https://plasma-mobile.org/2022/04/26/plasma-mobile-gear-22-04/">Plasma Mobile Gear 22.04</a>
has a lot of great improvements as well, head over to their beautiful
<a href="https://plasma-mobile.org/">new homepage</a> to get an idea of what happened
since Plasma Mobile Gear 21.12 which we shipped with postmarketOS v21.12.</p>
</li>
</ul>
</div></div>
<h3 id="fwupd"><a class="toclink" href="#fwupd">fwupd</a></h3>
<p>PinePhone users who know what they are doing can now upgrade their modem to
<a href="https://github.com/Biktorgj/pinephone_modem_sdk">Biktor's alternative firmware</a>
on v22.06. More <a href="https://wiki.postmarketos.org/wiki/Fwupd">in the wiki</a>.</p>
<h3 id="unudhcpd"><a class="toclink" href="#unudhcpd">unudhcpd</a></h3>
<p>When connecting your phone via USB to your computer, you are automatically
getting an IP from the phone's DHCP server and can then for example connect to
your phone via SSH. This is a feature since day one in postmarketOS, but now
the DHCP server has been replaced with a minimalistic one written specifically
for this use case, <a href="https://gitlab.com/postmarketOS/unudhcpd">unudhcpd</a>. It
responds to the DHCP request as fast and reliably as possible and doesn't get
confused if you plug the phone into two different PCs without reboot.</p>
<h2 id="in-other-news"><a class="toclink" href="#in-other-news">In Other News</a></h2>
<h3 id="tweaks-to-service-packs-approach"><a class="toclink" href="#tweaks-to-service-packs-approach">Tweaks To Service Packs Approach</a></h3>
<p>We reconsidered our approach to service packs. With v21.12 we made one service
pack each month, as planned in advance. Oftentimes we had pretty important
new features in there, like MMS in SP1 and support for the PPKB in SP2. But in
the last one, SP5 at some point we considered if we should even make the
service pack at all since there was not much to put in. But what do we do
instead, make a blog post that we don't make a service pack for the people who
expect one? And do we stop making service packs on schedule altogether?</p>
<p>So here is a little announcement: moving forward we will still make service
packs on schedule. But we may skip one if it is not worth the effort, then we
would just have a month without a service pack published and do something else
in that time (probably build something really cool in edge that we can't
backport yet). So don't panic if there might be a month where we skip
publishing a service pack.</p>
<h3 id="5-years-of-postmarketos"><a class="toclink" href="#5-years-of-postmarketos">5 Years Of postmarketOS</a></h3>
<p>This concludes another release blog post. It's actually the fifth release, a
coincidence since now we make two per year, but the first stable release was
v20.05. And recently it has been the five years birthday of postmarketOS. Once
again we cannot stress enough how much of a team effort this has been. We thank
every single person who contributes to postmarketOS, to the upstream projects
like Alpine, the Linux kernel, Sxmo, Phosh, Plasma Mobile and so many more.
It's hard to keep track of the amazing things everybody is doing to make this
possible, but it's most definitively appreciated. Shout out to our friends from
other Linux Mobile distributions. Together we make the dream of being truly in
control of our smartphones a reality!</p>v21.12 Service Pack 5https://postmarketos.org/blog/2022/05/15/v21.12.5-release/2022-05-15T00:00:00+00:00<p><div class="grid"><div class="grid-side">
<a href="/static/img/2022-05/pinephone_tweaks_sxmo.jpg"><img alt="" class="w300 border" src="/static/img/2022-05/pinephone_tweaks_sxmo.jpg" /></a>
</div><div class="grid-text">
<p>As we are getting to the end of the v21.12 lifecycle with v22.06 on the
horizon, we have one more small service pack to announce.</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p><a href="https://gitlab.com/postmarketOS/postmarketos-tweaks/-/tags/0.12.0">postmarketOS Tweaks 0.12</a> adds support for changing
the color scheme in Sxmo DWM.</p>
</li>
<li>
<p><a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_845_(SDM845)">SDM845</a> Linux kernel upgrade to
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3118">5.17.5</a>.</p>
</li>
<li>
<p><a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_820/821_(MSM8996)">MSM8996</a> Linux kernel upgrade to
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3126">5.17.6</a>.</p>
</li>
<li>
<p>Fix issue with the wifi not being detected on boot on the samsung-espresso3g
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1211">pma#1211</a>).</p>
</li>
</ul>
</div></div>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users of the v21.12 release will receive this
service pack automatically on their next system update. If you read this blog post right after it was published, it may
take a bit until binary packages are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community members and upstream projects.</p>v21.12 Service Pack 4https://postmarketos.org/blog/2022/04/18/v21.12.4-release/2022-04-18T00:00:00+00:00<p><a href="/static/img/2022-04/pinephone_easter.jpg"><img alt="" class="wfull border" src="/static/img/2022-04/pinephone_easter.jpg" /></a></p>
<p>Look what the easter bunny dragged in, the fourth service pack for the v21.12 stable release. This time we got:</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Tab_2_7.0%22_(samsung-espresso3g)">Samsung Galaxy Tab 2 7.0"</a> has
been backported. This device already was in the
<a href="https://wiki.postmarketos.org/wiki/Device_categorization">community category</a> when v21.12 was branched from edge
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2651">!2561</a>). However it wasn't included in the release
yet as it didn't work without proprietary PowerVR GPU drivers (and would have needed hacks like a forked wlroots...).
But now it's all figured out, the hackish GPU acceleration was dropped in favor of using
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3027">proper mainline</a>.</p>
</li>
<li>
<p><a href="https://wiki.postmarketos.org/wiki/ODROID_HC2_(odroid-hc2)">ODROID HC2</a> kernel upgrade to
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3006">5.16.14</a>. Now running on mainline with zero patches.</p>
</li>
<li>
<p><a href="https://wiki.postmarketos.org/wiki/Nokia_N900_(nokia-n900)">Nokia N900</a> Linux kernel upgrade to
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3032">5.15.31</a>.</p>
</li>
<li>
<p><a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_845_(SDM845)">SDM845</a> Linux kernel upgrade to
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/3031">5.17.0</a>, bringing call audio support to the
Xiaomi PocoPhone F1 (<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2982">!2982</a>).</p>
</li>
<li>
<p><a href="https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone)">PINE64 PinePhone</a>:
set <code>lima.sched_timeout_ms=2000</code> to work around UI freezing under heavy load, with endless flickering of the last two
frames (<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/805">#805</a>).
While this is a great usability improvement (who likes to have their screen lock up, right?), it's masking whatever
problems cause the rendering to take up to two full seconds to draw a frame. Therefore we only applied it on stable
and not on edge, where we would rather find a proper fix. Help with figuring this out is appreciated, more
information can be found in the issue.</p>
</li>
<li>
<p><a href="https://gitlab.com/postmarketOS/postmarketos-tweaks/-/tags/0.11.0">postmarketOS Tweaks 0.11</a> fixes the custom audio
profile settings and makes the app look a bit more modern.</p>
</li>
<li>
<p><a href="https://gitlab.com/MartijnBraam/powersupply/-/tags/0.6.0">Powersupply 0.6</a> shows battery information from the
PinePhone keyboard case.</p>
</li>
</ul>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users of the v21.12 release will receive this
service pack automatically on their next system update. If you read this blog post right after it was published, it may
take a bit until binary packages are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community members and upstream projects.</p>v21.12 Service Pack 3https://postmarketos.org/blog/2022/03/13/v21.12.3-release/2022-03-13T00:00:00+00:00<p><a href="/static/img/2022-03/pinephone_in_spring.jpg"><img alt="" class="wfull border" src="/static/img/2022-03/pinephone_in_spring.jpg" /></a></p>
<p>Spring is almost here, in the northern hemisphere, and that means it is time
for another monthly service pack update for postmarketOS v21.12! This update
brings a few bug fixes and package upgrades from edge to the stable release.</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p>Dino ~0.3 upgraded to the latest version in @mimi89999's
<a href="https://github.com/mimi89999/dino/tree/feature/handy">feature/handy</a> branch,
with support for an adaptive UI.</p>
</li>
<li>
<p><del><a href="https://gitlab.gnome.org/World/Phosh/squeekboard/-/commit/d49ce45de0956432cef9b957f806d9377fee4bc0">Squeekboard 1.16.0</a>,
with many new language translations.</del> (Update 2022-03-14: reverted due
to build problems, <a href="https://gitlab.com/postmarketOS/pmbootstrap/-/issues/2110">pmb#2110</a>)</p>
</li>
<li>
<p>Portfolio upgraded to <a href="https://github.com/tchx84/Portfolio/blob/master/CHANGELOG.md#0913-2022-02-17">0.9.3</a>,
bringing support for mounting/managing external drives. Useful for using usb
drives with a docked device, or SD cards on devices that support those.</p>
</li>
<li>
<p>Fixed alarms not waking devices from suspend
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1189">pma#1189</a>),
the daemon (<code>waked</code>) responsible for scheduling the wake event was not set to
start by default.</p>
</li>
<li>
<p>SDM845 Linux kernel upgraded to <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2986">5.16.12</a></p>
</li>
<li>
<p>MSM8996 Linux kernel upgraded to <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2979">5.16.12</a></p>
</li>
<li>
<p>N900 Linux kernel upgraded to <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2964">5.15.25</a></p>
</li>
<li>
<p>PinePhone keyboard kernel driver is now built as module
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1444">pma#1444</a>)</p>
</li>
</ul>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users
of the v21.12 release will receive this service pack automatically on their
next system update. If you read this blog post right after it was published, it
may take a bit until binary packages are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community
members and upstream projects.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/web/@postmarketOS/107950172499731125">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/192281">Lemmy</a></li>
</ul>v21.12 Service Pack 2https://postmarketos.org/blog/2022/02/11/v21.12.2-release/2022-02-11T00:00:00+00:00<p>The second service pack for the v21.12 release brings many more improvements
from edge to the stable release, with the notable changes detailed below.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2022-02/mms.jpg"><img alt="" class="wfull border" src="/static/img/2022-02/mms_thumb.jpg" /></a>
</div><div class="grid-text">
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p>chatty 0.6.1 is upgraded to the latest version. This release is a significant
upgrade over 0.4, bringing support for MMS messaging, for sending/receiving
arbitrary files/media and group chat, and many many bug fixes and stability
improvements.</p>
</li>
<li>
<p>Phosh 0.15 is upgraded to the latest version, bringing support for the
much-desired ability to use passphrases (i.e. no longer limited to numbers)
to the lockscreen. In addition, if you have a pin-protected SIM, you'll now
be prompted to unlock it.</p>
</li>
<li>
<p><a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2893">Sxmo 1.8.2</a>
is upgraded to the latest release bringing many bug fixes, and a new
configuration layout that requires user intervention on upgrade (see below
for details). The default editor was also changed from <code>vis</code> to <code>vim</code>.</p>
</li>
</ul>
</div></div>
<h2 id="sxmo-182-details"><a class="toclink" href="#sxmo-182-details">Sxmo 1.8.2 Details</a></h2>
<p>Sxmo 1.8.2 fixes many issues but like most Sxmo releases, it requires manual
intervention. It is not recommended you upgrade unless you have time to fix
potential issues.</p>
<p>After upgrading and rebooting, all custom hooks and configs in ~/.config/sxmo
will be switched in favour of the default configs and hooks. Any custom configs
and hooks that existed prior to the upgrade were not deleted - you must run
<code>sxmo_migrate.sh</code> and this tool will migrate the old configs to the current
version of Sxmo. You must carefully merge your old configs with the new
recommended defaults. We recommend you do this migration over an ssh connection
just in case the migration does not go well and sway/dwm does not launch. After
migrating, reboot.</p>
<p>You can get more info about <code>sxmo_migrate.sh</code> from <a href="https://man.sr.ht/~anjan/sxmo-docs-stable/USERGUIDE.md#strongupdate-migrationsstrong">the Sxmo Stable Release User Guide.</a></p>
<p>For a technical explanation of why this manual intervention is required, please
see co-maintainer <a href="https://momi.ca/posts/2022-02-04-sxmo-migrate.html">Anjan Momi's blog post on the subject.</a></p>
<p>You can view the release notes for 1.8.0, and 1.8.1 on the Sxmo mailing list:
<a href="https://lists.sr.ht/~mil/sxmo-announce/%3C3KD3RSHP58RIQ.3R61291GDU0LW%40yellow-orcess.my.domain%3E">1.8.0</a>,
<a href="https://lists.sr.ht/~mil/sxmo-announce/%3C20220205203322.w5idffuf3jiy7uxy%40worker.anaproy.lxd%3E">1.8.1</a>
Sxmo 1.8.2 is a minor release that changes the default editor from vis to vim.
Vis had issues with sending texts and exiting with a bad error code. If you
have changed $EDITOR to something else, you do not need to worry about this
except vis is no longer recommended for use with Sxmo.</p>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users
of the v21.12 release will receive this service pack automatically on their
next system update. If you read this blog post right after it was published, it
may take a bit until binary packages are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community
members and upstream projects.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/107781146443611075">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/172467">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=30305862">HN</a>
</small></li>
</ul>v21.12 Service Pack 1https://postmarketos.org/blog/2022/01/17/v21.12.1-release/2022-01-17T00:00:00+00:00<p><a href="/static/img/2022-01/about-v21.12.1.jpg"><img alt="" class="wfull border" src="/static/img/2022-01/about-v21.12.1.jpg" /></a></p>
<p>Welcome to 2022! This is the first service pack of the year bringing some of the improvements from edge to stable. This
also brings a few nice new features to the v21.12 release that were not ready for inclusion yet when the last stable
release was made.</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p><a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2817">Nokia N900</a> is back! It cheated death once again
with the help of @sicelo and @danct12, who have picked up maintainership of the device, upgraded the kernel and done
various fixes.</p>
</li>
<li>
<p><a href="https://github.com/megous/linux/releases/tag/orange-pi-5.15-20220105-2352">Allwinner Linux 5.15.3</a> is now the latest
kernel used for the PinePhone, this also brings support for the PINE64 hardware keyboard to stable, just in time
since people have been receiving the units.</p>
</li>
<li>
<p><a href="https://lists.sr.ht/~mil/sxmo-announce/%3C20220107164241.u7q5uaok5wkw37y6%40worker.anaproy.lxd%3E">Sxmo 1.7.1</a>
is the latest and greatest Sxmo version, bringing visual voicemails among a lot of other things, see the
neatly detailed release notes.</p>
</li>
<li>
<p><a href="https://gitlab.com/postmarketOS/gnss-share/-/tags/0.4">GNSS Share 0.4</a>
is now the GPS implementation for the Librem 5. This is a major component needed for getting assisted GPS working on
this hardware improving the speed a GPS lock can be acquired.</p>
</li>
<li>
<p><a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2795">Gnome Control Center</a> has a small bugfix that stops
a crash when opening the printing panel so the printing system is now activated in Gnome. (Note that using the
printing panel currently requires manually starting cups.)</p>
</li>
</ul>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2022-01/ppkb.jpg"><img alt="" class="w300 border" src="/static/img/2022-01/ppkb_thumb.jpg" /></a>
</div><div class="grid-text">
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users of the v21.12 release will receive this
service pack automatically on their next system update. If you read this blog post right after it was published, it may
take a bit until binary packages are available. Also for the N900 images, they will take a bit.</p>
<p>Thanks to everybody who made this possible, especially our amazing community members and upstream projects.
</div></div>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/web/@postmarketOS/107634826376664009">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/151296">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=29961658">HN</a>
</small></li>
</ul>postmarketOS Release: v21.12https://postmarketos.org/blog/2021/12/29/v21.12-release/2021-12-29T00:00:00+00:00<p><a href="/static/img/2021-12/v21.12_pinebookpro.jpg"><img alt="" class="wfull border" src="/static/img/2021-12/v21.12_pinebookpro.jpg" /></a></p>
<p>It's the end of another year, and we're happy to announce the v21.12 release of
postmarketOS, based on Alpine Linux 3.15!</p>
<p>Thanks to our amazing contributors, the amount of supported devices has been
increased to 23 (from 15 in v21.06). As in previous releases, we ship pre-built
images for phones and tablets with the mobile-optimized Phosh, Plasma Mobile
and Sxmo interfaces. Other form factors, such as the PineBook Pro get
images with different interfaces as it makes sense. In the picture above it
runs Plasma Desktop, and besides that we have Gnome, Sway, Phosh and Console.
Find all images at the <a href="/download/">download</a> page.</p>
<p>v21.12, like previous releases, is geared mainly towards Linux
enthusiasts; it may be a bit rough around the edges so expect some bugs. Help
identifying and resolving issues is always greatly appreciated.</p>
<h2 id="supported-devices"><a class="toclink" href="#supported-devices">Supported devices</a></h2>
<p><div class="grid"><div class="grid-side">
<p><a href="/static/img/2021-12/op6.jpg"><img alt="" class="w300 border" src="/static/img/2021-12/op6_thumb.jpg" /></a>
<br><span class="w300">
The OnePlus 6, enjoying a fun day in nature with mainline Linux and Phosh. pmOS
tweaks was used to deal with the clock and notch.
</span></p>
</div><div class="grid-text">
<ul>
<li>Arrow DragonBoard 410c <span class="new">new</span></li>
<li>ASUS MeMo Pad 7</li>
<li>BQ Aquaris X5</li>
<li>Lenovo A6000 <span class="new">new</span></li>
<li>Lenovo A6010 <span class="new">new</span></li>
<li>Motorola Moto G4 Play</li>
<li>ODROID HC2 <span class="new">new</span></li>
<li>OnePlus 6</li>
<li>OnePlus 6T</li>
<li>PINE64 PineBook Pro <span class="new">new</span></li>
<li>PINE64 PinePhone</li>
<li>PINE64 PineTab</li>
<li>PINE64 RockPro64 <span class="new">new</span></li>
<li>Purism Librem 5</li>
<li>Samsung Galaxy A3 (2015)</li>
<li>Samsung Galaxy A5 (2015)</li>
<li>Samsung Galaxy S4 Mini Value Edition</li>
<li>Samsung Galaxy Tab A 8.0 <span class="new">new</span></li>
<li>Samsung Galaxy Tab A 9.7 <span class="new">new</span></li>
<li>Wileyfox Swift</li>
<li>Xiaomi Mi Note 2</li>
<li>Xiaomi Pocophone F1 <span class="new">new</span></li>
<li>Xiaomi Redmi 2</li>
</ul>
</div></div>
<p><div class="grid"><div class="grid-side">
<p><a href="/static/img/2021-12/v21.12_phosh.jpg"><img alt="" class="w300 border" src="/static/img/2021-12/v21.12_phosh_thumb.jpg" /></a>
<br><span class="w300">
The combined application and task switcher of Phosh 0.14.0 with Firefox and
Portfolio.
</span></p>
</div><div class="grid-text">
<h2 id="highlights"><a class="toclink" href="#highlights">Highlights</a></h2>
<h3 id="user-interfaces"><a class="toclink" href="#user-interfaces">User Interfaces</a></h3>
<ul>
<li>
<p><a href="https://lists.sr.ht/~mil/sxmo-announce/%3C31IGOQIT71NT5.2LYA6VY1SCLPK%40stacyharper.net%3E">Sxmo 1.6.x</a>
brings the whole Sxmo stack from X11 to Wayland! The Sxmo development team
and users tested this impressive undertaking in postmarketOS edge since
November, and after the usual release coordination we're happy to have 1.6.1
running on top of this new stable pmOS v21.12 release.</p>
</li>
<li>
<p>Plasma Mobile Gear 21.12 not only has more or less by coincidence the same
release version as this postmarketOS release. But also it brings a huge
amount of improvements over the last version. Find some great visual
impressions over at the
<a href="https://plasma-mobile.org/2021/12/07/plasma-mobile-gear-21-12/">Plasma Mobile Blog</a>.</p>
</li>
<li>
<p>Phosh 0.14.0 is the same version we backported in last month's
<a href="/blog/2021/11/08/v21.06.4-release/">v21.06 SP4</a>. However some small tweaks
have been made (such as properly displaying the Firefox icon in the preview
window, as the screenshot shows), and many of the GNOME apps such as
gnome-settings have been upgraded to their GNOME 41 versions.</p>
</li>
</ul>
</div></div>
<div class="grid"><div class="grid-side">
<a href="/static/img/2021-12/v21.12_ttyescape.jpg"><img alt="" class="w300 border" src="/static/img/2021-12/v21.12_ttyescape_thumb.jpg" /></a>
</div><div class="grid-text">
<h3 id="ttyescape"><a class="toclink" href="#ttyescape">TTYescape</a></h3>
<p>Sometimes, unfortunately, things go sideways and the UI locks up or crashes. On
a system with a physical keyboard, you can easily jump to a new TTY to poke
around, restart things, or even just cleanly reboot. This is much more
difficult on a device with no physical keyboard... until now! TTYescape is an
amazing tool that uses hardware keys to quickly send you to a second TTY and
launch a touch keyboard so you can easily recover from situations that would
have required a force reboot in the past. Make sure you remember the key
combination:</p>
<ul>
<li>press the volume down button (keep it pressed)</li>
<li>tap the power button three times</li>
<li>release the volume down button</li>
</ul>
<p>Run the same steps again to get back to your UI. Starting with postmarketOS
v21.12, this works with Sxmo, Phosh and Plasma Mobile. Read more about it in
the <a href="https://wiki.postmarketos.org/wiki/TTYescape">wiki page</a>.</p>
</div></div>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-12/v21.12_tweaks.jpg"><img alt="" class="w300 border" src="/static/img/2021-12/v21.12_tweaks.jpg" /></a>
</div><div class="grid-text">
<h3 id="postmarketos-tweaks-090"><a class="toclink" href="#postmarketos-tweaks-090">postmarketos-tweaks 0.9.0</a></h3>
<p>Tweaks 0.9.0 is now able to control the
<a href="https://linmob.net/phosh-0-12-app-drawer/">app drawer filter</a> in Phosh. On a
related note, postmarketos-tweaks has been able for a long time to set the
suspend timeout for phones that can go into deep sleep (notably the PinePhone).
With postmarketOS v21.12 we set the default value from 15 minutes to two
minutes, which saves a lot of battery.</p>
<h3 id="boot-deploy-postmarketos-mkinitfs-100"><a class="toclink" href="#boot-deploy-postmarketos-mkinitfs-100">boot-deploy / postmarketos-mkinitfs >= 1.0.0</a></h3>
<p>The tool that generates boot files (postmarketos-mkinitfs) was rewritten and
supporting scripts for installing boot-related files (boot-deploy) were
improved to help with overall reliability when updating the kernel and
initramfs. Files are installed atomically, so having an unbootable device after
an update should be a thing of the past.</p>
</div></div>
<h3 id="mobile-config-firefox-300"><a class="toclink" href="#mobile-config-firefox-300">mobile-config-firefox 3.0.0</a></h3>
<p>Firefox >= 91 had several design changes and required parts of
mobile-config-firefox to be rewritten. While at it, the navigation bar was
moved to the bottom after asking the community in a poll whether it's a good
idea or not and a whole bunch of UI glitches were fixed. u-block origin is also
installed by default now. Details and photos in
<a href="https://fosstodon.org/@ollieparanoid/107394745970284867">this thread</a>.</p>
<p><div class="grid"><div class="grid-text">
<h2 id="upgrading-from-v2106"><a class="toclink" href="#upgrading-from-v2106">Upgrading from v21.06</a></h2>
<p>If you have the previous release, postmarketOS v21.06, installed on your
device, the method described for upgrading previous releases is still the best
option. You can find detailed instructions on <a href="https://wiki.postmarketos.org/wiki/Upgrade_release">the wiki page for upgrading
existing installations of
postmarketOS</a>. We
understand this is not the best solution, and are working to provide a more
streamlined upgrade experience in a future postmarketOS release.
</div><div class="grid-side">
<a href="/static/img/2021-12/v21.12_mi_note2.jpg"><img alt="" class="w300 border" src="/static/img/2021-12/v21.12_mi_note2_thumb.jpg" /></a>
<br><span class="w300">
Xiaomi Mi Note 2 displaying the welcome app on a sunny day below a palm tree.
</span>
</div></div>
<h3 id="nokia-n900-didnt-make-it-this-time"><a class="toclink" href="#nokia-n900-didnt-make-it-this-time">Nokia N900 didn't make it this time</a></h3>
<p><div class="grid"><div class="grid-side">
<p><a href="/static/img/2021-03/n900-i3wm.jpg"><img alt="" class="w300 border" src="/static/img/2021-03/n900-i3wm-thumb.jpg" /></a>
<br><span class="w300">
Conky has been displaying the 5.7 kernel for too long in the pmOS port of the
Nokia N900.
</span></p>
</div><div class="grid-text">
<p>If you read the above list carefully and have been following postmarketOS for
a while, you probably noticed that the N900 isn't in the list anymore. Despite
the fact that it is a beloved classic device (we even celebrated its
<a href="/blog/2019/11/01/ten-years-of-nokia-n900/">10th birthday</a> here on the blog),
most people contributing to postmarketOS are focusing on other devices.</p>
<p>After a <a href="https://fosstodon.org/@postmarketOS/107309633255683213">last call</a> we
had to drop it from the release and will soon move it back from the "community"
<a href="https://wiki.postmarketos.org/wiki/Device_categorization">device category</a>
back to "testing". In the near future, there won't be new pre-built
postmarketOS images for the N900 available anymore, however you can still
run pmOS edge on it if you do the
<a href="https://wiki.postmarketos.org/wiki/Installation_guide">installation with pmbootstrap</a>.
Just be aware that there most likely won't be any upgrades to the kernel etc.
unless you contribute them yourself.
</div></div>
<p>Another option for N900 users is checking out the port from our friends at
<a href="https://leste.maemo.org/Nokia_N900">Maemo Leste</a>, which is still actively
maintained.</p>
<h2 id="more-development-news"><a class="toclink" href="#more-development-news">More development news</a></h2>
<p>The new release includes all but the most recent improvements that were made to
postmarketOS edge. Check out the
<a href="https://cast.postmarketos.org/">postmarketOS podcast</a> where we discuss these
in detail.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/web/@postmarketOS/107531914067276629">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/133011">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=29729146">HN</a>
</small></li>
</ul>postmarketOS Release: v21.06 Service Pack 4https://postmarketos.org/blog/2021/11/08/v21.06.4-release/2021-11-08T00:00:00+00:00<p><a href="/static/img/2021-11/numberstation.jpg"><img alt="" class="wfull border" src="/static/img/2021-11/numberstation_thumb.jpg" /></a></p>
<p>A fresh new service pack bringing some nice features from edge to stable. This
is the last service pack in the v21.06 release cycle, we plan to publish a new
postmarketOS v21.12 release in December, based on the
<a href="https://lists.alpinelinux.org/~alpine/devel/%3CYWsU6tiHtmsWIma7%40alpha%3E">upcoming Alpine 3.15</a>
and a soon-to-be-created new branch from postmarketOS edge.</p>
<h2 id="contents"><a class="toclink" href="#contents">Contents</a></h2>
<ul>
<li>
<p><a href="https://gitlab.gnome.org/World/Phosh/phosh/-/tags/v0.14.0">Phosh 0.14.0</a>
brings various improvements, most noteworthy
<a href="https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/886">launch splash support</a>
and <a href="https://fosstodon.org/@ollieparanoid/107113299085932411">seek buttons</a>
for the media player widget.</p>
</li>
<li>
<p><a href="https://git.sr.ht/~martijnbraam/numberstation/refs/1.0.0">Numberstation 1.0.0</a>
is the 2FA token app shown in the photo. With a newly added import/export
feature to quickly backup and restore keys and move them across devices, as
well as the newly added
<a href="https://en.wikipedia.org/wiki/HMAC-based_one-time_password">HOTP</a> support,
it is now considered feature complete. Backup files are accepted in the
format of one <code>otpauth://</code> URL per line. For HOTP support, keys are based on
counters instead of time. UI changes were made to not increment this counter
by accident.</p>
</li>
<li>
<p><a href="https://gitlab.com/mobian1/devices/eg25-manager">eg25-manager 0.4.1</a>, the
helper daemon for the EG25 modem in the PinePhone, has gotten
<a href="https://gitlab.com/mobian1/devices/eg25-manager/-/merge_requests/15">GNSS assistance support</a>
and lots of small general improvements compared to the version we had
previously packaged on the stable branch.</p>
</li>
<li>
<p><a href="https://gitlab.freedesktop.org/pixman">Pixman</a> is still at the latest
official 0.40.0 version from April 2020 (apparently upstream doesn't release
that often). However we cherry picked the recently merged patch to use
<a href="https://gitlab.freedesktop.org/pixman/pixman/-/merge_requests/20">NEON instructions on ARM64 devices</a>
after having it in
<a href="https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/24706">Alpine edge</a>
for a while.
Pixman is a low level CPU compositing and drawing library that is used in
<em>lots</em> of applications, therefore this makes all aarch64 phones a bit more
responsive.</p>
</li>
</ul>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users
of the v21.06 release will receive this service pack automatically on their
next system update. If you read this blog post right after it was published,
it may take a bit until binary packages are available.</p>
<p>Thanks to everybody who made this possible, especially our amazing community
members and upstream projects.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/107243218147737266">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/88444">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=29153307">HN</a>
</small></li>
</ul>postmarketOS Release: v21.06 Service Pack 3https://postmarketos.org/blog/2021/10/10/v21.06.3-release/2021-10-10T00:00:00+00:00<p><a href="/static/img/2021-10/oled-theme.jpeg"><img alt="" class="wfull border" src="/static/img/2021-10/oled-theme_thumb.jpg" /></a></p>
<p>New month, new service pack! As always, new features and fixes have been
backported from postmarketOS edge to the stable version after tough testing by
our tough community members on edge.</p>
<h2 id="overview"><a class="toclink" href="#overview">Overview</a></h2>
<ul>
<li><a href="https://sxmo.org">Sxmo</a> 1.5.2: as usually we've coordinated with the Sxmo
team on what should be in the service pack, and thanks to them, got Sxmo
1.5.2 in. This is the tried and tested
<a href="https://lists.sr.ht/~mil/sxmo-announce/%3C2ORBA75Z8VN74.3PGSSQF7MP773%40stacyharper.net%3E">1.5.1</a>
version from edge, with just minor extra fixes on top.</li>
<li><a href="https://gitlab.com/postmarketOS/postmarketos-tweaks/-/tags/0.8.1">Tweaks 0.8.1</a>
has a new sound panel, better notch support, some bugfixes for the background
daemon and fixed touch navigation on the mobile layout.</li>
<li><a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2416">linux-postmarketos-qcom-sdm845 5.14</a>
improves the OnePlus 6 and 6T ports: among other improvements it ships
initial modem support and more GPU performance.</li>
<li><a href="https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/blob/mm-1-18/NEWS">ModemManager 1.18.2</a>
was required for modem support in the SDM845 kernel. As nice benefit it
should improve call and SMS handling.</li>
<li><a href="https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/1.32.2/NEWS">NetworkManager 1.32.10</a>
was backported to fix hotspot functionality while having the firewall
enabled.</li>
<li><a href="https://gitlab.com/postmarketOS/postmarketos-theme">postmarketos-theme</a> can
now be installed to get GTK 3 and GTK 4 postmarketOS themes (see photo).</li>
</ul>
<h2 id="details"><a class="toclink" href="#details">Details</a></h2>
<h3 id="modemmanager"><a class="toclink" href="#modemmanager">ModemManager</a></h3>
<p>This release backports the calling stack from edge. The new release of ModemManager brings a lot of improvements
for the devices supported in community and will help a lot with the stability of the modem when the PinePhone
awakes from deep sleep. This release also adds support for the modem in Qualcomm Snapdragon 845 devices. The full
calling functionality on those devices is not working yet but it means that at least mobile data and SMS is usable.</p>
<h3 id="postmarketos-theme"><a class="toclink" href="#postmarketos-theme">postmarketos-theme</a></h3>
<p>This release also includes the new postmarketOS theme as an optional package. This currently contains a GTK 3 and GTK 4
theme which is based on Adwaita but replaces the standard blue highlights in the theme with postmarketOS green. There's
also the oled and paper variant of the theme that are completely black and completely white. This will mainly look great
on oled displays, as the name suggests. It's possible to try this on your own device now by installing the
<code>postmarketos-theme</code> package and selecting one of the four themes in postmarketOS tweaks.</p>
<h3 id="tweaks"><a class="toclink" href="#tweaks">Tweaks</a></h3>
<p>postmarketOS tweaks also has a new release in stable now that contains a series of fixes from community members.
One of the most visible changes is the new sound panel that allows changing the GTK sound theme but also allows making
a custom theme by manually specifying the audio files for every event. Another change is the notch tweaks for Phosh
that build on top of the CSS improvements of the last update. This allows moving Phosh UI elements over to make them
not appear under the notch of modern smartphones.</p>
<h2 id="how-to-get-it"><a class="toclink" href="#how-to-get-it">How to get it</a></h2>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users
of the v21.06 release will receive this service pack automatically on their
next system update.</p>
<p>Thanks to everybody who made this possible, especially our amazing community
members and upstream projects.</p>
<h2 id="known-issues"><a class="toclink" href="#known-issues">Known issues</a></h2>
<p>Samsung Galaxy S4 Mini Value Edition (samsung-serranove) users have experienced
a regression with the new Modemmanager version. Details and workaround in
<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1274">pma#1274</a>.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/107078180299976794">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/84759">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=28819765">HN</a>
</small></li>
</ul>postmarketOS Release: v21.06 Service Pack 2https://postmarketos.org/blog/2021/09/13/v21.06.2-release/2021-09-13T00:00:00+00:00<p><a href="/static/img/2021-09/vlinder.jpg"><img alt="" class="wfull border" src="/static/img/2021-09/vlinder_thumb.jpg" /></a></p>
<p>The second service pack for postmarketOS v21.06 has been released. As usually,
it brings improvements from edge to the stable release of postmarketOS, after
careful testing by developers and brave community members on living on the
edge.</p>
<p>The v21.06.2 service pack contains:</p>
<ul>
<li><a href="https://git.sr.ht/~martijnbraam/megapixels/refs/1.3.0">Megapixels 1.3.0</a>,
with performance improvements and new image post-processing. As you've
guessed, the image above was shot with this Megapixels release on a
PinePhone. If you have a similar setup of butterflies and flowers in your
garden, or something else that is nice to look at, give it a try!</li>
<li><a href="https://gitlab.gnome.org/World/Phosh/phosh/-/tags/v0.12.1">Phosh 0.12.1</a></li>
<li><a href="https://github.com/megous/linux/releases/tag/orange-pi-5.13-20210819-1611">megi's 5.13-20210819-1611 kernel</a>
for the PinePhone and PineTab</li>
<li><a href="http://haikarainen.github.io/light/">Light daemon</a> is now available for
usage in Sxmo</li>
<li>gpodder-adaptive 3.10.21, with major
<a href="https://fosstodon.org/@ollieparanoid/106631629628073756">performance and UI fixes</a></li>
<li><a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2315">u-boot-pinephone 2021.07</a>
with a new crust release that improves battery life significantly in standby</li>
</ul>
<p>Find the most recent images at our <a href="/download/">download page</a>. Existing users
of the v21.06 release will receive this service pack automatically on their
next system update.</p>
<p>Thanks to everybody who made this possible, especially our amazing community
members and upstream projects.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/106921145673356508">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/80650">Lemmy</a>
<small></li>
<li><a href="https://old.reddit.com/r/postmarketOS/comments/pn307t/postmarketos_release_v2106_service_pack_2/">Reddit</a></li>
<li><a href="https://news.ycombinator.com/item?id=28505786">HN</a>
</small></li>
</ul>postmarketOS Release: v21.06 Service Pack 1https://postmarketos.org/blog/2021/08/04/v21.06.1-release/2021-08-04T00:00:00+00:00<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-08/v21.06.1_pinephone_sxmo.jpg"><img alt="" class="wfull border" src="/static/img/2021-08/v21.06.1_pinephone_sxmo_thumb.jpg" /></a>
</div><div class="grid-text">
<p>The first service pack for the current stable branch has been released, v21.06.1.</p>
<p>Service packs bring improvements from the edge channel of postmarketOS to the
stable release after they have been thoroughly tested.</p>
<p>Changes:</p>
<ul>
<li>Sxmo upgrade to 1.5.0</li>
<li>postmarketOS Tweaks upgrade to 0.7.3</li>
<li>Firefox Mobile Config upgrade to 2.2.0</li>
<li>Pinephone kernel upgrade to 5.12.12</li>
<li>Added Bluetooth MPRIS support for media keys</li>
<li>GNOME Clocks can now wake the Pinephone from suspend when alarms trigger</li>
<li>All kernels/devices in the stable release support nftables
</div></div></li>
</ul>
<p>For best stability, the service pack contains tried and tested versions of applications and kernels. </p>
<p>Find the most recent images at our <a href="/download/">download page</a>.</p>
<p>Existing users of the v21.06 release will receive the service pack changes on
their next system update.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/106708493195993201">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/76445">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=28085449">HN</a>
</small></li>
</ul>postmarketOS Release: v21.06https://postmarketos.org/blog/2021/07/04/v21.06-release/2021-07-04T00:00:00+00:00<p><a href="/static/img/2021-07/v21.06_multi_devices.jpg"><img alt="" class="wfull border" src="/static/img/2021-07/v21.06_multi_devices_thumb.jpg" /></a></p>
<p>We are happy to announce the v21.06 release of postmarketOS, based on Alpine
Linux 3.14! If you're wondering why it happened three months after the last
release already, the reason is that we managed to follow Alpine's release more
closely this time. Instead of two and a half months after Alpine's release, it
took us only half a month to get this one out. Following releases can be
expected about each six months from now on, closely tracking Alpine's releases.</p>
<p>Thanks to our amazing contributors, the amount of supported devices has been
increased to 15 (from 11 in v21.03.). As in previous releases, each of the
supported devices (with the exception of the N900) is able to run
mobile-optimized UIs like Phosh, Plasma Mobile, and Sxmo. Pre-built images for
these devices, which all run (close to) mainline kernels, can be downloaded
from
<a href="https://images.postmarketos.org/bpo/v21.06/">our shiny new image download page</a>
(but really you should start at <a href="https://postmarketos.org/download/">download</a>
and read the instructions there first).</p>
<p>Also, like previous releases, v21.06 is geared mainly towards Linux
enthusiasts; it may be a bit rough around the edges so expect some bugs. Help
identifying and resolving issues is always greatly appreciated.</p>
<h2 id="supported-devices"><a class="toclink" href="#supported-devices">Supported devices</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-07/v21.06_pinetab.jpg"><img alt="" class="w300 border" src="/static/img/2021-07/v21.06_pinetab_thumb.jpg" /></a>
</div><div class="grid-text">
<ul>
<li>ASUS MeMo Pad 7</li>
<li>BQ Aquaris X5</li>
<li>Motorola Moto G4 Play</li>
<li>Nokia N900</li>
<li>OnePlus 6 <span class="new">new</span></li>
<li>OnePlus 6T <span class="new">new</span></li>
<li>PINE64 PinePhone</li>
<li>PINE64 PineTab</li>
<li>Purism Librem 5</li>
<li>Samsung Galaxy A3 (2015)</li>
<li>Samsung Galaxy A5 (2015)</li>
<li>Samsung Galaxy S4 Mini Value Edition</li>
<li>Wileyfox Swift</li>
<li>Xiaomi Mi Note 2 <span class="new">new</span></li>
<li>Xiaomi Redmi 2 <span class="new">new</span></li>
</ul>
</div></div>
<h2 id="highlights"><a class="toclink" href="#highlights">Highlights</a></h2>
<p>All user interfaces have been upgraded to later versions, and all devices ports
have been improved. Besides that, here are the most noteworthy changes.</p>
<p>Unlocking the rootfs with osk-sdl now disables read/write queues, increasing
write performance in simple benchmarks by ~35% and read performance by ~33% on
filesystems with 4K block sizes (default for ext4)
(<a href="https://gitlab.com/postmarketOS/osk-sdl/-/merge_requests/133">!133</a>).</p>
<p>We got rid of the username/password prompt for the dedicated SSH user in the
on-device installer, making the installation less complex
(<a href="https://postmarketos.org/edge/2021/06/18/ondev-ssh/">details</a>).</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-07/v21.06_portfolio.jpg"><img alt="" class="w300 border" src="/static/img/2021-07/v21.06_portfolio_thumb.jpg" /></a>
</div><div class="grid-text">
<h3 id="device-specific"><a class="toclink" href="#device-specific">Device specific</a></h3>
<ul>
<li>PinePhone kernel improvements from Megi and Samuel, most notably leading to
improved battery life (see <a href="https://xnux.eu/log/#033">Megi's post</a>).</li>
<li>Devices won't suspend anymore while audio is playing (even if the application
does not use the inhibit API, like VLC). This is most useful for the
PinePhone where suspend is enabled with CRUST.</li>
<li>The Librem 5 saw Wi-Fi stability fixes and added support for using the
smartcard.</li>
</ul>
<h3 id="portfolio"><a class="toclink" href="#portfolio">Portfolio</a></h3>
<p>The default file manager for the Phosh UI is now Portfolio, which is better
optimized for mobile display sizes. The previous file manager was Nemo, which
is still available in the Alpine Linux repo in case you prefer that, but we
think that Portfolio is much more usable for the devices that postmarketOS
targets.
</div></div>
<h3 id="firewall"><a class="toclink" href="#firewall">Firewall</a></h3>
<p>With v21.06, postmarketOS now includes a firewall, powered by nftables. The
purpose is of course to provide another layer of security. It is enabled on
all devices (<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/1119">#1119</a>:
except for OnePlus 6/6T and Xiaomi Mi Note 2).
<a href="https://wiki.postmarketos.org/wiki/Firewall#Default_rules">Default rules</a> are
included that should cover most use cases, and we can package up more rules on
demand. Read the <a href="https://wiki.postmarketos.org/wiki/Firewall">wiki page</a> for
more information.</p>
<h2 id="upgrading-from-v2103"><a class="toclink" href="#upgrading-from-v2103">Upgrading from v21.03</a></h2>
<p>If you have the previous release, postmarketOS v21.03, installed on your
device, the method described for upgrading previous releases is still the best
option. You can find detailed instructions on <a href="https://wiki.postmarketos.org/wiki/Upgrade_release">the wiki page for upgrading
existing installations of
postmarketOS</a>. We
understand this is not the best solution, and are working to provide a more
streamlined upgrade experience in a future postmarketOS release.</p>
<h2 id="more-development-news"><a class="toclink" href="#more-development-news">More development news</a></h2>
<p>The new release includes all but the most recent improvements that were made to
postmarketOS edge. Check out the
<a href="https://cast.postmarketos.org/">postmarketOS podcast</a> where we discuss these
in detail.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/106523893483849781">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/72959">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=27731930">HN</a>
</small></li>
</ul>Four years of postmarketOS /
AlpineConf 2021https://postmarketos.org/blog/2021/05/26/four-years/2021-05-26T00:00:00+00:00<h3 id="happy-4th-birthday"><a class="toclink" href="#happy-4th-birthday">Happy 4th birthday!</a></h3>
<p>"Bend an existing Linux distribution to run on smartphones." This is what we
set out to do
<a href="/blog/2017/05/26/intro/#we-can-fix-this-as-a-community">four years ago</a>, and
it has been quite the success. Alpine Linux, with the thin postmarketOS layer
on top, is now able to <em>boot</em> on an ever increasing, insane number of currently
289 <a href="https://wiki.postmarketos.org/wiki/Devices">mobile devices</a>.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/wallpaper-darkside.png"><img alt="" class="w300 border" src="/static/img/2018-06/wallpaper-darkside-thumb.jpg" /></a>
</div><div class="grid-text">
While most of these run downstream Linux kernels and can only be used as
Raspberry Pi-like tinkering devices, it is still a huge accomplishment by our
amazing community. But even greater feats are the devices running
<a href="https://wiki.postmarketos.org/wiki/(Close_to)_Mainline">(close to) mainline</a>
kernels, such as the eleven phones present in our
<a href="/blog/2021/03/31/v21.03-release/">latest release</a>. These became quite usable
for Linux enthusiasts, and some people are daily driving them.
</div></div>
<p>There is still lots of work to do, but at the same time it is clear
now that the concept of running real Linux distributions on smartphones has a
foot in the door. As the PinePhone and Librem 5 showed up, more and more
amazing projects with similar missions were started on a wide range of Linux
distributions. This has lead to more people getting involved, and more
collaborations upstream. Most notably <a href="https://mobian-project.org">Mobian</a>, who
we have a long history of collaborating with on projects like osk-sdl, the
on-device installer, PinePhone modem improvements and other components. We
congratulate the Mobian developers for
<a href="https://blog.mobian-project.org/posts/2021/05/17/update-2021-05-17/">adding support for two mainlined SDM845 Android phones</a>.
Linux distributions on smartphones are here to stay!</p>
<h3 id="alpineconf-2021"><a class="toclink" href="#alpineconf-2021">AlpineConf 2021</a></h3>
<p>Back to our own distribution and what we are based on: the first AlpineConf
ever has taken place online on the 15th and 16th of May 2021.
<a href="https://ariadne.space/2021/05/18/alpineconf-2021-recap/">Lots of enjoyable talks</a>
(<a href="https://gitlab.alpinelinux.org/alpine/alpineconf-cfp/-/issues">videos</a>,
<a href="https://bbb.dereferenced.org/b/adm-ec4-bx7-ypm">Q&As</a>) covered everything from
infrastructure to running Alpine on mainframes. Below are the presentations
(with Q&As appended) from the postmarketOS track.</p>
<h4 id="pmbootstrap-the-swiss-army-knife-of-postmarketos-development"><a class="toclink" href="#pmbootstrap-the-swiss-army-knife-of-postmarketos-development">pmbootstrap: the Swiss Army knife of postmarketOS development</a></h4>
<p><div class="grid"><div class="grid-side">
<a href="https://diode.zone/videos/watch/3476503c-6ca1-4628-a8e6-0d893def81b9"><img alt="" class="w300 border" src="/static/img/2021-05/talk-pmbootstrap.jpg" /></a>
</div><div class="grid-text">
@ollieparanoid introduces pmbootstrap, demonstrates how to set it up and how to
do the most common tasks (install pmOS, build packages and host your own repo,
port a new device, run QEMU). There's also a pmaports.git tour and a brief
dive into advanced features.</p>
</div></div>
62 min | video:
<a href="https://diode.zone/videos/watch/3476503c-6ca1-4628-a8e6-0d893def81b9">diode.zone</a>
(PeerTube),
<a href="https://odysee.com/@postmarketOS:1/alpineconf-2021-oliver:5">odysee.com</a>
(LBRY)
| <a href="/static/slides/2021-alpineconf-pmbootstrap/">slides</a></p>
<h4 id="showing-off-postmarketos"><a class="toclink" href="#showing-off-postmarketos">Showing off postmarketOS</a></h4>
<p><div class="grid"><div class="grid-side">
<a href="https://diode.zone/videos/watch/fa006d69-3934-4397-81ba-f696349868d3"><img alt="" class="w300 border" src="/static/img/2021-05/talk-showing-off.jpg" /></a>
</div><div class="grid-text">
@MartijnBraam shows his incredibly large collection of phones, and how it looks
like when you put postmarketOS with various user interfaces on them. Besides
the popular three (Phosh, Plasma Mobile, Sxmo), lesser known UIs like Shelli
are also covered.</p>
</div></div>
28 min | video:
<a href="https://diode.zone/videos/watch/fa006d69-3934-4397-81ba-f696349868d3">diode.zone</a>
(PeerTube),
<a href="https://odysee.com/@postmarketOS:1/alpineconf-2021-postmarketos-demo:e">odysee.com</a>
(LBRY)</p>
<h4 id="sxmo-simple-x-mobile-a-minimalist-environment-for-linux-smartphones"><a class="toclink" href="#sxmo-simple-x-mobile-a-minimalist-environment-for-linux-smartphones">Sxmo: Simple X Mobile - A minimalist environment for Linux smartphones</a></h4>
<p><div class="grid"><div class="grid-side">
<a href="https://diode.zone/videos/watch/b52e7c40-87cb-4479-a4cc-c11b1bfa8806"><img alt="" class="w300 border" src="/static/img/2021-05/talk-sxmo.jpg" /></a>
</div><div class="grid-text">
<p>@anjandev, @milesalan and @proycon explain the concept of running the tiling
window manager <a href="https://dwm.suckless.org/">dwm</a> and other suckless tools on a
smartphone with <a href="https://sr.ht/~mil/Sxmo/">Sxmo</a>, and then prove
in this mind-blowing talk that it actually works. Quoting @anjandev from the
Q&A: "I cannot go back to an Android anymore."</p>
</div></div>
29 min | video:
<a href="https://diode.zone/videos/watch/b52e7c40-87cb-4479-a4cc-c11b1bfa8806">diode.zone</a>
(PeerTube),
<a href="https://odysee.com/@postmarketOS:1/alpineconf-2021-oliver:5">odysee.com</a>
(LBRY)</p>
<h3 id="comments"><a class="toclink" href="#comments">Comments</a></h3>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/106302868167016914">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/67466">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=27294222">Hacker News</a>
</small></li>
</ul>v21.03 service pack 1 releasehttps://postmarketos.org/blog/2021/05/09/v21.03.1-release/2021-05-09T00:00:00+00:00<p>The first service pack for the current stable branch has been released,
v21.03.1. Services packs bring improvements from the edge channel of
postmarketOS to the stable release after they have been thoroughly tested.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-05/v21.03.1.jpg"><img alt="" class="w300 border" src="/static/img/2021-05/v21.03.1.jpg" /></a>
</div><div class="grid-text">
<p>New apps:</p>
<ul>
<li><a href="https://gitlab.com/postmarketOS/postmarketos-tweaks">postmarketOS Tweaks</a></li>
<li><a href="https://wiki.gnome.org/Apps/Lollypop">Lollypop</a></li>
<li><a href="https://git.sr.ht/~martijnbraam/numberstation">Numberstation</a></li>
</ul>
<p>Changes:</p>
<ul>
<li>Overclocking the memory frequency of the PinePhone and PineTab is now
possible with
<a href="https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone)#Changing_the_Clock_Frequency">update-u-boot</a></li>
<li>Librem 5 kernel upgrade to 5.11.11pureos1</li>
<li>Osk-sdl upgrade to 0.63</li>
<li>Phosh upgrade to 0.10.2</li>
<li>Megapixels upgrade to 0.16.0</li>
<li>Gpodder-adaptive upgrade to 3.10.17_git20210307</li>
<li>Calindori upgrade to 1.4</li>
<li>Geary upgrade to 3.38.2</li>
<li>Phosh, Plasma Mobile and Sxmo have font-noto, font-noto-emoji installed by
default in new installations</li>
</ul>
</div></div>
<p>For best stability, the service pack contains tried and tested versions. Most
recent releases of Megapixels and Geary are not included, as the service pack
already was in the testing phase.</p>
<p>Find most recent images at our <a href="/download/">download page</a>.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/106206532818564614">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/63222">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=27098197">Hacker News</a>
</small></li>
</ul>Second Beta Release: v21.03https://postmarketos.org/blog/2021/03/31/v21.03-release/2021-03-31T00:00:00+00:00<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-03/plamo-pinephone.jpg"><img alt="" class="w300 border" src="/static/img/2021-03/plamo-pinephone-thumb.jpg" /></a>
</div><div class="grid-text">
After months of hard work from our amazing community, we are proud to announce
the second beta release of postmarketOS, based on Alpine Linux 3.13. The amount
of supported devices has been increased from one (just the PinePhone in v20.05)
to no less than eleven - and all of them run a (close to) mainline kernel!</p>
<p>Each device is able to run modern phone shells Phosh, Plasma Mobile and Sxmo.
The Nokia N900 is an exception of course, for that one we recommend running i3.</p>
<p>As mentioned in the header of the blog post, in its current state, postmarketOS
is for Linux enthusiasts. Expect bugs and help out with fixing them. It's a
long hard road to an alternative smartphone OS that doesn't track its users,
gives back control and makes a long lifetime feasible. But we are making steady
progress, and when compared to when we started out, a huge community has been
established - not only within postmarketOS, but also a whole ecosystem of other
projects that share the same goal and work together.
</div></div>
<p>Release versions of postmarketOS are best for stability. For the over 250 (!)
booting devices in the <em>testing</em> category and rolling release thrills, use
postmarketOS edge.</p>
<h2 id="supported-devices"><a class="toclink" href="#supported-devices">Supported devices</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-03/n900-i3wm.jpg"><img alt="" class="w300 border" src="/static/img/2021-03/n900-i3wm-thumb.jpg" /></a>
</div><div class="grid-text">
<ul>
<li>ASUS MeMo Pad 7</li>
<li>BQ Aquaris X5</li>
<li>Motorola Moto G4 Play</li>
<li>Nokia N900</li>
<li>PINE64 PinePhone</li>
<li>PINE64 PineTab</li>
<li>Purism Librem 5</li>
<li>Samsung Galaxy A3 (2015)</li>
<li>Samsung Galaxy A5 (2015)</li>
<li>Samsung Galaxy S4 Mini Value Edition</li>
<li>Wileyfox Swift</li>
</ul>
</div></div>
<h2 id="highlights"><a class="toclink" href="#highlights">Highlights</a></h2>
<p>All user interfaces have been upgraded to their latest versions.
Sxmo developers even made sure to create their
<a href="https://lists.sr.ht/~mil/sxmo-announce/%3C20210329205326.i4veoh64u6huect6%40worker.anaproy.lxd%3E">Sxmo 1.4.0 version</a>
right in time to be integrated into v21.03!</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-03/sd-to-emmc.jpg"><img alt="" class="w300 border" src="/static/img/2021-03/sd-to-emmc-thumb.jpg" /></a>
</div><div class="grid-text">
<p>For all devices, pre-built images are provided from our shiny new
<a href="/download">download</a> page. There are two types of images, the regular images
and the graphical installer ones. Regular images are provided for all devices,
the graphical installer only for the PinePhone, PineTab and Librem 5 so far.</p>
<p>The installer images allow to encrypt the device, configure SSH and a user
password. For the PinePhone and PineTab, which are able to boot from SD card,
it even allows to install from the SD card to the eMMC.
</div></div>
<h2 id="upgrading-the-pinephone-from-v2005"><a class="toclink" href="#upgrading-the-pinephone-from-v2005">Upgrading the PinePhone from v20.05</a></h2>
<p>If you have the first beta, postmarketOS v20.05, installed on your PinePhone's
internal storage (e.g. because you bought the postmarketOS community edition),
<a href="https://wiki.postmarketos.org/wiki/Upgrade_release">make a backup of your home directory with rsync over SSH</a>.
Download a postmarketOS v21.03 installer image and flash it to an SD card as
<a href="https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone)">explained in the wiki</a>.
When it asks for the installation target, select "Internal (eMMC)" to overwrite
your previous installation. When the installation is done, remove the SD card
and then postmarketOS v21.03 will boot up. Use rsync again to restore your
settings.</p>
<h2 id="more-development-news"><a class="toclink" href="#more-development-news">More development news</a></h2>
<p>The new release includes all but the most recent improvements that were made to
postmarketOS edge. Check out the
<a href="https://cast.postmarketos.org/">postmarketOS podcast</a> where we discuss these
in detail and also have fun with less technical topics like the story of how
the new header image of this website was created from actual stone and not a
3D rendering :D</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/105985372351493503">Mastodon</a></li>
<li><a href="https://lemmy.ml/post/58929">Lemmy</a>
<small></li>
<li><a href="https://news.ycombinator.com/item?id=26649538">Hacker News</a>
</small></li>
</ul>The first service pack, v20.05.1, is releasedhttps://postmarketos.org/blog/2021/01/22/v20.05.1-is-released/2021-01-22T00:00:00+00:00<p><div class="grid"><div class="grid-side">
<a href="/static/img/2021-01/v20.05.1.jpg"><img alt="" class="w300 border" src="/static/img/2021-01/v20.05.1.jpg" /></a>
</div><div class="grid-text">
<p>The first major update to the stable channel of postmarketOS has been released. This is the v20.05.1 service pack
release that adds a few big improvements. Since Alpine Linux 3.13 has also been released recently this will also be the
only service pack that will be released in the v20.05 series. Now this release has been published the next release we
will focus on is the v21.03 stable release based on the new Alpine stable release.</p>
<p>These are all changes that are picked from the edge channel and have been tested by all our end-users that are running
postmarketOS edge on their devices. The point of the stable channel of postmarketOS is to be <em>really</em> stable, but since
the release cycle of 6 months roughly for stable builds is quite long in the software world, especially with the rapid
development of the PinePhone we decided that it makes sense to make a batch of backports from edge, test those
thoroughly and then release that as a service pack as one big update.</p>
</div></div>
<p>Since at this moment the PinePhone is the only device that's officially supported in the stable channel aside from the
qemu virtual devices all the updates are PinePhone and Phosh focussed, as that's what's shipped on the postmarketOS
PinePhone community edition phones.</p>
<p>The major new things in this service pack are:</p>
<ul>
<li>A kernel upgrade to 5.10.4, this is the current LTS version of the kernel and it also includes some major improvements
for the PinePhone like the 60Hz display refreshrate patch to make everything a bit smoother.</li>
<li>The autofocus firmware for the PinePhone camera is added.</li>
<li>The initramfs build system is updated so the GPU driver is available in the initfs. This makes the osk-sdl disk
encryption unlocker a lot smoother to use</li>
<li>A new version of the Geary e-mail client is added that fits a lot better on phone screens</li>
<li>The Phosh stack has been upgraded to 0.7.1, bringing the new pull-down menu with docking options and the
swipe-up-to-close gesture in the app overview</li>
<li>XMPP support in Chatty</li>
<li>A new release of gnome-control-center that has better fitting applets for mobile</li>
<li>Telephony should be more stable now due to the addition of eg25-manager</li>
</ul>
<p>A new build of the stable PinePhone+Phosh release is now also available from the build service. Images can be
downloaded at <a href="https://images.postmarketos.org/bpo/v20.05/pine64-pinephone/phosh/?C=M&O=D">images.postmarketos.org/bpo</a>.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=25871922">Hackernews</a></li>
<li><a href="https://fosstodon.org/@postmarketOS/105599179230050380">Mastodon</a></li>
</ul>Introducing the postmarketOS podcasthttps://postmarketos.org/blog/2020/12/19/new-podcast/2020-12-19T00:00:00+00:00<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-12/podcast.jpg"><img alt="" class="w300 border" src="/static/img/2020-12/podcast.jpg" /></a>
</div><div class="grid-text">
Here is a little holiday present from half the core team, the first episode of
the postmarketOS podcast! The idea is of course that you give it a listen, so
we won't spend much time introducing it here. Add
<a href="https://cast.postmarketos.org">https://cast.postmarketos.org</a> to your
podcatcher or visit the site for more information.</p>
<p>New episodes will be posted on that page, so we don't clutter the blog (much
like the now separate news section for the
<a href="/blog/2020/11/30/postmarketOS-in-2020-11-part-2/#news-section-for-the-edge-channel">edge channel</a>).
</div></div>
<h3 id="comments"><a class="toclink" href="#comments">Comments</a></h3>
<ul>
<li><a href="https://fosstodon.org/@postmarketOS/105408895579668108">Mastodon</a></li>
<li><a href="https://news.ycombinator.com/item?id=25481342">HN</a></li>
</ul>postmarketOS in 2020-11: Edge & Donationshttps://postmarketos.org/blog/2020/11/30/postmarketOS-in-2020-11-part-2/2020-11-30T00:00:00+00:00<p>Here is the promised second part of the November 2020 update. The other half is
<a href="/blog/2020/11/06/postmarketOS-in-2020-11-part-1/">here</a> if you missed it.</p>
<h2 id="news-section-for-the-edge-channel"><a class="toclink" href="#news-section-for-the-edge-channel">News section for the 'edge' channel</a></h2>
<p>Two weeks ago, a wlroots release was pushed to Alpine that caused Phosh to
crash. This is a good example of things that can go wrong when using the <em>edge</em>
channel of postmarketOS (as opposed to <em>stable</em>). The bug was
<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/862">reported</a> to the
postmarketOS issue tracker (precisely the right move!) and within the next
eight hours until we could close that issue, it was pinned down to the wlroots
0.12.0 upgrade, Phosh developers were informed, log messages were analyzed but
were not useful and eventually the "offending" commit was found with
<code>git bisect</code>. It turned out that the commit was a feature and not a bug, it
made wlroots terminate connections if some API protocol was not followed as
intended whereas it would just ignore this previously. An issue was created in
the <a href="https://source.puri.sm/Librem5/phosh/-/issues/422">Phosh tracker</a>, and a
patch was submitted to Alpine edge to revert that specific commit until Phosh
follows that specific API as it was intended (likely soon).</p>
<p>The story told above was certainly not worth writing a regular blog post about,
it was so quickly resolved that if each time we dealt with issues like these it
would be hard to find the proper blog posts among these edge breakage reports.
But still, it would be nice if there was something like a second blog where
people running postmarketOS edge can quickly find information about such issues
while they are ongoing. This is implemented now, find it at
<a href="/edge">postmarketos.org/edge</a>.</p>
<h2 id="donations"><a class="toclink" href="#donations">Donations</a></h2>
<p>Time and again, we were asked if we accept donations. Today we are happy to
announce that all the paper work is done.
<a href="/donate/">Yes, we are ready for donations!</a></p>
<p>Depending on where you live, the donation is tax deductible.
A variety of payment methods are available: from bank transfer to Bitcoin,
Bitcoin Cash, Namecoin, PayPal and credit card.
If you have an account set up
for any of these already, it should only take you a few minutes.</p>
<p>PINE64 used this mechanism to donate $10 for every sold PinePhone
postmarketOS community edition. Huge thanks to PINE64 and <em>to you</em> if you
bought one of them!</p>
<p>We will put the money into good use driving postmarketOS forward. To be
specific, <a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a> will be paid to work
on postmarketOS part time to do the tasks required to keep development up at a
good pace: reviewing merge requests, taking care of the infrastructure and
hacking cool new things into postmarketOS and upstream projects. This should
fill the void in 2021 when the
<a href="/blog/2020/05/31/three-years/#funding-from-nlnet">NLnet grant</a> ends that is
currently enabling <a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a> to work
full time on postmarketOS.</p>
<p>From here on, the idea is to get enough (recurring) donations to make
postmarketOS sustainable for the future. To keep postmarketOS around. To keep
the OS in good shape that is made by like-minded people who demand
sustainability, maintainability, privacy and security to a level that none of
the mainstream OS are willing to deliver.</p>
<h3 id="comments"><a class="toclink" href="#comments">Comments</a></h3>
<ul>
<li><a href="https://news.ycombinator.com/item?id=25259987">HN</a></li>
<li><a href="https://fosstodon.org/@postmarketOS/105301781092863078">Mastodon</a></li>
</ul>postmarketOS in 2020-11: Apps, UIs & Deviceshttps://postmarketos.org/blog/2020/11/06/postmarketOS-in-2020-11-part-1/2020-11-06T00:00:00+00:00<p>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!</p>
<h2 id="apps"><a class="toclink" href="#apps">Apps</a></h2>
<h3 id="megapixels"><a class="toclink" href="#megapixels">Megapixels</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-11/megapixels.png"><img alt="" class="w300" src="/static/img/2020-11/megapixels-thumb.png" /></a>
</div><div class="grid-text">
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!</p>
<p>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. <a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a> 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 <a href="https://git.sr.ht/~martijnbraam/megapixels">Megapixels</a>, 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
<a href="https://blog.brixit.nl/camera-on-the-pinephone/">epic</a>
<a href="https://blog.brixit.nl/pinephone-camera-part-2/">camera</a>
<a href="https://blog.brixit.nl/pinephone-camera-adventures-part-3/">blog</a>
<a href="https://blog.brixit.nl/pinephone-camera-pt4/">posts</a>:
</div></div>
<blockquote>
<p>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.</p>
</blockquote>
<p>Needless to say, we've made this app the default in <code>postmarketos-ui-phosh</code>.
Beyond that, it made its way into the distributions from our friends at
<a href="https://github.com/dreemurrs-embedded/Pine64-Arch/">Arch Linux ARM</a>,
<a href="https://manjaro.org/">Manjaro</a>
and <a href="https://mobian-project.org/">Mobian</a>.</p>
<p><small>
*Thanks to:
<a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a>
*
</small></p>
<h3 id="firefox"><a class="toclink" href="#firefox">Firefox</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-11/mobile-config-firefox.png"><img alt="" class="w300 border" src="/static/img/2020-11/mobile-config-firefox-thumb.jpg" /></a>
</div><div class="grid-text">
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.
<a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a> stepped in and tweaked our
config in multiple iterations, the final one being the distro-independent
<a href="https://gitlab.com/postmarketOS/mobile-config-firefox/">mobile-config-firefox</a>
repository with CSS UI tweaks created by using Firefox' own
<a href="https://gitlab.com/postmarketOS/mobile-config-firefox/#contributing-changes-to-userchrome">remote debugger</a>.
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
<a href="https://github.com/gorhill/uBlock/">uBlock Origin</a>. If you don't like these
defaults, you could of course change the settings as you like or remove the
<code>mobile-config-firefox</code> package altogether.
</div></div>
<p>Just like Megapixels, this config is used by other distributions too.
<a href="https://gitlab.com/a-wai">@a-wai</a> from Mobian contributed
<a href="https://gitlab.com/postmarketOS/mobile-config-firefox/-/merge_requests/2">!2</a>
to tweak the installation of the custom CSS file.</p>
<p><small>
*Thanks to:
<a href="https://gitlab.com/a-wai">@a-wai</a>,
<a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a>
*
</small></p>
<h3 id="osk-sdl"><a class="toclink" href="#osk-sdl">osk-sdl</a></h3>
<p>Our full disk encryption initramfs keyboard
<a href="https://gitlab.com/postmarketOS/osk-sdl">osk-sdl</a> is about to receive a major
performance improvement
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1557">!1557</a>), as
we will be able to use GPU acceleration. Also the code has been cleaned up
(<a href="https://gitlab.com/postmarketOS/osk-sdl/-/merge_requests/92">!92</a>,
<a href="https://gitlab.com/postmarketOS/osk-sdl/-/merge_requests/95">!95</a>). The
initramfs gets rebuilt with each osk-sdl upgrade now, not only with kernel
upgrades
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1563">!1563</a>).</p>
<p><small>
*Thanks to:
<a href="https://gitlab.com/craftyguy">@craftyguy</a>,
<a href="https://gitlab.com/minlexx">@minlexx</a>,
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a>,
<a href="https://gitlab.com/wczyz">@wczyz</a>,
<a href="https://gitlab.com/z3ntu">@z3ntu</a>
*
</small></p>
<h2 id="user-interfaces"><a class="toclink" href="#user-interfaces">User Interfaces</a></h2>
<h3 id="phosh"><a class="toclink" href="#phosh">Phosh</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-11/phosh-0.5.0.png"><img alt="" class="w200 border" src="/static/img/2020-11/phosh-0.5.0-thumb.jpg" /></a>
</div><div class="grid-text">
Phosh was upgraded to the latest version 0.5.1
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1623">!1623</a>,
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1656">!1656</a>,
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1680">!1680</a>). Most
noticeable are the new <em>Torch</em> and <em>Undocked</em> buttons in the top panel. You
guessed right, the <em>Torch</em> allows you to see in the dark. <em>Undocked</em> 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 <em>Docked</em> and the window handling
of Phosh becomes more desktop-friendly.</p>
<p>Regarding default apps, we have added Megapixels as mentioned above, the image
viewer <a href="https://wiki.gnome.org/Apps/EyeOfGnome/">eog</a> and the file manager
<a href="https://github.com/linuxmint/nemo">Nemo</a>. Eog gets started from Nemo or
Megapixels when trying to open an image file.</p>
<p><small>
*Thanks to:
<a href="https://gitlab.com/afontain">@afontain</a>,
<a href="https://gitlab.com/Cogitri">@Cogitri</a>,
<a href="https://gitlab.com/craftyguy">@craftyguy</a>,
<a href="https://source.puri.sm/guido.gunther">@guido.gunther</a>,
<a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a>,
<a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a>,
<a href="https://gitlab.com/TimotheeLF">@TimotheeLF</a>,
<a href="https://gitlab.com/z3ntu">@z3ntu</a>
*
</small>
</div></div>
<h3 id="plasma"><a class="toclink" href="#plasma">Plasma</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-11/plasma-mobile.jpg"><img alt="" class="w200 border" src="/static/img/2020-11/plasma-mobile-thumb.jpg" /></a>
</div><div class="grid-text">
<a href="https://www.plasma-mobile.org/">Plasma Mobile</a> was upgraded by
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a>
to the latest version as well, which is based on KDE Plasma 5.20.1
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1590">!1590</a>).
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
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1643">!1643</a>, the
<a href="https://invent.kde.org/graphics/peruse">Peruse</a> comic book reader app has
been packaged by <a href="https://gitlab.com/z3ntu">@z3ntu</a>.</p>
<p><a href="https://gitlab.com/PureTryOut">@PureTryOut</a> also did the initial packaging of
<a href="https://plasma-bigscreen.org/">Plasma Bigscreen</a>
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1552">!1522</a>). 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.</p>
<p><small>
*Thanks to:
<a href="https://gitlab.com/bshah">@bshah</a>,
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a>,
<a href="https://gitlab.com/z3ntu">@z3ntu</a>
*
</small>
</div></div>
<h3 id="sxmo"><a class="toclink" href="#sxmo">Sxmo</a></h3>
<p><div class="grid"><div class="grid-side">
<video controls width="200" height="356" autoplay="autoplay" class="border" loop>
<source src="/static/video/2020-11/sxmo-thumb.webm" />
</video>
<p><br>
<span class="w200">
Sxmo in action. (<a href="/static/video/2020-11/sxmo.webm">bigger</a>)
</span>
</div><div class="grid-text">
<a href="https://gitlab.com/milesalan">@milesalan</a> contributed the packages of
<a href="https://sr.ht/~mil/Sxmo/">Sxmo</a> into the postmarketOS pmaports repository
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1472">!1472</a>):</p>
<blockquote>
<p>Sxmo, or Simple X Mobile, is a collection of simple and
<a href="https://suckless.org/">suckless</a> X programs and scripts used together to
create a fully functional mobile UI adhering to the
<a href="https://en.wikipedia.org/wiki/Unix_philosophy">Unix philosophy</a> for the
<a href="https://www.pine64.org/pinephone/">PinePhone</a>. You control the UI largely
through using the PinePhone buttons (press different numbers of times quickly
for different actions) and swipe gestures.</p>
</blockquote>
<p>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.
</div></div>
<p><small>
*Thanks to:
<a href="https://gitlab.com/milesalan">@milesalan</a>
*
</small></p>
<h3 id="shelli"><a class="toclink" href="#shelli">Shelli</a></h3>
<p><a href="https://gitlab.com/unrznbl">@unrznbl</a>'s TTY interface Shelli
(<a href="/blog/2019/06/23/two-years/#shelli">introduced here</a>) is at version 0.5.0
now
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1354">!1354</a>). 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.</p>
<blockquote>
<p>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 <a href="https://sr.ht/~anteater/mms-stack/">mms-stack</a> for a good resource on the
various ways MMS can be worked on. Help out!</p>
</blockquote>
<p>Find more details
on what works and which commands are present in the
<a href="https://gitlab.com/unrznbl/shelli/-/tree/v0.5">source tree</a>.</p>
<p><small>
*Thanks to:
<a href="https://gitlab.com/unrznbl">@unrznbl</a>
*
</small></p>
<h2 id="devices"><a class="toclink" href="#devices">Devices</a></h2>
<h3 id="close-to-mainline"><a class="toclink" href="#close-to-mainline">(Close to) Mainline</a></h3>
<h4 id="pinephone-and-pinetab"><a class="toclink" href="#pinephone-and-pinetab">PinePhone and PineTab</a></h4>
<p>For all the Linux enthusiasts who bought a PineTab or PinePhone (our own
<a href="/blog/2020/07/15/pinephone-ce-preorder/">pmOS CE</a> is sold out, but as of
writing, the next iteration with Manjaro is
<a href="https://pine64.com/product-category/pinephone/">in stock</a>): we generated a
<a href="https://images.postmarketos.org">new set of images</a> and have exciting
improvements to cover.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-11/pinephone-ce-with-box.png"><img alt="" class="w300 border" src="/static/img/2020-11/pinephone-ce-with-box-thumb.jpg" /></a>
<br>
<span class="w300">
The postmarketOS CE came with pmbootstrap source all over the box.
</span>
</div><div class="grid-text">
<h5 id="megis-tree-and-hdmi-fix"><a class="toclink" href="#megis-tree-and-hdmi-fix">Megi's tree and HDMI fix</a></h5>
<p>The <code>linux-postmarketos-allwinner</code> kernel that both devices use is now
following <a href="https://xnux.eu">@megi</a>'s 5.9.x based
<a href="https://megous.com/git/linux/">source tree</a>
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1614">!1614</a>). 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 <a href="https://xnux.eu/log">log</a> 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
<a href="https://gitlab.com/postmarketOS/pmaports/-/tree/master/main/linux-postmarketos-allwinner">pmaports</a>
(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.
</div></div>
<p>Such as the report that external HDMI was not working with most displays in a
stock postmarketOS install
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/735">#735</a>), although it
worked when selecting postmarketOS in <a href="https://xnux.eu/">@megi</a>'s own
<a href="https://xnux.eu/p-boot-demo/">multi-distro demo image</a>.
<a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a> spent a day building kernels
with different configs and patches, <a href="https://gitlab.com/bshah">@bshah</a> went
through related kernel code line by line in both trees. Only after using
the exact same kernel, we realized that the special bootloader
<a href="https://xnux.eu/p-boot/">p-boot</a> made the difference. <a href="https://xnux.eu">@megi</a>
<a href="https://xnux.eu/log/#021">analyzed it further</a> and fixed the bug in the
kernel.</p>
<h5 id="list-of-improvements"><a class="toclink" href="#list-of-improvements">List of improvements</a></h5>
<p>Besides the HDMI fix, the most notable improvements for the PINE64 devices in
postmarketOS are:</p>
<ul>
<li><a href="https://xnux.eu/log/#023">60 FPS display framerate fix</a>
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1661">!1661</a>)</li>
<li><a href="https://xnux.eu/log/#020">Better quality for incoming calls</a></li>
<li><a href="https://xnux.eu/log/#020">Fix "high-pitched whine" from the speaker on boot</a></li>
<li>Fix excessive mic noise on call
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1652">!1652</a>)</li>
<li>Front and back camera working, with autofocus
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1654">!1654</a>)</li>
<li>Fix suspend
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1636">!1636</a>,
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1651">!1651</a>)</li>
<li>Encrypted installs: allow unlock with keyboard
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1555">!1555</a>)</li>
<li>Fix <a href="https://wiki.postmarketos.org/wiki/USB_Network">USB network</a>
(<a href="https://gitlab.com/postmarketOS/pmaports/-/issues/687">#687</a>)</li>
</ul>
<h5 id="pinetab-early-adopters-edition"><a class="toclink" href="#pinetab-early-adopters-edition">PineTab: Early Adopters edition</a></h5>
<p>Support for the new display panel of the PineTab Early Adopters edition was
added
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1627">!1627</a>). By
asking for the version after selecting the PineTab in <code>pmbootstrap init</code>,
postmarketOS works with both the new version and the previous
<a href="https://wiki.pine64.org/index.php?title=PineTab#Versions">pinetab-dev</a>.</p>
<p><small>
*Thanks to:
<a href="https://gitlab.com/bshah">@bshah</a>,
<a href="https://gitlab.com/craftyguy">@craftyguy</a>,
<a href="https://gitlab.com/djselbeck">@djselbeck</a>,
<a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a>,
<a href="https://xnux.eu">@megi</a>,
<a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a>,
<a href="https://gitlab.com/pedromoreno">@pedromoreno</a>,
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a>,
<a href="https://gitlab.com/smaeul">@smaeul</a>,
<a href="https://github.com/tmlind">@tmlind</a>,
<a href="https://gitlab.com/z3ntu">@z3ntu</a>
*
</small></p>
<h3 id="librem-5"><a class="toclink" href="#librem-5">Librem 5</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-11/librem5-chatty.jpg"><img alt="" class="w200 border" src="/static/img/2020-11/librem5-chatty-thumb.jpg" /></a></p>
<p><a href="/static/img/2020-11/librem5-dev-openmw.jpg"><img alt="" class="w200 border" src="/static/img/2020-11/librem5-dev-openmw-thumb.jpg" /></a>
</div><div class="grid-text">
<a href="https://gitlab.com/craftyguy">@craftyguy</a> 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
<a href="https://puri.sm/posts/adventures-of-porting-postmarketos-to-the-librem-5/">Adventures of porting postmarketOS to the Librem 5</a>. One of the gems:</p>
<blockquote>
<p>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
<a href="https://openmw.org/en/">OpenMW</a>), 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.</p>
</blockquote>
<p><small>
*Thanks to:
<a href="https://gitlab.com/craftyguy">@craftyguy</a>
*
</small>
</div></div>
<h4 id="modem"><a class="toclink" href="#modem">Modem</a></h4>
<p><a href="https://gitlab.com/Minecrell">@Minecrell</a> wrote a shiny new
<a href="https://github.com/msm8916-mainline/linux/pull/103">BAM DMUX</a> kernel
driver:</p>
<blockquote>
<p>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.</p>
<p>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.</p>
</blockquote>
<p>Additionally he wrote ModemManager patches to talk to the modem via rpmsg
channels, so they can make use of this new driver
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1607">!1607</a>). 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!</p>
<p><a href="https://gitlab.com/akulichalexander">@akulichalexander</a> fixed outgoing calls
in the oFono QMI modem driver
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1637">!1637</a>).</p>
<p><small>
*Thanks to:
<a href="https://gitlab.com/akulichalexander">@akulichalexander</a>,
<a href="https://gitlab.com/aleksander0m">@aleksander0m</a>,
<a href="https://gitlab.com/Minecrell">@Minecrell</a>,
<a href="https://gitlab.com/minlexx">@minlexx</a>,
<a href="https://gitlab.com/srxl">@srxl</a>,
<a href="https://gitlab.com/TravMurav">@TravMurav</a>,
<a href="https://gitlab.com/z3ntu">@z3ntu</a>
*
</small></p>
<h4 id="mainline-all-the-phones-and-tablets"><a class="toclink" href="#mainline-all-the-phones-and-tablets">Mainline all the phones and tablets!</a></h4>
<p>The
<a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_SII_(samsung-i9100)">Samsung Galaxy SII</a>
can run on a mainline kernel now
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1598">!1598</a>) and
we have ongoing work to create a new shared
<code>linux-postmarketos-exynos4</code> kernel for the SII and SIII / SIII LTE
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1634">!1634</a>).</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-11/samsung-i9100-mainline.jpg"><img alt="" class="w200 border" src="/static/img/2020-11/samsung-i9100-mainline-thumb.jpg" /></a>
<br>
<span class="w200">
The Samsung Galaxy SII running mainline, one of the two phones where
<a href="/blog/2017/05/26/intro/">it all began</a> in 2017.
</span></p>
</div><div class="grid-text">
The shared
<a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_410/412_(MSM8916)">MSM8916</a>
packaging got a major update in
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1603">!1603</a>). 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):</p>
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/BQ_Aquaris_X5_(bq-picmt/paella)">BQ Aquaris X5</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola_Moto_E_2015_(motorola-surnia)">Motorola Moto E 2015</a> (new)</li>
<li><a href="https://wiki.postmarketos.org/wiki/Oppo_Mirror5s_(oppo-a51f)">Oppo Mirror 5s</a> (new)</li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_A3_2015_(samsung-a3ulte)">Samsung Galaxy A3 (2015)</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_A5_2015_(samsung-a5ulte)">Samsung Galaxy A5 (2015)</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Grand_Prime_CAN_(samsung-gprimeltecan)">Samsung Galaxy Grand Prime</a> (new)</li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_J5_2015_(samsung-j5nlte)">Samsung Galaxy J5 2015</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi_Redmi_2_(xiaomi-wt88047)">Xiaomi Redmi 2</a> (new)
</div></div></li>
</ul>
<p><a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_450/625/626/632_(MSM8953)">MSM8953</a>
has gotten similar shared kernel packaging, and is initially being used by the
<a href="https://wiki.postmarketos.org/wiki/Motorola_Moto_G7_Power_(motorola-ocean)">Motorola Moto G7 Power</a>
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1558">!1558</a>). The
<a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_800/801_(MSM8974)">MSM8974</a>
kernel was upgraded to 5.9
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1572">!1572</a>) and
it is now being used for the mainline port of the
<a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z2_Tablet_LTE_(sony-castor)">Xperia Z2 Tablet LTE</a>.
Likewise, the
<a href="https://wiki.postmarketos.org/wiki/(Close_to)_Mainline">(close to) mainline</a>
kernel of the
<a href="https://wiki.postmarketos.org/wiki/OnePlus_6_(oneplus-enchilada)">OnePlus 6/6T</a>
was upgraded to 5.9 and got preparations for audio support
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1635">!1653</a>).</p>
<p>What's more, the
<a href="https://wiki.postmarketos.org/wiki/Google_Nexus_7_2012_(asus-grouper)">Google Nexus 7 2012</a>
tablet has gotten support for the older PM269 variant
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1532">!1532</a>) and
its kernel was upgraded to 5.9 as well
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1528">!1528</a>). A
port for the single board computer
<a href="https://wiki.postmarketos.org/wiki/Cubietech_Cubieboard_(cubietech-cubieboard)">Cubietech Cubieboard</a>
was added, and due to the great
existing upstream support, it can directly use <code>linux-edge</code> from Alpine Linux
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1589">!1589</a>).</p>
<p><small>
*Thanks to:
@aka_,
<a href="https://gitlab.com/calebccff">@calebccff</a>,
<a href="https://gitlab.com/DolphinChips">@DolphinChips</a>,
<a href="https://gitlab.com/ichernev">@ichernev</a>,
<a href="https://gitlab.com/julianuu">@julianuu</a>,
<a href="https://github.com/krzk">@krzk</a>,
<a href="https://gitlab.com/lazzardo">@lazzardo</a>,
<a href="https://gitlab.com/Minecrell">@Minecrell</a>,
<a href="https://gitlab.com/minlexx">@minlexx</a>,
<a href="https://gitlab.com/Mis012">@Mis012</a>,
<a href="https://github.com/mszyprow">@mszyprow</a>,
<a href="https://gitlab.com/natsu1978">@natsu1978</a>
<a href="https://gitlab.com/nergzd723">@nergzd723</a>,
<a href="https://gitlab.com/NotJunak">@NotJunak</a>,
<a href="https://gitlab.com/plata-gl">@plata-gl</a>,
<a href="https://github.com/Sekilsgs2">@Sekilsgs2</a>,
<a href="https://gitlab.com/symmetrist">@symmetrist</a>,
<a href="https://gitlab.com/ThiagaoPlusPlus">@ThiagaoPlusPlus</a>,
<a href="https://gitlab.com/timbz">@timbz</a>,
<a href="https://gitlab.com/TravMurav">@TravMurav</a>,
<a href="https://gitlab.com/Ultracoolguy">@Ultracoolguy</a>,
<a href="https://gitlab.com/unrznbl">@unrznbl</a>,
<a href="https://gitlab.com/wiktorek140">@wiktorek140</a>,
<a href="https://gitlab.com/WTechNinja">@WTechNinja</a>
*
</small></p>
<h4 id="various-device-changes"><a class="toclink" href="#various-device-changes">Various device changes</a></h4>
<p><a href="/static/img/2020-11/nokia-n900-keymap-se.jpg"><img alt="" class="border center" src="/static/img/2020-11/nokia-n900-keymap-se.jpg" /></a></p>
<p><span class="img-center-subtext">
How the N900 keyboard looks like in Finland and Sweden.
</span></p>
<p><a href="https://wiki.postmarketos.org/wiki/Nokia_N900_(nokia-n900)">Nokia N900</a>
users get support for Finnish and Swedish keymaps by
<a href="https://gitlab.com/linusw">@linusw</a>
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1519">!1519</a>)
and
<a href="https://gitlab.com/antoni.aloytorrens">@antoni.aloytorrens</a> made Wi-Fi work
with the
<a href="https://wiki.postmarketos.org/wiki/ASUS_Eee_Pad_Transformer_(asus-tf101)">ASUS Eee Pad Transformer</a>
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1534">!1534</a>).</p>
<p>The GCC-10 upgrade caused build failures for lots of kernels in our
repositories. <a href="https://gitlab.com/z3ntu">@z3ntu</a> 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
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1684">!1684</a>).</p>
<p>In addition to the mainline related modem work,
<a href="https://gitlab.com/Minecrell">@Minecrell</a> also made the downstream kernels
work with modem again
(<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1640">!1640</a>). This
is useful to debug features that are broken in mainline, but work on
downstream.</p>
<p><small>
*Thanks to:
<a href="https://gitlab.com/afontain">@afontain</a>,
<a href="https://gitlab.com/antoni.aloytorrens">@antoni.aloytorrens</a>,
<a href="https://gitlab.com/dsankouski">@dsankouski</a>,
<a href="https://gitlab.com/HenriDellal">@HenriDellal</a>,
<a href="https://gitlab.com/linusw">@linusw</a>,
<a href="https://gitlab.com/M0Rf30">@M0Rf30</a>,
<a href="https://gitlab.com/rmcgu">@rmcgu</a>,
<a href="https://gitlab.com/ThiagaoPlusPlus">@ThiagaoPlusPlus</a>,
<a href="https://gitlab.com/undevdecatos">@undevdecatos</a>
*
</small></p>
<h3 id="new-device-ports"><a class="toclink" href="#new-device-ports">New device ports</a></h3>
<p>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
<a href="https://wiki.postmarketos.org/wiki/Devices">wiki</a>.
<div class="grid"><div class="grid-side">
<a href="/static/img/2020-11/samsung-skomer-plamo.jpg"><img alt="" class="w200 border" src="/static/img/2020-11/samsung-skomer-plamo-thumb.jpg" /></a>
<br>
<span class="w200">
Plasma Mobile on the Samsung Galaxy Xcover 2, with (close to) mainline kernel.
</span></p>
<p><a href="/static/img/2020-11/xiaomi-ferrari-weston.jpg"><img alt="" class="w200 border" src="/static/img/2020-11/xiaomi-ferrari-weston-thumb.jpg" /></a>
<br>
<span class="w200">
Weston on the fresh<br>
Xiaomi Mi 4i port.
</span></p>
<p><a href="/static/img/2020-11/motorola-nash.jpg"><img alt="" class="w200 border" src="/static/img/2020-11/motorola-nash-thumb.jpg" /></a>
<br>
<span class="w200">
XFCE4 rocking the Motorola Moto Z2 Force, with neofetch in the terminal.
</span>
</div><div class="grid-text">
<!-- Generated with: 'pmos-stats new-devices --md 995af7fb7208c73e0d38d8e4229a4afb049c2540'
Start subject: kde/plasmatube: new aport (MR 1157)
Current master (for next time): 81f8ca8e776eaa0d82df418a46a2d30e3832ce18
Current subject: device/testing/linux-*: get building again (MR 1684) -->
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/Acer Iconia Tab A500 (acer-picasso)">Acer Iconia Tab A500</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Amazon Fire HD 8 2017 (amazon-douglas)">Amazon Fire HD 8 (2017)</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Amazon Fire 7 2019 (amazon-mustang)">Amazon Fire 7 (2019)</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Arrow DragonBoard 410c (arrow-db410c)">Arrow DragonBoard 410c</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Cubietech Cubieboard (cubietech-cubieboard)">Cubietech Cubieboard</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Essential Phone (essential-mata)">Essential PH1</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Fly Spark (fly-iq4404)">Fly Spark</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC One X+ (htc-endeavor-c2)">HTC One X+</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC HD2 (htc-leo)">HTC HD2</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Huawei P8 Lite (huawei-alice)">Huawei P8 Lite</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola Z Play (motorola-addison)">Motorola Moto Z Play</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola Moto Z2 Force (motorola-nash)">Motorola Moto Z2 Force</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola Moto G7 Power (motorola-ocean)">Motorola Moto G7 Power</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola Moto X4 (payton)">Motorola Moto X4</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola Moto E4 (motorola-perry)">motorola Moto E4</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/OnePlus 6 (oneplus-enchilada)">OnePlus 6</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/OnePlus 6 (oneplus-enchilada)">OnePlus 6T</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Oppo Mirror5s (oppo-a51f)">OPPO Mirror 5s</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy Ace 2 (samsung-codina)">Samsung Galaxy Ace 2</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Nexus S (samsung-crespo)">Samsung Nexus S</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy Grand Prime CAN (samsung-gprimeltecan)">Samsung Galaxy Grand Prime (CAN)</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy Tab E 9.6 (SM-T561) (samsung-gtel3g)">Samsung Galaxy Tab E 9.6 (SM-T561)</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy Tab E 9.6 (SM-T560) (samsung-gtelwifi)">Samsung Galaxy Tab E 9.6 (SM-T560)</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy J5 2015 (samsung-j5nlte)">Samsung Galaxy J5 2015</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy S III Neo (samsung-s3ve3g)">Samsung Galaxy S III Neo</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy Xcover 2 (samsung-skomer)">Samsung Galaxy Xcover 2</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony Xperia M2 (sony-eagle)">Sony Xperia M2</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony Xperia M5 (sony-hollyss)">Sony Xperia M5</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony Ericsson Xperia Mini Pro (sony-mango)">Sony Ericsson Xperia Mini Pro</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony Xperia Z5 (sony-sumire)">Sony Xperia Z5</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony Xperia XA (sony-tuba)">Sony Xperia XA</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Vernee Thor (vernee-k506)">Vernee Thor</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi Mi 4i (xiaomi-ferrari)">Xiaomi Mi 4i</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi Mi 4c (xiaomi-libra)">Xiaomi Mi 4c</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi Mi Note 2 (xiaomi-scorpio)">Xiaomi Mi Note 2</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi Redmi Note 5 Plus (xiaomi-vince)">Xiaomi Redmi Note 5 Plus</a>
</div></div></li>
</ul>
<p><small>
<em>Thanks to: everyone who ported these devices, see the contributors section in each device's wiki page.</em>
</small></p>
<h2 id="end-of-part-one"><a class="toclink" href="#end-of-part-one">End of Part One</a></h2>
<p>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 <em>thank you</em> to
all of our contributors and great community for support. Stay tuned!</p>
<p>If you'd like to contribute, contact us, or participate in other ways, you can
find <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">information on joining our IRC/Matrix channels on the
wiki.</a></p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=25008784">Hacker News</a></li>
<li><a href="https://fosstodon.org/@postmarketOS/105164355626002535">Mastodon</a></li>
</ul>PinePhone CE
available for pre-orderhttps://postmarketos.org/blog/2020/07/15/pinephone-ce-preorder/2020-07-15T00:00:00+00:00<h2 id="introduction"><a class="toclink" href="#introduction">Introduction</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-07/pinephone-postmarketos-ce-front.png"><img alt="" src="/static/img/2020-07/pinephone-postmarketos-ce-front-thumb.png" /></a>
</div><div class="grid-text">
This is a follow-up to last month's
<a href="/blog/2020/06/15/pinephone-postmarketos-community-edition/">PinePhone: postmarketOS community edition</a>
announcement. PINE64 and postmarketOS are teaming up to bring you the next
version of this remarkable, hacker-friendly smartphone.
<a href="https://store.pine64.org/product-category/pinephone/">Pre-orders are open now.</a> Keep in mind, that you
should only buy this device if you
<a href="/blog/2020/06/15/pinephone-postmarketos-community-edition/#linux-enthusiasts-only">consider yourself a Linux enthusiast</a>.</p>
<h2 id="hardware-news"><a class="toclink" href="#hardware-news">Hardware news</a></h2>
<p>We are happy to share that in addition to the <a href="/blog/2020/06/15/pinephone-postmarketos-community-edition/#the-pinephone">standard PinePhone CE hardware
configuration</a>,
the postmarketOS CE can be ordered in an all-new Convergence Package. It comes
with increased RAM (3 GB instead of 2 GB), eMMC (32 GB instead of 16 GB) and
price ($199.99 instead of $149.99), as well as the nice USB-C dock seen in the
picture.
</div></div>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-07/pinephone-dock.jpg"><img alt="" src="/static/img/2020-07/pinephone-dock-thumb.png" /></a>
</div><div class="grid-text">
<br>
With USB-C power-in, HDMI, Ethernet and two USB ports, there is much potential
to turn your phone
<a href="https://www.youtube.com/watch?v=yBeza4UNOm8">into something like a desktop computer</a>.
(Beta reminder: while already way more convenient than
<a href="/static/img/2019-06/hammerhead-convergence.jpg">this setup</a>, convergence needs
more work on the software side.)
</div></div>
<p>Furthermore, the PinePhone postmarketOS CE will have a fix for a design flaw
present in earlier revisions of the PinePhone. In the much appreciated spirit
of sustainability, PINE64 explains how owners of previous revisions will be
able to get it fixed. More about that and other hardware details are in today's
<a href="https://www.pine64.org/2020/07/15/july-update:pmos-ce-pre-orders-and-new-pinephone-version/">PINE64 announcement</a>.</p>
<h2 id="software-news"><a class="toclink" href="#software-news">Software news</a></h2>
<p>Several fixes and improvements were made in postmarketOS, that relate to the
PinePhone (thanks to
<a href="https://gitlab.com/Cogitri">@Cogitri</a>,
<a href="https://gitlab.com/Danct12">@Danct12</a>,
<a href="https://gitlab.com/DolphinChips">@DolphinChips</a>,
<a href="https://gitlab.com/ell1e">@ell1e</a>,
<a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a>,
<a href="https://xnux.eu/devices/pine64-pinephone.html">@megi</a>,
<a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a>,
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a>). Most importantly, phone calls
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1412">with audio</a>
are fixed on the stable channel. Shout out to <a href="https://gitlab.com/a-wai">@a-wai</a>
from <a href="https://mobian-project.org/">Mobian</a> for developing a workaround to let
Phosh switch the audio channel for calls, we
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1406">packaged</a> this
patch for now.</p>
<div style="text-align: center">
<a href="/static/img/2020-07/phosh-firefox.png"><img
src="/static/img/2020-07/phosh-firefox-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-07/phosh-gnome-software.png"><img
src="/static/img/2020-07/phosh-gnome-software-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-07/phosh-pulldown-menu.png"><img
src="/static/img/2020-07/phosh-pulldown-menu-thumb.jpg" class="w150 border"></a>
</div>
<p>GNOME software and other applications have gotten
Purism's <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1346">mobile UI patches</a>
on the stable channel. Together with the
<a href="https://michael.stapelberg.ch/posts/2019-08-17-linux-package-managers-are-slow/">blazingly fast</a>
package manager from Alpine Linux, this gives a convenient method of installing
updates with a touch UI in a matter of seconds. Firefox gets
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1396">scaled</a> to fit
the mobile screen (making it pretty usable) and the Epiphany browser has gotten
a <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1402">privacy friendly user-agent</a>.</p>
<h3 id="installer-with-optional-ssh-server-and-encryption"><a class="toclink" href="#installer-with-optional-ssh-server-and-encryption">Installer with optional SSH server and encryption</a></h3>
<p>The postmarketOS
<a href="https://wiki.postmarketos.org/wiki/On-device_installer">on-device installer</a>
has been extended to not only ask for the LUKS full disk encryption password
(which we find absolutely essential). But also to allow setting the lockscreen
PIN and to enable an SSH server. The SSH login would be very weak if we just
used the default user with the lockscreen PIN as password, so we have disabled
that in <code>sshd_config</code> and ask for a second set of credentials instead. People
are even encouraged to disable password login completely and install an SSH
key when using the SSH server for the first time.</p>
<div style="text-align: center">
<a href="/static/img/2020-07/ondev-welcome.png"><img
src="/static/img/2020-07/ondev-welcome-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-07/ondev-user-pin.png"><img
src="/static/img/2020-07/ondev-user-pin-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-07/ondev-ssh-confirm.png"><img
src="/static/img/2020-07/ondev-ssh-confirm-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-07/ondev-ssh-credentials.png"><img
src="/static/img/2020-07/ondev-ssh-credentials-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-07/ondev-fde.png"><img
src="/static/img/2020-07/ondev-fde-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-07/ondev-fde-pass.png"><img
src="/static/img/2020-07/ondev-fde-pass-thumb.jpg" class="w150 border"></a>
</div>
<p>This installer is slowly shaping into a blend of a typical, powerful Linux
distribution installer with an intuitive (even for non-tech people) user
interface that is suitable for mobile devices. Below the surface, we are
using <a href="https://calamares.io">Calamares</a>, which is already widely used as
installer among desktop Linux distributions. We plan to
<a href="https://github.com/calamares/calamares/issues/1451">upstream</a> our <a href="https://gitlab.com/postmarketOS/postmarketos-ondev/">custom
modules</a> into the main
Calamares repository, so other mobile-centric Linux distributions can use and
improve them too. Thanks to
<a href="https://gitlab.com/adriaandegroot">@adriaandegroot</a> for quickly fixing several
bugs in Calamares related to these efforts.</p>
<h2 id="pre-order-now"><a class="toclink" href="#pre-order-now">Pre-order now!</a></h2>
<p>If you like what you see here, there's no time like the present to <a href="https://store.pine64.org/product-category/pinephone/">head over
to the PINE64 shop and order your PinePhone postmarketOS community edition</a>.</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li>HN: <a href="https://news.ycombinator.com/item?id=23849202">1</a>, <a href="https://news.ycombinator.com/item?id=23846588">2</a></li>
</ul>PinePhone: postmarketOS community editionhttps://postmarketos.org/blog/2020/06/15/pinephone-postmarketos-community-edition/2020-06-15T00:00:00+00:00<h2 id="introduction"><a class="toclink" href="#introduction">Introduction</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-06/pinephone-postmarketos-ce-back.png"><img alt="" src="/static/img/2020-06/pinephone-postmarketos-ce-back-thumb.png" /></a></p>
</div><div class="grid-text">
We are proud to announce the PinePhone postmarketOS community edition!</p>
<p>postmarketOS was created to take a stand against the smartphone industry.
Compared to what we see on desktop machines, smartphones have artificially short
software update lifespans. You cannot even download updates for installed apps
without logging in. And unless you are extremely careful, the downloaded (or
even pre-installed) apps will turn the little device in your pocket into an
<a href="https://developer.android.com/training/articles/ad-id">advertising</a>- and
<a href="https://arstechnica.com/information-technology/2020/03/found-malicious-google-play-apps-with-1-7-million-downloads-many-by-children/">malware</a>-riddled
combination of
<a href="https://www.forbes.com/sites/thomasbrewster/2020/04/30/exclusive-warning-over-chinese-mobile-giant-xiaomi-recording-millions-of-peoples-private-web-and-phone-use/">big</a>
<a href="https://www.techrepublic.com/article/facebook-data-privacy-scandal-a-cheat-sheet/">brother</a>
and a <a href="https://medium.com/thrive-global/how-technology-hijacks-peoples-minds-from-a-magician-and-google-s-design-ethicist-56d62ef5edf3">slot machine</a>.</p>
<p>PINE64 breaks tradition with that very industry. Their PinePhone is not just
another Android based smartphone that inherits all of Android's problems.
Instead, PINE64 has focused on creating amazing hardware and encouraged many
alternative FLOSS smartphone OS developers to port their project to the
PinePhone.
</div></div>
<h2 id="linux-enthusiasts-only"><a class="toclink" href="#linux-enthusiasts-only">Linux enthusiasts only</a></h2>
<p>Before we get into the details: postmarketOS is in beta state. The parts to
have basic smartphone functionality with phone calls, SMS, mobile data, Wi-Fi,
and a touch friendly UI are there
(<a href="https://gitlab.com/groups/postmarketOS/-/milestones/1">overview</a>). But as of
writing, there are too many bugs to provide a reasonable user experience. We
will fix as much as we can over the next weeks, until the device is shipped
to everyone who has pre-ordered. More fixes and improvements will become
available over time through software updates. It should be possible to avoid
most future regressions with the new
<a href="/blog/2020/05/31/three-years/#stable-release-channel">stable release channel</a>.
Please have realistic expectations.</p>
<h2 id="the-pinephone"><a class="toclink" href="#the-pinephone">The PinePhone</a></h2>
<p><div class="grid"><div class="grid-side">
<div class="border" style="
width: 350px;
text-align: center;
margin: 0px auto 30px auto;
">
<table class="table-specs">
<tr>
<td>SoC</td>
<td>Allwinner A64 Quad Core, Mali 400 MP2 GPU</td>
</tr><tr>
<td>RAM</td>
<td>2 GB, LPDDR3</td>
</tr><tr>
<td>Display</td>
<td>5.95″ LCD 720x1440, 18:9 (hardened glass)</td>
</tr><tr>
<td>Internal storage</td>
<td>16 GB eMMC</td>
</tr><tr>
<td>Modem</td>
<td>Quectel EG-25G with worldwide bands</td>
</tr><tr>
<td>USB port</td>
<td>Type C (power, data and HD digital video out)</td>
</tr><tr>
<td>Wi-Fi</td>
<td>802.11 b/g/n, single-band, hotspot capable</td>
</tr><tr>
<td>Bluetooth</td>
<td>4.0, A2DP</td>
</tr><tr>
<td>GNSS</td>
<td>GPS, GPS-A, GLONASS</td>
</tr><tr>
<td>Rear Camera</td>
<td>Single OV5640, 5 MP, 1/4″, LED flash</td>
</tr><tr>
<td>Front Camera</td>
<td>Single GC2145, 2 MP, f/2.8, 1/5″</td>
</tr><tr>
<td>Sensors</td>
<td>Accelerator, gyro, proximity, compass, barometer, ambient
light</td>
</tr><tr>
<td>Buttons</td>
<td>Up, down and power</td>
</tr><tr>
<td>Killswitches</td>
<td>LTE/GNSS, Wi-Fi/Bluetooth, microphone, speaker, cameras</td>
</tr><tr>
<td>Battery</td>
<td>Samsung J7 form-factor 3000 mAh</td>
</tr><tr>
<td>Misc</td>
<td>Headphone jack, micro SD slot, vibrator,<br>
pogo pin expansion header, RGB status LED</td>
</tr><tr>
</table>
Detailed specifications
</div>
</div><div class="grid-text">
Now let's talk about what gets us so excited about the PinePhone, besides their
community driven software approach. A quick rundown:</p>
<ul>
<li><a href="https://gitlab.com/pine64-org/linux/">Mainline Linux kernel</a> (with few
patches and intention to upstream everything)</li>
<li><a href="https://gitlab.freedesktop.org/lima/web">Free software GPU driver</a></li>
<li>Modem separated from main CPU</li>
<li>Removable battery</li>
<li>Bootable micro SD slot</li>
<li>Headphone jack, that doubles as
<a href="https://wiki.pine64.org/PinePhone#Serial_console">serial port</a></li>
<li>Hardware killswitches</li>
</ul>
<p>These features are crucial for privacy and security, and to give the device a
very long lifetime. We don't need to put an enormous amount of effort into
replacing an Android downstream kernel with a mainline Linux one, we have it
from the start. This is how smartphones should be made.
</div></div>
<h2 id="postmarketos-community-edition"><a class="toclink" href="#postmarketos-community-edition">postmarketOS community edition</a></h2>
<p>Our community edition will be shipped with Phosh. We have considered shipping
with Plasma Mobile as well, and letting the user decide on the first boot. But
then we would have twice the effort to optimize the out-of-the-box experience.
If you don't like our decision, you can flash a Plasma Mobile postmarketOS (or
whatever UI and OS combination you like) image onto your PinePhone postmarketOS
CE at any time.</p>
<h3 id="user-interface-phosh"><a class="toclink" href="#user-interface-phosh">User Interface: Phosh</a></h3>
<p>Phosh is a <i>pho</i>ne <i>sh</i>ell running on top of various GNOME
components. It is developed by Purism for their own Linux smartphone, the
<a href="https://puri.sm/products/librem-5/">Librem 5</a>
(<a href="https://tuxphones.com/yet-another-librem-5-and-pinephone-linux-smartphone-comparison/">comparison</a>),
which we have <a href="/blog/2017/09/24/librem-5/">promoted</a> during their crowdfunding
campaign. If you like the looks of the modern GNOME desktop, you will feel
right at home with Phosh. See the screenshots below, and take a look at this
beautiful mockup of the
<a href="https://gitlab.gnome.org/Teams/Design/app-mockups/raw/master/calls/calls.png">calls</a>
app to get a sense of the consistent design.</p>
<div style="text-align: center">
<a href="/static/img/2020-06/phosh-lockscreen.png"><img
src="/static/img/2020-06/phosh-lockscreen-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-06/phosh-homescreen.png"><img
src="/static/img/2020-06/phosh-homescreen-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-06/phosh-pulldown.png"><img
src="/static/img/2020-06/phosh-pulldown-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-06/phosh-menu.png"><img
src="/static/img/2020-06/phosh-menu-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-06/phosh-browser.png"><img
src="/static/img/2020-06/phosh-browser-thumb.jpg" class="w150 border"></a>
<a href="/static/img/2020-06/phosh-dialpad.png"><img
src="/static/img/2020-06/phosh-dialpad-thumb.jpg" class="w150 border"></a>
</div>
<h3 id="full-disk-encryption"><a class="toclink" href="#full-disk-encryption">Full Disk Encryption</a></h3>
<p>The PinePhone postmarketOS CE comes with our brand new
<a href="https://wiki.postmarketos.org/wiki/On-device_installer">on-device installer</a>.
It will ask you for a password on first boot, which it will use to set up an
encrypted installation. Full disk encryption has always been a priority of
postmarketOS, and with this new installation method, it can finally be used
without creating a custom image on the command-line. To our knowledge,
postmarketOS is the only non-Android free software phone operating system that
offers full disk encryption. But we hope that more of our friends' projects
adopt this in the future.</p>
<h2 id="shut-up-and-take-my-money"><a class="toclink" href="#shut-up-and-take-my-money">Shut up, and take my money!</a></h2>
<p>Pre-orders open early July 2020, see the
<a href="https://www.pine64.org/2020/06/15/june-update-postmarketos-ce-pinephone-shipping-pine64-cluster/">PINE64 announcement</a>.</p>
<p>Then you will be able to <strong><a href="https://store.pine64.org/">buy the postmarketOS PinePhone community edition
for $150</a></strong>, plus shipping and handling costs (and
possibly import charges depending on your region). The PINE Store will donate
$10 to postmarketOS for each one that gets sold.</p>
<p><i>Thanks to PINE64 and Purism for pushing the free software smartphone
revolution. Thanks to everybody who has contributed to postmarketOS, and in
context of this post, especially to the people who have contributed to make the
PINE64 devices and/or Phosh run with postmarketOS:
<a href="https://gitlab.com/afontain">@afontain</a>,
<a href="https://gitlab.com/bshah">@bshah</a>,
<a href="https://gitlab.com/Cogitri">@Cogitri</a>,
<a href="https://gitlab.com/Danct12">@Danct12</a>,
<a href="https://gitlab.com/drebrez">@drebrez</a>,
<a href="https://gitlab.com/Icenowy">@Icenowy</a>,
<a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a>,
<a href="https://gitlab.com/MayeulC">@MayeulC</a>,
<a href="https://xnux.eu/devices/pine64-pinephone.html">@megi</a>,
<a href="https://gitlab.com/Minecrell">@Minecrell</a>,
<a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a>,
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a>,
<a href="https://gitlab.com/z3ntu">@z3ntu</a>
</i></p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=23528571">HN</a></li>
</ul>Three years of postmarketOShttps://postmarketos.org/blog/2020/05/31/three-years/2020-05-31T00:00:00+00:00<p>Our blog posts became shorter and shorter, as we decided that currently time is
better spent on actual development than working two weeks on another epic blog
post. This three years update post follows suit, so take a big breath and
let us rush you through a few representative picks of what has been going on
in the depths of our git logs.</p>
<h3 id="stable-release-channel"><a class="toclink" href="#stable-release-channel">Stable release channel</a></h3>
<p>postmarketOS was always based on the bleeding edge version of <a
href="https://alpinelinux.org/">Alpine Linux</a>.
Since last week it's also possible to install postmarketOS based on the new
<a href="https://alpinelinux.org/posts/Alpine-3.12.0-released.html">3.12
stable</a> release of Alpine, in combination with a new stable v20.05 branch of
the postmarketOS packages (instead of master). This marks the first beta
release v20.05 of postmarketOS. It's a very rough one, polishing will be done
in the second beta. Most importantly, the stable release channel lets us avoid
breaking changes from upstream, and our infrastructure is ready for future
releases. Having a stable release channel has been a goal for years, and we
have finally completed it!</p>
<h3 id="device-categorization"><a class="toclink" href="#device-categorization">Device categorization</a></h3>
<p>We have over 200 booting devices now. Yes, <em>booting</em> is the operative word,
with most of these ports you get more of a Raspberry Pi alternative than a
functional phone experience with postmarketOS. Therefore, we started to
<a href="https://wiki.postmarketos.org/wiki/Devices">categorize the devices</a>. All
existing device ports have been moved to the <em>testing</em> category, and can be
moved to <em>community</em> or <em>main</em> depending on which features are working and how
well maintained a port is. Only <em>community</em> and <em>main</em> devices will be
cherry-picked to the stable branch.</p>
<p>Currently the only device in the <em>main</em> category is the QEMU virtual device.
It doesn't have any special hardware like a modem or GPS, so it was easy to
make it comply with the
<a href="https://wiki.postmarketos.org/wiki/Device_categorization">requirements for <em>main</em></a>.
Once some minor changes are done to the PinePhone port, it can be moved from
<em>community</em> to <em>main</em> as well.</p>
<p>There are also some devices pending to be moved into <em>community</em> from <em>testing</em>,
like the Nokia N900, Xiaomi Redmi 4X, Motorola Moto G4 Play, Samsung Galaxy A3,
Samsung Galaxy A5, Samsung Galaxy S4 Mini Value Edition and Wileyfox Swift.
This is mostly possible, because they run a mainline Linux kernel already, or
in case of the MSM8916, are currently being mainlined. The MSM8974 devices are
also candidates, such as the Nexus 5, Fairphone 2, OnePlus One and the
Samsung Galaxy S5.</p>
<p>Earlier concepts of a channel-agnostic pmdevices repository were scrapped. This
would allow using the same device packages with both the edge and stable
channels, but at the price of making the device packages more complicated.
Instead of doing that, we will treat the device specific packages like other
packages and cherry-pick only the rather risk-free patches to the stable
branch.</p>
<h3 id="mainline-progress"><a class="toclink" href="#mainline-progress">Mainline progress</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2020-05/sm-a500f.jpg"><img alt="" class="w200" src="/static/img/2020-05/sm-a500f-thumb.png" /></a>
</div><div class="grid-text">
If you are interested in mainlining your device, check out the all-new
<a href="https://wiki.postmarketos.org/wiki/Mainlining">Mainlining</a> wiki page. It gives
an overview of all ongoing efforts, across 12 SoCs. For those, someone in the
<a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">postmarketOS mainline</a>
room should be able to get you started and help out to some extend. We have a
new <a href="https://lists.sr.ht/~postmarketos/upstreaming">~postmarketos/upstreaming</a>
mailing list, which we put in CC for the patches we upstream into the Linux
kernel.</p>
<p>While we won't go into detail like
<a href="/blog/2019/06/23/two-years/#mainlining">last year</a> and recount all the amazing
things that went on in the postmarketOS mainlining world since then, we can
point out one highlight:
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1233">phone calls working on MSM8916 with audio!</a></p>
<p>The photo shows a
<a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_A5_2015_(samsung-a5ulte)">Samsung Galaxy A5 2015</a>
running Plasma Mobile on a close to mainline kernel, one of the many new
mainline device ports that we have added to pmaports over the last year.
</div></div>
<h3 id="funding-from-nlnet"><a class="toclink" href="#funding-from-nlnet">Funding from NLnet</a></h3>
<p><a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a> will be able to work full
time on postmarketOS for the rest of the year. This is made possible by
<a href="https://nlnet.nl/project/postmarketOS/index.html">NLnet through the NGI0 PET Fund</a>.
Special thanks to his employer <a href="https://www.sysmocom.de/">sysmocom</a> for being a
huge help in making this a reality.</p>
<h3 id="raw-numbers"><a class="toclink" href="#raw-numbers">Raw numbers</a></h3>
<p>Current stats and in brackets the diff to
<a href="/blog/2019/06/23/two-years/#raw-numbers">last year</a>:</p>
<ul>
<li>607 people in the <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">main channel</a> <em>(+364)</em></li>
<li>2308 <a href="https://gitlab.com/groups/postmarketOS/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged">merged MRs</a> <em>(+834)</em></li>
<li>1422 <a href="https://gitlab.com/groups/postmarketOS/-/issues?scope=all&utf8=%E2%9C%93&state=closed">closed issues</a> <em>(+435)</em></li>
<li>458 <a href="https://gitlab.com/groups/postmarketOS/-/issues?scope=all&utf8=%E2%9C%93&state=opened">open issues</a> <em>(+99)</em></li>
<li>259 contributors in <a href="https://gitlab.com/postmarketOS/pmaports">pmaports.git</a> (<code>git shortlog --summary --numbered | wc -l</code>) <em>(+86)</em></li>
</ul>
<h3 id="eof"><a class="toclink" href="#eof">EOF</a></h3>
<p>Join us in the effort to create a free software mobile operating system where
you truly own your phone, with updates until it physically falls apart! We have
a lot of tasks where you can help out, from hacking to blogging, it's all on
our <a href="https://wiki.postmarketos.org/wiki/Contributing">contributing</a> page. For
new device porters specifically, check out our brand new
<a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">#postmarketos-porting</a>
channel.</p>
<p>To everyone who put their time and effort into postmarketOS, by now far too
many people to list here: you know who you are, thank you for making
postmarketOS possible. Together we can bring postmarketOS to the daily driver
goal!</p>
<h3 id="comments"><a class="toclink" href="#comments">Comments</a></h3>
<ul>
<li><a href="https://news.ycombinator.com/item?id=23371793">HN</a></li>
</ul>postmarketOS in 2020-02https://postmarketos.org/blog/2020/02/17/postmarketos-in-2020-02/2020-02-17T00:00:00+00:00<p>Long time readers may ask themselves: what's with the strange title? Where's
the traditional "xyz days of postmarketOS" post? Truth is, that this is a
low-key update post, one that is rather "rushed out" in a few hours instead of
spending a whole week on adding all the fancy photos and <del>gifs</del> webm
animations and so on. Consider this the minimal effort of making the project
not look dead on the homepage, while not getting too distracted from the deep
development lands that our minds are sunken into.</p>
<p>We are on track with our
<a href="https://gitlab.com/postmarketOS/postmarketos/issues/11">project direction 2020</a>
plans. In a nutshell, we will create a stable releases of postmarketOS
based on Alpine stable, while still having the development channel based on
Alpine edge. Furthermore, the status of supported devices will become clearer.
The PinePhone, possibly the Librem 5 and few more will be labeled as officially
supported in their deviceinfo and in the wiki. postmarketOS should be usable as
daily driver on these. All other devices will be
<a href="https://gitlab.com/postmarketOS/postmarketos/issues/16">categorized</a> further,
depending on active maintainer count and what is working. Think of it like the
<a href="https://en.wikipedia.org/wiki/Arch_Linux#Arch_User_Repository_.28AUR.29">AUR</a>:
still useful, but sometimes broken and you need to know what you are doing when
using these. The devices will get split into their own git repository, so one
can use the device packages with both the "edge" and "latest" (stable!) channel
of all other packages. <a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a>
and <a href="https://gitlab.com/Minecrell">@Minecrell</a> are evolving
<a href="https://gitlab.com/postmarketOS/pmbootstrap/">pmbootstrap</a> as needed.</p>
<p><a href="https://gitlab.com/bshah">@bshah</a>, <a href="https://gitlab.com/Danct12">@Danct12</a>,
<a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a>,
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a> and
<a href="https://gitlab.com/z3ntu">@z3ntu</a> are working hard on PinePhone support for
postmarketOS, here's a
<a href="https://www.youtube.com/watch?v=xI6AUFkQJU0">recent video of postmarketOS with Phosh on the PinePhone</a>.
Calls are working, but audio currently requires lots of manual configuration
and isn't integrated automatically yet. But all Linux distributions targeting
the PinePhone are in the same boat regarding calls and audio, we are working
together to resolve this. <a href="https://gitlab.com/craftyguy">@craftyguy</a>
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/869">added the Librem 5 phone</a>
to postmarketOS, building on his earlier work of the devkit port.</p>
<p><a href="/static/img/2020-02/anbox.png"><img alt="Anbox running on postmarketOS on i3, with F-Droid, NewPipe and Feeder" class="wfull border" src="/static/img/2020-02/anbox.png" /></a></p>
<p><a href="https://gitlab.com/afontain">@afontain</a> has impressive results to show
regarding <a href="https://anbox.io">Anbox</a>: the Android compatibility layer, that was
never tested much outside of Ubuntu, is for the first time running on
postmarketOS / Alpine Linux! Right now, it is x86_64 only, and only on his
computer. But the heavy lifting has clearly been done. From here on, it is
realistic that we can run it on ARM phones with postmarketOS in the near
future. If you know a thing or two about Linux and would like to help out, he's
looking for other developers to help with
<a href="https://gitlab.com/postmarketOS/pmaports/issues/17#note_285245320">further streamlining and testing</a>.</p>
<p>Regarding (close to) mainline Linux on Android phones, simply too much has been
going on to recount it here. If you want to get a taste of it, check out the
excellent
<a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/907">"Enable modem on mainline MSM8916 devices"</a>
patches by <a href="https://gitlab.com/Minecrell">@Minecrell</a> and
<a href="https://gitlab.com/TravMurav">@TravMurav</a>.</p>
<p>FOSDEM 2020 was amazing.
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a>
and
<a href="https://gitlab.com/MerlijnWajer">@MerlijnWajer</a>
had the opportunity to
present their talk <a href="https://fosdem.org/2020/schedule/event/smartphones/">"Regaining control of your smartphone with postmarketOS and
Maemo Leste"</a>. As part of
the <em>Freedom</em> main track, in the huge Janson room, with a capacity of no
less than 1415 people! Besides that, the usual exchange of stickers happened,
various <a href="https://en.wikipedia.org/wiki/Birds_of_a_feather_(computing)">BoF sessions</a>
were attended, like the one from
<a href="https://fosdem.org/2020/schedule/event/bof_sourcehut/">Sourcehut</a> and the one
we set up, the
<a href="https://fosdem.org/2020/schedule/event/bof_linux_mobile/">Linux on Mobile BoF</a>.
We had lots of inspiring conversations with our friends from the various great
"true Linux on smartphones" projects in the scene. And not just during that
BoF. But also while
<a href="https://twitter.com/thepine64/status/1223684926106632193">having dinner</a>,
and in one instance, while walking to a restaurant at the other end of the
city, eating there, walking all the way back, and then exhaustedly playing a few
rounds of
<a href="https://en.wikipedia.org/wiki/Exploding_Kittens">Exploding Kittens</a> in a hotel
lobby.</p>
<p>So let's wrap it up here. If this post was too short for your preference,
read <a href="/blog/2017/09/03/100-days-of-postmarketos/">one of the classics</a> just to
recall how far all the amazing contributors have taken the project!</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=22348005">Hacker News</a></li>
</ul>New postmarketOS build infrastructure is powered by sourcehut buildshttps://postmarketos.org/blog/2019/12/14/new-build-infra/2019-12-14T00:00:00+00:00<p>In January we've
<a href="/blog/2019/01/16/600-days-of-postmarketOS/#new-srht-based-binary-repository">introduced</a>
the plan of building the whole binary repository of postmarketOS on
<a href="https://sourcehut.org">sourcehut builds</a>. This month we flicked the switch and
turned the system into production mode: we have successfully built all 1189 packages
(divide that by five architectures). It is rolled out as default mirror in
our swiss army knife of postmarketOS installation and development that is <a href="https://gitlab.com/postmarketOS/pmbootstrap/">pmbootstrap</a>.</p>
<p><div class="grid"><div class="grid-side">
<a href="https://builds.sr.ht/~postmarketos/job/121475"><img alt="" class="w300 border" src="/static/img/2019-12/builds.sr.ht.jpg" /></a>
</div><div class="grid-text">
In the first screenshot, you can see what a typical build job looks like. The
package that is building is noted on the left. Console output is neatly
divided into tasks, to make it easy to spot where a failure happened.
So far sourcehut builds works as it should, and it does not get in the way.
But if we should hit a bug that we can't reproduce elsewhere, we can <a href="https://drewdevault.com/2019/08/19/Introducing-shell-access-for-builds.html">SSH into the failed
build</a>
and look around.
</div></div>
<p><div class="grid"><div class="grid-side">
<a href="https://build.postmarketos.org"><img alt="" class="w300 border" src="/static/img/2019-12/bpo.jpg" /></a>
</div><div class="grid-text">
<p>Development effort from our end went into
<a href="https://build.postmarketos.org">build.postmarketos.org</a> (in short BPO). This is
the name of both the website seen in the second screenshot, as well as the
<a href="https://gitlab.com/postmarketOS/build.postmarketos.org/">source code</a> for the
program that generates the website. Besides that, it manages the jobs that
run on sourcehut builds.</p>
<p>BPO has 91% test coverage. A rather unusual design decision is that the website
is generated as static HTML page whenever there is a change. It is not
generated on demand when requested via HTTP. This seems highly appropriate
though, as the content at most changes a few times per second.</p>
<p>We have come a long way from initially having no binary repository and
expecting all developers to build everything from source at the project's
public launch in May of 2017. During the following months we had an unofficial
repository of binary packages for Plasma Mobile packages on postmarketOS at one
point. Until we got the <a href="/blog/2017/12/31/219-days-of-postmarketOS/#binary-repository">first official binary
repository</a> at
the end of 2017. But that one had to be manually triggered and the build logs
where not available online.</p>
<p>Now it's completely automated and transparent, and multiple developers of the
core team are able to fix things if they go south. Therefore we allow more
people to merge incoming patches, and it is already apparent that this has
resulted in increased productivity.
</div></div>
<p>Last but not least, the new building infrastructure lays out the groundwork for
creating a new release channel of postmarketOS that will be based on the stable
release of Alpine. If you want to sneak a peek at how this will be done and
what else is planned for the new year, take a look at <a href="https://gitlab.com/postmarketOS/postmarketos/issues/11">the project direction
2020 meta
issue</a>.</p>Ten years of Nokia N900https://postmarketos.org/blog/2019/11/01/ten-years-of-nokia-n900/2019-11-01T00:00:00+00:00<p>Ten years ago, November 2009, the Nokia N900 was released. It was called a turning point in Nokia's history<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup>. Nokia had been falling behind with Symbian development and was being taken over by the iPhone and the new Android phones. </p>
<p>The N900 would be the first and basically the last smartphone using the Maemo operating system. It wasn’t the fastest smartphone at the time, it didn’t have the most memory, it wasn’t the smallest or the lightest. But it was the only one that ran a full desktop OS. </p>
<p>The operating system is based on Debian, it doesn’t require rooting or unlocking. It just ships with a terminal application pre-installed and having a root shell is just one command away.</p>
<p><a href="/static/img/2019-11/n900-table.jpg"><img alt="" class="wfull border" src="/static/img/2019-11/n900-table-thumb.jpg" /></a></p>
<p>Four years later Microsoft bought Nokia. A fun artifact of this takeover by Microsoft
is that you can still find help posts for doing <a href="https://answers.microsoft.com/en-us/mobiledevices/forum/all/how-to-open-zip-files-in-n900/0b1fade8-2fae-4a19-898e-597e0edc70b4">Linux tasks on the N900 on Microsoft Answers</a>.</p>
<h2 id="ten-years-later"><a class="toclink" href="#ten-years-later">Ten years later</a></h2>
<p>Nowadays the phone has acquired quite a cult following. Multiple operating systems are still being developed for it. postmarketOS is one of those of course, another one is <a href="https://maemo-leste.github.io/">Maemo Leste</a> that’s working on updating the Maemo operating system to run on newer hardware.</p>
<p>Thanks to the work of a lot of people the N900 hardware is also pretty well supported in the mainline Linux kernel. This newer kernel means that it is way easier to run newer software that requires new kernel features. The biggest pain point of the N900 is the PowerVR GPU, which still doesn’t have any open source development.</p>
<p>It might not have the specs of a modern phone but it’s still one of the most Linux-y phones out there. And while it's ten years old now, hackers are still finding ways to run modern software on it.</p>
<p><a href="/static/img/2019-11/n900-libreoffice.jpg"><img alt="" class="wfull border" src="/static/img/2019-11/n900-libreoffice-thumb.jpg" /></a></p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2019-11/n900-i3gaps.jpg"><img alt="" src="/static/img/2019-11/n900-i3gaps-thumb.jpg" /></a>
<a href="/static/img/2019-11/n900-i3wm-conky.jpg"><img alt="" src="/static/img/2019-11/n900-i3wm-conky-thumb.jpg" /></a>
<a href="/static/img/2019-11/n900-netsurf.jpg"><img alt="" src="/static/img/2019-11/n900-netsurf-thumb.jpg" /></a>
</div></div>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=21422965">Hacker News</a></li>
</ul>
<div class="footnote">
<hr />
<ol>
<li id="fn:1">
<p>From this wonderful review, <a href="https://tweakers.net/reviews/1403/nokia-n900-linux-bak-op-zakformaat.html">Tweakers.net, een Linux bak op Zakformaat</a> <a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
</ol>
</div>Two years of postmarketOShttps://postmarketos.org/blog/2019/06/23/two-years/2019-06-23T00:00:00+00:00<h2 id="our-journey-towards-a-sustainable-mobile-os"><a class="toclink" href="#our-journey-towards-a-sustainable-mobile-os">Our Journey Towards a Sustainable Mobile OS</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/samsung-lt01wifi-xfce4.jpg"><img alt="" class="w300 border" src="/static/img/2019-06/samsung-lt01wifi-xfce4-thumb.jpg" /></a></p>
</div><div class="grid-text">
Wouldn't it be great if you could take any obsolete smartphone from the past ten years and replace its outdated and insecure software with a maintained, modular free software stack? How about then using it as a Raspberry Pi-like device for your next tinkering project? With some constraints, postmarketOS makes this possible today for <a href="https://wiki.postmarketos.org/wiki/Devices">139 booting devices</a>. Every single package in the whole OS can be updated, with the only exceptions being the vendor's Linux kernel and firmware blobs (if you plan on using them). In a few cases, it is even possible to switch out the discontinued vendor kernel forks with the upstream kernel releases straight from Linus Torvalds.
</div></div>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/splash.jpg"><img alt="" class="w300 border" src="/static/img/splash.jpg" /></a></p>
</div><div class="grid-text">
We have made it easy for fellow hackers to <a href="https://wiki.postmarketos.org/wiki/Installation_guide">install</a> our <a href="https://alpinelinux.org">Alpine Linux</a>-based distribution on all kinds of mobile devices, to <a href="https://wiki.postmarketos.org/wiki/Porting_to_a_new_device">port new ones</a>, and to change each and every piece of the operating system. Development can be done from any Linux distribution, with no requirements except for installing our lightweight <a href="https://gitlab.com/postmarketOS/pmbootstrap/">pmbootstrap</a> program. People use it on a daily basis to create amazing contributions.
</div></div>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/phonepile.jpg"><img alt="" class="w300 border" src="/static/img/phonepile.jpg" /></a></p>
</div><div class="grid-text">
Yet we are still at the beginning and full of potential to eventually breathe so much new life into these obsolete pocket computers, that they may one day become usable as actual phones again. We are here to stay, and we are celebrating two years of extending, improving and having fun with the platform and community that could potentially end the madness of planned obsolescence in the mobile phone market!
</div></div>
<h2 id="user-interfaces"><a class="toclink" href="#user-interfaces">User Interfaces</a></h2>
<p>Let's start our summary of what happened since <a href="/blog/2019/01/16/600-days-of-postmarketOS/">the last update post</a> with UI related news. Alpine developer <a href="https://gitlab.alpinelinux.org/Leo">@maxice8</a> packaged <a href="https://github.com/elogind/elogind">elogind</a> in our upstream distribution, which means we can finally use a proper display manager. <a href="https://gitlab.com/PureTryOut">@PureTryOut</a> created a patch <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/379">to use lightdm</a> instead of the previous approach of hacking <code>/etc/inittab</code> for autologin on TTY1 and kicking off a <code>/etc/profile.d/</code> script that does a half-hearted job of setting up the session. Almost all UIs expect such a display manager, therefore we will have less compatibility problems moving forward.</p>
<h3 id="phosh"><a class="toclink" href="#phosh">Phosh</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/pinephone-phosh.jpg"><img alt="" class="w300 border" src="/static/img/2019-06/pinephone-phosh-thumb.jpg" /></a></p>
</div><div class="grid-text">
In fact, Purism's <a href="https://source.puri.sm/Librem5/phosh">Phosh</a> UI (for the upcoming <a href="https://puri.sm/products/librem-5">Librem 5</a>) did not work without elogind at all. But now that we have it, we can run Phosh on top of postmarketOS in QEMU. <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/8">The initial patches for the port were merged</a> at the beginning of this month.</p>
<p>Even though the patches have obviously not seen much testing at this point, <a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a> has already managed to run it on the <a href="https://www.pine64.org/pinephone/">PinePhone</a> devkit. The display resolution is clearly off, but touch input was reported to be working.</p>
</div><div class="grid-bottom">
<a href="/static/img/2019-06/phosh-lockscreen.jpg"><img alt="" src="/static/img/2019-06/phosh-lockscreen-thumb.jpg" /></a>
</div></div>
<h3 id="plasma-mobile"><a class="toclink" href="#plasma-mobile">Plasma Mobile</a></h3>
<p><div class="grid"><div class="grid-side">
<video controls width="300" height="533" class="border" autoplay="autoplay" loop>
<source src="/static/video/2019-06/plamo-librem5-pinephone-thumb.webm" />
Videos of Plasma Mobile on the <a href="/static/video/2019-06/librem5-plamo.webm">Librem 5</a> and <a href="/static/video/2019-06/pinephone-plamo.webm">PinePhone</a> devkits
</video>
</div><div class="grid-text">
We've gotten <a href="https://plasma-mobile.org">Plasma Mobile</a> to run on both the Librem 5 (<a href="/static/video/2019-06/librem5-plamo.webm">video</a>) and PinePhone (<a href="/static/video/2019-06/pinephone-plamo.webm">video</a>) devkits — with fully free software GPU drivers! Please note that the ports to these devices are still early days and that the sluggish performance is due to the GPU drivers still being in development.</p>
<p>As usually, <a href="https://gitlab.com/PureTryOut">@PureTryOut</a> has been keeping the Plasma Mobile stack up-to-date with the latest versions. He also created a <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/214"><code>postmarketos-ui-plasma-mobile-extras</code></a> package which effectively allows users to choose whether they want only the base installation, or a fully blown one with extra apps like a PDF reader, calendar and music player.</p>
<p>We like to upstream everything that makes sense, so with help from our Alpine friends, <a href="https://gitlab.com/PureTryOut">@PureTryOut</a> got <a href="https://github.com/alpinelinux/aports/pull/7992">all</a> <a href="https://github.com/alpinelinux/aports/pull/8204">of</a> <a href="https://github.com/alpinelinux/aports/pull/8328">the</a> <a href="https://github.com/alpinelinux/aports/pull/8333">KDE Frameworks 5</a> and <a href="https://github.com/alpinelinux/aports/pull/8860">Plasma</a> <a href="https://github.com/alpinelinux/aports/pull/8891">desktop</a> into Alpine and is maintaining them there from now on. The only packages we plan to keep specifically in postmarketOS are either mobile specific or development versions.</p>
</div></div>
<h3 id="unity-8"><a class="toclink" href="#unity-8">Unity 8</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/pinephone-unity8.jpg"><img alt="" class="w300 border" src="/static/img/2019-06/pinephone-unity8-thumb.jpg" /></a></p>
</div><div class="grid-text">
Speaking of upstreaming, <a href="https://gitlab.com/z3ntu">@z3ntu</a> contributed quite a few musl-specific patches back to Unity and <a href="https://ubports.com/">UBports</a>. After iterating over the next release, we were able to <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/276">drop nine Mir patches</a> in the postmarketOS port! The <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/27">initial version</a> of the Unity packaging is only available for x86_64 so far, because of cross compilation issues. That was a few months ago, and today there is <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/227">only one package left</a> that can not be cross compiled properly. For testing purposes, he compiled it natively and took a photo of Unity 8 starting up on the aarch64 PinePhone devkit.
</div></div>
<h3 id="shelli"><a class="toclink" href="#shelli">Shelli</a></h3>
<p><div class="grid"><div class="grid-side">
<video controls width="300" height="533" class="border" autoplay="autoplay" loop>
<source src="/static/video/2019-06/nexus5-shelli-thumb.webm"/>
<a href="/static/video/2019-06/nexus5-shelli.webm">Video of shelli's gesture code in action!</a>
</video>
</div><div class="grid-text">
<p>Besides giving a <a href="https://media.ccc.de/v/osmodevcon2019-109-osmocombb-layer1-on-mediatek-status-report">presentation</a> on his current progress of porting the free software baseband firmware osmocom-bb to MediaTek devices, <a href="https://gitlab.com/unrznbl">@unrznbl</a> got his <a href="https://gitlab.com/unrznbl/shelli">Shelli UI</a> into postmarketOS. The essential piece is a <a href="https://en.wikipedia.org/wiki/Graffiti_(Palm_OS)">Graffiti</a>-inspired <a href="https://gitlab.com/unrznbl/gesture">gesture recognition program</a> that he started six years ago: it allows writing single letters at a time by drawing a rough shape of the letter across the whole screen. As you can see in the <a href="/static/video/2019-06/nexus5-shelli.webm">video</a>, the gesture for tab (to use tab completion), is slashing from bottom left to top right, and "Enter" is the reverse gesture.</p>
<p>Now what does this strange input method have to offer in contrary to the usual on-screen-keyboard way of doing things? The radical difference that sets it apart from literally all other mobile UIs today is that it runs entirely on the TTY. Users get a minimalist environment with nothing but tiny and resource-efficient terminal applications. Certainly not for everyone, but there are folks who like to do the same on their PC and there are more use cases that can be explored from here, such as using Shelli as a fallback UI in case the graphical UI does not start up, or extending it with text-to-speech for blind people.
</div></div>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2019-06/shelli-gesture-numbers.png"><img alt="" src="/static/img/2019-06/shelli-gesture-numbers-thumb.jpg" /></a>
<a href="/static/img/2019-06/shelli-gesture-letters.png"><img alt="" src="/static/img/2019-06/shelli-gesture-letters-thumb.jpg" /></a>
</div></div>
<h3 id="coreapps"><a class="toclink" href="#coreapps">CoreApps</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/coreapps-from-website.png"><img alt="" class="w300 border" src="/static/img/2019-06/coreapps-from-website-thumb.jpg" /></a></p>
</div><div class="grid-text">
<a href="https://gitlab.com/rahmanshaber">@rahmanshaber</a> and the <a href="https://cubocore.gitlab.io">CuboCore</a> team are the creators of a relatively young project called <a href="https://wiki.postmarketos.org/wiki/CoreApps">CoreApps</a>. It provides several lightweight and touchscreen-friendly applications with a consistent look that work on low-end systems without hardware acceleration. The latter is a perfect match for postmarketOS, because most devices (especially right after the initial porting phase) do not have hardware-accelerated graphics working.</p>
<p>He created an initial port, and now most applications can be installed on postmarketOS. As of writing, the postmarketOS port is missing proper theming for CoreApps, which is why it looks a bit weird on the images below. For comparison, we have added a reference screenshot of how it should look once proper theming support is added.
</div></div>
<div class="grid"><div class="grid-bottom">
<a href="/static/img/2019-06/pinephone-corepaint.jpg"><img alt="" src="/static/img/2019-06/pinephone-corepaint-thumb.jpg" /></a>
<a href="/static/img/2019-06/bullhead-corefm.jpg"><img alt="" src="/static/img/2019-06/bullhead-corefm-thumb.jpg" /></a></p>
</div></div>
<h3 id="sway"><a class="toclink" href="#sway">Sway</a></h3>
<p><a href="https://swaywm.org">Sway</a>, the Wayland drop-in replacement for the i3 window manager, is already packaged in Alpine so it was a rather easy exercise for <a href="https://gitlab.com/Danct12">@Danct12</a> to <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/374">make it available</a> in the postmarketOS UI selection that is provided by pmbootstrap. He reminded us in the merge request that it needs hardware acceleration to work.</p>
<h2 id="mainlining"><a class="toclink" href="#mainlining">Mainlining</a></h2>
<p>You may have noticed in previous blog posts that <a href="https://gitlab.com/opendata26">@opendata26</a> has been one of the driving forces in the mainline-related aspects of postmarketOS. Unfortunately he has been seemingly absent from the Internet for the last few months. We certainly miss him not only because of his great contributions, but because it was fun talking to him and he was always incredibly helpful towards anyone. From his username, and the way he answered questions, some newcomers would even be under the impression that they were chatting with an AI. We sincerely hope all is well with him!</p>
<p>Nevertheless, his absence does not mean all mainlining progress work as stopped. There is more motivation than ever in our community to get devices mainlined. So much actually, that we had to create a dedicated <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">#postmarketOS-mainline</a> channel.</p>
<h3 id="google-samsung-galaxy-nexus"><a class="toclink" href="#google-samsung-galaxy-nexus">Google (Samsung) Galaxy Nexus</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/samsung-maguro-5.1.0.jpg"><img alt="" class="w300 border" src="/static/img/2019-06/samsung-maguro-5.1.0-thumb.jpg" /></a></p>
</div><div class="grid-text">
For instance, there is a thrilling report from <a href="https://gitlab.com/drebrez">@drebrez</a> about <a href="https://gitlab.com/postmarketOS/pmaports/issues/175">mainlining the Galaxy Nexus</a>. Although the OMAP4460 <a href="https://en.wikipedia.org/wiki/System_on_a_chip">SoC</a> is supported in mainline Linux, actually booting it on the device made it panic and reboot instantly. By starting with only a stub for the <a href="https://en.wikipedia.org/wiki/Device_tree">device tree source</a>, there was no way to get logs or other useful clues about the crash from the device. No USB, no serial and of course no working display or anything beyond that.</p>
<p>So he applied his best hacking skills and configured the kernel to <a href="https://cateee.net/lkddb/web-lkddb/PANIC_TIMEOUT.html">wait forever</a> when said panic occurs, and edited the code to do an <a href="https://elixir.bootlin.com/linux/v5.0-rc2/ident/emergency_restart">emergency_restart()</a> in one particular interesting location. After compiling and booting once more, the device would either hang forever, or reboot at once. That way he knew whether the code where he patched in the restart would get executed or not. A few hours later, he patiently narrowed down the troublemakers (mostly clock setup related).
</div></div>
<p><div class="grid"><div class="grid-side">
<video controls width="300" height="533" class="border" autoplay="autoplay" loop muted>
<source src="/static/video/2019-06/samsung-maguro-5.1.0-earphone.webm"/>
<a href="/static/video/2019-06/samsung-maguro-5.1.0-earphone.webm">Video of music playing from the earphone</a>
</video>
</div><div class="grid-text">
When the offending code was commented out, the device would finally boot up to the initramfs (and of course crash there at some point). The above two paragraphs are just a simplified summary of what it took to get that first feeling of success in the mainlining endeavor. It should illustrate how many more mind-boggling problems had to be solved throughout the next months to get the following working:
USB, MMC (internal flash storage), battery reporting and charging, volume and power keys, accelerometer, gyroscope, barometer and finally the display as you can see in the photo.</p>
<p>You are probably wondering what the video next to this paragraph is all about: it shows that even the earphone audio is working! (The video is muted by default, you can enable the audio manually or try this <a href="/static/video/2019-06/samsung-maguro-5.1.0-earphone.webm">direct link</a>). Also we have another video of the Galaxy Nexus <a href="https://www.youtube.com/watch?v=-BTL4pRrBUM">booting into XFCE4 with the 5.1.0 based kernel</a>. For anyone looking to mainline their own smartphone, reading the original issue is worthwhile: a lot of the steps that were taken are so well documented, that they could practically serve as blueprint for future mainline ports.
</div></div>
<h3 id="google-lg-nexus-5"><a class="toclink" href="#google-lg-nexus-5">Google (LG) Nexus 5</a></h3>
<p>While the mainlining tale just began for the Galaxy Nexus, the Nexus 5 (MSM8974 SoC) is on the other end of the spectrum. Pretty much everything besides audio has been working <a href="/blog/2018/06/09/one-year/#nexus-5-floss-modem-stack-with-mainline">one year ago</a>, with comparatively few small patches on top of the 4.17-rc3 kernel instead of the nearly two million lines of added code in the 3.4-based downstream kernel. But do not underestimate what it takes to resolve the remaining quirks, and to rebase and replace the remaining out-of-tree hacks up to the very last line with beautiful patches that integrate with the rest of the kernel source and are finally worth of getting accepted upstream. <a href="https://gitlab.com/masneyb">@masneyb</a> is determined to get this task done for the Nexus 5. You can take a look at the <a href="https://masneyb.github.io/nexus-5-upstream/">crazy amount of patches</a> he has gotten merged in this undertaking, together with a few patches that are still in review.</p>
<p>Thanks to these efforts, we can run postmarketOS on the Nexus 5 with a <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/450">5.2-rc3 based kernel</a> (WIP merge request) that has less out-of-tree patches than ever before!</p>
<h3 id="ouya"><a class="toclink" href="#ouya">Ouya</a></h3>
<p>We are publishing this blog post by coincidence one month before the <a href="https://www.theverge.com/2019/5/22/18635800/razer-ouya-kickstarter-gaming-service-shutting-down-june-25">online services of the Ouya Android gaming console get shut down</a>. Once this happens, the once highly anticipated crowdfunding sensation will be as useful as a paper weight with the original software stack. However, it is possible to install postmarketOS on it. Moreover <a href="https://gitlab.com/ryang2678">@ryang2678</a>'s <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/269">patches</a> allow running a slightly patched 5.0 mainline kernel and use the grate free software userspace driver to get accelerated graphics with its Tegra 3 SoC. The latter is not exactly stable so far, and audio support is still missing, but this is a nice foundation for expanding the lifetime of a gaming console that should surely be able to run a bunch of retro emulators for the next ten years.</p>
<h3 id="more-mainlining"><a class="toclink" href="#more-mainlining">More Mainlining</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/samsung-i927-mate.jpg"><img alt="" class="w300 border" src="/static/img/2019-06/samsung-i927-mate-thumb.jpg" /></a></p>
</div><div class="grid-text">
Rather than take up too much of your time with updates on device mainlining progress, we'll make the updates for the remaining phones a bit shorter. <a href="https://gitlab.com/cerg2010cerg2010">@cerg2010cerg2010</a> put a kernel close to 5.1.12 mainline on the <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/195">Samsung Captivate Glide</a> (Tegra SoC, photo). He reports, that the <a href="/static/img/2019-06/samsung-i927-midori.jpg">Midori browser works very well</a> with latest grate drivers, even better than stock WebView from Android. Next up is <a href="https://gitlab.com/zhuowei">@zhuowei</a>, who put an incredible amount of work into his <a href="https://gitlab.com/postmarketOS/pmaports/issues/153">Google Pixel 3 XL</a> (SDM845 SoC), to get from next to nothing all the way to penguins greeting him in the booting process.
</div></div>
<p>Finally <a href="https://gitlab.com/Mis012">@Mis012</a> started <a href="https://gitlab.com/postmarketOS/postmarketos.org/merge_requests/78#note_179126145">mainlining his sm-a300fu</a> (Samsung Galaxy A3 2015) and teamed up with <a href="https://github.com/lambdadroid">@lambdadroid</a> who is working on the similar sm-a500fu (both have a MSM8916 SoC).</p>
<h2 id="infrastructure"><a class="toclink" href="#infrastructure">Infrastructure</a></h2>
<h3 id="sourcehut-srht"><a class="toclink" href="#sourcehut-srht">Sourcehut (sr.ht)</a></h3>
<p>Bad infrastructure news first: we did not manage to move our binary package repository to <a href="https://sourcehut.org/">sourcehut</a> just yet. <a href="/blog/2019/01/16/600-days-of-postmarketOS/#new-srht-based-binary-repository">As outlined in the 600 days post</a>, building on top of sourcehut will make maintaining the binary repo easier and more transparent. The whole thing will scale better and allow us to move towards a stable postmarketOS version. But we are still working on the postmarketOS specific part that will orchestrate the build jobs. In fact, we have a PHP based version that is about 90% feature complete, but has some hard to resolve bugs and no test cases. Long story short, we made the tough decision of starting over with a Python 3 version and with focus on testing from the beginning. Using the same programming language as pmbootstrap decreases friction for development, for writing tests, and increases the bus factor. If somebody is interested in helping us out, <a href="https://gitlab.com/postmarketOS/build.postmarketos.org/issues">get in touch</a>.</p>
<h3 id="crossdirect"><a class="toclink" href="#crossdirect">Crossdirect</a></h3>
<p>In more pleasant announcements, <a href="https://wiki.postmarketos.org/wiki/Build_internals#Cross-compile_types">cross-compiling in pmbootstrap</a> was completely revamped with <a href="https://gitlab.com/zhuowei">@zhuowei</a>'s <a href="https://gitlab.com/postmarketOS/pmbootstrap/issues/1731">crossdirect</a> method. With this change there is no longer a need to run distccd on localhost anymore, which neatly resolves the distccd-behind-sshd performance bottleneck that <a href="https://gitlab.com/postmarketOS/pmbootstrap/merge_requests/1649">had to be introduced earlier</a> for <a href="https://github.com/distcc/distcc/issues/155">security reasons</a>.</p>
<h3 id="continuous-integration"><a class="toclink" href="#continuous-integration">Continuous Integration</a></h3>
<p>The heart of postmarketOS development are the package build recipes in <a href="https://gitlab.com/postmarketOS/pmaports/">pmaports.git</a>. In order to shorten code reviews, <a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a> has once again improved the CI scripts. A new check makes sure that we <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/382">always increase versions of modified packages</a>. Sometimes we don't want to bump the version though, for example when we only enable another architecture. In that case, we can skip the new check with <code>[ci:skip-vercheck]</code> in the commit message. Similarly <code>[ci:skip-build]</code> allows <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/210">skipping the test build</a> (e.g. because we know it won't finish within the one hour timeout), while still running <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/371">checksum verification</a> and all other CI tests.</p>
<h3 id="pre-built-images-hwtest"><a class="toclink" href="#pre-built-images-hwtest">Pre-built Images / hwtest</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/hwtest.png"><img alt="" class="w300 border" src="/static/img/2019-06/hwtest-thumb.jpg" /></a></p>
</div><div class="grid-text">
<a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a> has created <a href="https://images.postmarketos.org">images.postmarketos.org</a> to host pre-built installations for the PinePhone, and we will probably add more devices in the future. He also wrote the terminal program <a href="https://wiki.postmarketos.org/wiki/Checking_hardware_with_hwtest">hwtest</a>, which tests a whole bunch of mobile hardware related components and reports the status back in an elegant overview. It allows, for example, quickly checking for regressions after a kernel upgrade and, as you have probably guessed, this makes it a perfect candidate for including in automated testing in the future.
</div></div>
<h3 id="gcc-4"><a class="toclink" href="#gcc-4">GCC-4</a></h3>
<p>One thing we have learned from the long list of ported devices is that some downstream kernels will only compile with certain GCC versions. Or, even worse, they may compile with a newer GCC but then they won't boot. The latter is of course a nightmare to resolve. <a href="https://gitlab.com/mberndt">@mberndt</a> <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/132#note_139339268">did it anyway</a> and allowed his HTC Desire Z to be built with GCC-6 instead of GCC-4! To spare other porters from this pain, <a href="https://gitlab.com/drebrez">@drebrez</a> <a href="https://gitlab.com/postmarketOS/pmbootstrap/merge_requests/1754">added GCC-4</a> shortly afterwards. So now we have <a href="https://wiki.postmarketos.org/wiki/Vendor_kernel_specific_package#GCC_version">GCC-8 (in Alpine), GCC-6 and GCC-4</a>.</p>
<h3 id="hybris"><a class="toclink" href="#hybris">Hybris</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/xiaomi-santoni-hybris.jpg"><img alt="" class="w300 border" src="/static/img/2019-06/xiaomi-santoni-hybris-thumb.jpg" /></a></p>
<p><a href="/static/img/2019-06/samsung-klte-hybris.jpg"><img alt="" class="w300 border" src="/static/img/2019-06/samsung-klte-hybris-thumb.jpg" /></a></p>
</div><div class="grid-text">
<p>While on the subject of workarounds for vendor kernels, <a href="https://gitlab.com/asriel-danctnix">@asriel-danctnix</a>, <a href="https://gitlab.com/Danct12">@Danct12</a> and <a href="https://gitlab.com/minlexx">@minlexx</a> are trying to get optional Android driver support for their phones integrated into postmarketOS. They are targeting their <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/420">Xiaomi Redmi 4X</a> (first photo) and <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/332">Samsung Galaxy S5</a> (second photo), and are of course streamlining the necessary <a href="https://wiki.postmarketos.org/wiki/Hybris">libhybris</a> packaging for all devices in the process, for example with the new <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/351">hybris-base</a> meta package. The photos show the libhybris test for GPU functionality running successfully. Support for audio is being worked on by packaging <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/448">pulseaudio-modules-droid</a> from SailfishOS.</p>
</div></div>
<h2 id="26-new-booting-devices-139-total"><a class="toclink" href="#26-new-booting-devices-139-total">26 new booting devices (139 total)</a></h2>
<!-- Generated with: 'pmos-stats new-devices --md 7f1c8ba865015e61ce9d571ffc5424f1b524e95f'
Start subject: kde/applications*: update to 18.12.0 [skip ci] (!135)
Current master (for next time): 95592e8fb9b183e80495e1a6ef5ff32021b95015
Current subject: main/postmarketos-ui-plasma-mobile: fix dependency name (!451)
Total device count from pmbootstrap. -->
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/samsung-gts210velte.jpg"><img alt="" class="w300" src="/static/img/2019-06/samsung-gts210velte-thumb.png" /></a>
<a href="/static/img/2019-06/oppo-find-7a.jpg"><img alt="" class="w300" src="/static/img/2019-06/oppo-find-7a-thumb.png" /></a>
</div><div class="grid-text">
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/CHUWI_Hi10_Plus_(chuwi-hi10plus)">CHUWI Hi10 Plus <code>chuwi-hi10plus</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC_One_XL">HTC One XL <code>htc-evita</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC_One_SV_(htc-c520e)">HTC One SV <code>htc-k2ul</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC_One_M7_(htc-m7)">HTC One M7 <code>htc-m7</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC_One_S_(htc-ville)">HTC One S <code>htc-ville</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC_Desire_Z_(htc-vision)">HTC Desire Z (vision) <code>htc-vision</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/LG_G3_Beat_(lg-d722)">LG G3 Beat <code>lg-d722</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/LG_Optimus_L5">LG Optimus L5 <code>lg-e610</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/LG_Optimus_L7_II">LG Optimus L7 II <code>lg-vee7e</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Meizu_Pro_5_(meizu-turbo)">Meizu Pro 5 <code>meizu-turbo</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola_Moto_G5(motorola-cedric)">Motorola Moto G5 <code>motorola-cedric</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola_Moto_G5s(motorola-montana)">Motorola Moto G5s <code>motorola-montana</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Nokia_1_(nokia-frt)">Nokia 1 <code>nokia-frt</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/OPPO_FIND_7a_(oppo-find-7a)">OPPO Find 7a <code>oppo-find-7a</code></a> <em>(2nd photo)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Pine_Don't_be_evil_devkit">PINE64 PinePhone devkit <code>pine-dontbeevil</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Planet_Computers_Gemini_PDA_(planet-geminipda)">Planet Gemini PDA <code>planet-geminipda</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Purism_Librem5_Devkit">Purism Librem 5 Devkit <code>purism-librem5dev</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S_Relay_4G_(samsung-apexq)">Samsung Galaxy S Relay 4G <code>samsung-apexq</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Tab_S2_9.7_LTE_(samsung-gts210velte)">Samsung Galaxy Tab S2 9.7 LTE (SM-T819) <code>samsung-gts210velte</code></a> <em>(1st photo)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S7_Edge_(samsung-hero2lte)">Samsung Galaxy S7 edge <code>samsung-hero2lte</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S7_(samsung-herolte)">Samsung Galaxy S7 <code>samsung-herolte</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Captivate_Glide_(samsung-i927)">Samsung Captivate Glide <code>samsung-i927</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Tab_3_8.0">Samsung Galaxy Tab 3 8.0 <code>samsung-lt01wifi</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Trekstor_Surftab_Wintron_7.0_(surftab-wintron7.0)">TrekStor SurfTab wintron 7.0 <code>surftab-wintron7.0</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi_Mi_2">Xiaomi Mi 2 <code>xiaomi-aries</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi_Mi_A1_(xiaomi-tissot)">Xiaomi A1 <code>xiaomi-tissot</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/ZTE_Blade_AF3">ZTE Blade AF3 <code>zte-p731a20</code></a>
</div></div></li>
</ul>
<p><em>Thanks to: everyone who ported these devices, see the contributors section in each device's wiki page.</em></p>
<h2 id="raw-numbers"><a class="toclink" href="#raw-numbers">Raw Numbers</a></h2>
<ul>
<li>243 people in the <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">main channel</a> <em>(-172)</em></li>
<li>1474 <a href="https://gitlab.com/groups/postmarketOS/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged">merged MRs</a> <em>(+329)</em></li>
<li>987 <a href="https://gitlab.com/groups/postmarketOS/-/issues?scope=all&utf8=%E2%9C%93&state=closed">closed issues</a> <em>(+142)</em></li>
<li>359 <a href="https://gitlab.com/groups/postmarketOS/-/issues?scope=all&utf8=%E2%9C%93&state=opened">open issues</a> <em>(+108)</em></li>
<li>173 contributors in <a href="https://gitlab.com/postmarketOS/pmaports">pmaports.git</a> (<code>git shortlog --summary --numbered | wc -l</code>) <em>(+40)</em></li>
</ul>
<h2 id="outro"><a class="toclink" href="#outro">Outro</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-06/hammerhead-convergence.jpg"><img alt="" class="w300 border" src="/static/img/2019-06/hammerhead-convergence-thumb.jpg" /></a></p>
</div><div class="grid-text">
Now that you're here, let's just assume that you have read this entire post and so we will reward you with an easter egg. <a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a> created a dark mode for this very website, so if you configure your browser appropriately and open this page again, it will look entirely differently. Mind blown, right?</p>
<p>Another thing we did not want to miss out on is of course convergence. That is a fancy word people use to describe a consistent interface for both your desktop and your phone. Next to this paragraph is a prime example of how convergence should be done with postmarketOS.
</div></div>
<p>With that critical piece of information out there, and with grateful thoughts towards everybody who contributed: let's get right into the next year of exciting postmarketOS development! \o/</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=20255299">HN</a></li>
</ul>postmarketOS at FOSDEM 2019https://postmarketos.org/blog/2019/02/10/postmarketos-at-fosdem-2019/2019-02-10T00:00:00+00:00<p>Last weekend was <a href="https://fosdem.org/2019/">FOSDEM 2019</a>, Europe's biggest event for open-source and free software developers to meet, share ideas and collaborate. A few postmarketOS developers and community members attended, as well as several other Linux phone project members. Of course, besides just walking around and attending several interesting talks, we also took this opportunity to do some work!</p>
<p>The PINE64 company was present with their own stand, and a PINE64 community meeting in the evening. They showed off their almost ready PinePhone development kits, and some other neat hardware like a fully open-source IP camera, their new Pinebook Pro and PineTablet. Since <a href="https://gitlab.com/z3ntu">@z3ntu</a>, <a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a> and <a href="https://gitlab.com/PureTryOut">@PureTryOut</a> took their Pine A64-LTS kits with them (which uses basically the same hardware as will be in the PinePhone), we decided to do some work improving our port, and we got the screen working for the first time!</p>
<p><a href="/static/img/2019-02/fosdem-pmos-pine64.jpg"><img alt="" class="wfull border" src="/static/img/2019-02/fosdem-pmos-pine64.jpg" /></a></p>
<p>There is still work to do as the touchscreen doesn't respond yet, and the patches to make the display work still have to be combined with our current kernel sources. However, with the progress we're currently making, it means we should have a working port once the actual phone releases!</p>
<p>We've also met the people behind Necunos and their first mobile device, the NC_1. Originally the plan was for us to receive a devkit at FOSDEM, but due to an issue with the screen they had chosen originally, this is delayed till later this month. They did however have a prototype with them, and it was awesome to see it in person. We're waiting for the devkit in excitement, and hopefully next year they'll have a stand as well.</p>
<p>An event like FOSDEM is also a good opportunity to meet with related and collaborating projects. We've met <a href="https://gitlab.com/MerlijnWajer">@MerlijnWajer</a> from <a href="https://maemo-leste.github.io/">Maemo Leste</a>, <a href="https://gitlab.com/UniversalSuperBox">@UniversalSuperBox</a> from <a href="https://ubports.com/">UBPorts</a>, <a href="https://gitlab.com/SirCmpwn">@SirCmpwn</a> from <a href="https://sourcehut.org/">sourcehut</a> (which <a href="/blog/2019/01/16/600-days-of-postmarketOS/#new-srht-based-binary-repository">will soon be building our packages</a> and automatically push them to our repo), and <a href="https://gitlab.com/bshah">@bshah</a> from <a href="https://plasma-mobile.org">Plasma Mobile</a>.</p>
<p><a href="/static/img/2019-02/fosdem-community.jpg"><img alt="" class="wfull border" src="/static/img/2019-02/fosdem-community-thumb.jpg" /></a></p>
<p>From left to right:
<a href="https://gitlab.com/bshah">@bshah</a>,
<a href="https://gitlab.com/MayeulC">@MayeulC</a>,
<a href="https://gitlab.com/unrznbl">@unrznbl</a>,
<a href="https://gitlab.com/z3ntu">@z3ntu</a>,
<a href="https://gitlab.com/MerlijnWajer">@MerlijnWajer</a>,
<a href="https://gitlab.com/UniversalSuperBox">@UniversalSuperBox</a>,
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a>,
<a href="https://gitlab.com/NotKit">@NotKit</a>,
<a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a></p>
<p>The future of Linux on phones is definitely bright, which was just reconfirmed by the awesome people and companies we've met this year. We'll probably hold a talk ourselves next year, and hopefully we'll meet even more people. 🎉</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=19129192">Hacker News</a></li>
</ul>600 days of postmarketOShttps://postmarketos.org/blog/2019/01/16/600-days-of-postmarketOS/2019-01-16T00:00:00+00:00<h2 id="where-have-you-been"><a class="toclink" href="#where-have-you-been">Where Have You Been?</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-01/Nexus5-wikipedia.jpg"><img alt="" class="w300 border" src="/static/img/2019-01/Nexus5-wikipedia-thumb.jpg" /></a></p>
</div><div class="grid-text">
postmarketOS is aiming for a ten year life-cycle for smartphones, see the <a href="/">all new front page</a> for a short introduction if you are new around here. Today we'll cover what happened during the second half of 2018. Many have been wondering where we've been and why it took us so long to write a real update post. Is the project dead already? Weren't phone calls almost working? What happened?
</div></div>
<p>Development has been going on continuously, so we are not dead. Maybe a little undead though, like some of the old and forgotten phones we are trying to revive, because we have not really gotten any closer to the goal of getting telephony working or turning a phone into a daily driver. The Nexus 5, <a href="/blog/2018/06/09/one-year/#nexus-5-floss-modem-stack-with-mainline">while booting mainline with accelerated graphics and connecting to the cellular modem all with a free software userspace</a>, still does not have working audio. That is one example, other devices have different problems. However, we have not been sitting idle and doing nothing these past few months!</p>
<h2 id="whats-missing"><a class="toclink" href="#whats-missing">What's Missing?</a></h2>
<p>So you might think, "well, then suck it up and get that last missing piece about making calls in place, and there we have our daily driver and salvation from the Android/iOS duopoly" right? No, not at all. You see, even with that missing functionality, it's still a proof of concept and not something that can be easily used as a daily driver. Making a phone call on the Nexus 5 still requires firing up a terminal and inputting commands, to name the most obvious flaw.</p>
<p>But there is more. Like all Linux distributions, we need to take care of all the things below the surface. The list of housekeeping tasks include: integrating the various components with one another, updating software in the repositories and dealing with breakage from such updates, maintaining a binary package repository and repairing packages that fail to build, handling incoming patches, bug reports and feature requests, and writing and organizing documentation. These things slow development down, especially if they are not as optimized as they could be.</p>
<h2 id="what-now"><a class="toclink" href="#what-now">What Now?</a></h2>
<p>We are stuck in a proof-of-concept stage, and it's time to get out. No, this does not mean we are going to rush out telephony functionality (even if it could be done that "easily"), and pretending everything around it can be fixed later. There are certain workflows that need to be put in place to get a rock solid base, upon which it is easy and fun to develop on. Becoming a great platform for development has been the idea from the beginning, but it was only applied to the very foundation of postmarketOS: our <a href="https://gitlab.com/postmarketOS/pmbootstrap">pmbootstrap</a> development tool. It's time to take it to the next level, and deploy this concept to the distribution as a whole.</p>
<h2 id="aports-split-from-pmbootstrapgit"><a class="toclink" href="#aports-split-from-pmbootstrapgit">Aports Split From pmbootstrap.git</a></h2>
<p>With that in mind, we took on one of the most long-standing issues we have had with the postmarketOS architecture: the package building recipes <a href="https://gitlab.com/postmarketOS/pmbootstrap/issues/383">(aports) were not separated from the pmbootstrap tool</a>. This is resolved now, pmbootstrap will clone its own copy of the now-separated <a href="https://gitlab.com/postmarketOS/pmaports">pmaports.git</a> repository as you run its initialization wizard the first time. Thanks to this new independence, Linux distributions can properly package pmbootstrap. This change has also allowed us to (finally!) put it up on <a href="https://pypi.org/project/pmbootstrap">pypi</a>:</p>
<div class="codehilite"><pre><span></span><code><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>--user<span class="w"> </span>pmbootstrap
<span class="gp">$ </span>pmbootstrap<span class="w"> </span>init
</code></pre></div>
<p>This was also a very important stepping stone for basing our packages <a href="https://gitlab.com/postmarketOS/pmaports/issues/5">on different Alpine Linux branches in the future</a>. Right now, we are on Alpine's bleeding edge (aptly named "edge") branch. While this allows us to get the latest versions of packages quickly it is a moving target, and roughly once a month there is an update in one of the packages that causes <a href="https://gitlab.com/postmarketOS/pmaports/issues/144">substantial breakage</a> throughout postmarketOS. As developers, this is not a fun situation, but we can deal with it. Typically after a few days, everything is adjusted on our end, but we don't need to tell you how unacceptable it would be if your phone refused to work for a few days. Especially when every so often the "fix" involves having to reinstall the OS. Therefore the plan is to use Alpine stable releases in the future as a base, and rebasing our packages in a separate branch on the next Alpine release roughly every six months (to match Alpine's release cycle). This will allow us to give users a clear and safe upgrade path from the current stable packages branch to the new one once it is ready.</p>
<h2 id="new-srht-based-binary-repository"><a class="toclink" href="#new-srht-based-binary-repository">New sr.ht Based Binary Repository</a></h2>
<p>Having multiple package branches means that we need to build each package for each branch, for every CPU architecture. Of course, this is not a fun exercise without a powerful and automated package building infrastructure. The problem is, what we have right now is not cut out for that task: a single x86_64 machine with a 3 GHz Quad-Core that is manually triggered to build everything. It takes, for example, several hours to build new Plasma Mobile upgrades for all supported architectures even though we are cross compiling and not supporting multiple branches yet.</p>
<p>This prompted us to start brainstorming for a <a href="https://gitlab.com/postmarketOS/postmarketos.org/issues/78">worthy successor</a>. Not long after the discussion started, <a href="https://builds.sr.ht">builds.sr.ht</a> ("builds dot sir hat") was mentioned and we have since started collaborating with its author <a href="https://gitlab.com/SirCmpwn">@SirCmpwn</a>. He <a href="https://drewdevault.com/2018/11/15/sr.ht-general-availability.html">describes</a>
his project as:</p>
<blockquote>
<p><em>The flagship product from sr.ht is its continuous integration platform, builds.sr.ht, which is easily the most capable continuous integration system available today. It’s so powerful that I’ve been working with multiple Linux distributions on bringing them onboard because it’s the only platform which can scale to the automation needs of an entire Linux distribution. [...]</em></p>
</blockquote>
<p><a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a> <a href="https://gitlab.com/postmarketOS/build.postmarketos.org/issues/3">has been working on backend code</a> that will start the individual package build jobs whenever new commits land in pmaports.git. It comes with a nice status page frontend, which links the individual postmarketOS packages to their sr.ht build jobs. Having one job per package requires knowledge of which packages need to be built in advance, so <a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a> added <a href="https://gitlab.com/postmarketOS/pmbootstrap/merge_requests/1717"><code>pmbootstrap repo_missing</code></a>.</p>
<p>The sr.ht based build repository efforts are still work in progress, however we have already caused nice spikes in sr.ht's statistics as we triggered the initial package build (<em>see image below</em>).</p>
<p><a href="/static/img/2019-01/srht_building_pmos_packages.png"><img alt="" class="wfull border" src="/static/img/2019-01/srht_building_pmos_packages.png" /></a></p>
<h2 id="improved-nexus-5-mainline-packaging"><a class="toclink" href="#improved-nexus-5-mainline-packaging">Improved Nexus 5 Mainline Packaging</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-01/nexus5-surfing.png"><img alt="" class="w200 border" src="/static/img/2019-01/nexus5-surfing-thumb.jpg" /></a></p>
</div><div class="grid-text">
<a href="https://gitlab.com/pparent">@pparent</a> figured out why the Nexus 5 was not booting reliably and <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/44">fixed it</a>. Furthermore he made sure that <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/33">all backlights of the phone are used</a>, instead of only having half of them activated.</p>
<p>In the picture you can see that he <a href="https://gitlab.com/postmarketOS/pmaports/commit/87e3d17721d9fcb6f188b15e004ca9637d156132">enabled the Plasma style</a> for the QtVirtualKeyboard, and was able to do some basic web browsing with the device. Check out <a href="https://www.youtube.com/watch?v=6DqB4PVfREU">this video</a> where he uses his <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/16">mobile-configured QtWebBrowser</a> on top of Plasma Mobile to visit various websites, watches a video in the browser and uses touch gestures with OpenStreetMap.
</div></div>
<h2 id="pine-a64-lts-librem-5-nc_1"><a class="toclink" href="#pine-a64-lts-librem-5-nc_1">Pine A64-LTS, Librem 5, NC_1</a></h2>
<p>While the majority of the devices running postmarketOS are rather old ones, we are interested in packaging support for new hardware as well. Especially if that hardware is produced by free software loving companies such as <a href="https://www.pine64.org/">PINE64</a>, <a href="https://puri.sm/">Purism</a> and <a href="https://necunos.com/">Necuno Solutions</a>.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-01/Pine-a64lts-playbox.jpg"><img alt="" class="w300 border" src="/static/img/2019-01/Pine-a64lts-playbox-thumb.jpg" /></a>
</div><div class="grid-text">
Let's go through the related news in chronological order. After the PINE64 CEO TL Lim saw our <a href="/blog/2018/08/25/postmarketos-at-akademy/">postmarketOS presentation at Akademy</a>, he offered us free Pine A64-LTS devices and shipped them shortly afterwards. <a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a> <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/6">did the port</a> with a lot of help from <a href="https://gitlab.com/z3ntu">@z3ntu</a> and extended pmbootstrap to be able to <a href="https://gitlab.com/postmarketOS/pmbootstrap/merge_requests/1693">write the U-Boot bootloader to the SD card</a>.
</div></div>
<div class="grid"><div class="grid-side">
<a href="/static/img/2019-01/Librem5-devkit.jpg"><img alt="" class="w300 border" src="/static/img/2019-01/Librem5-devkit-thumb.jpg" /></a>
</div><div class="grid-text">
Next up is Purism's Librem 5. <a href="https://gitlab.com/craftyguy">@craftyguy</a> ordered the development kit back in the <a href="/blog/2017/09/24/librem-5">crowdfunding days</a> in September 2017. It arrived a few weeks ago and, while we were writing this blog post, he <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/141">managed to boot postmarketOS on it</a>. Sharing as much code between all devices as possible has paid off once more, because the Librem 5 requires U-Boot to be written to the SD card too. It also needs another firmware file to be written there, so <a href="https://gitlab.com/craftyguy">@craftyguy</a> <a href="https://gitlab.com/postmarketOS/pmbootstrap/merge_requests/1739">refactored</a> the code to allow an arbitrary number of firmware files to be embedded into the SD card images. In the picture you can see the dev board booted into XFCE4 and hooked up to a HDMI monitor.
</div></div>
<p>Last but not least is <a href="https://necunos.com/news/necunos-nc_1-and_ne_1-press-release/">Necuno Solutions with their NC_1</a>. They are collaborating with six alternative mobile OS communities, and <a href="https://necunos.com/blog/necuno-solutions-and-postmarketos-collaboration/">postmarketOS is among them</a>. <a href="https://gitlab.com/PureTryOut">@PureTryOut</a> will receive one device for free for porting purposes, and it is possible to order the NC_1 with postmarketOS pre-installed. Which of course brings back some classic questions: <em>When a device is sold with postmarketOS, should we just name it marketOS then? What about premarketOS or pre-postmarketOS?</em> (More work is clearly needed here.)</p>
<h2 id="raspberry-pi-zero"><a class="toclink" href="#raspberry-pi-zero">Raspberry Pi Zero</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-01/RaspberryPiZeroWeston.jpg"><img alt="" class="w300 border" src="/static/img/2019-01/RaspberryPiZeroWeston-thumb.jpg" /></a></p>
</div><div class="grid-text">
As shown in the last big update post, we have <a href="/blog/2018/06/09/one-year/#raspberry-pi-samsung-galaxy-tab-101-and-nokia-n9">support for all Raspberry Pi</a> versions up to 3B+ in postmarketOS. This already included the Raspberry Pi Zero, but since we had the DHCP server disabled for all Pi models, there was no convenient way to boot the Zero: it does not come with an ethernet port like the other models.</p>
<p><a href="https://gitlab.com/drebrez">@drebrez</a> took care of it by making <a href="https://gitlab.com/postmarketOS/pmaports/issues/151">several related fixes</a> and introducing a <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/125">separate device package</a>, along with <a href="https://wiki.postmarketos.org/wiki/Raspberry_Pi">updated wiki documentation</a> to provide installation instructions for each model.
</div></div>
<h2 id="unity-8-and-phosh"><a class="toclink" href="#unity-8-and-phosh">Unity 8 and Phosh</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-01/unity8.png"><img alt="" class="w300" src="/static/img/2019-01/unity8.png" /></a></p>
</div><div class="grid-text">
You may remember Canonical's canceled attempt to bringing Ubuntu's Unity desktop to the phone. It was called Ubuntu Touch and lives on without Canonical's backing in the form of <a href="https://ubports.com/">ubports</a>, who have forked the project and maintain it nowadays. <a href="https://gitlab.com/z3ntu">@z3ntu</a> started <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/27">porting the interface to postmarketOS</a> and has already done an impressive amount of upstreaming with everything he fixed along the way. Unity 8 boots up so far, ubuntu-app-launch is working enough that applications can launch but everything locks up easily at this point. We need to package some actual apps as well, right now there is only the system settings app (<em>in the picture</em>).
</div></div>
<p>Meanwhile, <a href="https://gitlab.com/PureTryOut">@PureTryOut</a>, <a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a> and <a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a> took a shot at <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/8">packaging Phosh</a>, the UI that the Librem 5 will use by default on Purism's PureOS. Just like the Unity 8 port, getting the UI running on Alpine's stack holds some unresolved challenges and help is highly appreciated.</p>
<h2 id="misc-changes"><a class="toclink" href="#misc-changes">Misc Changes</a></h2>
<p>As always with these blog posts, they get long even if we don't bother listing each and every change. Here are some of the most noteworthy ones.</p>
<p><a href="https://wiki.postmarketos.org/wiki/Installing_pmbootstrap">Tab completion for pmbootstrap</a> works <em>perfectly</em> now for bash and zsh: <a href="https://gitlab.com/GrantM11235">@GrantM11235</a> added this support by <a href="https://gitlab.com/postmarketOS/pmbootstrap/merge_requests/1656">using argcomplete</a>, so it automatically does the tab completions from the existing argparse. It does this without manual maintenance, and always perfect! Isn't that nice?</p>
<p>Until recently we had to use ARMv6 binaries on the devices with ARMv7 CPUs, because ARMv7 was not available in Alpine and postmarketOS. This <a href="https://gitlab.com/postmarketOS/pmbootstrap/issues/238">is no longer the case</a>! We should be able to unleash the full CPU power shortly for all devices, as <a href="https://gitlab.com/PureTryOut">@PureTryOut</a> tested that <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/126">changing the architecture for the Sony Xperia Z1 Compact</a> works flawlessly.</p>
<p>One of the tougher challenges for postmarketOS was Alpine's <a href="https://gitlab.com/postmarketOS/pmaports/issues/144">upgrade from GCC-6 to GCC-8</a>. A lot of vendor kernels refused to compile with GCC-8, and at least one device doesn't boot with a kernel compiled by GCC-8. We ended up with packaging GCC-6 side-by-side with GCC-8, building all existing kernels with GCC-6 and allowing device owners the ability to select the GCC version that should be used in each <a href="https://wiki.postmarketos.org/wiki/Vendor_kernel_specific_package">vendor kernel package</a>. Device owners have been slowly switching to GCC-8 since then, after carefully testing that their device still boots after the change. New default patches related to GCC-8 were added, so new ports don't have to deal with these issues.</p>
<p><a href="https://gitlab.com/pinoaffe">@pinoaffe</a> updated the initramfs script to look for the rootfs in <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/61">all block devices and partitions</a>. Speaking of the rootfs, <a href="https://gitlab.com/zhuowei">@zhuowei</a> made it possible to <a href="https://gitlab.com/postmarketOS/pmbootstrap/merge_requests/1725">build rootfs images with non-512 byte sector sizes</a> (required for the Google Pixel 3 XL).</p>
<p>Two other important project changes, which aren't necessarily related to each other, are that <a href="https://gitlab.com/ryang2678">@ryang2678</a> <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/67">packaged the grate driver</a> (for Tegra GPUs), and the wiki main page and <a href="https://gitlab.com/postmarketOS/postmarketos.org/merge_requests/71">homepage</a> (based on <a href="https://gitlab.com/pparent">@pparent</a>'s excellent photos) have been updated to be more mobile friendly by <a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a>.</p>
<h2 id="eating-our-own-dog-food"><a class="toclink" href="#eating-our-own-dog-food">Eating Our Own Dog Food</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2019-01/N900-i3wm-mpd.jpg"><img alt="" class="w300 border" src="/static/img/2019-01/N900-i3wm-mpd-thumb.jpg" /></a></p>
</div><div class="grid-text">
A great way to increase stability is <a href="https://en.wikipedia.org/wiki/Eating_your_own_dog_food">dogfooding</a>:
using postmarketOS installations on our own devices every other day for certain tasks. One example is turning the Nokia N900 into a music player with i3wm and mpd. This effort has already spawned <a href="https://gitlab.com/postmarketOS/pmaports/merge_requests/72">a few usability improvement patches</a> and <a href="https://wiki.postmarketos.org/wiki/User:Ollieparanoid/Dogfooding:N900">lots of resulting ideas</a>. It turns out this idea was not exactly unique as at least <a href="https://twitter.com/betojsp/status/1060336080287883264">one other person has created a very similar setup for their N900</a>. If you would like to join us on the dogfooding journey, figure out your own use case (e.g. how about a podcast player, or a browser that displays a status page? Tracking habits or TODOs?).
</div></div>
<p>Then document your progress <a href="https://wiki.postmarketos.org/wiki/Category:Dogfooding">in the wiki</a> and reach out to the <a href="https://wiki.postmarketos.org/wiki/Category:Community">Community</a> to share your results, work together on fixing the flaws you found, and optimizing postmarketOS for your use case.</p>
<h2 id="28-new-booting-devices-112-total"><a class="toclink" href="#28-new-booting-devices-112-total">28 new booting devices (112 total)</a></h2>
<p><div class="grid"><div class="grid-side">
<!-- <br>s added to force each image to be in their own line, even around 790px screen width -->
<p><a href="/static/img/2019-01/Semc-smultron.png"><img alt="" class="w300" src="/static/img/2019-01/Semc-smultron-thumb.png" /></a> <br>
<a href="/static/img/2019-01/Ouya.jpg"><img alt="" class="w300 border" src="/static/img/2019-01/Ouya-thumb.jpg" /></a> <br>
<a href="/static/img/2019-01/Huawei-Cameron.jpg"><img alt="" class="w300 border" src="/static/img/2019-01/Huawei-Cameron-thumb.jpg" /></a></p>
</div><div class="grid-text">
<!-- Generated with: 'pmos-stats new-devices 39d62928cbeefa9f0aa8a1625d75df3d6ceee8dd --md'
Current master (for next time): a6560dc6caa66361a8c3de2c0e652867bc51f8c3
Device count taken from what 'pmbootstrap init' says -->
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/ASUS_MeMO_Pad_FHD_10_(asus-duma)">Asus MeMO Pad FHD 10 (ME302KL) <code>asus-duma</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Asus_MeMo_Pad_7(me176c(x))">Asus MeMo Pad 7 <code>asus-me176c</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Asus_Zenfone_2_Laser/Selfie_(1080p)_(asus-z00t)">Asus Zenfone 2 Laser/Selfie (1080p) <code>asus-z00t</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/ASUS_Zenfone_Go_(asus-z00vd)">Asus Zenfone Go <code>asus-z00vd</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Aquaris-U">BQ Aquaris U <code>bq-chaozu</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Fairphone_1_(fairphone-fp1)">Fairphone 1 <code>fairphone-fp1</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Google_Pixel_3_XL_(google-crosshatch)">Google Pixel 3 XL <code>google-crosshatch</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Huawei_Mediapad_M5_pro_(huawei-cameron)">Huawei Mediapad M5 Pro <code>huawei-cameron</code></a> <em>(third picture)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/LG_L70_(lg-w5)">LG L70 <code>lg-w5</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Moto_X">Motorola Moto X (2013) <code>motorola-ghost</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Moto_E_(motorola-surnia)">Motorola Moto E (2nd Gen) <code>motorola-surnia</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Nokia_Lumia_720">Nokia Lumia 720 <code>nokia-rm885</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Ouya_(ouya-ouya)">Ouya <code>ouya-ouya</code></a> <em>(second picture)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Pine_A64-LTS_(pine-a64lts)">PINE A64-LTS <code>pine-a64lts</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Raspberry_Pi_Zero">Raspberry Pi Zero <code>raspberry-pi0</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Raspberry_Pi">Raspberry Pi 3 <code>raspberry-pi3</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_SIII_mini_Value_Edition_(samsung-i8200)">Samsung SIII mini Value Edition <code>samsung-i8200</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Trend_Plus_(samsung-s7580)">Samsung Galaxy Trend Plus <code>samsung-kylepro</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Trend_lite_(s7390g)">Samsung Trend Lite <code>samsung-kylevess</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S4_Mini_dual_sim">Samsung Galaxy S4 Mini (dual sim) <code>samsung-serranodsdd</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony_Ericsson_Xperia_mini_(semc-smultron)">Sony Ericsson Xperia mini <code>semc-smultron</code></a> <em>(first picture)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony_Ericsson_Live_With_Walkman_(sony-coconut)">Sony Live with Walkman <code>sony-coconut</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_M_(sony-nicki)">Sony Xperia M <code>sony-nicki</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_L_(sony-taoshan)">Sony Xperia L <code>sony-taoshan</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_M4_Aqua_(sony-tulip)">Sony Xperia M4 Aqua <code>sony-tulip</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Generic_x64_uefi">Various tablets with atom CPU <code>tablet-x64uefi</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi_Redmi_2_(wingtech-wt88047)">Xiaomi Redmi 2 <code>wingtech-wt88047</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi_Mi_3_(cancro)">Xiaomi Mi 3 <code>xiaomi-cancro</code></a>
</div></div>
<em>Thanks to: everyone who ported these devices, see the contributors section in each device's wiki page.</em></li>
</ul>
<h2 id="raw-numbers"><a class="toclink" href="#raw-numbers">Raw Numbers</a></h2>
<p>As in all the big update blog posts, here are some additional figures. Note that the merged MRs, closed issues, open issues are counted across <a href="https://gitlab.com/postmarketOS">all postmarketOS related repositories</a> now (this was not possible on GitHub, but <a href="/blog/2018/06/27/moving-to-gitlab/">we moved to GitLab</a>). Stars, forks and watches are not included, as these were not imported. See the <a href="/blog/2018/06/09/one-year/#raw-numbers">last post</a> for reference.</p>
<ul>
<li>415 people in the <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">channel</a> (+65)</li>
<li>1145 <a href="https://gitlab.com/groups/postmarketOS/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged">merged MRs</a></li>
<li>845 <a href="https://gitlab.com/groups/postmarketOS/-/issues?scope=all&utf8=%E2%9C%93&state=closed">closed issues</a></li>
<li>251 <a href="https://gitlab.com/groups/postmarketOS/-/issues?scope=all&utf8=%E2%9C%93&state=opened">open issues</a></li>
<li>133 contributors in <a href="https://gitlab.com/postmarketOS/pmaports">pmaports.git</a> (<code>git shortlog --summary --numbered | wc -l</code>) <em>(+27)</em></li>
</ul>
<h2 id="closing-words"><a class="toclink" href="#closing-words">Closing Words</a></h2>
<p><a href="https://fosdem.org/2019/">FOSDEM 2019</a> starts in roughly two weeks, and quite a few people from postmarketOS will attend (<a href="https://gitlab.com/bshah">@bshah</a>, <a href="https://gitlab.com/MartijnBraam">@MartijnBraam</a>, <a href="https://gitlab.com/MayeulC">@MayeulC</a>, <a href="https://gitlab.com/PureTryOut">@PureTryOut</a>, <a href="https://gitlab.com/unrznbl">@unrznbl</a> and <a href="https://gitlab.com/z3ntu">@z3ntu</a>), together with folks from pretty much every alternative FLOSS mobile project out there. Looking forward to seeing you there, if you are going!</p>
<p>So this has been a mixed bag of news. But here we are, honest and still having fun celebrating the hacker spirit that flows through the project. Thanks for reading and good luck with whatever your passion is, let's make 2019 a marvelous year of overcoming our obstacles, having fun and hacking on fascinating stuff!</p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=18919101">HN</a></li>
</ul>postmarketOS at Akademy 2018https://postmarketos.org/blog/2018/08/25/postmarketos-at-akademy/2018-08-25T00:00:00+00:00<p>Two weeks ago was <a href="https://akademy.kde.org/2018">Akademy 2018</a>, KDE's yearly gathering to talk about and develop all things KDE. Since Plasma Mobile (<a href="https://postmarketos.org/blog/2017/12/31/219-days-of-postmarketOS/#plasma-mobile">which we have packaged</a>) was of course also represented, a few members of the postmarketOS team decided to attend and meet each other for the first time! <a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a> even took it upon himself to hold a talk about our project, telling everyone what it's about and what progress has been made since the start. You can <a href="/static/slides/2018-akademy/">view the slides here</a> and this blog post will be updated to include a link to the video of the talk once Akademy's recordings are put online.</p>
<p>Besides our own talk, our friend <a href="https://gitlab.com/bshah">@bshah</a> from Plasma Mobile also had a talk about the progress on running the mainline kernel rather than libhybris or Halium to achieve fully working hardware (<a href="https://blog.bshah.in/slides/akademy2018/">slides are available as well</a>). We used this opportunity to talk with the Plasma Mobile team directly and discuss the future and exchange ideas.</p>
<p>Also present was TL Lim from <a href="https://pine64.org">PINE64</a> who kindly offered several of us dev-kits for the Pine A64 including a touch screen, so we can develop postmarketOS on it. Watch out for a port coming to that device!</p>
<p>Read the <a href="https://www.plasma-mobile.org/2018/08/23/Plasma-Mobile-at-Akademy-2018.html">Plasma Mobile's blog post</a> for more Akademy 2018.</p>
<h3 id="update-the-video-recordings-of-the-talks-are-online"><a class="toclink" href="#update-the-video-recordings-of-the-talks-are-online">UPDATE: The <a href="https://cdn.files.kde.org/akademy/2018/videos/">video recordings</a> of the talks are online!</a></h3>
<p><a href="/static/img/2018-08/pmos-plamo-akademy2018.jpg"><img alt="" class="wfull border" src="/static/img/2018-08/pmos-plamo-akademy2018.jpg" /></a></p>
<p>From left to right:
<a href="https://gitlab.com/ata2001">@ata2001</a>,
<a href="https://gitlab.com/bshah">@bshah</a>,
<a href="https://gitlab.com/z3ntu">@z3ntu</a>,
<a href="https://gitlab.com/ollieparanoid">@ollieparanoid</a>,
<a href="https://gitlab.com/bettycooper">@bettycooper</a>,
<a href="https://gitlab.com/PureTryOut">@PureTryOut</a>,
<a href="https://gitlab.com/JBBgameich">@JBBgameich</a></p>
<p>PS: Shout out to all the Mastodon users, who keep on posting cool <a href="https://mastodon.technology/tags/postmarketos">pmOS related content</a>. <a href="https://gitlab.com/bettycooper">@bettycooper</a> set up <a href="https://fosstodon.org/@postmarketOS">@postmarketOS</a>, so you can enjoy small updates from our side right in your favorite free software social network.</p>
<h3 id="comments"><a class="toclink" href="#comments">Comments</a></h3>
<ul>
<li><a href="https://news.ycombinator.com/item?id=17838788">HN</a></li>
</ul>postmarketOS is #movingtogitlabhttps://postmarketos.org/blog/2018/06/27/moving-to-gitlab/2018-06-27T00:00:00+00:00<p><a href="/static/img/2018-06/broken-castor.jpg"><img alt="Broken Sony Xperia Z2 Tablet" class="wfull border" src="/static/img/2018-06/broken-castor-thumb.jpg" /></a></p>
<p>For a lot of people, learning that <a href="https://www.bloomberg.com/news/articles/2018-06-04/microsoft-agrees-to-buy-coding-site-github-for-7-5-billion">Microsoft will buy GitHub at the end of 2018</a> <a href="https://jacquesmattheij.com/what-is-wrong-with-microsoft-buying-github">shattered trust in GitHub</a> like the glass of <a href="https://gitlab.com/opendata26">@opendata26</a>'s <a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z2_Tablet_(sony-castor-windy)">Sony Xperia Z2 Tablet</a>. Beyond that, GitHub has always employed vendor lock-in: the user's issues and pull requests are hidden behind a rate limited API instead of being available through a proper export feature. And even if you managed to export it through that API, you cannot host your own GitHub instance and modify it as you like because, there is not even a partially open source version of it.</p>
<p>We want to be in control of our own data. While we can't maintain a self-hosted solution at this point, we want to at least be able to create a public backup of all our > 1500 issues and pull requests once a week. After <a href="https://github.com/postmarketOS/postmarketos.org/issues/37">some discussion</a> we ended up with gitlab.com as alternative, because its API allows us to create <a href="https://docs.gitlab.com/ee/api/project_import_export.html">whole backups at once</a> and we can <a href="https://gitlab.com/help/user/project/settings/import_export.md">import</a> them into our own instance if we want to do that in the future. The workflow is similar to GitHub, so we expect a rather smooth transition compared to using something entirely different.</p>
<p>The migration is scheduled for <strong>Saturday (2018-06-30)</strong>. If you have written anything in issues or pull requests in the postmarketOS repositories on GitHub, consider <strong><a href="https://gitlab.com/users/sign_in">creating a gitlab account</a> with the same e-mail address as your GitHub account</strong> for a smooth migration (so it will show what you have written on GitHub with your gitlab user on gitlab).</p>
<p>Thanks to <a href="https://gitlab.com/craftyguy">@craftyguy</a> for migrating our CI scripts in <a href="https://github.com/postmarketOS/pmbootstrap/pull/1539">#1539</a>. Also, thanks to everyone working at GitHub for providing us with their hosting service for <a href="/blog/2018/06/09/one-year/">more than a year</a>. A good opportunity for Microsoft to follow through with their promises of being nice to the open source community would be to open up GitHub more. In case you think that won't happen and want to move away from GitHub as well, make sure to carefully evaluate all the platforms that are out there. Just because gitlab was the best match for us doesn't mean that you can't find a better one for your project.</p>
<h3 id="comments"><a class="toclink" href="#comments">Comments</a></h3>
<ul>
<li><a href="https://news.ycombinator.com/item?id=17406156">HN</a></li>
</ul>One Year of postmarketOS: Mainline Calling!https://postmarketos.org/blog/2018/06/09/one-year/2018-06-09T00:00:00+00:00<h2 id="postmarketos-experimental-sustainable-operating-system"><a class="toclink" href="#postmarketos-experimental-sustainable-operating-system">postmarketOS: Experimental Sustainable Operating System</a></h2>
<p><div class="grid"><div class="grid-side">
<p><a href="/static/img/2018-06/fbdebug-smte-bars-wrong.jpg"><img alt="" class="fr ml3 mb4" src="/static/img/2018-06/fbdebug-smte-bars-wrong-thumb.png" /></a></p>
</div><div class="grid-text">
<p>Wow, so it has been one full year since the public announcement of postmarketOS, and what a year it has been! During this time the project has grown beyond our wildest dreams; dozens of contributors making a wide variety of contributions, friendships made, bragging rights established (and lost, and re-established), Doom running on things it probably shouldn't, and we're ultimately just getting started. This post is also a celebration of all the hard work that has gone into postmarketOS in the last year, it's <strong>first</strong> year!</p>
</div></div>
<p>Before we begin with our list of changes since the last post in <a href="/blog/2017/12/31/219-days-of-postmarketOS/">December</a> and other exciting news, a quick intro for folks just now learning of this project for the first time: postmarketOS aims to be a sustainable operating system that empowers users to safely use their devices for as long as possible (ideally until they physically fall apart). The system is designed to share as many packages as possible between supported devices, with the ability to make exceptions for a few device-specific packages as appropriate/needed. This is in contrast to systems like Android, where the many device-specific changes are required to support any particular device.</p>
<p><strong>At this point, postmarketOS is only meant to be used by developers.</strong> In most instances, phone calls, SMS, bluetooth or the mainline kernel won't work on your device, and there's the <a href="https://ollieparanoid.github.io/post/security-warning/">firmware problem</a>.</p>
<h2 id="mainline-on-the-horizon"><a class="toclink" href="#mainline-on-the-horizon">Mainline On the Horizon</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="https://www.youtube.com/watch?v=77tuFtM4gjA"><img alt="" class="border" src="/static/img/2018-06/forward-porting-elec-2017-thumb.jpg" /></a></p>
</div><div class="grid-text">
In February 2017 Jeremy McNicoll presented on his progress with <a href="https://www.youtube.com/watch?v=77tuFtM4gjA">forward porting the Google Nexus 5X/6P</a>. He explains the technical difficulties of replacing the downstream Linux kernel that you find on your device after you bought it with the latest <a href="https://www.kernel.org/">upstream version</a>. Towards the end he mentioned on his "lessons learned" slide: "Maybe 10 years ago I would have said we can cure world hunger, we can get the whole thing working." Then he shook his head. "I'm more realistic now."
</div></div>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/wallpaper-darkside.png"><img alt="" class="border" src="/static/img/2018-06/wallpaper-darkside-thumb.jpg" /></a></p>
</div><div class="grid-text">
This is how it felt one and a half years ago. It was hard to imagine that we could have phones that would run the upstream kernel. We did not have a feasible method of patching all of the critical security holes in the core of the operating system once the vendor's ridiculously short support cycle ends.
</div></div>
<p>The problem is not completely resolved today, there is still a lot more work to do. But this dream on having devices with mainline kernel support is becoming more realistic now after all the amazing work done by hackers in communities like ##linux-msm and #freedreno. PostmarketOS is not the only distro with this dream, two more distributions have also decided to pursue this with (specific) phones: <a href="https://puri.sm/shop/librem-5/">Pure OS</a> and <a href="https://maemo-leste.github.io/">Maemo Leste</a>.</p>
<p><div class="grid"><div class="grid-side">
<a href="https://www.youtube.com/watch?v=lMh4ZmR59hQ"><img alt="" class="border" src="/static/img/2018-06/keynote-linaro-connect-2018-thumb.jpg" /></a></p>
</div><div class="grid-text">
Even established vendors seem be coming around to the idea. In March of this year, the <a href="https://www.youtube.com/watch?v=lMh4ZmR59hQ">Linaro Connect Opening Keynote</a> spent 15 minutes pleading with their big list of <a href="https://www.linaro.org/members/">member companies</a> that upstream kernel support is the way to go: "Very few embedded <a href="https://en.wikipedia.org/wiki/System_on_a_chip">SoCs</a> are supported properly upstream. That is changing, it has to change. [...] and most importantly, we have to do that upstream. Because nothing else scales. Testing just your own version doesn't actually help everyone else. And as a result you don't get the benefit of everybody else's testing."
</div></div>
<h2 id="nexus-5-floss-modem-stack-with-mainline"><a class="toclink" href="#nexus-5-floss-modem-stack-with-mainline">Nexus 5: FLOSS Modem Stack With Mainline</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/mainline-hammerhead-plamo-firefox.jpg"><img alt="" src="/static/img/2018-06/mainline-hammerhead-plamo-firefox-thumb.png" /></a></p>
</div><div class="grid-text">
You might remember <a href="https://github.com/bhush9">@bshah</a>'s photo of the <a href="https://wiki.postmarketos.org/wiki/Google_Nexus_5_(lg-hammerhead)">Nexus 5</a> running mainline with a <a href="/static/img/2017-12/mainline-hammerhead.jpg">flipped and distorted screen</a> from December. <a href="https://github.com/flto">@flto</a> <a href="https://github.com/flto/linux/wiki/hammerhead-upstream">continued</a> his work: the display works without problems now. But it gets even better: the touch screen is working, 3D acceleration is enabled with the open source <a href="https://github.com/freedreno/freedreno/wiki">freedreno</a> userspace driver, Wi-Fi works, and the best part is that <a href="https://github.com/MartijnBraam">@MartijnBraam</a> was able to send SMS and initialize a call via command line as well as getting the connectivity signal from the modem through <a href="https://en.wikipedia.org/wiki/oFono">oFono</a> displayed in <a href="https://plasma-mobile.org/">Plasma Mobile</a> (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1502">#1502</a>). All of that without proprietary userspace blobs!</p>
<p>Of course it would be nice if the device could receive phone calls and facilitate conversation. We're not quite there yet but we may be soon thanks to <a href="https://github.com/Srinivas-Kandagatla">@Srinivas-Kandagatla</a>, who is working on mainline audio support for the <a href="https://en.wikipedia.org/wiki/List_of_Qualcomm_Snapdragon_devices#Snapdragon_820_and_821">Snapdragon 820 SoC</a>, the Linux kernel will soon be able to utilize the audio stack on Qualcomm phones like the Nexus 5. Once that is in place, we can piece the userspace functionality together.
</div></div>
<p>So as of right now we can communicate with the Qualcomm Modem Interface (QMI) without using any userspace blobs. This would not have been possible without the amazing work from <a href="https://github.com/scintill">@scintill</a> who packaged all necessary glue libraries provided by <a href="https://github.com/andersson">@andersson</a> (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1314">#1314</a>). The first pull request made it work with the downstream kernel of the <a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S4_Mini_LTE">Galaxy S4 Mini LTE</a> followed by another PR that enabled it to work with our mainline packaging (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1381">#1381</a>).</p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2018-06/mainline-hammerhead-terminal-kernel.jpg"><img alt="" src="/static/img/2018-06/mainline-hammerhead-terminal-kernel-thumb.jpg" /></a>
<a href="/static/img/2018-06/mainline-hammerhead-plamo-modem.jpg"><img alt="" src="/static/img/2018-06/mainline-hammerhead-plamo-modem-thumb.jpg" /></a>
<a href="/static/img/2018-06/mainline-hammerhead-call-from-terminal.jpg"><img alt="" src="/static/img/2018-06/mainline-hammerhead-call-from-terminal-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: <a href="https://github.com/andersson">@andersson</a>, <a href="https://github.com/bhush9">@bshah</a>, <a href="https://github.com/flto">@flto</a>, <a href="https://github.com/MartijnBraam">@MartijnBraam</a>, <a href="https://github.com/opendata26">@opendata26</a>, <a href="https://github.com/scintill">@scintill</a>, <a href="https://github.com/Srinivas-Kandagatla">@Srinivas-Kandagatla</a></em></p>
<h2 id="linux-postmarketos-qcom"><a class="toclink" href="#linux-postmarketos-qcom">linux-postmarketos-qcom</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/mainline-sirius-plamo.jpg"><img alt="" class="border" src="/static/img/2018-06/mainline-sirius-plamo-thumb.jpg" /></a></p>
</div><div class="grid-text">
As we are running bleeding edge technology here, we need to use kernel patches that have not made their way into the mainline kernel yet. These patches are tiny in size, and the patch authors are trying to upstream them (in contrary to kernels from Android with vendor patches on the order of a hundred thousand to one million lines of changes, as the Linaro keynote mentions). We decided to set up a staging repository <a href="https://github.com/postmarketOS/linux-postmarketos"><code>linux-postmarketos</code></a> for easy collaboration, and packaging the Qualcomm specific branch from there in a new package <code>linux-postmarketos-qcom</code>. With the separate package, the patches won't break anything for non-Qualcomm devices that use an upstream kernel in postmarketOS.
</div></div>
<p>Two more devices besides the Nexus 5 are also using <code>linux-postmarketos-qcom</code>. The <a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z2_(sony-sirius)">Sony Xperia Z2</a> (shown on the right and below, not to be confused with the <a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z2_Tablet_(sony-castor-windy)">tablet</a>) ported by <a href="https://github.com/opendata26">@opendata26</a> has battery capacity, temperature sensors, Wi-Fi and the display with 3D acceleration working! More great news: in theory one would need a closed source component to communicate with the cellular modem, but kernel hacker <a href="https://github.com/andersson">@andersson</a> confirmed that Sony allowed him to release that as open source!</p>
<p>The third device is the <a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S5_(samsung-klte)">Samsung Galaxy S5</a> contributed by <a href="https://github.com/drebrez">@drebrez</a>. It is in an early porting stage, but so far the debug serial interface, volume buttons and internal storage access are working with the <code>linux-postmarketos-qcom</code> kernel. If you want to use the display with postmarketOS, you still need to use the downstream kernel (which is packaged as well). Given all of these options for kernels, we now provide you an easy way to select your preferred kernel during the installation (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1363">#1363</a>, screenshot below).</p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2018-06/mainline-sirius-splash.jpg"><img alt="" src="/static/img/2018-06/mainline-sirius-splash-thumb.jpg" /></a>
<a href="/static/img/2018-06/mainline-sirius-tty.jpg"><img alt="" src="/static/img/2018-06/mainline-sirius-tty-thumb.jpg" /></a>
<a href="/static/img/2018-06/pmbootstrap-kernel-selection.jpg"><img alt="" src="/static/img/2018-06/pmbootstrap-kernel-selection-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: <a href="https://github.com/andersson">@andersson</a>, <a href="https://github.com/bhush9">@bshah</a>, <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/opendata26">@opendata26</a></em></p>
<h2 id="raspberry-pi-samsung-galaxy-tab-101-and-nokia-n9"><a class="toclink" href="#raspberry-pi-samsung-galaxy-tab-101-and-nokia-n9">Raspberry Pi, Samsung Galaxy Tab 10.1 and Nokia N9</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/mainline-raspberrypi-touch-screen.jpg"><img alt="" class="fr ml3 cr" src="/static/img/2018-06/mainline-raspberrypi-touch-screen-thumb.png" /></a></p>
</div><div class="grid-text">
Besides Qualcomm devices, we have a hand full of additional new ports running kernels that are very close to mainline. <a href="https://github.com/drebrez">@drebrez</a> tweaked postmarketOS to run on all Raspberry Pi models up to version 3, building on the <a href="https://wiki.alpinelinux.org/wiki/Raspberry_Pi">existing support in Alpine</a> (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1501">#1501</a>). <a href="https://github.com/yangxuan8282">@yangxuan8282</a> did a lot of testing and took this photo of XFCE4 running on a small touch screen directly on the Pi. He also has multiple pull requests to support the Raspberry Pi 3B+.
</div></div>
<p>Next up is the Tegra-based <a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Tab_10.1%22_(samsung-p4wifi)">Samsung Galaxy Tab 10.1</a> with an amazing functional feature list containing Wi-Fi, 2D acceleration, <a href="https://en.wikipedia.org/wiki/VDPAU">VDPAU</a> h264 hardware decoding, headphone and speaker audio as well as bluetooth! <a href="https://github.com/Decatf">@Decatf</a> added the device in <a href="https://github.com/postmarketOS/pmbootstrap/pull/1279">#1279</a>. The second photo below is a screenshot directly taken from the device.</p>
<p>In the third picture below you can see the <a href="https://wiki.postmarketos.org/wiki/Nokia_N9">Nokia N9</a>. We introduced the mainline kernel work <a href="https://github.com/filippz">@filippz</a> and <a href="https://github.com/pavelmachek">@pavelmachek</a> did in the <a href="/blog/2017/12/31/219-days-of-postmarketOS/#nokia-n9xx-devices">last post</a>. Since then the port has been updated and merged into pmbootstrap's <code>master</code> branch (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1101">#1101</a>). <a href="https://github.com/pavelmachek">@pavelmachek</a> <a href="https://github.com/postmarketOS/pmbootstrap/pull/1046#issuecomment-354362721">explained</a> why the N9 and all other devices listed in this section have their own kernel packages instead of using <code>linux-postmarketos-stable</code> (like the <a href="/blog/2017/09/03/100-days-of-postmarketos/#mainline-kernel">Nokia N900</a>): "We'll need quite a few patches for now, and it would be bad to break some other phone with patches relevant for N9. Long-term it is a goal, and we are not that far, but I don't think we should do it now."</p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2018-06/mainline-raspberrypi-tv.jpg"><img alt="" src="/static/img/2018-06/mainline-raspberrypi-tv-thumb.jpg" /></a>
<a href="/static/img/2018-06/mainline-p4wifi.jpg"><img alt="" src="/static/img/2018-06/mainline-p4wifi-thumb.jpg" /></a>
<a href="/static/img/2018-06/mainline-n9-xfce4.jpg"><img alt="" src="/static/img/2018-06/mainline-n9-xfce4-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: <a href="https://github.com/Decatf">@Decatf</a>, <a href="https://github.com/filippz">@filippz</a>, <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/pavelmachek">@pavelmachek</a>, <a href="https://github.com/yangxuan8282">@yangxuan8282</a></em></p>
<h2 id="libhybris-and-optional-proprietary-components"><a class="toclink" href="#libhybris-and-optional-proprietary-components">Libhybris And Optional Proprietary Components</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/hybris-gemini-pda.jpg"><img alt="" class="fr ml3 cr" src="/static/img/2018-06/hybris-gemini-pda-thumb.png" /></a></p>
</div><div class="grid-text">
<a href="https://github.com/NotKit">@NotKit</a>'s work on packaging <a href="https://github.com/postmarketOS/pmbootstrap/pull/1002">libhybris</a> has been merged (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1402">#1402</a>), which is the base for making proprietary userspace drivers from Android work with non-Android Linux distributions. More streamlining is necessary to actually use this when installing postmarketOS. However he made several demos already, including a port of postmarketOS with libhybris and 3D acceleration running on the <a href="https://wiki.postmarketos.org/wiki/Planet_Computers_Gemini_PDA_(planet-geminipda)">Gemini PDA</a> (<a href="https://www.indiegogo.com/projects/gemini-pda-android-linux-keyboard-mobile-device--2#/updates/49">photo from here</a>).
</div></div>
<p>But don't we hate proprietary software from the deepest of our hearts? Most people in our community do. We have outlined numerous times on this blog that running proprietary blobs comes at the cost of making (security) updates almost impossible as soon as vendors drop their support. It is also much harder to verify that the binaries do not contain backdoors or other vulnerabilities.</p>
<p>Then why do we allow libhybris to be a part of postmarketOS? Consider the countless phones and tablets that have been produced up to this point. We can be happy if we make a few of them work with a full FLOSS stack, but for most of them this won't happen any time soon, if ever. So should free software hackers throw all of them away? <a href="https://www.fastcodesign.com/90165365/smartphones-are-wrecking-the-planet-faster-than-anyone-expected">For the environmental conscious, this is not an option!</a></p>
<p>This means we can't have a one size fits all solution that makes everybody happy. Some people <a href="https://github.com/postmarketOS/pmbootstrap/issues/756#issuecomment-368274455">want the full FLOSS stack</a>, even if that means Wi-Fi and telephony do not work because they lack free firmware. Others find proprietary firmware acceptable, but do not wish to run proprietary userspace code. And then there are folks who just want to make use of all peripherals of their device, even if it requires blobs in userspace. <a href="/blog/2017/09/03/100-days-of-postmarketos/#why-we-evolve-in-many-directions">We embrace all of these sides:</a> nowadays you can choose how libre you want to go during the installation (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1254">#1254</a>):</p>
<div class="codehilite"><pre><span></span><code><span class="gp">$ </span>pmbootstrap<span class="w"> </span>init
<span class="go">...</span>
<span class="go">Device [qemu-amd64]: example-example</span>
<span class="go">This device has proprietary components, which trade some of your freedom with making more</span>
<span class="go">peripherals work. We would like to offer full functionality without hurting your freedom,</span>
<span class="go">but this is currently not possible for your device.</span>
<span class="go">device-example-example-nonfree-firmware: modem, Wi-Fi, accelerated GPU</span>
<span class="go">Enable this package? (y/n) [y]:</span>
<span class="go">device-example-example-nonfree-userland: accelerated GPU</span>
<span class="go">Enable this package? (y/n) [n]:</span>
</code></pre></div>
<p><em>Thanks to: <a href="https://github.com/NotKit">@NotKit</a>, <a href="https://github.com/ollieparanoid">@ollieparanoid</a></em></p>
<h2 id="initramfs-charging-and-maximum-attention"><a class="toclink" href="#initramfs-charging-and-maximum-attention">Initramfs: Charging and Maximum Attention</a></h2>
<p>postmarketOS is able to show a nice battery loading screen while it is "turned off" and charging, because <a href="https://github.com/postmarketOS/pmbootstrap/issues/1081">@drebrez</a> integrated <a href="https://github.com/postmarketOS/charging-sdl"><code>charging-sdl</code></a> into the <a href="https://en.wikipedia.org/wiki/Initial_ramdisk">initramfs</a> (<a href="https://github.com/postmarketOS/pmbootstrap/issues/1081">#1081</a>).</p>
<p>When <a href="https://wiki.postmarketos.org/wiki/Porting_to_a_new_device">porting pmOS to a new device</a>, it may happen that the device doesn't do anything on first boot. The screen stays dark (or displays the OEM logo) and the USB networking does not come up. In this case we don't even know for sure if the kernel we just tested is booting at all, or if it crashed before even executing the initramfs code. But this information is crucial in order to use the right <a href="https://wiki.postmarketos.org/wiki/Troubleshooting:boot">troubleshooting techniques</a>. Thanks to <a href="https://github.com/MayeulC">@MayeulC</a> we can install the <code>maximum-attention</code> initramfs hook now, which will flash every LED it can find, as well as running the vibration motor (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1238">#1238</a>). Be prepared to see your device wandering across the table!</p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2018-06/charging-kminilte.jpg"><img alt="" src="/static/img/2018-06/charging-kminilte-thumb.jpg" /></a>
<a href="/static/img/2018-06/charging-100.jpg"><img alt="" src="/static/img/2018-06/charging-100-thumb.jpg" /></a></p>
<video controls poster="/static/img/2018-06/attention-video.jpg" width="150" height="150">
<source src="/static/video/2018-06/Attention-vpx.webm" type="video/webm; codecs=vp9,vorbis">
<source src="/static/video/2018-06/Attention-x264.webm" type="video/mp4">
<a href="/static/video/2018-06/Attention-vpx.webm">
<img src="/static/img/2018-06/attention-video.jpg">
</a>
</video>
</div></div>
<p><em>Thanks to: <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/MayeulC">@MayeulC</a></em></p>
<h2 id="new-uis"><a class="toclink" href="#new-uis">New UIs</a></h2>
<p>Just like typical Desktop Linux distributions, postmarketOS is not limited to one user interface. We have <a href="https://en.wikipedia.org/wiki/Hildon">Hildon</a>, <a href="https://en.wikipedia.org/wiki/LuneOS">LuneOS UI</a>, <a href="https://mate-desktop.org/">MATE</a>, <a href="https://plasma-mobile.org/">Plasma Mobile</a>, <a href="https://wayland.freedesktop.org/">Weston</a> and <a href="https://xfce.org/">XFCE4</a> packaged already. LuneOS UI is currently disabled, because we need to re-integrate it with the latest QT upgrade in Alpine (<a href="https://github.com/postmarketOS/pmbootstrap/issues/1459">#1459</a>, help wanted). However, two new user interfaces have been contributed.</p>
<h3 id="i3wm"><a class="toclink" href="#i3wm">i3wm</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/i3-n900.jpg"><img alt="" class="fr ml3 cr" src="/static/img/2018-06/i3-n900-thumb.png" /></a></p>
<p><a href="/static/img/2018-06/i3-n5110.jpg"><img alt="" class="fr ml3 cr" src="/static/img/2018-06/i3-n5110-thumb.png" /></a></p>
</div><div class="grid-text">
Tiling window managers like <a href="https://i3wm.org/">i3</a> make as much use of the screen space as possible. If you have one window open, it is always full screen, two windows split the screen in half and so on. When thinking about this, that is not so different from what today's mainstream smartphone user interfaces do. The similarities end with the fact that you can use the touch screen to manage application windows on the phone, while in a tiling WM you would use the keyboard.</p>
<p>We have found two ways to use i3 on a mobile device. <a href="https://github.com/MartijnBraam">@MartijnBraam</a> did the obvious one with a keyboard in <a href="https://github.com/postmarketOS/pmbootstrap/pull/1225">#1225</a>, which works well with the <a href="https://wiki.postmarketos.org/wiki/Nokia_N900_(nokia-rx51)">Nokia N900</a> (photo on the right).
</div></div>
<p>Since i3 is about as resource lightweight as it gets, it is a pretty good match for that classic machine and a few people are using it! The other is extending i3 with touch controls. <a href="https://github.com/michitux">@michitux</a> started packaging <a href="https://github.com/ssmolkin1/i3touchmenu/">i3touchmenu</a> in <a href="https://github.com/postmarketOS/pmbootstrap/pull/1343">#1343</a> as you can see in the photo and <a href="https://www.youtube.com/watch?v=4aRadGSQ_t4">video</a> of his <a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Note_8.0_(Wi-Fi)_(samsung-n5110)">Samsung Galaxy Note 8.0</a> (that pull request is not merged in pmbootstrap's <code>master</code> branch yet as of writing).</p>
<p><em>Thanks to: <a href="https://github.com/fxkrait">@fxkrait</a>, <a href="https://github.com/MartijnBraam">@MartijnBraam</a>, <a href="https://github.com/michitux">@michitux</a>, <a href="https://github.com/sicelo">@sicelo</a></em></p>
<h3 id="matchbox"><a class="toclink" href="#matchbox">Matchbox</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/matchbox-lt023g.jpg"><img alt="" class="fr ml3 cr" src="/static/img/2018-06/matchbox-lt023g-thumb.png" /></a></p>
</div><div class="grid-text">
<a href="https://github.com/duncanguthrie">@duncanguthrie</a> had fun with porting the old school Matchbox window manager to postmarketOS (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1420">#1420</a>). This is part of his quest of bringing back a classic PDA-like experience, as detailed in the <a href="https://wiki.postmarketos.org/wiki/Handhelds">Handheld</a> wiki article he wrote. The photo on the right shows it running on the <a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Tab_3_7.0_(samsung-lt023g)">Samsung Galaxy Tab 3 7.0</a>.
</div></div>
<p><em>Thanks to: <a href="https://github.com/duncanguthrie">@duncanguthrie</a></em></p>
<h2 id="postmarketos-lowlevel-3-broms-dumped"><a class="toclink" href="#postmarketos-lowlevel-3-broms-dumped">#postmarketOS-lowlevel: 3 BROMs Dumped</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/pixelated-logo.jpg"><img alt="" class="fr ml3 cr mb4" src="/static/img/2018-06/pixelated-logo-thumb.jpg" /></a></p>
</div><div class="grid-text">
Speaking of free firmware: our recently established <a href="/blog/2018/04/14/lowlevel/">#postmarketOS-lowlevel</a> crew is taking baby steps towards liberating bootloaders for MediaTek devices. Around the time of the announcement blog post in April, quite a few people have joined the channel and started contributing. Notably <a href="https://github.com/cyrozap">@cyrozap</a> has managed to dump the Boot ROMs (BROMs) of the MT6797 (Helio X20) and the MT6737M.
</div></div>
<p>The first was dumped via <a href="https://en.wikipedia.org/wiki/JTAG">JTAG</a>, and the second was dumped from <code>/dev/mem</code> by modifying the preloader to remove some memory access restrictions that prevented Linux from reading the BROM. Together with the BROM of the MT6735P extracted by <a href="https://github.com/McBitter">@McBitter</a>, there's a lot of potential to understand the boot process with greater detail. After proper reverse engineering, we should better understand how boot metadata is formatted on the flash memory and possibly find new options to recover from a bad flash. In addition, a better understanding of the firmware signature verification process performed by the BROM could enable us to discover vulnerabilities and bypass these restrictions.</p>
<p>In order to replace components in the low level boot process on these SoCs, we also need to understand what state the BROM leaves the chip in after it has finished executing. For instance, we want to know if the BROM disables any debugging functionality, makes use of write-once registers, or disables memory regions and registers. That information might be useful for porting U-Boot SPL (Secondary Program Loader) to the platform, which would replace the proprietary preloader.</p>
<p>If you're asking yourself why we don't simply look at a bunch of datasheets instead, <a href="https://github.com/cyrozap">@cyrozap</a> noted: "Basically, since we don't have much documentation on how the BROM works (and since documentation often lies or isn't the whole truth, anyways), we need to discover for ourselves how it works in order to write our own documentation for it."</p>
<p><em>Thanks to: <a href="https://github.com/cyrozap">@cyrozap</a>, <a href="https://github.com/McBitter">@McBitter</a></em></p>
<h2 id="40-new-devices-84-total"><a class="toclink" href="#40-new-devices-84-total">40 New Devices (84 Total)</a></h2>
<p><a href="/static/img/2018-06/devices-over-time.svg"><img alt="Graph of the number of devices in the repository over time" class="wfull" src="/static/img/2018-06/devices-over-time.svg" /></a></p>
<p>We're having pretty much constant growth in the <a href="https://wiki.postmarketos.org/wiki/Devices">list of booting devices</a> as you can see in the graph. Here are the new ones:</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/new-asus-t00f-mate.jpg"><img alt="" class="fr ml3 cr mb4" src="/static/img/2018-06/new-asus-t00f-mate-thumb.png" /></a></p>
<p><a href="/static/img/2018-06/new-motorola-harpia.png"><img alt="" class="fr ml3 cr mb4" src="/static/img/2018-06/new-motorola-harpia-thumb.png" /></a></p>
</div><div class="grid-text">
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/Asus Zenfone 5 (asus-t00f)">Asus Zenfone 5 <code>asus-t00f</code></a> <em>(shown on the right)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Asus-tf101-(ASUS-Transformer-TF101)">Asus Eee Pad Transformer <code>asus-tf101</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Geeksphone Peak (gp-peak)">Geeksphone Peak <code>gp-peak</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC_Desire_816_single_SIM_(htc-a5ul)">HTC Desire 816 <code>htc-a5ul</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Google Nexus 9 (htc-flounder)">Google Nexus 9 <code>htc-flounder</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC One M8 (htc-m8)">HTC One M8 <code>htc-m8</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC_Incredible_S_(htc-vivo)">HTC Incredible S <code>htc-vivo</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/InFocus New Tab F1 (infocus-flatfish)">InFocus New Tab F1 <code>infocus-flatfish</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Jolla_Phone_(jolla-sbj)">Jolla phone <code>jolla-sbj</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/LeEco_Le_2">LeEco Le 2 <code>leeco-s2</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Google Nexus 5X(lg-bullhead)">Google Nexus 5X <code>lg-bullhead</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola Moto G4(motorola-athene)">Motorola Moto G4 <code>motorola-athene</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Moto G 2013 (motorola-falcon)">Motorola Moto G (2013) <code>motorola-falcon</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Moto G4 Play (motorola-harpia)">Motorola Moto G4 Play <code>motorola-harpia</code></a> <em>(pictured on the bottom right)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola_Droid_4_(motorola-maserati)">Motorola Droid 4 <code>motorola-maserati</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Moto G 4G 2013 (motorola-peregrine)">Motorola Moto G 4G (2013) <code>motorola-peregrine</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Motorola Moto G5 Plus(motorola-potter)">Motorola Moto G5 Plus <code>motorola-potter</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Google Nexus 6 (motorola-shamu)">Google Nexus 6 <code>motorola-shamu</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Nextbit Robin">Nextbit Robin <code>nextbit-robin</code></a> <em>(first below)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Nokia_N9">Nokia N9 <code>nokia-n9</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/OnePlus Two (oneplus-oneplus2)">OnePlus 2 <code>oneplus-oneplus2</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Raspberry_Pi">Raspberry Pi <code>raspberry-pi</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy Tab S2 9.7 Wifi (samsung-gts210vewifi)">Galaxy Tab S2 9.7 WiFi (SM-T813) <code>samsung-gts210vewifi</code></a> <em>(second below)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy SIII mini (samsung-i8190)">Samsung Galaxy SIII mini <code>samsung-i8190</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy S4 Mini LTE">Samsung Galaxy S4 Mini <code>samsung-i9195</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S5_(samsung-klte)">Samsung Galaxy S5 <code>samsung-klte</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S5_mini_(samsung-kminilte)">Samsung Galaxy S5 Mini <code>samsung-kminilte</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy Ace II X (samsung-kylessopen)">Samsung Galaxy Trend <code>samsung-kylessopen</code></a> <em>(third below)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy Tab 3 7.0 (samsung-lt023g)">Samsung Galaxy Tab 3 7.0 <code>samsung-lt023g</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Google Nexus 10 (samsung-manta)">Google Nexus 10 <code>samsung-manta</code></a> <em>(fourth below)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung Galaxy Note 8.0 (Wi-Fi) (samsung-n5110)">Samsung Galaxy Note 8.0 (Wi-Fi) <code>samsung-n5110</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Tab_10.1%22_(samsung-p4wifi)">Samsung Galaxy Tab 10.1 <code>samsung-p4wifi</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony Ericsson Xperia Arc (semc-anzu)">Xperia Arc <code>semc-anzu</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony Xperia Z3 Tablet Compact (sony-scorpion)">Xperia Z3 Tablet Compact <code>sony-scorpion</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony Xperia T3 (sony-seagull)">Sony Xperia T3 <code>sony-seagull</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony Xperia Z2 (sony-sirius)">Sony Xperia Z2 <code>sony-sirius</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi_Redmi_1S_(xiaomi-armani)">Xiaomi Redmi 1S <code>xiaomi-armani</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi_Redmi_Note_4_(mido)">Xiaomi Redmi Note 4 <code>xiaomi-mido</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi_RedMi4x_(xiaomi-santoni)">Xiaomi Redmi 4X <code>xiaomi-santoni</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/ZTE_Kis_3_(zte-kis3)">ZTE Kis 3 <code>zte-kis3</code></a>
</div></div></li>
</ul>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2018-06/new-nextbit-robin.jpg"><img alt="" src="/static/img/2018-06/new-nextbit-robin-thumb.jpg" /></a>
<a href="/static/img/2018-06/new-samsung-gts210vewifi.jpg"><img alt="" src="/static/img/2018-06/new-samsung-gts210vewifi-thumb.jpg" /></a>
<a href="/static/img/2018-06/new-samsung-kylessopen.jpg"><img alt="" src="/static/img/2018-06/new-samsung-kylessopen-thumb.jpg" /></a>
<a href="/static/img/2018-06/new-samsung-manta.jpg"><img alt="" src="/static/img/2018-06/new-samsung-manta-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: everyone who ported these devices, see the contributors section in each device's wiki page.</em></p>
<h2 id="pmbootstrap-improvements"><a class="toclink" href="#pmbootstrap-improvements">pmbootstrap Improvements</a></h2>
<p>One area that we consistently spend a lot of time improving is our swiss army knife of postmarketOS development, installation and flashing: <a href="https://github.com/postmarketOS/pmbootstrap"><code>pmbootstrap</code></a>. Let's break it down.</p>
<h3 id="continuous-integration-build-packages-and-qemu-test"><a class="toclink" href="#continuous-integration-build-packages-and-qemu-test">Continuous Integration: Build Packages And QEMU Test</a></h3>
<p>Whenever someone got their new device port to a point where it boots, the porting guide recommends that they make a pull request and upstream it so everyone can benefit from the work that has been done and build upon it. In order to keep the reviewing efforts as low as possible, the following new CI checks were implemented:</p>
<ul>
<li>All devices must be <a href="https://wiki.postmarketos.org/wiki/Devices">documented in the wiki</a> (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1369">#1369</a>)</li>
<li>All changed packages must build (<a href="https://github.com/postmarketOS/pmbootstrap/pull/982">#982</a>)</li>
</ul>
<p><a href="https://github.com/postmarketOS/pmbootstrap/pull/982">#982</a> also has a new test case that instructs <code>pmbootstrap</code> to do two full installations (one of them with XFCE4, the other one with Plasma Mobile). Both installations will then run in QEMU, and the test case will connect via SSH to the VM to verify the running processes. This has already saved us more than once from introducing bugs by accident in the installation code.</p>
<p><em>Thanks to: <a href="https://github.com/ollieparanoid">@ollieparanoid</a></em></p>
<h3 id="development-local-source-newapkbuild-x11-menuconfig-and-basic-zsh-completion"><a class="toclink" href="#development-local-source-newapkbuild-x11-menuconfig-and-basic-zsh-completion">Development: Local Source, Newapkbuild, X11 Menuconfig And Basic ZSH Completion</a></h3>
<p>Patch development has gotten a lot easier, because now it is possible to replace the source tarball downloaded from the web on the fly with a local source code folder (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1210#issuecomment-364590002">#1210</a>). Furthermore we are wrapping <a href="https://wiki.alpinelinux.org/wiki/Newapkbuild">Alpine's <code>newapkbuild</code></a> to quickly generate standard package build recipes for various build systems with just one shell command (<a href="https://github.com/postmarketOS/pmbootstrap/pull/894">#894</a>, <a href="https://github.com/postmarketOS/pmbootstrap/pull/1320">#1320</a>). In addition <a href="https://github.com/steamp0rt">@steamp0rt</a> made it possible to use the GTK or QT based kernel configuration with <code>pmbootstrap kconfig edit [-x | -g]</code> for those who prefer them over the ncurses based one (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1509">#1509</a>).</p>
<p><a href="https://github.com/postmarketOS/pmbootstrap/pull/1232"><img alt="" class="wfull border" src="/static/img/2018-06/pmbootstrap-zsh-completion.jpg" /></a></p>
<p>As a hacker working with <code>pmbootstrap</code>, you don't need to keep the growing list of things it can do in your head. Instead, there's the <code>--help</code> output and the all-new <a href="https://github.com/postmarketOS/pmbootstrap/blob/master/README.md">README.md</a>, which is basically a big cheat sheet with lots of example commands. You can also make use of the rudimentary ZSH autocompletion (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1232">#1232</a>). Right now it can do basic stuff like extending <code>pmbootstrap newa<tab></code> to <code>pmbootstrap newapkbuild</code>. Help is wanted (see <a href="https://github.com/postmarketOS/pmbootstrap/issues/1517">#1517</a>) for implementing more sophisticated functionality!</p>
<p><em>Thanks to: <a href="https://github.com/ollieparanoid">@ollieparanoid</a>, <a href="https://github.com/steamp0rt">@steamp0rt</a>, <a href="https://github.com/V13Axel">@V13Axel</a></em></p>
<h3 id="installation-custom-hostname-new-parameters-rsync-and-split"><a class="toclink" href="#installation-custom-hostname-new-parameters-rsync-and-split">Installation: Custom Hostname, New Parameters --rsync and --split</a></h3>
<p><a href="https://github.com/drebrez">@drebrez</a> made it possible to set a custom hostname, with the device's code name being the default (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1327">#1327</a>). Wearing down SD cards during multiple installations can be prevented with <a href="https://github.com/pavelmachek">@pavelmachek</a>'s new <code>--rsync</code> feature to only update what has been changed in the file system since the previous installation (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1151">#1151</a>). Lastly a new <code>--split</code> parameter allows you to split the boot and root partitions, instead of combining them to one partition with subpartitions (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1442">#1442</a>). This makes the mainlining workflow easier, because the latter method <a href="https://github.com/postmarketOS/pmbootstrap/issues/1049">does not work</a> with recently mainlined devices like the Nexus 5 yet.</p>
<p><em>Thanks to: <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/pavelmachek">@pavelmachek</a></em></p>
<h2 id="raw-numbers"><a class="toclink" href="#raw-numbers">Raw Numbers</a></h2>
<ul>
<li><code>></code>350 people in the <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">channel</a> (+75)</li>
<li><a href="https://github.com/postmarketOS/pmbootstrap">pmbootstrap</a><ul>
<li>996 stargazers <em>(+233)</em></li>
<li>867 closed PRs <em>(+313)</em></li>
<li>497 closed issues <em>(+161)</em></li>
<li>149 open issues <em>(+15)</em></li>
<li>168 forks <em>(+66)</em></li>
<li>93 watchers <em>(+19)</em></li>
<li>106 contributors (<code>git shortlog --summary --numbered | wc -l</code>) <em>(+49)</em></li>
</ul>
</li>
</ul>
<h2 id="get-involved"><a class="toclink" href="#get-involved">Get Involved</a></h2>
<h3 id="mainline-your-device"><a class="toclink" href="#mainline-your-device">Mainline Your Device!</a></h3>
<p>Mainlining expert <a href="https://github.com/opendata26">@opendata26</a> encourages our readers to join the effort: "One thing I think we should really highlight is that if they have decent knowledge of Linux and if they have a supported SoC - I would say S4 Pro, Snapdragon 820 (you would want <a href="https://wiki.postmarketos.org/wiki/Serial_debugging">UART</a> for that but once it's running most stuff should work), 845 (same as 820, just need tons of patches on <a href="https://patchwork.kernel.org/project/linux-arm-msm/list/">patchwork</a>), 410, 801, 600 and probably S4 (non pro). That they can feel free to <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">join the Matrix</a> and that it's very likely we'll end up with a working mainline kernel." Working means in this context anything from "it boots" to having all the features working that we presented above. The latter is a bigger challenge of course.</p>
<p>Hackers ready for this exercise can check out the brand-new <a href="https://wiki.postmarketos.org/wiki/Mainline_Guide">Mainlining Guide</a> in our wiki. It provides several shortcuts to help speed you along, such as having <a href="https://wiki.postmarketos.org/wiki/Mainline_Guide#envkernel.sh">one command</a> that exports the right environment variables for your device and sets up a known working Alpine Linux chroot with all required packages for cross compiling the kernel without modifying your host system (<a href="https://github.com/postmarketOS/pmbootstrap/pull/1424">#1424</a>). The <a href="https://wiki.postmarketos.org/wiki/Mainlining_Guide#Mentor">mentors</a> listed in the guide can help you to create your <a href="https://wiki.postmarketos.org/wiki/Device_Tree_(dtb)">device tree source</a> file, which tells the kernel the location and parameters of all the peripherals in your little mobile computer. Because these peripherals are used over and over again in different devices, oftentimes we can just enable them without writing new drivers!</p>
<h3 id="more-ways-to-help-out"><a class="toclink" href="#more-ways-to-help-out">More Ways to Help Out</a></h3>
<p>We have a ton of <a href="https://github.com/postmarketOS/pmbootstrap/issues?utf8=%E2%9C%93&q=sort%3Aupdated-desc%20">quests ready to be picked up</a>. Whether it's simply helping out other people with thinking through how they could debug issues on their devices, fixing bugs, implementing cool new features towards the goal of having postmarketOS usable on a daily driver level or straight up <a href="https://drewdevault.com/2018/03/17/Hack-everything-without-fear.html">hacking everything without fear</a>: there is a lot to learn and a lot of fun to have!</p>
<p>Specific examples:
<div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/anbox-starting.jpg"><img alt="" class="fr mr3" src="/static/img/2018-06/anbox-starting-thumb.png" /></a></p>
</div><div class="grid-text">
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/Porting_to_a_new_device">Port your phone</a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Installation_guide">Install postmarketOS</a> on your machines if there's already a port</li>
<li>Make <a href="https://wiki.postmarketos.org/wiki/Making_good_photos">good photos/videos</a> of devices running pmOS for the <a href="https://wiki.postmarketos.org/wiki/Special:ListFiles">wiki</a> and <del>/r/postmarketOS</del> the <a href="/chats-and-social-media/">Fediverse</a></li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/issues/1286">#1286</a>: packaging <a href="https://anbox.io/">Anbox</a>, an experimental project that runs Android apps on regular Linux distributions. After some patching we have it compiling and displaying the "Starting..." screen (pictured on the right), but the way it configures LXC does not work out of the box for us. To move forward, one could install Anbox on Ubuntu (where it is officially supported) and add debug code to Anbox and LXC to figure out what it does differently there.</li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/issues/592">#592</a>: integrating <a href="https://nexmon.org">nexmon</a> so we can patch security holes in abandoned Wi-Fi firmware.</li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/issues/62">#62</a> Improve or package your favorite user interface.</li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/pulls">Testing and/or reviewing pull requests</a>
</div></div></li>
</ul>
<p>If your passion is writing text instead of code: we could use some help with these blog posts. It boils down to going through the <a href="https://github.com/postmarketOS/pmbootstrap/issues?q=is%3Apr+is%3Aclosed">closed pull requests</a> and photos posted in the <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">chatroom</a>, categorizing them into logical sections before writing one paragraph after another and adding images to round it up. Contributing to any step of that process would be greatly appreciated and saves us a lot of time that we could put in other areas of the project. Get in touch with us in the <a href="https://github.com/postmarketOS/postmarketos.org/issues">postmarketOS.org issues</a>. Another good place to exercise your writing skills to help out postmarketOS would be <a href="https://wiki.postmarketos.org">the wiki</a>.</p>
<p>Our friends from Plasma Mobile have set up their <a href="https://plasma-mobile.org/findyourway/">Find Your Way</a> page the other day. It is like a super convenient frontend to their <a href="https://phabricator.kde.org/tag/plasma%3A_mobile/">issues tracker</a>, which asks you a few simple questions like "Are you interested in App development?" and then takes you to the right ticket. If you could help out with any of these, you would directly contribute towards Plasma Mobile reaching 1.0 state.</p>
<h2 id="no-end-in-sight"><a class="toclink" href="#no-end-in-sight">No End In Sight</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-06/nintendo-switch.jpg"><img alt="" class="fr ml3 cr mb4" src="/static/img/2018-06/nintendo-switch-thumb.png" /></a></p>
</div><div class="grid-text">
While this blog post is being being written, the next stunning pull requests are already rolling in (e.g. Nintendo Switch in <a href="https://github.com/postmarketOS/pmbootstrap/pull/1534">#1534</a>). Hackers are helping out each other in the various <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">#postmarketOS chats</a> and coming up with cool new ideas of using postmarketOS or simply bringing it closer to something acceptable for daily use. Some people who just joined the project have already made critical bug fixes like <a href="https://github.com/michitux">@michitux</a> in <a href="https://github.com/alpinelinux/aports/pull/3889">alpinelinux/aports#3889</a>. Others silently expand our wiki. We get stuff done and have a ton of fun while doing it, and everyone involved should be proud of what we've accomplished together in just one year! Whoever has the chance to visit <a href="https://akademy.kde.org/2018/">Akademy 2018 in Vienna</a>, make sure to meet the few of us who will celebrate there and watch <a href="https://github.com/ata2001">@ata2001</a>'s <a href="https://conf.kde.org/en/Akademy2018/public/events/67">presentation about postmarketOS</a> live on stage!
</div></div>
<p>Here's to many more years of exciting postmarketOS developments!</p>
<h2 id="what-do-you-think"><a class="toclink" href="#what-do-you-think">What do you think?</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=17272122">HN</a></li>
</ul>postmarketOS Low-Level: Tiny Steps Towards Liberating Bootloaders and Cellular Modem Firmware of MediaTek Phoneshttps://postmarketos.org/blog/2018/04/14/lowlevel/2018-04-14T00:00:00+00:00<h1 id="introducing-postmarketos-lowlevel"><a class="toclink" href="#introducing-postmarketos-lowlevel">Introducing #postmarketOS-lowlevel</a></h1>
<p><div class="grid"><div class="grid-side">
<img alt="" class="fr ml3" src="/static/img/2018-04/lowlevel.png" /></p>
</div><div class="grid-text">
As a community project, and one that <a href="https://postmarketos.org/blog/2017/09/03/100-days-of-postmarketos/#why-we-evolve-in-many-directions">encourages contributors to work on what they like</a>, we have attracted people with a broad range of interests and skill levels. Recently a small hacking group <a href="https://matrix.to/#/#postmarketos-lowlevel:disroot.org">#postmarketOS-lowlevel</a> has emerged, and its masterminds <a href="https://github.com/McBitter">@McBitter</a> and <a href="https://github.com/unrznbl">@unrznbl</a> are eager to introduce you to the madness that awaits when digging deeper and deeper in the embedded hardware and software stack.
</div></div>
<p>But before we get started, please keep in mind that these are moon shots. So while there is some little progress, it's mostly about letting fellow hackers know what we've tried and what we're up to, in the hopes of attracting more interested talent to our cause. After all, our philosophy is to keep the community informed and engaged during the development phase!</p>
<p>For those new to postmarketOS, we are a group of developers, hackers, and hobbyists who have come together with a common goal of giving a ten year life cycle to mobile phones. This is accomplished by using a simple and sustainable architecture borrowed from typical Linux distributions, instead of using Android's build system. The project is at an early stage and isn't useful for most people at this point. Check out the newly-updated <a href="https://postmarketos.org">front page</a> for more information, the <a href="https://postmarketos.org/blog/2017/12/31/219-days-of-postmarketOS/">previous blog post</a> for recent achievements, and the <a href="https://github.com/postmarketOS/pmbootstrap/pulls?q=is%3Apr+is%3Aclosed">closed pull requests</a> to be informed about what's going on up to the current minute.</p>
<p>Let's dive in!</p>
<h1 id="open-bootloader-for-mt6735p"><a class="toclink" href="#open-bootloader-for-mt6735p">Open Bootloader for MT6735P</a></h1>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-04/Coolpad-back-opened.jpg"><img alt="" class="w200" src="/static/img/2018-04/Coolpad-back-opened-thumb.jpg" /></a></p>
</div><div class="grid-text">
On the right you can see photos of a <a href="https://wiki.postmarketos.org/wiki/Coolpad_Modena_2_(coolpad-modena2)">Coolpad Modena 2</a>, which was built around MediaTek's MT6735P SoC (<a href="https://en.wikipedia.org/wiki/System_on_a_chip">System on a chip</a>). In case you are wondering why we're not showing a picture with postmarketOS running on it: we can't! This is because the vendor decided to ship it with a closed down bootloader, which prevents users from running custom kernels.</p>
<p>Just like most Android phones, the bootloader of this particular device is based on LK (<a href="https://github.com/littlekernel/lk/wiki/Introduction">Little Kernel</a>). In fact the source code for LK is available under the <a href="https://en.wikipedia.org/wiki/MIT_License">MIT license</a> and just about every smartphone implementing the <a href="https://en.wikipedia.org/wiki/Android_software_development#Fastboot">fastboot protocol</a> has some kind of LK installed. The downside to this license is that it also allows the vendor to create a fork of the bootloader without giving the customers the changed source code, and unfortunately it is common practice for vendors to make use of this right.
</div></div>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-04/Coolpad-front.jpg"><img alt="" class="w200" src="/static/img/2018-04/Coolpad-front-thumb.jpg" /></a></p>
</div><div class="grid-text">
So there's the proprietary program "SP Flash Tool" (<a href="https://web.archive.org/web/20180614215051/https://www.reddit.com/r/postmarketOS/comments/7ps3gp/do_you_own_a_mediatek_phone_help_with_reversing/">interested in reversing?</a>), which allows flashing a new bootloader to MediaTek smartphones. This means if our goal was just bypassing the kernel limitation, we could create a binary patch for the existing bootloader, which removes the restriction, flash that and be done with it!</p>
<p>However, <a href="https://github.com/McBitter">@McBitter</a> is not interested in this messy workaround. He would rather eliminate the need to run this closed source blob altogether and make the upstream LK code run on the MT6735P! This approach gives us an elegant solution for incrementally porting LK to other MediaTek SoCs by re-using the same shared LK source code in the process! Why go through this trouble for an seemingly obscure device? Consider <a href="https://en.wikipedia.org/wiki/List_of_devices_using_Mediatek_SoCs#MT6735">this Wikipedia article for devices based on MediaTek SoCs</a>, detailing a wide range of manufacturers using these chips besides Coolpad. Just to name a few:
</div></div>
<ul>
<li>hTC</li>
<li>Huawei</li>
<li>Lenovo</li>
<li>LG</li>
<li>Moto</li>
<li>Sony</li>
</ul>
<p>The best part is that all the information collected in the process of porting upstream LK also contributes a significant step towards booting mainline Linux on these devices.</p>
<h2 id="serial-access-without-hardware-modification"><a class="toclink" href="#serial-access-without-hardware-modification">Serial Access Without Hardware Modification?</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="https://wiki.postmarketos.org/wiki/File:Mozilla-flame-pcb.jpg"><img alt="" class="border" src="/static/img/2018-04/flame-serial-thumb.jpg" /></a></p>
</div><div class="grid-text">
The first idea was to get some kind of debug output, and the most obvious way to get that on such a low-level is the <a href="https://en.wikipedia.org/wiki/Serial_port">serial port</a>. Some phones like the <a href="https://wiki.postmarketos.org/wiki/Mozilla_Flame_(t2m-flame)">Mozilla Flame</a> on the right (not MediaTek based) make it relatively easy to <a href="https://wiki.postmarketos.org/wiki/Serial_debugging#Mozilla_Flame">access the serial pins</a>. However, most MediaTek devices don't have their serial ports wired up and/or exposed on their boards, so it's not that easy: "I could do hardware modification," <a href="https://github.com/McBitter">@McBitter</a> said, "but all the side effects of this outweigh the risks." As a result, this option was out.
</div></div>
<p>While it would be possible to <a href="http://www.stevenhoneyman.co.uk/2014/11/mtk-mediatek-debug-cable.html">connect a serial cable</a> to the USB port of many MediaTek devices, <a href="https://github.com/McBitter">@McBitter</a> and <a href="https://github.com/unrznbl">@unrznbl</a> had a different concept that would turn it up to eleven.</p>
<h2 id="instrumentation-with-qemu"><a class="toclink" href="#instrumentation-with-qemu">Instrumentation With QEMU?</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-04/Instrumentation-overview.png"><img alt="" class="w200 border" src="/static/img/2018-04/Instrumentation-overview.png" /></a></p>
</div><div class="grid-text">
What if we sent memory read commands to the board and mirrored the device's memory in <a href="https://www.qemu.org">QEMU</a>? Then we would be able to attach <a href="https://www.gnu.org/software/gdb/">GDB</a> to QEMU's <a href="https://stackoverflow.com/a/2615816">GDB stub</a>, and view code as it runs! Stepping through LK and OsmocomBB (more on that below) in a debugger would make porting so much easier!
</div></div>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-04/Memory-read-test.png"><img alt="" class="border" src="/static/img/2018-04/Memory-read-test.png" /></a></p>
</div><div class="grid-text">
Using an interface in the <a href="http://read.pudn.com/downloads119/sourcecode/comm/mtk/507390/System_and_Debug/System_Service/BROM_Design_V2.0.0.pdf">MediaTek Boot ROM</a>, <a href="https://github.com/McBitter">@McBitter</a> worked on accessing MediaTek devices' memory via USB. Based on USB captures taken while flashing with the SP Flash Tool, <a href="https://github.com/McBitter">@McBitter</a> wrote <a href="https://github.com/McBitter/flasher/blob/19174c21ab8a8301cbccc536808580b058f81332/main.c">test code</a> to read memory using that interface. The diagram on the right shows how it would have worked in theory. But unfortunately MediaTek placed restrictions on the memory locations that the Boot ROM can read. As you can see in the other picture, reading out the entire memory is not possible. It works for some areas, but others just return <code>-1</code> instead of the requested amount of bytes to read.</p>
<p>The memory restrictions would make debugging with QEMU impossible.
</div></div>
<h2 id="dram-calibration-data-obtained"><a class="toclink" href="#dram-calibration-data-obtained">DRAM Calibration Data Obtained!</a></h2>
<p><a href="/static/img/2018-04/IDA-memory-calibration.png"><img alt="" class="wfull" src="/static/img/2018-04/IDA-memory-calibration.png" /></a></p>
<p>The months rolled by with many new theories being tested without, unfortunately, having even the tiniest bit of success. After taking a break for a few weeks, <a href="https://github.com/McBitter">@McBitter</a> changed his focus to the earliest piece of code of the boot process that can be modified, which is the preloader. The preloader <a href="https://wiki.postmarketos.org/wiki/Mediatek#Booting_procedure">is loaded by</a> the BROM (boot <a href="https://en.wikipedia.org/wiki/Read-only_Memory">read-only memory</a>), which in turn loads LK.</p>
<p>The BROM is only able to initialize the SRAM (<a href="https://en.wikipedia.org/wiki/Static_random-access_memory">static random-access memory</a>), which is very small and expensive (but fast, it gets used for CPU caches as well). In contrast, the "real" RAM (in the order of gigabytes nowadays) most of us may be familiar with is the cheaper DRAM (<a href="https://en.wikipedia.org/wiki/Dynamic_random-access_memory">dynamic random-access memory</a>). Initializing the DRAM is the most complex task the preloader has to do before passing control to LK. To make it work, the preloader must use some kind of calibration data for configuration, and there is so much of this calibration data that it's far easier to extract it from existing firmware than write it from scratch.</p>
<p>Here's the catch: it is hard to find the calibration data in the compiled firmware blob, as it is unclear where exactly it is stored and which format it has. <a href="https://github.com/McBitter">@McBitter</a> helped himself to an older source code leak of another MediaTek SoC: he found the calibration data in there, but it was not a complete match for his particular SoC. It did, however, serve to clue him in on how the structure looked! Since his success hinged more on luck than anything else, he selected a random pattern (<code>0xAA00AA0</code>) from the C struct with the calibration data in the source, and searched for it in the binary blob: "After running the search we immediately got a result and it seemed obvious that we've hit the jackpot on this one!"</p>
<p>You can find the extracted DRAM calibration data <a href="https://gist.github.com/McBitter/3a90851a6bed1efecdeb03e358a68895">here</a>, and the screenshot shows it in a spreadsheet.</p>
<h1 id="open-baseband-firmware-for-mt6260"><a class="toclink" href="#open-baseband-firmware-for-mt6260">Open Baseband Firmware for MT6260</a></h1>
<h2 id="why-is-proprietary-cellular-firmware-a-problem-again"><a class="toclink" href="#why-is-proprietary-cellular-firmware-a-problem-again">Why Is Proprietary Cellular Firmware a Problem Again?</a></h2>
<p>Having the main processor of a phone running a secure operating system would already be a great achievement in today's mobile world. We believe that starts with running <a href="http://www.kroah.com/log/blog/2018/02/05/linux-kernel-release-model/">official kernel releases</a> on these devices, instead of unofficial and outdated forks where no one can realistically keep up with security patches.</p>
<p>However we must not forget about the peripherals inside the device, which run their own firmware. Oftentimes they are able to compromise the whole system, and they are <a href="https://www.osnews.com/story/27416/The_second_operating_system_hiding_in_every_mobile_phone">"of dubious quality, poorly understood, entirely proprietary, and wholly insecure by design"</a>.</p>
<p>One way to deal with these is implementing kill-switches and sandboxing the cellular modem, an approach currently being planned for in the <a href="https://puri.sm/shop/librem-5/">Librem 5</a> and <a href="https://neo900.org/">Neo900</a>. This allows you to be in control of the device by turning the modems off, despite the fact that you don't know what they are doing while they are on. Another approach is analyzing and binary patching the existing firmware files.</p>
<p>But let's be honest here, isn't it outrageous that even the projects coming from people who value free and open source software, security and privacy, need to work around this gaping security hole present in nearly every phone ever made? Yes it is a daunting task to truly fix this with an open source implementation and it will take forever. But we have to start somewhere, and letting more time pass by won't help either!</p>
<h2 id="porting-osmocombb-to-fernvale"><a class="toclink" href="#porting-osmocombb-to-fernvale">Porting OsmocomBB to Fernvale</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-04/motorola-c138-calypso.jpg"><img alt="" class="border" src="/static/img/2018-04/motorola-c138-calypso-thumb.jpg" /></a></p>
</div><div class="grid-text">
The good news is, there is already a free software implementation of a GSM baseband called <a href="https://osmocom.org/projects/baseband/wiki">OsmocomBB</a>. But it is only compatible with phones based on the TI Calypso chipset, such as the Motorola C138 (photo on the right). Given that the Motorola C138 came out in 2006 and is no longer produced, OsmocomBB's use is limited unless it gets ported to newer platforms.</p>
<p>In search of an alternative, <a href="https://github.com/unrznbl">@unrznbl</a> chose the Fernvale platform as new target. There's a <a href="https://media.ccc.de/v/31c3_-_6156_-_en_-_saal_1_-_201412282145_-_fernvale_an_open_hardware_and_software_platform_based_on_the_nominally_closed-source_mt6260_soc_-_bunnie_-_xobs">nice introduction talk</a> by its creators that explains how Fernvale was created to enable open source engineers to build phones and other small devices with the cheap MT6260 SoC.
</div></div>
Not only do they hack the hardware, but also provide justifiable concepts to re-implement necessary code from abstracting facts (e.g. DRAM calibration data) found in leaked source core instead of copy and pasting.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2018-04/fernvale-frond-front.jpg"><img alt="" class="border" src="/static/img/2018-04/fernvale-frond-front-thumb.jpg" /></a></p>
</div><div class="grid-text">
Fernvale consists of three development boards centered around the MT6260 chip, allowing for a much easier way to develop and debug your own software compared to having the chip integrated on a phone. Once custom firmware functions on Fernvale's cellular modem, it will also function on existing phones with the same SoC as well.
</div></div>
Part of the Fernvale project is the first-stage boot environment called <a href="https://github.com/xobs/fernly/">Fernly</a>, as well as a port of the <a href="https://en.wikipedia.org/wiki/NuttX">NuttX</a> real-time operating system.</p>
<h2 id="blinking-led"><a class="toclink" href="#blinking-led">Blinking LED</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/video/2018-04/osmocom-bb-blink.mp4"><img alt="" class="border" src="/static/img/2018-04/osmocombb-blink.gif" /></a></p>
</div><div class="grid-text">
<a href="https://github.com/unrznbl">@unrznbl</a>'s first success can be seen on the right: "Fernly already had simple code to <a href="/static/video/2018-04/fernly-led-on-off.mp4">turn on and off the LED</a> on the Fernvale hardware. I reworked the linker scripts and startup assembly code in OsmocomBB to work on Fernvale hardware and was able to make an LED blinking firmware in OsmocomBB!" <em>Click the gif to see the full video, including terminal output.</em>
</div></div>
<p>Afterwards he continued to replace the functions in the layer one firmware in OsmocomBB with stubs that work on Fernvale to see if he can get more of OsmocomBB running. But he found out that the configuration in his linker script didn't provide enough space for the compiled firmware.</p>
<p>In order to gain more space, he is looking into using more of Fernvale's software stack: their preloader <a href="https://github.com/xobs/fernly/blob/master/usb-loader.S"><code>usb-loader.S</code></a> in combination with <a href="https://github.com/xobs/fernly/blob/fb11e7f2416d45139ad301ed3e4c58e5e30e7458/fernly-usb-loader.c#L1462"><code>fernly-usb-loader.c</code></a> should be able to load both Fernly (to initialize the large DRAM) and then OsmocomBB from a connected PC via USB. The workflow is somewhat similar to using <code>fastboot boot</code> (or <code>pmbootstrap flasher boot</code>) to run a kernel and initramfs coming from the PC.</p>
<h2 id="utopic-vision"><a class="toclink" href="#utopic-vision">Utopic Vision</a></h2>
<p>After the entire layer one firmware of OsmocomBB is ported to Fernvale, it would be possible to do 2G voice calls, send SMS and access the Internet from a laptop via tethering (just like it is possible with old Motorola phones today). <a href="https://github.com/unrznbl">@unrznbl</a> is also involved in creating <a href="https://osmocom.org/projects/nuttx-bb">layer one as a library for use in NuttX</a>, bringing full userspace phone functionality to it. With this, in combination with an oFono or RILD compatible interface added to the code, postmarketOS and friends (yes, even Android based systems like LineageOS), would be able to talk to the cellular modem inside the phone. All without the rather inconvenient Laptop in between.</p>
<p>This same effort can also benefit the newer MediaTek SoCs, such as the MT6735P (which <a href="https://github.com/McBitter">@McBitter</a> is experimenting with). Ultimately we, and likely lots of free software hackers, are dreaming of libre support for GSM protocols greater than 2G (3G, 4G, LTE and so on).</p>
<h1 id="lets-do-something"><a class="toclink" href="#lets-do-something">Let's Do Something!</a></h1>
<p>If you're like us, you don't want to live in a world where everyone is carrying around phones that can be hacked up remotely by anyone with enough money or motivation. Regardless of the OS the phones are running: when we want the people to be in control of their own devices, these must be running FLOSS down to the firmware level. That is the only right way to enable the community to patch security holes after the vendors abandon their software. <a href="https://meltdownattack.com/">Every</a> <a href="https://www.bleepingcomputer.com/news/security/intel-fixes-critical-bugs-in-management-engine-its-secret-cpu-on-chip/">complex</a> <a href="https://www.krackattacks.com/">piece</a> <a href="https://drownattack.com/">of</a> <a href="http://heartbleed.com">software</a> <a href="https://dirtycow.ninja/">has</a> <a href="https://en.wikipedia.org/wiki/WannaCry_ransomware_attack">security</a> <a href="https://duhkattack.com/">bugs!</a></p>
<h2 id="how"><a class="toclink" href="#how">How?</a></h2>
<ul>
<li><strong>Hack along in #postmarketOS-lowlevel</strong> if you feel like you're up to it or want to get there (<a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">IRC/Matrix</a>).</li>
<li><strong>Help out at Osmocom/OsmocomBB</strong> (<a href="https://osmocom.org/projects/baseband/wiki/IRC">IRC</a>). The latter is the base rock for free software cellular modem firmware, but they are hopelessly underpowered right now. Even if you can't contribute with code, you can ask for other ways to help out!</li>
<li><strong>Contribute to postmarketOS:</strong> Check out the <a href="https://postmarketos.org/blog/2017/12/31/219-days-of-postmarketOS/#how-can-you-help">How Can You Help?</a> section from the last post.</li>
<li><strong>Raise awareness about problems with proprietary firmware</strong> (e.g. by sharing this article to fellow hackers).</li>
</ul>
<h2 id="thoughts"><a class="toclink" href="#thoughts">Thoughts?</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=16836503">Hacker News</a></li>
</ul>219 days of postmarketOShttps://postmarketos.org/blog/2017/12/31/219-days-of-postmarketOS/2017-12-31T00:00:00+00:00<h2 id="few-years-old-devices-should-not-be-electronic-waste"><a class="toclink" href="#few-years-old-devices-should-not-be-electronic-waste">Few Years Old Devices Should Not Be Electronic Waste</a></h2>
<p>Most people around us have accepted that it is necessary to <strong>buy a new phone every other year</strong>. As a smartphone progresses through its own life cycle, manufacturer support for new features become rare, eventually stopping, and the device gets <strong><a href="https://www.geekbench.com/blog/2017/12/iphone-performance-and-battery-age/">slower and slower</a></strong>. Even worse, after this period, the devices don't get <strong><a href="https://threatpost.com/stagefright-2-0-vulnerabilities-affect-1-billion-android-devices/114863/">security updates</a></strong> anymore. This means that in many cases the bored IT student next door is able to look up on the Internet how to turn your phone into a surveillance device. Unfortunately the only way to continue to receive security updates after this point is to purchase a new device. In lieu of any alternatives today, you really should purchase a new device to stay current with security updates.</p>
<p>We want to have another option: <strong>postmarketOS</strong> is a Linux distribution based on (lightning fast) <a href="https://alpinelinux.org">Alpine</a> that aims for a <strong><a href="https://postmarketos.org/blog/2017/05/26/intro/">ten year life-cycle</a></strong>. Instead of having binaries and forked source code for every device, we unify them as much as possible. That allows us to provide updates for all devices at once. The project is still in an <strong>early stage</strong> (no, you still can't make calls with it.) But it would be a mistake to wait for phone call functionality without informing you about <strong>all the breakthroughs we have had</strong>. Read on for the exciting changes since day <a href="https://postmarketos.org/blog/2017/09/03/100-days-of-postmarketos">one hundred</a>!</p>
<h2 id="weston-got-company"><a class="toclink" href="#weston-got-company">Weston Got Company</a></h2>
<h3 id="plasma-mobile"><a class="toclink" href="#plasma-mobile">Plasma Mobile</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/video/2017-12/plasma-castor.mp4"><img alt="Plasma Mobile running on the sony-castor-windy with freedreno" class="border" rel="nofollow" src="/static/img/2017-12/plasma-castor-thumb.gif" /></a></p>
</div><div class="grid-text">
The Wayland reference compositor <a href="https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)#Weston">Weston</a> was the first interface we <a href="https://postmarketos.org/static/img/2017-05-26/i9100-filled.jpg">had running on our devices</a>. Good enough for a demo, but to get a <strong>real tablet/smartphone experience</strong> we always had an eye on KDE's <a href="https://plasma-mobile.org/"><strong>Plasma Mobile</strong></a> project. After countless hours of hard work we are proud to finally present it running <strong>on real devices!</strong></p>
<p>Running plasma on real devices with postmarketOS is brand new, which means it has not been tested much and it is <strong>far from a polished experience</strong>.
</div></div>
With that being said, it looks like it starts on most devices that can already run Weston but devices with hardware acceleration for graphics are much more usable at this point. The Z2 Tablet is one of the two devices booting postmarketOS and supporting hardware acceleration with the open user space driver <a href="https://github.com/freedreno/freedreno/wiki">freedreno</a>. All other devices must use OpenGL emulation in software due to them requiring proprietary GL drivers. We do have various ideas on improving the situation, such as <a href="https://wiki.postmarketos.org/wiki/Software_OpenGL">better software rendering</a> or mainlining the devices and using FLOSS userspace drivers where possible.</p>
<p>The gif shows Plasma running on the <a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z2_Tablet_(sony-castor-windy)">Sony Xperia Z2 Tablet</a> (click on it to see the full video). Below we show it on the <a href="https://wiki.postmarketos.org/wiki/Google_Nexus_5_(lg-hammerhead)">Google Nexus 5</a>, <a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_S_Advance_(samsung-i9070)">Samsung Galaxy S Advance</a>, <a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z1_Compact_(sony-amami)">Sony Xperia Z1 Compact</a> and again on the Z2 Tablet, but this time with <a href="https://github.com/MartijnBraam">@MartijnBraam</a>'s postmarketOS wallpaper straight from our new <a href="https://github.com/postmarketOS/artwork">artwork</a> repository.</p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2017-12/plasma-hammerhead.jpg"><img alt="" src="/static/img/2017-12/plasma-hammerhead-thumb.jpg" /></a>
<a href="/static/img/2017-12/plasma-i9070.jpg"><img alt="" src="/static/img/2017-12/plasma-i9070-thumb.jpg" /></a>
<a href="/static/img/2017-12/plasma-amami-3x.jpg"><img alt="" src="/static/img/2017-12/plasma-amami-3x-thumb.jpg" /></a>
<a href="/static/img/2017-12/plasma-castor2.jpg"><img alt="" src="/static/img/2017-12/plasma-castor2-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: <a href="https://github.com/ata2001">@ata2001</a>, <a href="https://github.com/bhush9">@bshah</a>, <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/MartijnBraam">@MartijnBraam</a>, <a href="https://github.com/NotKit">@NotKit</a>, <a href="https://github.com/PureTryOut">@PureTryOut</a>, <a href="https://github.com/opendata26">@opendata26</a>, <a href="https://github.com/zhuowei">@zhuowei</a></em></p>
<h3 id="luneos-ui"><a class="toclink" href="#luneos-ui">LuneOS UI</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-12/luna-qemu.png"><img alt="" class="border" src="/static/img/2017-12/luna-qemu-thumb.png" /></a></p>
</div><div class="grid-text">
Historically <a href="https://en.wikipedia.org/wiki/LuneOS">LuneOS</a> and its interface have their roots in <strong>webOS from late Palm devices</strong>. It was rewritten from scratch to use modern technologies, such as Wayland. The UI is based on the concept of <em>cards</em> for various apps, which can be swiped away to close them, and related cards can be grouped to <em>stacks</em>. That sounds familiar, right?</p>
<p>Much of the UI and default applications are actually implemented as HTML web applications, thus the name webOS.
</div></div>
During the porting we have learned that it is possible to run <strong>non-HTML applications as well</strong>, such as Wayland or even <a href="https://github.com/postmarketOS/pmbootstrap/issues/629#issuecomment-349463841">X applications</a>.</p>
<p><a href="https://github.com/PureTryOut">@PureTryOut</a> did the initial packaging while taking a short break from packaging Plasma a while back. Basic applications were packaged, but nothing ran yet. Then <a href="https://github.com/magmastonealex">@magmastonealex</a> picked it up and with a <strong>tremendous amount of work</strong> he managed to get it going in QEMU. Afterwards <a href="https://github.com/zhuowei">@zhuowei</a> got a proof of concept on his <a href="https://wiki.postmarketos.org/wiki/Google_Nexus_6P">Google Nexus 6P</a> without hardware acceleration by using the <a href="https://github.com/postmarketOS/pmbootstrap/issues/629#issuecomment-350810081">Xzibit-method</a> of running the LuneOS compositor inside of a running Weston compositor (this same trick <a href="https://github.com/postmarketOS/pmbootstrap/issues/987#issuecomment-350856570">also works with plasma</a> by the way). <a href="https://github.com/NotKit">@NotKit</a> showed us the real deal with his <a href="https://github.com/postmarketOS/pmbootstrap/pull/1039">Motorola Droid 4</a> followed by <a href="https://github.com/magmastonealex">@magmastonealex</a> <a href="https://wiki.postmarketos.org/wiki/Teclast_X80_Pro_(teclast-x80pro)">Teclast X80 Pro</a> (third and fourth photos below, both have hardware acceleration).</p>
<p>Since Plasma Mobile and LuneOS share similar technologies, they have similar porting problems - and it's good for development to be able to look at problems from different angles through both UI ports. Before we continue, we should mention that <strong>whole process</strong> from asking <em>"hey how about packaging LuneOS UI"</em> to running it within postmarketOS on a device took <strong>less than two months!</strong></p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2017-12/luna-lock.jpg"><img alt="" src="/static/img/2017-12/luna-lock-thumb.jpg" /></a>
<a href="/static/img/2017-12/luna-firstrun.jpg"><img alt="" src="/static/img/2017-12/luna-firstrun-thumb.jpg" /></a>
<a href="/static/img/2017-12/luna-droid4.jpg"><img alt="" src="/static/img/2017-12/luna-droid4-thumb.jpg" /></a>
<a href="/static/img/2017-12/luna-x80pro.jpg"><img alt="" src="/static/img/2017-12/luna-x80pro-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: <a href="https://github.com/magmastonealex">@magmastonealex</a>, <a href="https://github.com/NotKit">@NotKit</a>, <a href="https://github.com/PureTryOut">@PureTryOut</a>, <a href="https://github.com/zhuowei">@zhuowei</a></em></p>
<h3 id="hildon-gnome-mate-and-xfce4"><a class="toclink" href="#hildon-gnome-mate-and-xfce4">Hildon, Gnome, MATE and XFCE4</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-12/hildon-i9070.png"><img alt="" src="/static/img/2017-12/hildon-i9070-thumb.png" /></a></p>
</div><div class="grid-text">
You see where we're heading with this: we got all of these environments running on real devices. <a href="https://postmarketos.org/blog/2017/09/03/100-days-of-postmarketos/#hildon"><strong>Hildon</strong></a> was <a href="https://github.com/postmarketOS/pmbootstrap/pull/1015">updated</a> by <a href="https://github.com/NotKit">@NotKit</a> to use sources from <a href="https://maemo-leste.github.io">Maemo Leste</a>, which continues development upstream. More applications have been packaged, notably <code>hildon-home</code> which allows launching apps by touching icons.
</div></div>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-12/mate-i9070.jpg"><img alt="" class="fr ml3 mb3 cr" src="/static/img/2017-12/mate-i9070-thumb.png" /></a></p>
</div><div class="grid-text">
The other three desktops are already maintained upstream in Alpine, which means we can just install them with little or no modifications. <a href="https://github.com/opendata26">@opendata26</a> made a proof of concept running <strong>Gnome 3</strong> after applying a few hacks. There is a photo below with Gnome 3 on a Z2 Tablet running Firefox and watching a YouTube video. <a href="https://github.com/drebrez">@drebrez</a> is <a href="https://github.com/postmarketOS/pmbootstrap/pull/1012">working on</a> proper integration for <strong>MATE</strong> as you can see on the right.
</div></div>
<p>Finally <strong>XFCE4</strong> was <a href="https://github.com/postmarketOS/pmbootstrap/pull/695">pre-configured</a> by <a href="https://github.com/pavelmachek">@pavelmachek</a>. In order to make it usable on his <a href="https://wiki.postmarketos.org/wiki/Nokia_N900_(nokia-rx51)">Nokia N900</a>, he also <a href="https://github.com/postmarketOS/pmbootstrap/pull/643">contributed</a> the <code>unicsy_demo</code> package, which reads various sensors and is able to send and receive SMS on his device after some manual preparation. <a href="https://github.com/drebrez">@drebrez</a> <a href="https://github.com/postmarketOS/pmbootstrap/pull/1001">packaged</a> the <code>matchbox-keyboard</code> to be used on interfaces lacking their own on screen keyboard. We can happily confirm that XFCE4 and MATE work well even <strong><em>without</em> hardware accelerated graphics!</strong></p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2017-12/gnome3-castor.jpg"><img alt="" src="/static/img/2017-12/gnome3-castor-thumb.jpg" /></a>
<a href="/static/img/2017-12/xfce4-maguro.jpg"><img alt="" src="/static/img/2017-12/xfce4-maguro-thumb.jpg" /></a>
<a href="/static/img/2017-12/xfce4-hammerhead.jpg"><img alt="" src="/static/img/2017-12/xfce4-hammerhead-thumb.jpg" /></a>
<a href="/static/img/2017-12/xfce4-i9505.jpg"><img alt="" src="/static/img/2017-12/xfce4-i9505-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/NotKit">@NotKit</a>, <a href="https://github.com/opendata26">@opendata26</a>, <a href="https://github.com/pavelmachek">@pavelmachek</a></em></p>
<h2 id="libre-drivers-and-libhybris"><a class="toclink" href="#libre-drivers-and-libhybris">Libre Drivers and Libhybris</a></h2>
<p>In contrary to most Linux on smartphone projects, almost all these photos and the video are taken off devices which do not run proprietary code on the main CPU. The only exception is the Droid 4, which <a href="https://github.com/NotKit">@NotKit</a> owns. He is <a href="https://github.com/postmarketOS/pmbootstrap/pull/1002">actively working</a> on making proprietary Android drivers usable in postmarketOS with <a href="https://en.wikipedia.org/wiki/Hybris_(software)"><strong>libhybris</strong></a>. Libhybris allows devices lacking FLOSS drivers to make full use of their hardware.</p>
<p>While we don't welcome binary blobs and prefer to sandbox them where we ship them at all, we embrace this solution for people who want it. However we intend to keep <a href="https://github.com/postmarketOS/pmbootstrap/issues/756">closed source components entirely optional</a>, so you can run pmOS as libre as you want it.</p>
<p><em>Thanks to: <a href="https://github.com/NotKit">@NotKit</a></em></p>
<h2 id="mainline-linux-kernel"><a class="toclink" href="#mainline-linux-kernel">Mainline Linux Kernel</a></h2>
<h3 id="android-based-devices"><a class="toclink" href="#android-based-devices">Android Based Devices</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-12/mainline-i9305.jpg"><img alt="" class="fr ml3 mb3" src="/static/img/2017-12/mainline-i9305-thumb.png" /></a></p>
</div><div class="grid-text">
It's always a super exciting time for <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">#postmarketOS</a> when someone posts the <strong>first photo</strong> of their smartphone <strong>running on a mainline kernel</strong>, oftentimes with a distorted screen. Enjoy such pictures of the <a href="https://wiki.postmarketos.org/wiki/Google_Nexus_5_(lg-hammerhead)">Google Nexus 5</a> (<a href="https://github.com/bhush9">@bshah</a>) and <a href="https://wiki.postmarketos.org/wiki/Fairphone-2">Fairphone 2</a> (<a href="https://github.com/z3ntu">@z3ntu</a>) below. The <a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z1_Compact_(sony-amami)">Sony Xperia Z1 Compact</a> (<a href="https://github.com/ata2001">@ata2001</a>) boots a mainline kernel as well, however the screen does not work yet.</p>
<p>Together with the <a href="https://wiki.postmarketos.org/wiki/Google_Nexus_7_2013_(asus-flo)">Google Nexus 7 (2013)</a>, <a href="https://wiki.postmarketos.org/wiki/Teclast_X80_Pro_(teclast-x80pro)">Teclast X80 Pro</a> and the <a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z2_Tablet_(sony-castor-windy)">Xperia Z2 Tablet</a> — where <a href="https://github.com/opendata26">@opendata26</a> fixed a mmc regression introduced with newer kernels — we now have <strong>six Android-based devices packaged with partial mainline support</strong>. We are still at the beginning of unifying them into one <code>linux-postmarketos-stable</code> package, but it's a huge step in the right direction!
</div></div>
While this blog post was in the making, <a href="https://github.com/fourkbomb">@fourkbomb</a> showed us <strong>even more mainlining progress</strong>. This work is <em>not</em> packaged for postmarketOS yet, and he used <strong><a href="https://forkwhiletrue.me/posts/kexec-on-galaxy-s3/"><code>kexec</code></a></strong> to boot from the original kernel forks to the mainline kernel. Nevertheless, the results are impressive! On the right is the <a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_SIII_LTE_(samsung-i9305)">Samsung Galaxy SIII LTE</a> (<code>i9305</code>) running mainline (as you can see in the terminal when clicking on it). As if that wasn't cool enough he made it work on similar Samsungs (<a href="/static/img/2017-12/mainline-i9300.jpg"><code>i9300</code></a>, <a href="/static/img/2017-12/mainline-n7100.jpg"><code>n7100</code></a>, <a href="/static/img/2017-12/mainline-n7105.jpg"><code>n7105</code></a>) as well!</p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2017-12/mainline-hammerhead.jpg"><img alt="" src="/static/img/2017-12/mainline-hammerhead-thumb.jpg" /></a>
<a href="/static/img/2017-12/mainline-fp2.jpg"><img alt="" src="/static/img/2017-12/mainline-fp2-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: <a href="https://github.com/ata2001">@ata2001</a>, <a href="https://github.com/bhush9">@bshah</a>,
<a href="https://github.com/fourkbomb">@fourkbomb</a>, <a href="https://github.com/magmastonealex">@magmastonealex</a>, <a href="https://github.com/montvid">@montvid</a>, <a href="https://github.com/opendata26">@opendata26</a>, <a href="https://github.com/z3ntu">@z3ntu</a></em></p>
<h3 id="nokia-n9xx-devices"><a class="toclink" href="#nokia-n9xx-devices">Nokia N9xx Devices</a></h3>
<p><a href="https://www.youtube.com/watch?v=fH6zuK2OOVU">Camera support</a> for the <strong><a href="https://wiki.postmarketos.org/wiki/Nokia_N900_(nokia-rx51)">N900</a></strong> was merged by <a href="https://github.com/pavelmachek">@pavelmachek</a>. There's still a lot of work to do in kernel and user space, but the classic N900's hardware support is getting better. The only major areas not supported are Bluetooth and 3D acceleration.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-12/mainline-rm-969.jpg"><img alt="" class="border" src="/static/img/2017-12/mainline-rm-969-thumb.jpg" /></a></p>
</div><div class="grid-text">
<strong><a href="https://wiki.postmarketos.org/wiki/Nokia_N9">Nokia N9</a></strong> packaging for postmarketOS with the mainline kernel is <a href="https://github.com/postmarketOS/pmbootstrap/pull/1046">ongoing</a> now that <a href="https://github.com/filippz">@filippz</a> <a href="https://mobile.twitter.com/fi1ippz/status/945692340194349056">made it work</a> (photo on the right shows the N9 during <a href="https://mobile.twitter.com/fi1ippz/status/927581300197863427">earlier porting stages</a>). <a href="https://github.com/sre">@sre</a> has done a lot of work on display support for TI OMAP, and this work is slowly being merged into the mainline kernel. Support for battery status on N9 and <a href="https://en.wikipedia.org/wiki/N950">N950</a> should be ready in kernel v4.15. In addition, light sensor drivers are now working. While this is amazing progress, a lot more work still needs to be done for these devices. For instance battery charging, a staple feature for smartphones, is currently not working yet.
</div></div>
<p><em>Thanks to: <a href="https://github.com/filippz">@filippz</a>, <a href="https://github.com/pavelmachek">@pavelmachek</a>, <a href="https://github.com/sre">@sre</a></em></p>
<h2 id="new-devices"><a class="toclink" href="#new-devices">New Devices</a></h2>
<p>Despite not being a smartphone or tablet, this next device is still right at home in this section: <a href="https://github.com/dee-gomma">@dee-gomma</a> managed to run and demonstrate basic functionality of <code>pmbootstrap</code> on a 32 bit "postmarket PC", check out <a href="https://github.com/postmarketOS/pmbootstrap/issues/933">his instructions</a> if you still own such an old computer and feel adventurous.</p>
<p>But what you are really looking for are the new supported devices running postmarketOS, right? Most people expect a certain level of functionality on <em>supported</em> devices, and almost all expect that a supported device can be used as daily driver. As a result, this section has historically started off with a disclaimer that our definition of "supported" essentially means that the devices will successfully boot postmarketOS. This time, however, we have decided to <a href="https://github.com/postmarketOS/wiki/issues/12">abandon the term "supported" altogether</a> in order to help minimize confusion. Here are <strong>twenty-five new devices</strong>, on which <strong>postmarketOS boots</strong>. Click on them for detailed information about what works and what does not.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-12/new-s6500d.jpg"><img alt="" src="/static/img/2017-12/new-s6500d-thumb.png" /></a></p>
</div><div class="grid-text">
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/Amazon_Kindle_Fire_HDX">Amazon Kindle Fire HDX <code>(amazon-thor)</code></a> <em>(first below)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Fairphone_2_(fairphone-fp2)">Fairphone 2 <code>(fairphone-fp2)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Google_Glass_(Explorer_Edition)">Google Glass (Explorer Edition) <code>(google-glass)</code></a> <em>(second below, <a href="https://github.com/postmarketOS/pmbootstrap/pull/957#issuecomment-348735547">more pictures</a>)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Google_Nexus_6P">Google Nexus 6P <code>(huawei-angler)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Google_Nexus_7_2013_(asus-flo)">Google Nexus 7 (2013) <code>(asus-flo)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Huawei-Ascend-Y530">Huawei Ascend Y530 <code>(huawei-y530)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Lenovo_K6_Power_(lenovo-karate)">Lenovo K6 Power <code>(lenovo-karate)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/LG_G_Watch_(lg-dory)">LG G Watch <code>(lg-dory)</code></a> <em>(third below)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/LG_G4_International_(lg-h815)">LG G4 International <code>(lg-h815)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/LG_L65_Dual_SIM_D285_(lg-d285)">LG L65 Dual SIM D285 <code>(lg-d285)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Moto_G_2015_(motorola-osprey)">Moto G 2015 <code>(motorola-osprey)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/OnePlus_One_(oneplus-bacon)">OnePlus One <code>(oneplus-bacon)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/OnePlus_X_(oneplus-onyx)">OnePlus X <code>(oneplus-onyx)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Ouya_(ouya-ouya)">Ouya <code>(ouya-ouya)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Mini_2_(samsung-s6500d)">Samsung Galaxy Mini 2 <code>(samsung-s6500d)</code></a> <em>(on the right)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung-i747m">Samsung Galaxy SIII (i747m) <code>(samsung-i747m)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_SIII_LTE_(samsung-i9305)">Samsung Galaxy SIII (LTE) <code>(samsung-i9305)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung-i9505-(Samsung-Galaxy-S4-int)">Samsung Galaxy S4 (International) <code>(samsung-i9505)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_SL_(samsung-i9003)">Samsung Galaxy SL <code>(samsung-i9003)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Tab_2_10.1%22_(3G_and_Wifi)_(samsung-espresso10)">Samsung Galaxy Tab 2 10.1" <code>(samsung-espresso10)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z1_(sony-honami)">Sony Xperia Z1 <code>(sony-honami)</code></a> <em>(fourth below)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z3C_(sony-aries)">Sony Xperia Z3 Compact <code>(sony-aries)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Teclast_X80_Pro_(teclast-x80pro)">Teclast X80 Pro <code>(teclast-x80pro)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Wiko_Lenny_3_(wiko-lenny3)">Wiko Lenny 3 <code>(wiko-lenny3)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Xiaomi_RedMi3_(xiaomi-ido)">Xiaomi RedMi3 <code>(xiaomi-ido)</code></a>
</div></div></li>
</ul>
<p>The best way to get an overview of all devices at once is the <a href="https://wiki.postmarketos.org/wiki/Devices">devices</a> page on the wiki. As of today, for example, it shows that we have <strong>18 devices with working <a href="https://wiki.postmarketos.org/wiki/Wifi">Wi-Fi</a></strong>.</p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2017-12/new-thor.jpg"><img alt="" src="/static/img/2017-12/new-thor-thumb.jpg" /></a>
<a href="/static/img/2017-12/new-glass.jpg"><img alt="" src="/static/img/2017-12/new-glass-thumb.jpg" /></a>
<a href="/static/img/2017-12/new-dory.jpg"><img alt="" src="/static/img/2017-12/new-dory-thumb.jpg" /></a>
<a href="/static/img/2017-12/new-honami.jpg"><img alt="" src="/static/img/2017-12/new-honami-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: <a href="https://github.com/ata2001">@ata2001</a> <a href="https://github.com/dakk">@dakk</a> <a href="https://github.com/dee-gomma">@dee-gomma</a> <a href="https://github.com/drebrez">@drebrez</a> <a href="https://github.com/flacks">@flacks</a> <a href="https://github.com/Halamix2">@Halamix2</a> <a href="https://github.com/kaendfinger">@kaendfinger</a> <a href="https://github.com/kamnxt">@kamnxt</a> <a href="https://github.com/kskarthik">@kskarthik</a> <a href="https://github.com/lawl">@lawl</a> <a href="https://github.com/limiter121">@limiter121</a> <a href="https://github.com/magmastonealex">@magmastonealex</a> <a href="https://github.com/montvid">@montvid</a> <a href="https://github.com/MoreRobustThanYou">@MoreRobustThanYou</a> <a href="https://github.com/rendeko">@rendeko</a> <a href="https://github.com/rrooij">@rrooij</a> <a href="https://github.com/shwsh">@shwsh</a> <a href="https://github.com/tyxieblub">@tyxieblub</a> <a href="https://github.com/WilliamO7">@WilliamO7</a> <a href="https://github.com/z3ntu">@z3ntu</a> <a href="https://github.com/zhenyolka">@zhenyolka</a> <a href="https://github.com/zhuowei">@zhuowei</a> and everyone who helped them out!</em></p>
<h2 id="all-new-pmbootstrap-init"><a class="toclink" href="#all-new-pmbootstrap-init">All New 'pmbootstrap init'</a></h2>
<p>When you get started with postmarketOS development, the first thing you do is clone the <strong><code>pmbootstrap</code></strong> git repository. This provides you with a small Python script that runs on just about <strong>every Linux distribution</strong> because of Python's portability and the script's single dependency on <code>openssl</code>. With it, you will have a great deal of <strong>tasks automated and streamlined</strong>, so you can <strong>focus on actual development</strong> instead of spending hours on setting up your development environment.</p>
<div class="codehilite"><pre><span></span><code><span class="gp">$ </span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/postmarketOS/pmbootstrap
<span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>pmbootstrap
<span class="gp">$ </span>./pmbootstrap.py<span class="w"> </span>init
<span class="go">Target device (either an existing one, or a new one for porting).</span>
<span class="go">Available (39): amazon-thor, asus-flo, asus-grouper, ...</span>
<span class="go">Device [samsung-i9100]: </span>
</code></pre></div>
<p>The <code>init</code> action is what you run directly after cloning the source and whenever you want to change your configuration. Besides the devices we already have, it is also possible to type in a <strong>new device name</strong> now. In the "new device name" mode the script is eager to learn about your new device: <em>Who produced the device? Does it have an SD card slot or a hardware keyboard? Which CPU architecture and bootloader does it have? Oh fastboot you say - why don't you give me an existing </em><em><code>boot.img</code></em><em> file from a known working Android ROM while we're at it, so we can </em><em>extract the flashing offsets</em><em>?</em></p>
<p>Once this information is gathered, it presents you with an <strong>automatically generated kernel-package and <a href="https://wiki.postmarketos.org/wiki/Device_specific_package">device-package</a></strong>. We get new devices running with their original kernel first, before we try to run the mainline kernel on them. Besides that, new questions were added for the interface: timezone (e.g. <em>Your host timezone is Europe/London, use that?</em>), username and <strong>custom default packages</strong> (e.g. <em>how about <code>vim</code>, <code>gdb</code>, <code>strace</code>?</em>). Build options rarely need to be changed, so they were grouped together to make it easy to skip them.</p>
<p><div class="grid"><div class="grid-side">
<a href="https://wiki.postmarketos.org/wiki/Porting_to_a_new_device"><img alt="https://wiki.postmarketos.org/wiki/Porting_to_a_new_device" class="w200 border" src="/static/img/2017-12/porting-guide-thumb.png" /></a></p>
</div><div class="grid-text">
After <code>init</code> is through, you are just <strong>one command away from cross-compiling</strong> packages or building a <strong>full installation image</strong>. We have whole new <a href="https://wiki.postmarketos.org/wiki/Porting_to_a_new_device">porting</a> and <a href="https://wiki.postmarketos.org/wiki/Installation_guide">installation</a> guides that walk you through the process step by step.
</div></div>
<p><em>Thanks to: <a href="https://github.com/craftyguy">@craftyguy</a>, <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/ollieparanoid">@ollieparanoid</a></em></p>
<h2 id="binary-repository"><a class="toclink" href="#binary-repository">Binary Repository</a></h2>
<p>In order to change something in <strong><em>Android's</em> system code</strong>, you need to <strong>download its entire source</strong> code of 100 GB, then do your change and <strong>build everything</strong>, which takes another 150 GB of storage, as well as 16 GB of RAM (or SWAP) and <strong>lots of time</strong> even on the strongest computers (numbers from <a href="https://source.android.com/setup/requirements">here</a>, 2017-12). Subsequent builds are faster, but still you have this initial build which seemingly takes forever.</p>
<p><div class="grid"><div class="grid-side">
<a href="https://github.com/postmarketOS/artwork/commit/805d8762426e69c2b1761e9bb2b0993509043c24"><img alt="" src="/static/img/2017-12/logo-render.png" /></a></p>
</div><div class="grid-text">
postmarketOS doesn't use Android's build system, but divides all of its software in <strong>packages</strong> just like a regular Linux distribution. As mentioned previously we directly use Alpine's repository for many packages in postmarketOS - but today we also have a binary repository for our own packages (with interfaces like Plasma Mobile, kernel packages, etc)! While it still has a few <a href="https://github.com/postmarketOS/pmbootstrap/issues/970">rough edges</a> it gets the job done: Now you <strong>only need to compile the packages that you want to change</strong>. Even if your computer takes hours just to build the Linux kernel it is still feasible to use it for postmarketOS development. All compiler output is cached with <a href="https://en.wikipedia.org/wiki/Ccache">ccache</a>, so subsequent builds are a lot faster as well.</p>
<p>This also means that it is possible to update your postmarketOS installation running on your device now.
</div></div>
Keep in mind that we have not reached the point yet where we can verify each update on the device migrates properly from the previous version, so you will probably have some breakage sooner or later. Kernel updates should work as well, thanks to the <strong>kernel update script</strong> <a href="https://github.com/ata2001">@ata2001</a> wrote - but right now you will need to invoke it manually.</p>
<p><em>Thanks to: <a href="https://github.com/ata2001">@ata2001</a>, <a href="https://github.com/ollieparanoid">@ollieparanoid</a></em></p>
<h2 id="continuous-integration"><a class="toclink" href="#continuous-integration">Continuous Integration</a></h2>
<p><code>pmbootstrap</code> has had test cases since the day it was released. We hooked <a href="https://github.com/postmarketOS/pmbootstrap/pull/760">Travis</a> and <a href="https://github.com/postmarketOS/pmbootstrap/issues/761">Coveralls</a> up with that testsuite to automatically run it for each new pull request. And we steadily increased the coverage from <a href="https://github.com/postmarketOS/pmbootstrap/pull/820#issuecomment-339057618">51%</a> to <a href="https://coveralls.io/builds/14788770">64%</a>. The <a href="https://github.com/postmarketOS/pmbootstrap/blob/917f03d5f9f015fa9fc0be8093d87b7f21d98d4a/test/static_code_analysis.sh#L24-L48">list of shell scripts</a> we automatically verify with <a href="https://shellcheck.net/">shellcheck</a> has grown again.</p>
<p>As we learned about <a href="https://wiki.postmarketos.org/wiki/Kernel_configuration">kernel config options</a> that should or should not be enabled to work properly with Linux on smartphones, we created the <a href="https://github.com/postmarketOS/pmbootstrap/pull/589"><code>pmbootstrap kconfig_check</code></a> action to automatically check the configs. This runs whenever you change the kernel config with <code>pmbootstrap menuconfig</code>, and it runs on Travis as well.</p>
<p><em>Thanks to: <a href="https://github.com/ata2001">@ata2001</a>, <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/MartijnBraam">@MartijnBraam</a>, <a href="https://github.com/ollieparanoid">@ollieparanoid</a></em></p>
<h2 id="other-new-features"><a class="toclink" href="#other-new-features">Other New Features</a></h2>
<p>Running postmarketOS in a <strong>QEMU VM</strong>, with <code>pmbootstrap qemu</code>, will now use <strong>3D acceleration</strong> by default. In addition, QEMU image files can now be <strong>resized on the fly</strong> by using the new <code>--image-size</code> parameter. These changes continue to make QEMU an invaluable resource for developers packaging and testing new software in the postmarketOS/Alpine Linux environment.</p>
<p>Regarding encryption, it is possible to use <a href="https://github.com/postmarketOS/pmbootstrap/pull/585"><strong>encrypted swap files</strong></a> now. Furthermore the <strong>touch screen keyboard for full disk encryption</strong> (<a href="https://github.com/postmarketOS/osk-sdl">osk-sdl</a>) we <a href="https://postmarketos.org/blog/2017/09/03/100-days-of-postmarketos/#initramfs-is-full-of-new-features">introduced last time</a> became the <a href="https://web.archive.org/web/20180614214905/https://www.reddit.com/r/postmarketOS/comments/76flrr/fde_unlocking_with_osksdl_has_been_merged/">default</a> now, and has helped to make full disk encryption a great deal more practical. You just don't need to fire up a <a href="https://ollieparanoid.github.io/img/2017-05-26/i9100/telnet.jpg">USB telnet session</a> anymore to unlock your phone each time you reboot it. But for initramfs debug, you can still install a hook that gives you a <strong>debug shell</strong> - and it displays a nice splash screen until you tell it to continue booting.</p>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2017-12/debug-shell-i9070.jpg"><img alt="" src="/static/img/2017-12/debug-shell-i9070-thumb.jpg" /></a>
</div></div>
<p><em>Thanks to: <a href="https://github.com/BrianOtto">@BrianOtto</a>, <a href="https://github.com/craftyguy">@craftyguy</a>, <a href="https://github.com/drebrez">@drebrez</a></em></p>
<h2 id="various-refactoring"><a class="toclink" href="#various-refactoring">Various Refactoring</a></h2>
<p><a href="https://github.com/drebrez">@drebrez</a> made it possible to share code between the device specific package recipes with <a href="https://github.com/postmarketOS/pmbootstrap/pull/995"><code>devicepkg-dev</code></a>. The package building code in <code>pmbootstrap</code> <a href="https://github.com/postmarketOS/pmbootstrap/pull/935">was rewritten</a> by <a href="https://github.com/ollieparanoid">@ollieparanoid</a> to make it easier to extend and to do build-time dependency installation just like Alpine's <code>abuild</code> for improved compatibility.</p>
<p><a href="https://github.com/ata2001">@ata2001</a> <a href="https://github.com/postmarketOS/pmbootstrap/pull/901">refactored</a> the <strong>Android recovery zip</strong> installer to have close to zero dependencies on the recovery system used, which makes it possible to work not only in (exotic versions of) TWRP, but also in CWM and probably every other Android recovery system. He also <a href="https://github.com/postmarketOS/pmbootstrap/pull/609">extended it</a> to support devices that need the <code>heimdall-isorec</code> flash method.</p>
<p><em>Thanks to: <a href="https://github.com/ata2001">@ata2001</a>, <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/ollieparanoid">@ollieparanoid</a></em></p>
<h2 id="raw-numbers"><a class="toclink" href="#raw-numbers">Raw Numbers</a></h2>
<ul>
<li><code>></code>275 people in the <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">channel</a> (+175)</li>
<li><a href="https://github.com/postmarketOS/pmbootstrap">pmbootstrap</a><ul>
<li>763 stargazers <em>(+208)</em></li>
<li>567 closed PRs <em>(+344)</em></li>
<li>336 closed issues <em>(+151)</em></li>
<li>134 open issues <em>(+59)</em></li>
<li>102 forks <em>(+54)</em></li>
<li>74 watchers <em>(+25)</em></li>
<li>57 contributors (<code>git shortlog --summary --numbered | wc -l</code>) <em>(+30)</em></li>
</ul>
</li>
</ul>
<h2 id="environment"><a class="toclink" href="#environment">Environment</a></h2>
<p>We would like to thank all projects that collaborate with us, and talk about some of their news which is relevant for us as well.</p>
<p><strong>Alpine Linux 3.7</strong> <a href="https://alpinelinux.org/posts/Alpine-3.7.0-released.html">was released</a> with thousands of git commits of hard work. While postmarketOS is still based on their rolling release <code>edge</code> branch, the idea is that we also base our work on the stable channels at some point in the future. <a href="https://github.com/awilfox">@awilfox</a> from the upcoming <a href="https://adelielinux.org/">Adélie Linux</a> assured that they will be <strong>upstreaming and maintaining the LTS version of KDE Plasma</strong> in Alpine. As soon as it's upstreamed we can base our Plasma Mobile packaging directly on the KDE Framework in Alpine, and when Plasma Mobile works with the LTS version of the Plasma Framework at some point in the future we can <strong>build on top of that</strong> as well! Several contributors to postmarketOS have also directly contributed to the Alpine Linux 3.7 release and, while not nearly as impactful as the official Alpine Linux developers, we are still very much committed to helping out our Alpine friends where ever we can!</p>
<p>The <strong>Plasma Mobile</strong> team recently detailed their <a href="https://vizzzion.org/blog/2017/10/plasma-mobile-roadmap/">roadmap</a> in a recent blog post. And they got a lot of interest with the successfully funded <strong><a href="https://puri.sm/shop/librem-5/">Librem 5 phone</a></strong>, which will either use <a href="https://www.kde.org/announcements/kde-purism-librem5.php">Plasma</a> or <a href="https://www.gnome.org/news/2017/09/gnome-foundation-partners-with-purism-to-support-its-efforts-to-build-the-librem-5-smartphone/">Gnome 3</a>. We think the <a href="https://postmarketos.org/blog/2017/09/24/librem-5/">Librem 5 is great for all Linux smartphone projects</a> out there.</p>
<p>The <a href="https://matrix.org/blog/2017/09/28/experiments-with-matrix-on-the-purism-librem5-starring-ubports-and-nheko/">somewhat mobile friendly</a> matrix client <strong><a href="https://github.com/mujx/nheko">nheko</a></strong> just had its <a href="https://github.com/mujx/nheko/releases/tag/v0.1.0">0.1.0 release</a>, and while we have <a href="https://github.com/postmarketOS/pmbootstrap/issues/900">not finished packaging</a> it yet, author <a href="https://github.com/mujx">@mujx</a> confirmed that he had an earlier version working on postmarketOS in QEMU.</p>
<p><div class="grid"><div class="grid-side">
<a href="https://github.com/kergoth/tslib/issues/89#issuecomment-343443468"><img alt="" class="fr ml3 mb3" src="/static/img/2017-12/logo-tslib-thumb.png" /></a></p>
</div><div class="grid-text">
<strong><a href="http://www.tslib.org/">tslib</a></strong> powers the touch screen functionality in our initramfs. Shout out to <a href="https://github.com/merge">@merge</a> from the project, who was incredibly helpful with <a href="https://github.com/kergoth/tslib/issues/103">answering questions</a>, <strong><a href="https://github.com/kergoth/tslib/issues/104">making it work on Android devices</a></strong> and by patching tslib, the touch driver for the N900 in <a href="https://github.com/kergoth/tslib/issues/108#issuecomment-342887195">the kernel</a>, and even implementing <a href="https://github.com/kergoth/tslib/issues/108">automatic touch screen detection</a>! To show our appreciation we solicited help for responding to a tslib request for a <a href="https://github.com/kergoth/tslib/issues/89">vectorized logo</a> in #postmarketOS, and only a day later <a href="https://github.com/rrcha">@rrcha</a> took care of it.
</div></div>
<p>If you're into smartwatches and want to use an open source OS on them today, check out <strong><a href="https://asteroidos.org/">AsteroidOS</a></strong>. <a href="https://github.com/FlorentRevest">@FlorianRevest</a> <a href="https://github.com/AsteroidOS/msm-fb-refresher/issues/1">tagged a version</a> of its <code>msm-fb-refresher</code> component, so were able to package it properly to <strong>refresh the framebuffer</strong> in postmarketOS for devices that need it.</p>
<p><em>Thanks to everyone working on these projects!</em></p>
<h2 id="how-can-you-help"><a class="toclink" href="#how-can-you-help">How Can You Help?</a></h2>
<p>You read through the entire thing, didn't you? Looks like you have some interest in this project - and <strong>we can use every helping hand.</strong> We've put the more technical tasks at the bottom of each list. <code>pmbootstrap</code> is written in Python, packaging tasks require shell scripting knowledge. </p>
<p>Tasks that <strong>do not require</strong> a device running postmarketOS:</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-12/logo-shirt.jpg"><img alt="" class="w200 border" src="/static/img/2017-12/logo-shirt-thumb.jpg" /></a></p>
</div><div class="grid-text">
<ul>
<li><a href="http://wiki.postmarketos.org/">Improve documentation</a> (e.g. <a href="https://wiki.postmarketos.org/wiki/Potential_apps">potential apps</a>, <a href="https://wiki.postmarketos.org/wiki/The_Mainline_Kernel">mainlining</a>)</li>
<li><a href="https://wiki.postmarketos.org/wiki/Donate">Donate</a></li>
<li><a href="https://github.com/postmarketOS/artwork/pull/9">Print yourself a postmarketOS fair trade t-shirt and wear it!</a></li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/pulls">Test pull requests</a></li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/pulls">Review pull requests</a></li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/issues">Resolve open issues</a></li>
<li>Package and maintain apps (e.g. <a href="https://github.com/postmarketOS/pmbootstrap/issues/900">nheko</a>)</li>
<li>Improve or package <a href="https://github.com/postmarketOS/pmbootstrap/issues/62">your favorite user interface</a> (e.g. Asteroid OS, feature phone, Gnome, Hildon, Lune OS, MATE, Plasma, Ubuntu Touch, Weston, XFCE4)</li>
<li><a href="https://web.archive.org/web/20180614214817/https://www.reddit.com/r/postmarketOS/comments/6xuo1s/will_postmarketos_support_anbox/">Package <code>anbox</code> to run Android apps</a></li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/issues/592">Package nexmon</a>, so we can patch <a href="https://ollieparanoid.github.io/post/security-warning/">security holes</a> in abandoned Wifi firmware</li>
<li><a href="https://wiki.postmarketos.org/wiki/Software_OpenGL">Improve Software OpenGL rendering</a>
</div></div></li>
</ul>
<p>Tasks that <strong>do require</strong> a mobile device for development:</p>
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/Porting_to_a_new_device">Port your phone</a> (or <a href="https://wiki.postmarketos.org/wiki/Installation_guide">install pmOS</a> on it if there's already a port)</li>
<li>Make <a href="https://wiki.postmarketos.org/wiki/Making_good_photos">good photos/videos</a> of devices running pmOS for the <a href="https://wiki.postmarketos.org/wiki/Special:ListFiles">wiki</a> and <del>/r/postmarketOS</del> the <a href="/chats-and-social-media/">Fediverse</a></li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/pulls">Test pull requests on devices</a></li>
<li><a href="https://github.com/postmarketOS/pmbootstrap/issues/598">Get cellular modems working</a></li>
<li><a href="https://github.com/postmarketOS/charging-sdl">Work on the charging UI</a> for the initramfs (C, started by <a href="https://github.com/IanS5">@IanS5</a> and <a href="pavelmachek">@pavelmachek</a>)</li>
<li>Help out <a href="https://github.com/McBitter">@McBitter</a> with <a href="https://wiki.postmarketos.org/wiki/Mediatek">Mediatek bootloader reverse engineering</a></li>
</ul>
<h2 id="closing-words"><a class="toclink" href="#closing-words">Closing Words</a></h2>
<p>What a crazy half year of development we have behind us. Who would have thought that this project would have taken off <em>this much</em>? That such a big community would have emerged out of nowhere? This is the <strong>work of every single contributor</strong>, we can all be proud of what we have achieved and we have <em>lots</em> of potential for the future. Thanks for reading, and now <strong>go party hard on new years eve!</strong></p>
<h2 id="bonus-install_if"><a class="toclink" href="#bonus-install_if">Bonus: <code>install_if</code></a></h2>
<p><em>No fancy pictures here, just a little code snippet and possibly boring implementation details. We've moved this one to the bottom because the post has gotten really long again.</em></p>
<p>In some cases, <strong>device specific config files</strong> are needed <strong>for programs</strong>, such as X11 or Weston. Now we could always bundle these configs with the device package, regardless of the program in question being installed or not. But then again we would <strong>clutter up the filesystem</strong> with useless files, which isn't nice. Thankfully Alpine developer <a href="https://github.com/kaniini">@kaniini</a> <a href="https://github.com/postmarketOS/pmbootsatrap/issues/499#issuecomment-329600202">pointed us</a> at Alpine's excellent <strong><a href="https://wiki.alpinelinux.org/wiki/APKBUILD_Reference#install_if"><code>install_if</code></a></strong> feature, which allows us to automatically install the config <em>if</em> both the program and the device package are installed. We <a href="https://github.com/postmarketOS/pmbootstrap/issues/499">refactored</a> the device packages accordingly.</p>
<div class="codehilite"><pre><span></span><code>weston<span class="o">()</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="nv">install_if</span><span class="o">=</span><span class="s2">"</span><span class="nv">$pkgname</span><span class="s2"> weston"</span>
<span class="w"> </span>install<span class="w"> </span>-Dm644<span class="w"> </span><span class="s2">"</span><span class="nv">$srcdir</span><span class="s2">"</span>/weston.ini<span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="s2">"</span><span class="nv">$subpkgdir</span><span class="s2">"</span>/etc/xdg/weston/weston.ini
<span class="o">}</span>
</code></pre></div>
<p><em>Thanks to: <a href="https://github.com/craftyguy">@craftyguy</a>, <a href="https://github.com/kaniini">@kaniini</a>, <a href="https://github.com/MartijnBraam">@MartijnBraam</a>, <a href="https://github.com/ollieparanoid">@ollieparanoid</a>, <a href="https://github.com/PureTryOut">@PureTryOut</a>, <a href="https://github.com/Wouter92">@Wouter92</a></em></p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=16204775">Hacker News</a></li>
</ul>Why supporting the Librem Phone crowdfunding campaign helps postmarketOS (and friends)https://postmarketos.org/blog/2017/09/24/librem-5/2017-09-24T00:00:00+00:00<h2 id="proprietary-components-make-smartphones-insecure-for-the-masses"><a class="toclink" href="#proprietary-components-make-smartphones-insecure-for-the-masses">Proprietary components make smartphones insecure for the masses</a></h2>
<p>Whenever you buy <em>any</em> smartphone, you get a device full of proprietary components. These are integrated so deeply with each other that they can access everything on your phone, such as the camera, microphone, browser history and chat messages. Since these components are proprietary, they've been designed to make it <strong>impossible for anyone but the vendor to modify</strong>, and they can only be <strong>understood by others through immense efforts</strong>.</p>
<p>Oftentimes, when people succeed in analyzing them, they find <strong>security holes</strong> and sometimes even <a href="https://redmine.replicant.us/projects/replicant/wiki/SamsungGalaxyBackdoor">backdoors</a>. Since these devices are only supported for short periods of time by manufacturers and vendors, they refuse to close newly discovered security holes when the support period has run out. The relatively small number of people who are aware of this issue are forced to buy new devices every few years. Meanwhile the unsuspecting general public doesn't realize how insecure their devices are, thus <strong>lowering security for everyone</strong>. What good is it when you have a protected phone, but most other people you meet and communicate with might as well be carrying around spying devices?</p>
<h2 id="postmarketos-tries-to-fix-existing-devices"><a class="toclink" href="#postmarketos-tries-to-fix-existing-devices">postmarketOS tries to fix existing devices</a></h2>
<p>Our solution is to replace the entire operating systems of these devices with an alternative one, that uses free and open source software wherever feasible. In order to do that, we're bending the security-focused <a href="https://alpinelinux.org">Alpine Linux</a> (you may know it from Docker, but it is <a href="http://git.net/ml/linux.leaf.devel/2005-08/msg00039.html">much older</a>) to work on all kinds of existing mobile devices. In the spirit of real Linux distributions, there is a package manager and <strong>as much freedom for the user as possible</strong>. We aim for a <strong><a href="https://postmarketos.org/blog/2017/05/26/intro/">10 year life-cycle for smartphones</a></strong> and, although we're in pre-alpha state, we have made <a href="https://postmarketos.org/blog/2017/09/03/100-days-of-postmarketos/">quite some progress</a> and have <a href="https://wiki.postmarketos.org/">lots of documentation</a> available. Ideally we fix all security issues from the outdated vendor OS by using <strong>up-to-date software</strong> (e.g. the <a href="https://postmarketos.org/blog/2017/09/03/100-days-of-postmarketos/#mainline-kernel">Linux kernel</a>).</p>
<h2 id="librem-5-phone-does-it-right-by-design"><a class="toclink" href="#librem-5-phone-does-it-right-by-design">Librem 5 phone does it right, by design</a></h2>
<p>The people from Purism provide another way to reach the same goal: They bend <a href="https://debian.org">Debian GNU/Linux</a> for <strong>one specific phone</strong>, which they will create from scratch, the <a href="https://puri.sm/shop/librem-5/">Librem 5</a>. It will have as few proprietary components as necessary, and these will be <strong>isolated in hardware</strong> from the rest of the system. That means, even if someone hacks them through a security hole, those components will be unable to access other components storing or capturing other data (e.g. chat messages.)</p>
<p>Planned <strong>hardware kill-switches</strong> for camera, microphone, wifi, bluetooth and cellular modem will allow you to turn on certain components, which are highly likely to be proprietary, only when needed. Imagine flipping the microphone switch before and after each phone call - that way you could be sure that it can not listen to any private conversations you are having from person to person while carrying your phone around.</p>
<p>It will be possible to <strong>exchange</strong> the <strong>battery</strong> and extend the amount of available storage space with a <strong>microSD</strong> slot, two important characteristics that increase the lifetime of a phone.</p>
<h2 id="common-ground"><a class="toclink" href="#common-ground">Common ground</a></h2>
<p>The Librem 5 is privacy and security focused, so we expect it to have <strong>full disk encryption</strong>. Full disk encryption safeguards the data on your device by requiring a password on when the device is started before any of the data on it is accessible. And without that password, someone else is not able to find out which data is stored on the device, or which programs are installed. In order to type in this password on a PC you would normally use a physical keyboard, but on a phone you will need an <strong>on-screen touch keyboard</strong>. We have put some research into this topic already and, as there was no existing Linux program just for that purpose, we created our own program: <a href="https://github.com/postmarketOS/osk-sdl">osk-sdl</a>. That is one example where the Purism could use a component <strong>started by the postmarketOS community</strong> and make it a shared component we develop and improve with <strong>joined forces</strong>.</p>
<p>User interfaces are another example: Purism will either use <strong><a href="https://www.kde.org/announcements/kde-purism-librem5.php">KDE's plasma-mobile</a></strong> or <strong><a href="https://www.gnome.org/news/2017/09/gnome-foundation-partners-with-purism-to-support-its-efforts-to-build-the-librem-5-smartphone/">Gnome</a></strong>, while postmarketOS is interested in <a href="https://github.com/postmarketOS/pmbootstrap/issues/62">all kinds of mobile-friendly user interfaces</a>. We have done <a href="https://postmarketos.org/blog/2017/09/03/100-days-of-postmarketos/#plasma-mobile-kdes-plasma-desktop-for-phones">early work</a> on plasma-mobile already, and Gnome is <a href="https://pkgs.alpinelinux.org/packages?name=gnome*&branch=edge&repo=&arch=&maintainer=">directly provided</a> by our upstream friends. So no matter which one will they decide to run on the Librem 5, we will benefit from them making sure it is ready for daily usage on mobile phones.</p>
<p>We were happy to learn that the Purism has teamed up with <strong><a href="https://matrix.org/blog/2017/08/24/the-librem-5-from-purism-a-matrix-native-smartphone/">Matrix</a></strong> to provide the <strong>native dialer</strong> and <strong>messaging program</strong>. Despite not involving red or blue pills and an illusion of reality like the famous movie, Matrix is a decentralized open source protocol for real-time communication with state-of-the-art end-to-end encryption. It is a big win for privacy and security, and Librem users will be able to use it by default. Traditional, unencrypted telephony and SMS are also available for use when necessary. The best part for us is of course, that we could <strong>package</strong> the resulting applications <strong>for postmarketOS</strong>, bringing them to a wide range of old devices!</p>
<h2 id="all-or-nothing"><a class="toclink" href="#all-or-nothing">All or nothing</a></h2>
<p>There is a pattern here: Once the Librem 5 development takes off, everything that gets built for it (by Purism or by the wider community) and that is not strictly tied to Debian, can be used by postmarketOS and friends.</p>
<p><a href="https://puri.sm/shop/librem-5/">One Librem Phone costs $599</a>, but it is possible to support the campaign with other amounts of cash (starting from $20). While the price tag for the Librem 5 is high compared to cheap Android phones, keep in mind that it is for a device giving you <strong>freedom, privacy, security</strong> and, considering how active and time-proven the Debian community is, it will likely get <strong>updates until it physically breaks</strong>. The estimated delivery date is January 2019.</p>
<p>No matter which Linux distribution, phone, desktop environment, messenger, init system or libc you prefer: <strong>A successful Librem 5 campaign will rapidly improve the situation for all Linux distributions on phones.</strong> But it's an all or nothing campaign. If our Purism friends don't reach their funding goal, none of these awesome features will be implemented by them and the Librem 5 will not see the light of day.</p>
<p><strong><a href="https://puri.sm/shop/librem-5/">So let's make sure that it succeeds.</a></strong></p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=15324169">Hacker News</a></li>
</ul>100 days of postmarketOShttps://postmarketos.org/blog/2017/09/03/100-days-of-postmarketos/2017-09-03T00:00:00+00:00<h2 id="sustainable-approach-for-linux-on-phones"><a class="toclink" href="#sustainable-approach-for-linux-on-phones">Sustainable Approach For Linux on Phones</a></h2>
<p>We are building an alternative to Android and other mobile operating systems by <em>not</em> forking but <strong>bending the <a href="http://git.net/ml/linux.leaf.devel/2005-08/msg00039.html">time-proven</a> <a href="https://alpinelinux.org">Alpine Linux</a> distribution</strong> to fit our purpose. Instead of using Android's build process, we build small software packages that can be installed with Alpine's package manager. To minimize the amount of effort for maintenance, we want every device to require <strong>only one device-specific package and share everything else</strong>.</p>
<p>At this point our OS is only suitable for fellow hackers who enjoy using the command-line and want to improve postmarketOS. <strong>Telephony or other typical smartphone tasks are not working yet.</strong></p>
<h2 id="why-we-evolve-in-many-directions"><a class="toclink" href="#why-we-evolve-in-many-directions">Why We Evolve in Many Directions</a></h2>
<p>Why don't we focus on one "flagship" device and stop making blog posts until it can be used as daily driver?</p>
<p>Our philosophy is that community-based FLOSS projects need to <strong>become known during the development phase to fellow developers.</strong> Our way of doing that is through periodically posting reports summarizing our <em>real progress</em>.</p>
<p>The postmarketOS community is a collective group of hackers who contribute to this project in their free time. We won't tell someone who wants to, for example, extend postmarketOS to run Doom on their smartwatch that their idea has no benefit to the project's vision. Such activities demonstrate the flexibility of postmarketOS and oftentimes leads to improvements to the project's codebase as new requirements are implemented to cover previously unforeseen use cases. In addition, these <em>fun</em> activities also increase our collective knowledge about the software and hardware we work with. But most importantly we don't want to, or plan to, take the fun away. <strong>Because without being fun and rewarding, a free time project becomes a dead project.</strong></p>
<p>It's not all about running Doom though, there are also individuals in the project who have the most fun by <a href="https://wiki.postmarketos.org/wiki/Milestones">actually bringing the project towards this daily-driver vision</a>. Read on to learn about both the <strong>incredibly beneficial efforts</strong> as well as the <strong>fun exercises</strong> we have done since <a href="https://ollieparanoid.github.io/post/50-days-of-postmarketOS/">the last post</a>!</p>
<h2 id="integrated-qemu-support"><a class="toclink" href="#integrated-qemu-support">Integrated QEMU Support</a></h2>
<p>The idea of providing a device specific package for QEMU was introduced back in July <em>"so it will be easier to try the project and/or develop userspace"</em>. Although the initial PR <a href="https://github.com/postmarketOS/pmbootstrap/pull/56">#56</a> didn't make it, the idea got picked up again and today we can provide you with an implementation of exactly that vision. <strong>All you need to <em>dive right into running postmarketOS on QEMU</em> is to install Python (3.4+), git, QEMU, and run the following commands.</strong> As expected, <code>pmbootstrap</code> does everything in chroots in the <code>install</code> step, so your host operating system does not get touched.</p>
<div class="codehilite"><pre><span></span><code><span class="gp">$ </span>git<span class="w"> </span>clone<span class="w"> </span>https://gitlab.com/postmarketOS/pmbootstrap.git
<span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>pmbootstrap
<span class="gp">$ </span>./pmbootstrap.py<span class="w"> </span>init<span class="w"> </span><span class="c1"># choose "qemu-amd64"</span>
<span class="gp">$ </span>./pmbootstrap.py<span class="w"> </span>install<span class="w"> </span>--no-fde
<span class="gp">$ </span>./pmbootstrap.py<span class="w"> </span>qemu
</code></pre></div>
<p><em>Thanks to: <a href="https://github.com/mmaret">@mmaret</a>, <a href="https://github.com/MartijnBraam">@MartijnBraam</a>, <a href="https://github.com/PabloCastellano">@PabloCastellano</a></em></p>
<h2 id="early-work-on-new-user-interfaces"><a class="toclink" href="#early-work-on-new-user-interfaces">Early Work on New User Interfaces</a></h2>
<p>Since postmarketOS was released, we have been using Wayland's reference compositor Weston as a UI. However, as stated in <a href="https://github.com/postmarketOS/pmbootstrap/issues/62">#62</a>, it <em>"is a cool demo, but far from a usable day-to-day shell people can work with. </em><em>We need to provide a sane UI.</em><em>"</em></p>
<h3 id="plasma-mobile-kdes-plasma-desktop-for-phones"><a class="toclink" href="#plasma-mobile-kdes-plasma-desktop-for-phones">plasma-mobile (KDE's plasma desktop for phones)</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/video/2017-09-03/plasma-mobile-qemu.webm"><img alt="QEMU booting up to plasma-mobile" class="border" src="/static/img/2017-09-03/plasma-mobile-qemu-thumb.gif" /></a></p>
</div><div class="grid-text">
Alpine Linux does not have any KDE programs or libraries packaged yet, so <a href="https://github.com/PureTryOut">@PureTryOut</a> went through the colossal task of packaging, looking for patches, compiling and debugging <strong>more than 80 pieces of plasma-mobile related software</strong>. This is the very minimum to get the mobile version of KDE's Plasma desktop running.</p>
<p>Alpine provided quite a few challenges along the way, such as the usage of the more standards compliant musl libc instead of the commonly used glibc.
</div></div>
<p>Luckily <a href="https://phabricator.kde.org/p/mpyne">@mpyne</a> <a href="https://phabricator.kde.org/D6596">already provided patches</a> in KDE's bugtracker that we were able to use. <a href="https://github.com/bhush9">@bshah</a> not only helped us with the port, but also mentioned postmarketOS in his plasma-mobile talk at KDE's Akademy 2017 (<a href="https://blog.bshah.in/slides/akademy2017/">slides</a>, <a href="https://files.kde.org/akademy/2017/364-plasma-mobile.mp4">video</a>). This is definitely a huge step in the direction towards making plasma-mobile work on postmarketOS! We're excited to see where this is heading, and would <strong>greatly appreciate any help from interested developers</strong>. Jump right in with QEMU and the <a href="https://github.com/PureTryOut/pmos-plasma-mobile">unofficial binary packages for KDE/Plasma</a>!</p>
<p><em>Thanks to: <a href="https://github.com/bhush9">@bshah</a>, <a href="https://phabricator.kde.org/p/mpyne">@mpyne</a>, <a href="https://github.com/PureTryOut">@PureTryOut</a></em></p>
<h3 id="hildon"><a class="toclink" href="#hildon">Hildon</a></h3>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-09-03/hildon.png"><img alt="Hildon in postmarketOS" src="/static/img/2017-09-03/hildon-thumb.png" /></a></p>
</div><div class="grid-text">
The popular Nokia N900 originally shipped with a desktop called <em>Hildon</em>, which ran on its Debian-based <a href="https://maemo.org">Maemo</a> operating system. <a href="https://github.com/NotKit">@NotKit</a> started a port currently containing the minimum packages required to get working: a modified, mobile friendly, GTK+2 and 12 other packages. A modernized GTK+3 version of Hildon is being worked on at <a href="https://talk.maemo.org/showthread.php?t=96800">talk.maemo.org</a>, which we could package in the future.</p>
<p>While Hildon is based on X11 instead of Wayland, it is still a lightweight phone interface suitable for older devices.
</div></div>
<em>Thanks to: <a href="https://github.com/NotKit">@NotKit</a></em></p>
<h2 id="of-course-it-runs-doom"><a class="toclink" href="#of-course-it-runs-doom">"Of Course it Runs Doom!"</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-09-03/doom-xperia-z2.png"><img alt="Doom on pmOS with freedreno" src="/static/img/2017-09-03/doom-xperia-z2-thumb.png" /></a></p>
</div><div class="grid-text">
Speaking of classic interfaces, <a href="https://github.com/Opendata26">@Opendata26</a> made an obligatory Doom port. In the photo is his <strong><a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z2_Tablet_(sony-castor-windy)">Xperia Z2 tablet</a></strong> with a 4.3 kernel and the open source userspace driver <strong><a href="https://github.com/freedreno/freedreno/wiki">freedreno</a></strong>. In addition to running Doom, he also enabled the driver upstream in Alpine's <code>mesa</code> package so that all Alpine users can benefit from it!
</div></div>
Even though freedreno provides a FOSS implementation of the userspace portion of the driver, it still requires a proprietary firmware file for 3D acceleration. This test was made with X11, as it currently does not work with a Wayland compositor. Further debug will be required to determine why this is the case!</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-09-03/doom-lg-lenok.png"><img alt="Doom on a smartwatch with pmOS" src="/static/img/2017-09-03/doom-lg-lenok-thumb.png" /></a></p>
</div><div class="grid-text">
Next up is <a href="https://github.com/JamesHealdUK">@Bloo</a>, who decided to port postmarketOS to his <strong><a href="https://wiki.postmarketos.org/wiki/LG_G_Watch_R_(lg-lenok)">LG G Watch R</a></strong>, giving us the <strong>first smartwatch port</strong>! In order to take out the watch and shout <em>"It's time to play Doom!"</em> whenever asked for the time, he decided to compile and run it on his device too. In the photo on the right, Doom is running in its <strong>native resolution</strong> of 320x240 (compare to the watch at 320x320) in Weston through XWayland. For both the Xperia Z2 and LG G Watch R, <a href="https://www.chocolate-doom.org/">Chocolate Doom</a> was used and is being packaged for postmarketOS now.
</div></div>
<p><em>Thanks to: <a href="https://github.com/JamesHealdUK">@Bloo</a>, <a href="https://github.com/Opendata26">@Opendata26</a></em></p>
<h2 id="other-new-devices"><a class="toclink" href="#other-new-devices">Other New Devices</a></h2>
<p>We have <strong>nine</strong> new devices in the last 50 days! In addition to the two mentioned above, we also have:</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-09-03/nexus7.png"><img alt="Nexus 7 running Weston" class="fr ml3 mb3" src="/static/img/2017-09-03/nexus7-thumb.png" /></a></p>
</div><div class="grid-text">
<ul>
<li><a href="https://wiki.postmarketos.org/wiki/Google_Nexus_7_2012_(asus-grouper)">Google Nexus 7 (2012) <code>(asus-grouper)</code></a> <em>(photo)</em></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC_Desire_HD_(htc-ace)">HTC Desire HD <code>(htc-ace)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/HTC_Desire_(htc-bravo)">HTC Desire <code>(htc-bravo)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Mozilla_Flame_(t2m-flame)">Mozilla Flame <code>(t2m-flame)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Galaxy_Note_II_(samsung-n7100)">Galaxy Note II <code>(samsung-n7100)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z1_Compact_(sony-amami)">Sony Xperia Z1 Compact <code>(sony-amami)</code></a></li>
<li><a href="https://wiki.postmarketos.org/wiki/Sony_Xperia_Z_(sony-yuga)">Sony Xperia Z <code>(sony-yuga)</code></a>
</div></div></li>
</ul>
<p><em>Thanks to: <a href="https://github.com/antonok-edm">@antonok</a>, <a href="https://github.com/ata2001">@ata2001</a>, <a href="https://github.com/JamesHealdUK">@Bloo</a>, <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/kskarthik">@kskarthik</a>, <a href="https://github.com/Victor9">@Victor9</a>, <a href="https://github.com/wouter92">@wfranken</a>, <a href="https://github.com/yuvadm">@yuvadm</a> and everyone who helped them in the chat</em></p>
<h2 id="initramfs-is-full-of-new-features"><a class="toclink" href="#initramfs-is-full-of-new-features">Initramfs is Full of New Features</a></h2>
<p>The <code>initramfs</code> is a small filesystem with an <code>init.sh</code> file that prepares the environment before it passes control to the init system running in the real root partition. For postmarketOS we use it to <strong>find and optionally unlock the root</strong> partition.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-09-03/osk-wave.gif"><img alt="on screen keyboard" class="border" src="/static/img/2017-09-03/osk-wave-thumb.gif" /></a></p>
</div><div class="grid-text">
<a href="https://github.com/craftyguy">@craftyguy</a> and <a href="https://github.com/MartijnBraam">@MartijnBraam</a> have started to write a new <strong>on-screen keyboard</strong> named <a href="https://github.com/postmarketOS/osk-sdl"><code>osk-sdl</code></a> from scratch because we couldn't find an existing one that did not depend on heavy GUI libraries. <code>osk-sdl</code> will allow us to <strong>unlock</strong> the root filesystem directly with the device's touch screen or physical keyboard (if applicable). It is currently in the process of being integrated into postmarketOS, after which it will fully replace the current method of unlocking via telnet. If unlocking via telnet is a requirement for you, please reach out to us and let us know!
</div></div>
<p>To work around the tight size limitations on some devices which do not support having a large <code>boot.img</code> file, <a href="https://github.com/drebrez">@drebrez</a> implemented the <strong><code>initramfs-extras</code></strong> trick: a second initramfs file stores <strong>all the big files</strong> and is placed in the unencrypted <code>boot</code> partition. The real initramfs then detects this file by its label and extracts everything from <code>initramfs-extras</code>. At this point the <code>init</code> script works like before and has all files it needs!</p>
<p>Speaking of small size: the system image generated in the installation step doesn't have a fixed size anymore, it now adjusts dynamically! After flashing and booting, the initramfs will check whether the flashed image takes up all available space of the system partition and, if it does not, <strong>automatically resizes the partition to use all available space</strong>.</p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-09-03/splash.png"><img alt="Splash screen rendered for the Samsung Galaxy SII" class="border" src="/static/img/2017-09-03/splash-thumb.png" /></a></p>
</div><div class="grid-text">
Check out that cool new <strong>splash screen</strong> (<a href="https://github.com/postmarketOS/pmbootstrap/pull/206">#206</a>)! It gets built dynamically for the device's screen size whenever we build the initramfs. So it always fits perfectly! And in case you don't like it, it comes with a customizable <a href="https://github.com/postmarketOS/pmbootstrap/blob/314c17e03cf8cddfd0f385d9db2f23f76f9a0418/aports/main/postmarketos-splash/config.ini">config</a>!
</div></div>
<p>Last but not least we did a lot of refactoring, such as placing the <code>deviceinfo</code> file inside the initramfs for easy access to device-specific settings and adding support for a configfs-based USB network setup to help out some devices that need it.</p>
<p><em>Thanks to: <a href="https://github.com/craftyguy">@craftyguy</a>, <a href="https://github.com/Defcat">@Defcat</a>, <a href="https://github.com/drebrez">@drebrez</a>, <a href="https://github.com/ollieparanoid">@ollieparanoid</a>, <a href="https://github.com/PabloCastellano">@PabloCastellano</a>, <a href="https://github.com/MartijnBraam">@MartijnBraam</a></em></p>
<h2 id="interoperability"><a class="toclink" href="#interoperability">Interoperability</a></h2>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-09-03/twrp.png"><img alt="Recovery zip installation in TWRP" class="border" src="/static/img/2017-09-03/twrp-thumb.png" /></a></p>
</div><div class="grid-text">
With all the recent device porting we have learned that there are <em>many</em> different flashing methods required for different devices. In some cases it isn't even possible to directly write to the system partition on a device but it is possible to flash a <strong>recovery zip</strong> through a recovery operating system, such as the popular <a href="http://twrp.me/">TWRP</a>. <a href="https://github.com/ata2001">@ata2001</a> made it possible to create such an image with <code>pmbootstrap install --android-recovery-zip</code>. This allows flashing a device by <em>sideloading</em> this image while TWRP is running with <code>pmbootstrap flasher --method=adb sideload</code>!
</div></div>
Some older Samsung phones are not <code>fastboot</code> compatible, but their bootloader implements a so-called <code>odin</code>-mode. Samsung expects people to install their proprietary, Windows-only <em>Odin</em> program to be able to flash images in this mode. The protocol has been reverse engineered for some devices and can be used with the open source <a href="http://glassechidna.com.au/heimdall/">heimdall</a> program, which has been wrapped with our <code>pmbootstrap</code>. But for some older phones the necessary reverse engineering work has not been done and you still have to run the proprietary program to get anything working at all. <a href="https://github.com/drebrez">@drebrez</a> has implemented an <strong>Odin-compatible export</strong> option to help out folks in this situation: <code>pmbootstrap flasher export --odin</code>.</p>
<p><em>Thanks to: <a href="https://github.com/ata2001">@ata2001</a>, <a href="https://github.com/drebrez">@drebrez</a></em></p>
<h2 id="mainline-kernel"><a class="toclink" href="#mainline-kernel">Mainline Kernel</a></h2>
<p>One of our previously stated goals is using the mainline Linux kernel on <strong>as many mobile devices as possible</strong>. This is not as easy as it might sound, since many Linux-based smartphones (Android) require binary drivers which depend on very specific kernel versions. It's a tremendous task to rewrite these drivers to work with the current kernel APIs. </p>
<p><div class="grid"><div class="grid-side">
<a href="/static/img/2017-09-03/n900-mainline.png"><img alt="N900 running mainline kernel" src="/static/img/2017-09-03/n900-mainline-thumb.png" /></a></p>
</div><div class="grid-text">
Nevertheless, some people have been doing that since long before postmarketOS existed. In the case of the <strong>Nokia N900</strong> this has been going on for some number of years and almost all components are now supported in the mainline kernel. This has allowed us to <strong>use the mainline kernel as the default</strong> kernel for the N900, jumping from Maemo's <code>2.6.x</code> to mainline <code>4.12</code>!
</div></div>
Most desktop Linux distributions not only provide the kernel from the same source code but also use <strong>one binary kernel package for multiple devices</strong> for systems of the same CPU architecture. Since this makes maintenance easier, we follow that approach with our <code>linux-postmarketos</code> package. This package configures the kernel to support multiple devices at once, currently the N900 and QEMU, by supporting <strong>kernel modules</strong> and <strong>multiple device trees</strong>. On a side note, it is currently not possible for us to use Alpine's kernels because they do not have support for many components found in smartphones and we wouldn't be as flexible as we are now with temporarily applying patches.</p>
<p><em>Thanks to: <a href="https://github.com/craftyguy">@craftyguy</a>, <a href="https://github.com/MartijnBraam">@MartijnBraam</a> (<a href="https://github.com/postmarketOS/pmbootstrap/pull/228">#228</a>, <a href="https://github.com/postmarketOS/pmbootstrap/pull/159">#159</a>)</em></p>
<h2 id="new-infrastructure"><a class="toclink" href="#new-infrastructure">New Infrastructure</a></h2>
<p>We now have several different key pieces of infrastructure in place to support ongoing project development! The first and most obvious if you are a returning reader: we have a brand new <strong>homepage</strong> that hosts both our main landing page, this blog, and has links to all of our online resources. You might have also seen our new <strong>logo</strong> which - besides looking great - is <a href="https://github.com/postmarketOS/postmarketos.org/blob/2e4be89ee8ec656620203fa825e088421afcf092/logo/__init__.py">rendered programmatically</a>!</p>
<p>Our GitHub-based <strong>wiki</strong> has served us well up until now, but we have outgrown it. We've since <a href="https://gist.github.com/ollieparanoid/6ac9122e31258a7ab8498a362b249fa8">migrated</a> to a <a href="https://wiki.postmarketos.org">proper MediaWiki server</a> with complete <a href="https://github.com/postmarketOS/wiki">public backups</a>. Did you know that <code>git</code> has <a href="https://github.com/Git-Mediawiki/Git-Mediawiki/wiki">MediaWiki support</a> nowadays?</p>
<p><strong>Travis CI</strong> now verifies the checksums of downloads in our package recipes and also runs <code>shellcheck</code> over more scripts across the source tree. With these changes, in combination with numerous bug fixes and requiring that nearly all changes to the <code>master</code> branch are presented as PRs for review, <a href="https://github.com/postmarketOS/pmbootstrap"><code>pmbootstrap</code></a> runs pretty stable now.</p>
<p>With over 100 people in the <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">Matrix/IRC</a> channel and <em>lots</em> of messages coming in every day, we decided to create <strong><code>##postmarketOS-offtopic</code></strong> to keep the backlog in <code>#postmarketOS</code> a bit shorter.</p>
<p><em>Thanks to: <a href="https://github.com/ata2001">@ata2001</a>, <a href="https://github.com/CmdrWgls">@CmdrWgls</a>, <a href="https://github.com/MartijnBraam">@MartijnBraam</a>, <a href="https://github.com/ollieparanoid">@ollieparanoid</a>, <a href="https://github.com/yuvadm">@yuvadm</a></em></p>
<h2 id="raw-numbers"><a class="toclink" href="#raw-numbers">Raw numbers</a></h2>
<ul>
<li><code>></code>100 people in the <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">channel</a></li>
<li><a href="https://github.com/postmarketOS/pmbootstrap">pmbootstrap</a><ul>
<li>555 stargazers</li>
<li>223 closed PRs</li>
<li>185 closed issues</li>
<li>75 open issues</li>
<li>55 watchers</li>
<li>48 forks</li>
<li>27 contributors (<code>git shortlog --summary --numbered | wc -l</code>)</li>
</ul>
</li>
</ul>
<h2 id="closing-words"><a class="toclink" href="#closing-words">Closing words</a></h2>
<p>What you see here is only the tip of the iceberg. So much work has gone into fixing bugs, and little improvements, that it would be ridiculous to go through the effort and list them all. The community has grown so fast in such a short time and we have <strong>people with all kinds of skills</strong> on board, ranging from Linux experts to kernel hackers to people who <a href="https://wiki.postmarketos.org/wiki/Mediatek">reverse engineer bootloaders</a> (hi <a href="https://github.com/McBitter">@McBitter</a>!). We collaborate with people from other projects as well, such as <a href="https://github.com/pavelmachek">@pavelmachek</a>, who is close to using his N900 as a daily driver with his own distribution, recently <a href="https://github.com/postmarketOS/pmbootstrap/issues/438">just reached out</a> to us.</p>
<p>So if you read through the whole post, you are probably interested in what we do. Consider contributing to the project, the <strong>entry barrier is really low</strong>. <a href="https://github.com/postmarketOS/pmbootstrap/"><code>pmbootstrap</code></a> automates everything for you and we are more than happy to help you through any issues you encounter in the <a href="https://wiki.postmarketos.org/wiki/Matrix_and_IRC">chat</a>. There are also a lot of <a href="https://github.com/postmarketOS/pmbootstrap/issues">opportunities to help with development</a>, so there's plenty to do. And plenty of fun to have. <strong>Join us and tell your friends!</strong></p>
<h2 id="comments"><a class="toclink" href="#comments">Comments</a></h2>
<ul>
<li><a href="https://news.ycombinator.com/item?id=15160137">HackerNews</a></li>
</ul>Aiming for a 10 year life-cycle for smartphoneshttps://postmarketos.org/blog/2017/05/26/intro/2017-05-26T00:00:00+00:00<p><a href="/static/img/2017-05-26/i9100-filled.jpg"><img alt="Samsung Galaxy SII (i9100) running postmarketOS" class="border" src="/static/img/2017-05-26/i9100-filled-thumb.jpg" /></a></p>
<p><em>Introduction post to <a href="https://github.com/postmarketOS/">postmarketOS</a>, a touch-optimized, pre-configured <a href="https://alpinelinux.org/">Alpine Linux</a> with own packages, that can be installed on smartphones. (Not usable for most people yet!)</em></p>
<h2 id="minimalistic-linux-distributions-run-fine-on-ten-year-old-pcs"><a class="toclink" href="#minimalistic-linux-distributions-run-fine-on-ten-year-old-pcs">Minimalistic Linux distributions run fine on ten year old PCs.</a></h2>
<p>It is 2017. Pick an average PC from 2007 and install a minimal Linux based operating system. You will be able to do basic computing tasks (eg. surfing the web, reading E-Mails, listening to music, chatting) just like on an <em>expensive</em> modern PC. You will even get security updates, so your old computer is protected, just like as a new one.</p>
<h2 id="why-are-androidlinux-phones-different"><a class="toclink" href="#why-are-androidlinux-phones-different">Why are Android/Linux phones different?</a></h2>
<p>Androids architecture is based on <strong>forking</strong> (one might as well say <em>copy-pasting</em>) <strong>the entire code-base for each and every device <em>and</em> Android version.</strong> And then working on that independent, basically instantly incompatible version. Especially adding device-specific drivers plays an important role.</p>
<p>This workflow makes it next to impossible to patch all Android devices with security updates in time or at all (<em>Stagefright</em> vulnerabilities for example rendered <a href="https://threatpost.com/stagefright-2-0-vulnerabilities-affect-1-billion-android-devices/114863/">one billion devices</a> vulnerable). And even if the vendor provides updates, it will only be for a limited time and then you must buy a new device to get security updates or the latest Android version. How convenient!</p>
<p>Alright, so there is the <a href="https://lineageos.org/">LineageOS</a> community, which provides weekly updates for an impressive number of smartphones. They provide a practical solution today, and we are very grateful for that. However, such Android based projects will always run behind Google and the phone industry, fixing only symptoms but never the root-cause.</p>
<p><em>This is just the tip of the iceberg. Android has way more problems, read Cascardo's <a href="https://cascardo.eti.br/blog/GNU_on_Smartphones_part_II/">GNU on Smartphones (part II)</a> for more nightmares.</em></p>
<h2 id="we-can-fix-this-as-a-community"><a class="toclink" href="#we-can-fix-this-as-a-community">We can fix this as a community.</a></h2>
<p>Here is the solution: Bend an existing Linux distribution to run on smartphones. Apply all necessary changes as small patches and upstream them, where it makes sense.</p>
<p>Of course we are not the only ones, that came to this conclusion - especially in the last few weeks with the <a href="https://halium.org/">Halium</a> project rising <em>(greetings!)</em>. We are all-in for working together — sharing udev rules, merging Android kernels together, whatever makes sense!</p>
<p><a href="https://ollieparanoid.github.io/img/2017-05-26/i9100/telnet.jpg"><img alt="Unlocking encrypted rootfs via telnet" class="border" src="https://ollieparanoid.github.io/img/2017-05-26/i9100/telnet-thumb.jpg" title="Unlocking encrypted rootfs via telnet" /></a></p>
<h2 id="postmarketos-architecture"><a class="toclink" href="#postmarketos-architecture">postmarketOS architecture</a></h2>
<p>We're working on an Alpine Linux based distribution called postmarketOS where each phone will have <strong>only one <a href="https://github.com/postmarketOS/pmbootstrap/tree/master/aports/device/device-samsung-i9100/">unique</a> <a href="https://github.com/postmarketOS/pmbootstrap/tree/master/aports/device/device-lg-mako">package</a></strong> — all other packages are shared among all devices.</p>
<p>These <code>device-$vendor-$name</code> packages contain a so-called <code>/etc/deviceinfo</code> file, which <a href="https://github.com/postmarketOS/pmbootstrap/blob/master/aports/device/device-samsung-i9100/deviceinfo">describes</a> <a href="https://github.com/postmarketOS/pmbootstrap/blob/master/aports/device/device-lg-mako/deviceinfo">what</a> makes the device special: SD card availability, which flash software to use and other information. The file format is not stable yet, and once we have common kernels for multiple devices, We'd like to include the required modules and <code>dtb</code> name.</p>
<p>And just to make it clear, postmarketOS does not fit the Halium model, as it avoids the Android build system entirely and does <em>not</em> run any part of the Android userspace next to its more or less typical Linux userspace. <em>(At least not in the regular install, but it could come at some point in the future as optional compatibility layer for Android applications if someone wants to work on it.)</em></p>
<h2 id="pmbootstrap"><a class="toclink" href="#pmbootstrap">pmbootstrap</a></h2>
<p><em>Technical details incoming! If you're not into that, skip this section.</em></p>
<p>Alpine Linux is <em>really small</em>. A base installation is only about 6 MB in size and takes not more than a few seconds to extract! Thanks to this characteristic, we can have a bootstrap program that abstracts everything in <a href="https://en.wikipedia.org/wiki/chroot">chroots</a> and therefore basically runs on top of any Linux distribution, which has Python 3 and the <code>openssl</code> command line program available.</p>
<p>Consequently, the host system does not get touched when installing the required programs (<a href="https://en.wikipedia.org/wiki/Android_software_development#Fastboot"><code>fastboot</code></a> etc.) and your distribution doesn't even need to have them packaged.</p>
<p>Quick feature rundown:</p>
<ul>
<li>Chroot setup (with distro-independent <a href="https://wiki.debian.org/QemuUserEmulation">QEMU user emulation</a>):<ul>
<li><code>x86_64</code>* (building, flashing, ...)</li>
<li><code>armhf</code>* (building)</li>
<li><code>armhf</code>* (target rootfs)</li>
</ul>
</li>
<li>Clean chroot shutdown (<code>umount</code>) and zapping</li>
<li>Build software as packages:<ul>
<li>Wraps <code>abuild</code>, the <a href="https://github.com/alpinelinux/abuild/blob/master/abuild.in#L3">"light version of <code>makepkg</code>"</a></li>
<li>Alpine Linux' <a href="https://wiki.alpinelinux.org/wiki/APKBUILD_Reference"><code>APKBUILD</code>s</a> are very similar to Arch Linux' <code>PKGBUILD</code>s</li>
</ul>
</li>
<li><a href="https://en.wikipedia.org/wiki/Cross_compiler">Cross-compile</a> <strong>all</strong> <code>armhf</code>-packages:<ul>
<li>Linux Kernel: build with cross-compiler in <code>x86_64</code> chroot</li>
<li>Other: build in <code>armhf</code> chroot, use cross-compiler with <a href="https://en.wikipedia.org/wiki/distcc"><code>distcc</code></a> from <code>x86_64</code> chroot (<a href="https://archlinuxarm.org/wiki/Distcc_Cross-Compiling">alarm-style</a>)</li>
<li>Use Alpine Linux' shipped modern <code>gcc</code>, no pre-built Android toolchain</li>
</ul>
</li>
<li>Effective caching out of the box (survives chroot zaps):<ul>
<li><a href="https://ccache.samba.org/"><code>ccache</code></a> (also works with <code>distcc</code>/cross-compiler)</li>
<li>Alpine Linux package cache</li>
</ul>
</li>
<li>Installation targets:<ul>
<li>Raw image file (flash as "system" partition)</li>
<li>SD card</li>
</ul>
</li>
<li>Flasher abstraction:<ul>
<li><a href="https://en.wikipedia.org/wiki/Android_software_development#Fastboot"><code>fastboot</code></a></li>
<li><a href="http://glassechidna.com.au/heimdall/"><code>heimdall</code></a></li>
<li>... really easy to add more!</li>
</ul>
</li>
<li>Logging:<ul>
<li>all shell commands executed are logged in an extra file</li>
<li>readable overview is displayed on the screen</li>
</ul>
</li>
<li>Security:<ul>
<li>Initial package manager download<ul>
<li>Signature verification with <code>openssl</code> against keys shipped with pmbootstrap</li>
<li>Minimum installed version check (for downloaded package and version reported by the extracted binary)</li>
</ul>
</li>
<li>All executed shell commands get properly escaped with Python's built-in <a href="https://docs.python.org/3/library/shlex.html">shlex</a></li>
<li>Working testcases for the above two points</li>
<li>Only using root rights where necessary (through sudo)</li>
<li>No default passwords in the installation: The <code>install</code> action asks for the <em>user's</em> and for the <em>root partition</em> password.</li>
</ul>
</li>
</ul>
<p><small>* <code>x86_64</code>/<code>armhf</code>: Example architectures for host/target. The code is generic, so it should work with any architectures supported by Alpine Linux.</small></p>
<h2 id="future-goals-and-where-you-could-help"><a class="toclink" href="#future-goals-and-where-you-could-help">Future goals and where <em>you</em> could help</a></h2>
<p>Rough direction of where we'd like postmarketOS to head to. In case you're a hacker who wants to help, feel free to do so. But please write into the <a href="https://github.com/postmarketOS/pmbootstrap/issues">tracker</a> before starting serious work. This way we can make sure, that we do not have redundant work.</p>
<h3 id="devices"><a class="toclink" href="#devices">Devices</a></h3>
<p>Pick an old Android device, that you don't need anymore and start porting postmarketOS for it. It should be pretty straight forward. One <code>device-*</code> package, one for the kernel, calibrate the touchscreen, and the demos should more or less work already!</p>
<p>If you're feeling adventurous, try a non-Android device. <a href="https://en.wikipedia.org/wiki/OpeniBoot">How about iPhones</a>?</p>
<h3 id="drivers"><a class="toclink" href="#drivers">Drivers</a></h3>
<p>Make the following peripherals work:</p>
<ul>
<li>WiFi</li>
<li>Audio</li>
<li>Modem (Phone calls, mobile internet)</li>
<li>Hardware buttons (Volume keys, home button)</li>
<li>Camera</li>
<li>...</li>
</ul>
<p>In most cases, the drivers are already provided by the Android/LineageOS kernels, that we currently use and only need to be configured in the userspace (for example with <a href="https://en.wikipedia.org/wiki/Udev">udev rules</a>).</p>
<p>The long time goal is using the <a href="https://lwn.net/Articles/680109/">mainline kernel</a>.</p>
<h3 id="phone-interface"><a class="toclink" href="#phone-interface">Phone interface</a></h3>
<p>postmarketOS is developed in the spirit of regular Linux distributions, so there's no problem in having multiple phone interfaces (just like KDE/Gnome/XFCE/...) and let the user choose.</p>
<p>See the current status in <a href="https://github.com/postmarketOS/pmbootstrap/issues/62">#62</a>.</p>
<h3 id="security"><a class="toclink" href="#security">Security</a></h3>
<p>Great care has been taken to make pmbootstrap safe, as it will run on productive systems of postmarketOS developers. This is not the case for postmarketOS in its current proof-of-concept state (Weston runs as root, ...) so we must work on that before it can be used in real life. Even better would be <a href="https://en.wikipedia.org/wiki/Privilege_separation">privilege separation</a> throughout the entire OS.</p>
<p><em>This post was originally published <a href="https://ollieparanoid.github.io/post/postmarketOS">here</a>. It has been slightly modified to remove outdated information and to reflect the community efforts.</em></p>
<h3 id="photos"><a class="toclink" href="#photos">Photos</a></h3>
<p><div class="grid"><div class="grid-bottom">
<a href="/static/img/2017-05-26/i9100-demos.jpg"><img alt="postmarketOS demos menu" src="/static/img/2017-05-26/i9100-demos-thumb.jpg" /></a>
<a href="/static/img/2017-05-26/i9100-firefox.jpg"><img alt="Firefox running in XWayland" src="/static/img/2017-05-26/i9100-firefox-thumb.jpg" /></a>
<a href="/static/img/2017-05-26/i9100-htop.jpg"><img alt="htop in two weston-terminals" src="/static/img/2017-05-26/i9100-htop-thumb.jpg" /></a>
<a href="/static/img/2017-05-26/i9100-smoke.jpg"><img alt="Weston smoke demo" src="/static/img/2017-05-26/i9100-smoke-thumb.jpg" /></a>
<a href="/static/img/2017-05-26/mako-editor.jpg"><img alt="lg-mako: colors are red, but weston-editor works due to the bigger screen size" src="/static/img/2017-05-26/mako-editor-thumb.jpg" /></a>
</div></div>