DiamaneOS for Fairphone 6 (GrapheneOS-based operating system)

Hi,

I am releasing a new GrapheneOS-based operating system, DiamaneOS. It is a privacy and security focused OS for the Fairphone 6. It is not endorsed by GrapheneOS and not as secure as GrapheneOS would be on GrapheneOS-supported devices.

It has most of the features from GrapheneOS except for the known limitations mentioned below. It also adds some of its own features:

  • Moments switch: The Fairphone 6’s side switch runs one action you pick. One of them turns the camera and microphone off, enforced by the kernel and not only by Android.
  • Passphrase first: Since Fairphone does not have a separate secure element unlike Pixels, setup recommends a generated passphrase or long generated PIN and each guess at the lock screen costs 256 MiB of memory and about a second. For the first two weeks the phone asks for the new passphrase once a day to help with learning the passphrase.
  • Open code instead of closed services for VoLTE and Wi-Fi calling data, call audio, power management, the modem helpers and GPS.
  • Hardening: a locked bootloader with DiamaneOS’s own verified boot key, hidden hardware identifiers, SELinux locked enforcing, and sandboxed camera and Bluetooth services.
  • There are some other features like our own open-source eSIM manager, encrypted microSD storage, and camera app with JPEG and RAW photos and Night and Portrait processed on the phone. Full feature list can be found here: Features · DiamaneOS

Attestation
While the aim is to provide better security for the Fairphone 6, it comes with limitations. One of those limitations is Attestation. Attestation lets a second phone, or our server, check that your phone runs an unmodified DiamaneOS with a locked bootloader. The proof comes from the phone’s secure hardware, not from Android itself.

On Pixels, GrapheneOS’s Auditor checks that this proof leads back to Google’s root. So even the first check is vouched for by the hardware maker. On the Fairphone 6, the secure hardware only gets those Google-signed keys when the phone boots with a key built into its bootloader(Fairphone’s and official /e/OS’s keys).

So DiamaneOS’s Auditor handles the first pairing differently. It checks the phone’s report against the values published for each release (the signing key, the locked state, the boot image hash and the patch levels), and you need to confirm that you trust how the phone was set up for the first pairing. Every check after that is genuine hardware attestation pinned to that pairing, as on GrapheneOS. After a factory reset, the phone has to be paired again.

Without Remote Key Provisioning Certificate Signing Request working for non-Fairphone approved keys, some other functions also do not work: Play Integrity, Widevine L1(relevant for DRM-protected videos), RCS works and is tested.

Fairphone could fix this for DiamaneOS by adding its key to the bootloader, as it does for /e/OS but the better fix would be to let the secure hardware accept Google’s key provisioning with any verified boot key the user sets, as Pixels do.

How attestation works: Attestation explained · DiamaneOS
All known limitations: Known limitations · DiamaneOS

Installation:
Installation guide can be found here: Install · DiamaneOS (web-installation is recommended).
Releases are available here: Releases · DiamaneOS

FYI AI tools were used to find security and privacy issues and bugs, and to speed up development and documentation.
Important security and privacy findings and some bugs were already reported to Qualcomm, Google, Fairphone and GrapheneOS. They are already fixed in DiamaneOS and remaining lower-priority issues will get reported once they are properly reproduced.

Feedback
Bugs and feature requests: Issues · DiamaneOS/issue-tracker · GitHub
Matrix: https://matrix.to/#/#diamaneos-space:matrix.org
Security issues: Security · DiamaneOS

Screenshots

Source code: DiamaneOS · GitHub

I would really appreciate help with the following topics:

  1. Non-European Fairphone 6: I have done my testing on a Fairphone 6 bought in Europe with German carriers. If you have a Fairphone 6 sold outside Europe, a report on whether calls, VoLTE, Wi-Fi calling and mobile data work on your carrier would help a lot, good or bad. Either here or in the issue tracker: Issues · DiamaneOS/issue-tracker · GitHub .
  2. Command-line installation from Windows: For command-line installation, as I don’t have a windows machine, I was only able to simulate the testing for flash-all.bat. If you install from Windows, run it from Command Prompt (not Powershell) and please report back if it works well for you. Web-installation should work anyway.
  3. Camera processing: Fairphone doesn’t expose its camera vendor extensions (the CameraX Night and Bokeh extensions) to other apps, so the camera app does both on its own, on the phone:
    • Night: a burst of fixed-exposure RAW frames, tile-based alignment, motion-rejected fusion of the RAW data, then noise-aware Wiener shrinkage and our own demosaicing and finishing. No neural network.

    • Portrait: depth from Depth Anything V2 Small, subject separation with Google’s MediaPipe MagicTouch segmenter, and blur by depth.

      This is where AI help was used the most. If someone experienced in camera processing could provide support here, it would help a lot.

Update: RCS does work on DiamaneOS: Frequently asked questions · DiamaneOS

That’s a very interesting project. I just installed IodeOS on my new FP6+ and I’m not ready to switch yet. But I’ll be keeping a close eye on your work and might give it a try sometime in the future.

I do not own a Fairphone 6+ so currently only Fairphone 6 is supported.

I guess when it works with an FP6 it will also with an FP6+ as the difference is so small. But maybe only 8 of 12 GB will be available to use.

DiamaneOS 2026102500 is available.

Changes:

  • Kernel security fixes, among them a use-after-free that a remote host can reach while an app listens for IPv4 TCP connections (CVE-2026-98432), and fixes for TCP Fast Open, Bluetooth and USB input devices and off-path side channels.
  • Fix a kernel memory hardening check that could restart the phone when memory ran low.
  • Double tap on an empty part of Home to turn the screen off, off by default in Home settings.
  • Wi-Fi networks added from a Wi-Fi QR code get a new random MAC address for each connection so now they are similar to adding Wi-Fi networks normally.
  • Erase eSIMs works while eSIM support is off.

Full release notes: Releases · DiamaneOS
Install guide: Install · DiamaneOS

This seems to be a promising project. I kinda interested in it and I hope it will be available for a Fairphone 5 too, if it is feasible.

Unfortunately, Fairphone 5 is not something I am planning for currently. It has an end of life kernel version and while it would be an interesting project trying to bring it to newer, currently supported LTS kernel, it would be quite a big project and I would rather spend that time trying to get Fairphone 6 on 6.18 LTS.

DiamaneOS 2026110600 is available.

Changes:

  • Android security patch level 2026-11-01, based on GrapheneOS 2026110200.
  • Fairphone 6: firmware and vendor files from the device maker’s FP6.QREL.16.115.0 release, with its 2026-10-05 security patch level.
  • Fairphone 6: the kernel moves from Linux 6.1 to Linux 6.18. Binder is now the Rust driver, and the kernel no longer has TIPC.
  • Fairphone 6: mobile data runs on open code. The Rust daemon datad and two open libraries replace the closed nicmd and its libraries. A second daemon, wlantunneld, holds the keys of the Wi-Fi calling tunnel under its own user.
  • Moments switch: Camera and microphone off reaches the kernel as soon as you choose it, and while the switch holds Lockdown, every unlock needs your PIN, pattern or password.
  • Lock setup can generate a shorter passphrase: six words from EFF’s short list, typed as their first three letters. Six whole words stay the default.
  • Auto reboot now comes after 12 hours instead of 18, and Bluetooth turns off after 10 minutes without a connection. Phones where a value was picked keep it.
  • Turn off NFC automatically, a new choice on the NFC page, off by default.
  • Fairphone 6: USB headsets and USB audio devices play sound.
  • Fairphone 6: the screen holds at least 30 Hz while it is on, so content that starts moving by itself starts smoothly.
  • Fairphone 6: the phone reaches its deepest sleep mode in standby.
  • Hardening: our own native modules stop on integer overflow, out-of-bounds access and, where the code allows, CFI errors. The modem file server limits what a remote processor can use up. Apps can no longer read live memory and cache frequencies.

Why Linux 6.18: the Fairphone 6 ships with Linux 6.1. We’ve moved it to the 6.18 LTS branch, as GrapheneOS did for the Pixel 10. Fixes now reach the kernel from the branch they were written for, instead of through backports to an older branch, and it brings the Rust Binder driver. GrapheneOS explains why this matters:

“Linux has a massive number of serious security vulnerabilities being discovered with AI models. Most of these vulnerabilities have been present in the kernel for a long time. The average lifetime for vulnerabilities has started dropping significantly after many months of this.”

“Newly introduced vulnerabilities are being discovered and fixed at a much faster rate. The massive flood of vulnerabilities being discovered and fixed means the backports to older LTS branches are increasingly incomplete. Following the 6.18 LTS branch is by far the best balance.”

This port also shows what a move to the next Linux LTS branch will take. That branch is expected around the end of the year, and we can follow it once it’s stable for Android.

Full release notes: Releases · DiamaneOS
Install guide: Install · DiamaneOS

I’m currently running e/OS but would love switching to another more secure OS. However e/OS is currently the only custom ROM able to use fairphone camera app with full access to camera feature e.g optical image stabilization. Is there any chance to see this feature (or a workaround) available on DiamaneOS? I really badly need it unfortunately.

Currently, it’s not supported but it won’t be difficult to support the stock camera app so that OIS, EIS and 50MP mode are available. FWIW, OIS should already be supported in the camera app that comes with DiamaneOS and there should also be a way to support EIS and 50MP mode in it(I will look into this).

The stock camera app depends on the TCL stack and cameraalgoservice which would need to be added to the image. I can add these in the next build but the stock camera app will not be preinstalled. I can offer it on the app store instead so that users who want to use it can download it from there and it will run as a normal Android app instead of a privileged application.

If you can make FP camera app available and have OIS working, that would be awesome!

Hi,

I’ve filed an issue here: FP6_US doesn’t work with Web installer · Issue #1 · DiamaneOS/issue-tracker

I realize I could continue with the command line installation, but decided to hold off until I hear back from you to confirm I should continue. Would like to try DiamaneOS if I am able to.

I have already commented in the issue but thank you for testing the US model. The issue is fixed but I would not recommend installing it on Fairphone 6+ as I do not know if it will work on that model and even if it does, I cannot guarantee how well it would work.

While both Fairphone 6 and Fairphone 6+ are fairly identical with similar firmware, as I do not have one, I have not tested DiamaneOS on Fairphone 6+ and would not be able to support with specific issues that might happen on that phone.

Thank you for the quick reply!

And that is a good point. After thinking about what you said, I think I’ll wait for now so I don’t run the risk of hard brick. If you are able to confirm it works on a Fairphone 6+, I’d love to switch over.

DiamaneOS 2026111400 is available.

Changes:

  • Based on GrapheneOS 2026111300.
  • Fairphone 6: the kernel moves to Linux 6.18.39 and takes 41 more fixes from newer Linux releases, among them CVE-2026-80668 and CVE-2026-72493. Most fix bugs that an app, a network or a Bluetooth or USB device could reach.
  • Fairphone 6: the kernel handles a failed mount or an unmount of an ext4 file system safely. This is our own fix for a memory bug there.
  • Fairphone 6: the kernel has two more protections against memory bugs. It stops if memory is mapped into a process in a way that must never happen, and it clears leftover values when a function returns. Cold app starts take about 3 % longer.
  • Fairphone 6: the kernel driver for the phone’s secure area rejects bad buffer offsets, and the device’s kernel drivers build with stricter compiler checks, with the bugs those checks found fixed.
  • Freed memory waits longer before it is used again, which makes use-after-free bugs harder to exploit. On the Fairphone 6 this uses about 230 MB more memory.
  • 78 extra fixes and library updates. Most tighten what one app can do to another app or to the system, for example in autofill, content shared between apps, window capture, notifications, app installs and backups. Others make video and image decoding, NFC, Wi-Fi Direct, Bluetooth pairing and text message storage handle malformed input safely. The patch repository lists them: GitHub - DiamaneOS/platform_patches: Fixes DiamaneOS applies on top of its sources until upstream carries them · GitHub
  • Dynamic System Updates is removed, which takes away a privileged installer and frees the memory of two idle processes. DSU Loader is gone from Developer options.
  • Fairphone 6: Fairphone Camera, Fairphone’s own camera app, installs from the App Store. More on it below.
  • Fairphone 6: the phone starts 5 to 9 seconds faster. This fixes a delay that hit about half of all starts.
  • Fairphone 6: the install scripts now work on the US model too. They refused it before because it reports another name, FP6_US.
  • The phone saves battery in standby on Wi-Fi networks that give it no IPv4 address. It now ignores ARP requests there after the first minute.
  • eSIM manager: Check a code can now scan a QR code, so you can check a carrier’s code without typing it.
  • Fixes:
    • Files reports a copy as failed when the SD card is pulled out. It showed the copy as running forever before.
    • With two SIMs, the notification shade shows both carrier names. For some carriers one was missing.
    • A bug report taken right after a restart no longer crashes the report service.

How Fairphone Camera is installed and run securely:

The App Store installs Fairphone’s own app, unchanged, and accepts it only with Fairphone’s signature. On the stock OS it is a privileged system app. Here it runs as a regular app in the app sandbox, without network access, so it cannot send anything out.

Its image processing needs closed GPU code. That code runs only in a confined service that this app alone can reach, so the camera service every other app uses stays without it.

Photo, portrait, night, pro, panorama, slow motion, time-lapse and video work. Front portrait and low-light video show an error, because they would need the closed code inside the shared camera service. We keep it out on purpose: that service handles the camera for every app, so a bug in this code could be reached by any app that uses the camera.

When the app asks for photo access, pick Storage Scopes. It then sees only the files it made itself. The FAQ explains the choice: Frequently asked questions · DiamaneOS

Full release notes: Releases · DiamaneOS
Install guide: Install · DiamaneOS

Great you could provide Fairphone Camera app! Thanks for this addition. Do optical image stabilization (OIS), 60fps FHD video and 50MP mode all work?

OIS and 60fps FHD work. 50MP needs a small platform change and should work properly with the next update. Front portrait and low-light video modes will remain as limitations.