The road to daily-drivable mainline phones

September 29, 20265 min. read

Radxa Dragon Q6A, Fairphone 5 and Motorola Edge 30 on top of a Nura-stickered laptop

We have shown that running mainline Linux on your phone is a real possibility for highly invested Linux enthusiasts. Now how do we get from there to making it usable for everybody else who just wants a working phone?

Two important segments of the road towards this destination are Duranium and Hardware CI. This blog post is about the third one: reference devices!

Members of the Nura team have joined forces to build maintainer teams for three of the many devices Nura runs on to push them across the finishing line and make them suitable for everyday use with Nura. More on the actual workflow comes further below, let's start with defining the goal in detail.

New "main" category

We categorize devices into "main", "community", "testing", "downstream" and "archived". The "main" category was emptied with the v24.12 release. With PMCR-0009 we have re-evaluated what we want to have in the "main" device category. Here is the summary:

Set new requirements for the “main” device category to highlight selected device ports which are well-tested in hardware CI and set up to stay in “main” for a long time through strong maintainership.

Change the meaning of the “main” category to not only indicate that more features are working than in the “community” category, but also that the Nura team is highly invested in keeping the device in the “main” category and takes on responsibilities to make this likely.

Maintainers of devices in other categories are welcome to use some of these new requirements for “main” as blueprint for their devices as well, in order to get similar reliability and maintainership improvements for their devices.

Fully mainline

After many discussions (the PMCR merge request had 151 comments), we have arrived at high quality requirements for ports in this category. Among others:

This means that the resulting ports are essentially fully mainlined and can not only be used with Nura, but also relatively easily with any other Linux distribution. There will be one UI-specific aarch64 image that can be flashed on all "main" aarch64 devices. Getting Linux kernel security patches will be trivial, as we only need to update our generic kernel packages and then get them for all devices in the "main" category at once.

Device features

Regarding device features, "main" category requirements now have:

The working features should allow to use the device in most common use cases. A phone for example would typically have calls, SMS, mobile data, Wi-Fi, audio, battery charging, Bluetooth and camera. Exceptions can be made by the device maintainer team, together with reasoning why they are necessary (e.g. fingerprint reader is not working because the driver is missing). The Nura team decides if the port is complete enough for the main category based on that list.

Device maintainer team

In order to pull this off, each device must have a team of maintainers that consists of at least 5 people, of which the majority are part of the Nura team. Between these people, a list of responsibilities must be covered. As with the other requirements listed above, this is an ideal the team would be working towards for eventually getting the device into main. The team can consist of fewer people and have a smaller scope initially.

From the list of responsibilities, most importantly:

Workflow

So how can your favorite device get into the main category? We have thought hard about this and came up with the following workflow:

Financing

Most of the work done in Nura is volunteer-based. Therefore, we cannot really promise ETAs for this project. Still, donations make it possible to finance development and HW-CI hardware. In some specific cases we might even be able to directly fund development work (e.g. q6voice(d)) too. We are also working on applying for grants to potentially support part of this project.

If you are interested in supporting this project, you can make sure that some of your donations will go specifically to this project! If you want to get in touch for some bigger-targeted donations to directly support development, we would also be happy to hear from you at board at postmarketos dot org (emails are not migrated to nura.eco yet).

Initial candidates

Together with this blog post, we have created three initial issues in the new-device-teams project:

All of these are based on the SM7325 SoC for which significant mainline support exists already, to the point that we believe there is a good chance to eventually fulfill all requirements needed for the new main category. For all of these we are already able to use UART.

The Radxa Dragon Q6A is a single-board computer, which means it will be much easier to get this moved to main first compared to actual phones. Fairphone as OEM is ideologically very aligned with our project, while the Edge 30 is a cheaper phone that is easier to obtain in some regions.

Get involved

Now it's your turn. If you would like to see one of these devices become well maintained in Nura to the point that you can daily drive them without making compromises, consider joining their device maintainer teams. You don't even need to be a programmer to help out, there are many non-coding tasks such as testing, organization, triaging issues etc. that are super important as well and ensure that the programmers don't burn out.

If you are significantly interested in improving another device port (even if the end-goal is not main), look through the existing issues. If it is not there, consider creating a new issue and get the ball rolling.

This blog post was written by Pablo and Oliver.