Sailfish on a foldable? Its more likely than you think! SailfishOS for Google Pixel 9 Pro Fold (comet)

Hey y’all I did share this on Mastodon before but I’ve been told I should share this with the Forum as well :slight_smile:

Back in July I got the Jolla Phone 2026 and I instantly fell in love with the software! Sadly I had to abandon my Z Fold 7- I really love the foldable. Last week I traded that Z Fold in for a Pixel 9 Pro Fold. Why? It has an unlockable bootloader!

You know where this is heading to. I started to port SailfishOS to the Pixel 9 Pro Fold!

It’s based on LineageOS 23.2 (Android 16 QPR2) with a self-built GKI 6.1 kernel, using the hybris-23.2 adaptation. And it boots into the UI now! :tada:

What works

  • Boots on its own into Sailfish OS, including the first-run setup
  • Inner and outer display, including touch on both
  • Folding/unfolding switches between the displays (more on that below)
  • Kernel modules for Wi-Fi, speaker amps and haptics load (but they’re not usable yet)
  • USB Developer Mode via NCM instead of RNDIS
  • Audio

What doesn’t (yet)

  • Wifi, cellular, camera, sensors, Bluetooth

Folding
I extended the hwcomposer QPA plugin so it can switch between built-in displays at runtime, driven by the hall sensor. That part works, but the UI doesn’t re-layout afterwards. Silica’s Screen reads the screen size once at startup, it’s read-only, and it doesn’t follow QScreen geometry changes. Since Silica is closed source, I can’t fix that on my end. For now the shell restarts on fold/unfold, which closes open apps. :frowning:

@Jolla: if Silica’s Screen followed QScreen::geometryChanged (width, height, sizeCategory, widthRatio), foldables could switch seamlessly! Maybe something to consider :upside_down_face:

Anyway here is the “demo” you probably wanted to see before I started yapping:

59 Likes

Impressive work, congratulations!

1 Like

Just stunning work!!

1 Like

Wow, i really like this community so much! Good work so far!

3 Likes

Got audio working yesterday! Can probably only work on this on the weekends, due to uni and work

13 Likes

Wow amazing work! Really impressing :slight_smile:

Some hints for porting, the cellular side probably needs a config file with the first 4 lines of this s19mps-droid-configs/sparse/etc/ofono/binder.d/s19mps.conf at master · mer-hybris/s19mps-droid-configs · GitHub. For bluetooth make sure you have added bluebinder to patterns and that you have enabled CONFIG_BT_HCIVHCI=y in your kernel defconfig. Also I did some work on camera support for hybris-23.2 base but didn’t yet have time to test the fixes on any device but cameras should be possible soon. If you want to join IRC porter channel #sailfishos-porters on OFTC network (or via Matrix, not sure how exactly) then you can get more help for the remaining issues.

18 Likes

Oh, yes, I have that phone too. :grin:

1 Like

Looks amazing how do the apps work on it? Sailfish?

In itself Apps work great on either screen, the problem arrives when you want to switch them

Silica is not really made for resizing screens, the variables for the screen size cannot be changed without restarting lipstick. Otherwise the UI stays at the sizes it was at when lipstick was started, which is jank when you switch from small to big screen. Its even worse when you switch from big to small