In the last few months I was looking into adding support for some older Android phones to postmarketOS. Porting an existing downstream kernel to a real Linux operating system for mobile systems wasn’t that hard following the easy porting guide from the pmOS wiki.

Here’s a roundup on what I have achieved so far ;)

HTC Sensation

File:Htc-pyramid-booting.jpeg
HTC Sensation

This is an older Android phone from 2011 but still able to boot postmarketOS with a downstream kernel found on Github. Support without any further features got merged into pmaports (repository for device support). Root filesystem is copied onto sd card and kernel directly booted from HBOOT.

I’m unsure if this could be an easy candidate for mainlining but it would be interesting to try it anyway.

Samsung Galaxy W

Samsung Galaxy W
Galaxy W

An other old phone from 2011 which I found in a box at home containing old phones. It does boot quite well into the Wayland reference compositor Weston. Touch seems to work too.

Flashing postmarketOS onto this phone was a lot more complicated than I thought. Heimdall support is broken and flashing was only possibly with an very old tool called Odin Multi Downloader. Detailed instructions can be found in the postmarketOS wiki.

Samsung Galaxy Note 4

This is a hard one. I could find a downstream kernel for this specific model but compiling it was difficult. Even after applying patches and making kernel config changes, the compiled kernel doesn’t want to boot … There are still some workarounds and hacks I could try to get something to boot, but I guess this is too time consuming for now.

At least I could clarify and add some points on the Wiki page. Maybe someone want to pick up the pull request and could get it to work.

iPhone 7

The iPhone 7, Booting PostmarketOS

Support for the iPhone 7/7+ got merged into postmarketOS last July 2021. Until now, it is not easy to install or boot since the helper tool pmbootstrap doesn’t have any flash method for Apple devices. That is something I’m also considering to implement in a followup merge request. Booting Linux on the iPhone using the simple pmbootstrap command requires following tools to be merged into Alpine Linux upstream repository:

  • checkra1n, the tool to exploit the iPhone 7 DFU mode and enable the custom bootloader pongoOS. Since checkra1n is not open-source yet, we have some issues packaging it into postmarketOS.
  • pongoos-loader, already merged in testing. It transfers the compressed Linux kernel image together with a custom DTB-file to pongoOS and starts booting the kernel.

An other issue is that both tools require root access to run successfully. I haven’t managed to achieve non-root phone access using udev-rules.

The aim is to have the setup as simple as possible. So you would only have to boot into DFU mode and run pmbootstrap flasher boot to get the kernel booting. This doesn’t mean we’ll have an OS booting into a graphical session but at least a booting kernel ;)

💬 Are you interested in our work or have some questions? Join us in our public Signal chat pi crew 👋

🪙 If you like our work or want to supprot us, you can donate MobileCoins to our address.