One of the best ways to end the year is to visit the Chaos Communication Congress. It has everything a hacker's heart desires - from amazing talks to workshops and so much creativity and so many interesting people in one place! The 38C3 had a small Linux on Mobile assembly and meetup as well as a nice smartphone upcycling art project. Thanks to everybody who came by!
Organizational
The homepage has been updated to feature our new mission statement (!315):
postmarketOS develops free and open-source software to extend the life of consumer electronics. By empowering people to have full control of their devices, we promote a healthier and more sustainable society.
This sums up our goals in just a few words and help us guide our decisions. Below that it says what we mean with sustainability and full control in more detail in addition to some more new text. Read it in full by clicking on Home. Thanks Clayton, Bryant, Pablo, Markus, Oliver!
Besides that, we have the following organizational news:
New IRC and Matrix channels for audio debugging (#postmarketos-audio) and hacking on amlogic TV boxes and boards. Thanks Ferass, Oliver!
We have improved the process for chat moderation. If somebody joins one of our chats and starts sending spam, insulting people or misbehaves in other ways (see Code of Conduct) then it is now possible to request moderation by temporarily joining a specific room as explained on the CoC page. We are now also listing who the chat moderators are on the CoC page for more transparency. Thanks Anjan, Casey, Clayton, Ferass, Luca, Stefan, Oliver, Pablo, Bart!
After some discussion we decided to bridge our Mastodon account over to Bluesky. We prefer the Fediverse and Mastodon as they are built on values closer to ours and are more decentralized. So the Fediverse is still our home and people following us there get a better experience as posts are not abbreviated and you can see all boosts instead of only the ones of people that have bridged their accounts as well. With that being said, if somebody is trying to follow what we do on Bluesky then they can do it from now on. Thanks Ferass, Casey, Clayton!
systemd merged into edge
If systemd coming to postmarketOS is still news to you (for real, every time we make a blog post on this topic some people show up who apparently hear this for the first time…) then please read the original blog post first!
We are happy to report that systemd has been merged into postmarketOS edge! We went through the trouble of placing the systemd related packages in a separate package repository, so if you are currently running pmOS edge with OpenRC then you can keep using that too. Some UIs like GNOME (Mobile), Plasma (Mobile) and Phosh will definitely work better with systemd in the long run (see the original blog post) and we recommend switching for these over the next weeks. Note that as of writing our Phosh packaging still needs to be adjusted to have it start up properly (#3464) and you might need to add services manually until #2804 is done. With that said, we now have a nice timeline with more than 4 months to fix bugs and make systemd work really well on edge before the v25.06 release will be branched!
Changes in detail:
The big systemd MR (!5563/imported). Thanks Jakub, Jane, Clayton, Casey, Achill, Bart, Aster, Dylan, Oliver, Sam, Alexander, Andrei, bjorn3!
BPO has been adjusted to support building the split systemd repository (!119). Thanks Oliver!
https://pkgs.postmarketos.org now displays packages from the new systemd repository. Also filtering by repository works now with the new systemd repo (!7). Thanks Jane, Oliver!
Support systemd in postmarketos-ui-fbkeyboard (!6065). Thanks Alexey M.!
Various services and presets related patches (!5808, !5806, !5954, !5896, !5961, !5969, !6010, !6011, !5964, !5965, !6043, !6049, !6053, !6060, !6078, !6050). Thanks Achill, Casey, Jane, Clayton, bjorn3, Bart, Alexey M., Oliver!
Various upgrades and additions of systemd-enabled packages (!5916, !5917, !5892, !5999, !6008, !6026, !6046, !5803). Thanks Clayton, Bart, Achill, Jane!
Various fixes for -openrc and -systemd subpackages (!6015, !6042). Thanks Clayton, Oliver!
Many other systemd related fixups and improvements (!5946, !5940, !5971, !5976, !5987, !6001, !6003, !6023, !6025, !6028, !6029, !6030, !6031, !6036, !6047, !6057). Thanks Jane, bjorn3, Clayton, Rob, Clayton, Oliver!
mobile-config-thunderbird
People have been wondering for quite some time if it was feasible to create a mobile config for the amazing mail client Thunderbird, like we have it with mobile-config-firefox. Turns out: Yes, it is very possible as Dylan showed with his new mobile-config-thunderbird project! Check the README.md for screenshots showing how he adjusted the interface to work well on mobile.
Find mobile-config-thunderbird in postmarketOS edge (!5968). If you are on stable, we can backport the package on demand. For now you can also install it directly from the git repository. And of course you can also use it on other Mobile Linux distributions. Thanks Dylan!
Lomiri
Back then it was still called Unity 8 and the postmarketOS port was able to start up at some point even though it could lock up easily and many features were missing. We had it in edge for some time, but due to the libraries and frameworks being very different from what the Ubuntu Touch team used to what we had in Alpine the build broke very often and eventually we had to move it out of the master branch into a feature branch (meaning no binary packages were built and chances were high that it didn't build successfully if you tried it yourself).
⏩ Fast-forward to 2025: the gap of library versions from Ubuntu Touch and Alpine is now much smaller, Luca upstreamed almost all Lomiri related packages to Alpine (with a lot of help from Aster) and maintains them there. Aster wrote a deviceinfo converter "to parse postmarketOS deviceinfo files and create a Lomiri deviceinfo file out of it" and finally a UI package for Lomiri has been merged back into postmarketOS edge (!4496/imported)!
Aster wrote:
The Lomiri UI definitely isn't fully done. I still want to finish up the migration of the logo to postmarketos-artwork and add systemd support. But in its current state it is definitely usable.
(Still have to fix the scaling bug, but I'll have to learn C++ for that so it'll be a while.)
This is bleeding edge as it can be, but if running Lomiri on postmarketOS is something that interests you then now is a very good time to try building an image and getting involved. It's probably a good idea to try QEMU first before you put it on your phone/laptop/toaster/etc. Thanks Aster, Luca, Bart!
New device ports
A whole 13 new device ports!
- Apple MacBook Air M1 2020 (!5913). Thanks EDK!
- Banana Pi BPI-CM4IO Baseboard with BPI-CM4 SoM (!5962). Thanks Ferass!
- Banana Pi BPI-M2 Zero (!6063). Thanks User0!
- Linksys WRT1900ACS/WRT1900ACS V2 (!5938). Thanks ΞЖKƆ/QVH!
- Lenovo ThinkSmart View (!6061, !6041). Thanks Felix, Barnabás!
- ODROID N2+ (!5950). Thanks hexaheximal!
- ODROID C4 (!5949). Thanks hexaheximal!
- Raspberry Pi 5 (!6006). Thanks winbo.yml!
- Samsung Galaxy A51 (samsung-a51) (!5887). Thanks Hendra!
- Samsung Galaxy Ace 3 LTE (!5973). Thanks User0!
- Samsung Galaxy J4 (!5936). Thanks Hendra!
- Samsung Galaxy SII Plus (!5861). Thanks VaporGame!
- Xiaomi Pad 5 (!5804). Thanks Pan!
pmbootstrap
pmbootstrap 3.2.0 has been released. This release or newer is required for building systemd-enabled postmarketOS images, now that systemd was merged into edge.
Recent changes in detail:
Improvements and fixes related to merging systemd into master (!2410/imported, !2528, !2529). Thanks Oliver, Stefan, Rob!
"pmbootstrap flasher boot" now works for fastboot-bootpart (!2508). Thanks Minecrell!
pmb.flasher.frontend: detect lk2nd as subpackage dependency (!2511). Thanks Alexandre!
Fix pmbootstrap install --android-recovery-zip (!2527). Thanks Eisenbahnfan!
A LOT of code quality improvements that will make future maintenance easier (!2490, !2513, !2519, !2518, !2516, !2517, !2525). Thanks Stefan!
Various smaller fixes and improvements (!2510, !2514, !2520, !2509, !2522, !2530, !2526). Thanks Rob, Stefan, magdesign!
Kernel packaging
We would like to especially highlight Frank's amazing work on analyzing and finding a workaround for call audio regressions that specifically broke the bottom mic on xiaomi-beryllium (Poco F1) and distorted audio on OP6 (and possibly OP6T) (!5966, !6032) as well as Casey's work to fix audio on the OP6 (!5901). The workaround and fix have been backported to v24.12. Thanks Frank, Casey!
Another great merge request came from Jack, who has gotten the rear camera working on Martijn's Megapixels 2.0 for samsung-t0lte "which means it should work on t03g, m0 and m3 too". In fact Stefan gave it a spin on an m0 and posted some photos. Furthermore Jack writes in !5888 that he almost has the front camera working. Thanks Jack, Martijn, Stefan!
Changes in detail:
- The linux-postmarketos-apple package was upgraded to 6.13.0-rc6 (!6007). Also the apple-iphone6 port was renamed to apple-n61 and now has a new maintainer (!5978). A photo of the new kernel running on the iPhone 6 received quite some feedback on Mastodon. Thanks Aster!
- linux-postmarketos-qcom-sdm670: upgrade to v6.12.3 (!5881). Thanks Richard A.!
- linux-postmarketos-pinephonepro: upgrade to 6.11.11 (!5855). Thanks Jan!
- linux-purism-librem5: upgrade to 6.6.63 (!5898). Thanks Stefan!
- linux-postmarketos-qcom-sdm845: upgrade to 6.13-rc2 (!5902). Thanks Casey!
- linux-postmarketos-allwinner: enable USB ACM module (!5922). Thanks Clayton!
- linux-postmarketos-omap: make AES builtin (!5925). Thanks sicelo!
- linux-postmarketos-qcom-sm6350: upgrade to 6.12.4 (!5904). Thanks Luca!
- linux-postmarketos-mediatek-mt8173: upgrade to 6.12.6 (!5929). Thanks Adam!
- community/linux-postmarketos-qcom-laptop: enable CRYPTO_MD4 (!5923). Thanks Anjan!
- device-asus-x00td: Update kernel on update And Generate extlinux configs (!5937). Thanks ABOOTHAHIR!
- kconfigcheck: enable CRYPTO_MD4 for iwd (!5943). Thanks Anjan!
- linux-valve-jupiter: fix checksum for config file (!5947). Thanks Clayton!
- kconfigcheck.toml: add comment explaining CONFIG_CRYPTO_MD4 (!5951). Thanks Anjan!
- msm89x7: Add mainline kernel and devices (!5693). Thanks Barnabás!
- device-xiaomi-surya: add kernel subpackage (!5983). Thanks Raihan!
- linux-pine64-pinephonepro: fix notification LED behavior (!5991). Thanks Jan!
- kconfigcheck: Add all HID config options from Fedora aarch64 kernel (!5836). Thanks Jonas!
- kconfigcheck: drop some input kconfig (!5997). Thanks Clayton!
- linux-pine64-pinenote: upgrade to 6.12.0 (!6016). Thanks Antoine!
- msm89x7: Update kernel and add more devices (!6005). Thanks Barnabás!
- Revert "device-xiaomi-surya: add kernel subpackage (MR 5983)" (!6033). Thanks Rob!
- linux-postmarketos-mediatek-mt8173: upgrade to 6.12.9 (!6024). Thanks Adam!
- kconfigcheck: add PPP specific section (!5992). Thanks Oliver!
- linux-postmarketos-qcom-msm8226: upgrade to 6.11.11 (!5733). Thanks Luca!
- linux-postmarketos-qcom-msm8953: upgrade to 6.12.0-r2 (!6041). Thanks Barnabás!
- firmware-google-sargo: compress firmware loaded by kernel (!6052). Thanks Richard A.!
- linux-postmarketos-allwinner: upgrade to 6.12.8_git20250104 (!6067). Thanks Arnav!
- linux-postmarketos-qcom-laptop: upgrade to 6.13 (!5895). Thanks Clayton!
- kconfigcheck.toml: add conditions for certain HID options (!6077). Thanks Rob!
- linux-postmarketos-imx-ereader: fix install of 8189fs.ko (!6075). Thanks hrdl!
- linux-postmarketos-qcom-sm8250: upgrade to 6.13.0 (!6079). Thanks Jianhua!
- linux-postmarketos-mediatek-mt8173: upgrade to 6.13 (!6073). Thanks Adam!
- linux-valve-jupiter: upgrade to 6.13 (!6082). Thanks Clayton!
initramfs
The initramfs now always attempts to resize the rootfs during boot, instead of only doing it when we previously also resized the partition containing the rootfs. This fixes that the filesystems did not get resized if they were flashed onto existing partitions. The call to resize tools is very fast, so this trade-off is worth it (!5844). Thanks Minecrell!
Two similar implementations of setting up a USB mass storage gadget were unified. Besides code deduplication this also simplifies recovery since you can set up the USB storage for repairing a flashed pmOS install now in case of boot failures. Furthermore it is now possible to use a new
pmos.usb-storage=kernel cmdline argument to set up the USB mass storage gadget by default when going into debug shell. This allows building a special boot image/option that directly exposes the storage for flashing, without having to type in extra debug-shell commands (!5912). Thanks Minecrell!The initramfs now always mounts the correct rootfs instead of using a legacy fallback path in some cases. This avoids accidentally mounting the wrong rootfs based on enumeration order or timing, when you have multiple installations of pmOS attached to the system. Furthermore mounting /boot is now optional. This will make it possible to boot pmOS in "single partition mode" where there is just a root partition and no boot partition (!5920). Installs from 2022 or older need manual action as described in our edge blog post. Thanks Minecrell, Arnav!
PinePhone hardware keys were fixed in the initramfs (!5931). Thanks Clayton!
Various devices with smaller boot partitions now use
initfs_extra(!5890, !6034, !6080, !5989, !5993). Thanks AutumnSpark1226, Cedric, knuxify, Kaloyan, Matti!Google Chromebooks with x64 CPU can now boot from NVMe storage (!6059). Thanks Brady!
pmaports
Xiaomi POCO M2 Pro / Redmi Note 9S / Redmi Note 9 Pro / Redmi Note 9 Pro Max / Redmi Note 10 Lite (xiaomi-miatoll) have seen some incredible improvements, "from barely working brick (boots to framebuffer) into almost fully usable mobile phone: 3D acceleration, sensors, audio, camera, modem, wifi and bluetooth are now supported" (!5941). Thanks N1kroks!
The alsa-ucm-conf-qcom-sdm670 package has been upgraded to 1.2.9_git20241211. "This causes Pipewire to appropriately control the VoiceMMode1 mixer and route call audio automatically." (!5918) Thanks Richard A.!
An annoying bug has been fixed in edge: syslogd kept one core busy at 100% (!6013). A MR to backport this fix to v24.12 has been made as well and will be merged soon (!6096). Thanks Casey, Richard A., Clayton!
The XFCE4 login greeter background has been fixed (!5889). Thanks Jakko!
NetworkManager has been configured in postmarketOS to detect captive portals. If your UI uses the NetworkManager API, then it can show you notifications about this from now on (and e.g. help you open a browser to bypass the portal) (!5659/imported). Thanks Clayton, Luca!
lk2nd has been upgraded to version 20.0 (!5884), packaging has been updated to also support the htc-m8 (!5919) and the motorola-falcon port has been adjusted to work with newer lk2nd versions (!5994). Thanks Barnabás, Alexandre, Stanislav!
The u-boot-librecomputer-lafrite package could be removed, as the lafrite has u-boot in SPI already and because we use GPT by default now (!5897). Thanks Ferass!
The GNOME base UI package now depends on power-profiles-provider instead of power-profiles-daemon, so another implementation can be used for devices where the default does not work (!5820). Furthermore Showtime "which is the main candidate to become the new GNOME default video player" is getting installed by default via _pmb_recommends now (!6038). Thanks Adam, Robert M.!
Androids (mostly Samsungs) using the imagis-touchscreen driver on pmOS don't wake up anymore by capacitive back/menu buttons (!5358/imported). We already had similar rules for other drivers and it is easy to add more if needed. Thanks Raymond!
A typo was fixed in our NetworkManager dispatcher script that lead to never stopping any unudhcpd processes. "As a new instance is started each time a USB cable is connected, the number of instances kept growing until reboot." (!5905) Thanks Fiona!
The samsung-rossa device has been renamed from -cprime and found a new maintainer (!5865). Thanks Raymond!
Fairphone 5: an unl0kr config has been added to fix that it was invisible during boot (!5910). Thanks cosmo!
In preparation for the future switch to U-Boot for these devices, the lavender and clover devices are now configured to create extlinux configs (!5914). Thanks Alexey M.!
The Nokia N900 packaging has been improved to share the xdefaults file between all X11 UIs instead of only i3wm, and the lock script has been improved to work with other X11 UIs as well (!5930). Thanks sicelo!
The LXQT UI packaging now uses brightnessctl to save and restore brightness on boots (!5933). Thanks Jakko!
For the PinePhone, the modem autorecovery udev rule was dropped as it isn't needed anymore (!5935). Thanks Arnav!
The Samsung Galaxy Core Prime VE LTE now boots through U-Boot (!5952), seven amlogic U-Boot packages have been merged into one (!4995/imported) and the U-Boot user script load address has been fixed for PinePhones with the Vccq mod (!5980). Thanks Duje, Ferass, Johannes K.!
- Ferass noted about the amlogic U-Boot merge: "if anyone is having issues please ping"
libcamera packaging has been upgraded to 0.4.0, dropping some upstreamed patches and adding some tuning files with black levels (!5948). Thanks Robert M.!
dtbloader (EFI driver that finds and installs DeviceTree into the UEFI configuration table) has been upgraded to 1.3.0, adding support for the Huawei Matebook E Go, updating gnu-efi to 3.0.19 and aligning EFI_DT_FIXUP_PROTOCOL with documentation (!5981). Thanks Nikita!
Samsung Galaxy Ace 3 LTE now has initial display support and a fix for SSH over USB (!5975). Thanks User0!
The Kobo and Tolino ebook readers were switched back from GPT to MSDOS partition tables for now to fix that they would only boot once with GPT (!5977). GPT was also disabled for the epson-embt2ws (!5982). Thanks Andreas!
The FIT image configuration for the Samsung Galaxy S9 (wiki page has a nice photo running Sxmo btw) has been adjusted to give more space for the Linux kernel (!5990). Thanks Dzmitry!
The pinenote-dbus-service for the PineNote has been upgraded to 0.2.2_pre5 and found a new maintainer. Also the modprobe rules from Debian images have been added. If you also own this device and are interested in contributing or collaborating, then consider reaching out (!6017, !6021). Thanks Antoine!
riscv64 cross compiling is now much faster (!6054). Thanks Clayton!
The Plasma base UI package installs kunifiedpush again (!6020). Thanks Bart!
The Trailblazer now has X1E Slim 7x support (!5801) and lts/stable kernels have been added (!5926). Thanks Casey, Ferass!
Various smaller fixes and improvements (!5840, !5893, !5894, !5899, !5900, !5908, !5911, !5928, !5939, !5945, !5956, !5957, !5960, !5963, !5967, !5970, !5984, !5986, !5995, !5996, !5998, !6000, !6002, !6009, !6014, !6018, !6019, !6022, !6027, !6045, !6048, !6051, !6062). Thanks Alexey M., Andras, benpicco, Clayton, Dzmitry, Achill, Achill, Luca, Oliver, Pablo, Jan, Raihan, Sergey, Willow, Szczurek, Raymond!
Artwork and homepage
A new wallpaper Bokeh has been made by our amazing recurring artwork contributor dikasp (!58). We have used this wallpaper at the top of this blog post. Like all the other awesome wallpapers that dikasp made, it is a candidate to become the official wallpaper of a future postmarketOS release. Thanks dikasp!
The /install list can now be filtered by vendor / device name (!340). Thanks Anxo!
We have added floss.fund's funding.json manifest to the homepage, and submitted it (!345, !6074). Thanks Casey, Oliver!
Various small fixes and improvements for the homepage (!342, !344, !343, !347, !346, !336, !353). Thanks Anjan, Ferass, Pablo, Oliver, knuxify, Luca!
Various small fixes and improvements for the artwork repo / packaging (!59). (!54). (!6084). Thanks magdesign! Thanks Aster!
Misc
boot-deploy can now use a certificate verification exploit on OMAP HS based Kindles to chainload a patched u-boot for loading unsigned images :> (!72). Thanks Connor, TeamWin!
bootmac's udev rules have been split into separate files for wifi and bluetooth, a systemd unit file has been added as well as BT mac retry (!10). Thanks Clayton!
Smaller fixes and improvements in various projects (!36, !67, !68, !75, !8, !10, !11, !12, !16, !18, !66). Thanks Stefan, Dylan, Ferass, Luca, magdesign, Vladimir!
And what's next?
FOSDEM 2025 is coming up this weekend! Read all about the many Linux Mobile related things (devroom, multiple stands, etc) at LINMOB.net. Looking forward to meeting you there! Oh and we'll have another hackathon afterwards… if last year was any measure this will again be a super productive couple of days that allows us to get a lot done in the moment as well as making plans for the rest of the year!
Aachen's CCC chapter is organizing a mainlining workshop on 2025-02-15 that sounds really fantastic! They "will be hosting a full-day workshop where we will show you how to port a current Linux kernel to your old mobile devices with relatively little effort and prior knowledge. We will explain the boot process of old and newer Qualcomm devices, introduce you to devicetree and kernel drivers and show you where to find the necessary information on a running Android kernel and in the vendor kernel source code. Afterwards, we will take a lot of time during which you will instill the spirit of the penguin into your own devices with our help and advice. With your kernel you will boot PostmarketOS and gradually get more components up and running. There will also be a tutorial on how to upstream your patches."
After the success of the OSC 2024 Tokyo/Fall event, the upcoming OSC 2025 Tokyo/Spring event on 2025-02-21/22 is in the pipeline. Check #92 for the current planning status, especially if you want to help with setting this up. Otherwise if you are in the area, consider hanging out!
And this last bullet point here is not an event, but exciting nonetheless: a rewrite of pmbootstrap's crossdirect logic is on the way… and it will make cross compiling much faster for a whole lot of packages! (!2474)
Help wanted
You can send us topics to include in the next blog post by commenting in: #194
If you appreciate the work we're doing with postmarketOS and want to support us, consider contributing financially via OpenCollective.

