Custom ROMs GrapheneOS, CalyxOS, IodéOS: Vergleich aus Anwendersicht

Vielen Dank an Mike für die ausgezeichnete Serie zu den Custom ROMs. Diese Analysen hatte ich schon lange vermisst. Zufällig habe ich mit Erscheinen der Serie selbst ein Pixel 6a eingerichtet und darauf Graphene-, Calyx- und Iodé-OS getestet. Ich wollte den Analysen von Mike daher meine Erfahrungen aus Anwendersicht hinzufügen.

  1. Installation
    Die Webinstallation von Graphene ist unübertroffen einfach, die von Calyx reibungslos für alle, die noch einfache Kommandos auf der Befehlszeile tippen können. Die Installationsanleitung für Iodé auf deren Webseite war für mich nicht brauchbar, da zu kurz. Die Installation läuft jedoch identisch wie bei LineageOS und mit der Anleitung für LineageOS konnte ich schließlich auch Iodé problemlos installieren. Übrigens können beim Pixel 6a Custom ROMs auf Custom ROMs installiert werden. Es ist nicht notwendig dazwischen zum Stock ROM zurückzugehen. Meine Sequenz war Stock-Android → Graphene → Calyx → Iodé → Calyx.
    Als ich die Installationen Anfang Dez. '23 durchführte, aktualisierten sich Graphene- und Calyx-OS auf Android 14, Iodé lief noch mit Android 13. Die Sicherheitspatches waren alle vom Nov.

  2. Arbeits- und Nutzerprofile
    Ich benutze ein Arbeitsprofil, aktiviert über die App Shelter aus F-Droid zur Isolierung übergriffiger Apps inkl. evtl. installierter Google-Dienste. Bei allen 3 ROMs funktioniert das problemlos. Graphene erlaubt insgesamt 32 Nutzerprofile, Iodé 30, CalyxOS 16. Das sollte genügen.
    Ein generelles Manko von Android ist aus meiner Sicht, das jede App sehen kann, welche anderen Apps im jeweiligen Nutzerprofil installiert sind. Über WhatsApp könnte Meta z.B. herausfinden, welche anderen Messenger, sozialen Netzwerke Ihr benutzt oder ob Apps vorhanden sind, die auf politische, sexuelle oder religiöse Präferenzen schließen lassen. Keines der drei ROMs löst dieses Problem im Grundsatz. Bei allen bleibt nur, kritische Apps in unterschiedliche Nutzerprofile aufzuteilen. Im Arbeitsprofil lassen sich Apps zudem „einfrieren“. Damit sind sie für andere Apps nicht mehr sichtbar, aber auch nicht mehr aktiv.

  3. Firewall, Trackerblocker, VPN
    Weiterhin benutze ich Filter-, Firewall-Apps um Tracker von übergriffigen Apps zu blockieren. Früher war das Blokada, inzwischen bin ich zu RethinkDNS gewechselt. Diese Apps benötigen den VPN-Dienst des OS. Eine Sonderstellung nimmt die vorinstallierte Iodé-Filterapp ein, die ohne VPN Verbindungen von Trackern blockiert. VPN Filterapps funktioniern bei allen drei OS, bei Iodé klinkt sich eine VPN-Filterapp hinter der Iodé-Filterapp ein und kann Verbindungen blockieren, die von der ersten App nicht gefiltert werden.
    Umständlich kann es werden, wenn die Filterung über mehrere Nutzerkonten bzw. das Arbeitsprofil wirken soll. CalyxOS bietet die eleganteste Lösung, die ich bisher bei keinem anderen Android gefunden habe: Über einen Schalter in den VPN-Einstellungen lässt sich der Datenverkehr aller Nutzerkonten global über dieselbe VPN leiten. Bei Graphene und Iodé ist das VPN immer nur für ein einziges Nutzerkonto geschaltet. VPN Filterapps müssen daher seperat für jedes Nutzerkonto installiert werden und beim Kontowechsel ein- und ausgeschaltet werden, da global immer nur eine VPN erlaubt ist. Iodé schaltet seine eigene Filterapp immerhin für jedes Nutzerkonto simultan aktiv, mit Graphene konnte ich VPN und Filterung gleichzeitig immer nur für ein Nutzerkonto schalten.
    Die Iodé Filterapp benutzt in der freien Version die Filterlisten von OISD und Steven Black, die auch in RethinkDNS und Blokada verfügbar sind. Diese Listen sind sehr gut, allerdings gehen weitere Konfigurationen, wie das Laden zusätzlicher Listen oder das manuelle Blockieren von Verbindungen nur in der Bezahlversion der App.
    Graphene- und CalyxOS erlauben es, jeder App einzeln den Internetzugang abzuschalten, bei Iodé habe ich diese Funktion in der kostenfreien Version nicht gefunden. Mit RethinkDNS kann diese Funktion aber nachinstalliert werden.
    IodéOS mit seiner vorinstallierten Filterapp ist dagegen die einzige Lösung für Nutzer, die ihr VPN nicht zur Trackerabwehr nutzen können, da z.B. die Verbindung zum Firmenserver darüber laufen muss.
    Ein weiteres Manko aller drei OSs, sowie von Android generell ist aus meiner Sicht, dass alle installierten Apps ohne besondere Berechtigungen die Android-ID auslesen können. Die Android-ID ist eine langlebige ID, über die sich Nutzer tracken lassen. Ich habe bisher keinen Weg gefunden, den Zugriff darauf zu sperren. Anders als bei hardwarebasierten Ids bekommt aber jedes Nutzerkonto eine eigene Android-ID. Über das Löschen eines Nutzerkontos oder das Zurücksetzen auf Werkeinstellungen lassen sich die jeweiligen Android-IDs zurücksetzen und über diesen Weg langfristiges Tracking unterbinden.

  4. Vorinstallierte Apps
    Die Appauswahl von GrapheneOS ist spartanisch mit Icons in dezentem Schwarz-Weiß. Damit ist sicher nichts Überflüssiges dabei. Einzige internetfähige App ist der Vanadiumbrowser. Es fehlt selbst ein App-Store. F-Droid kann über den Browser nachinstalliert werden, die Google Play Dienste mit Appstore bietet Graphene selbst zur Nachinstallation an.
    CalyxOS bietet bei der OS-Installation eine wohl durchdachte Auswahl durchweg datenschutzfördernder Apps zur Installation an, wie Signal, K9 Mail, VPN-Dienste etc. Als App Stores sind F-Droid und Aurora vorhanden, sowie als Ersatz für Google optional MicroG, als Browser Chromium.
    Die App-Auswahl von IodéOS ist dagegen fragwürdiger. Es wurde noch die inzwischen zurückgezogene Mailapp p=p angeboten, sowie als Navigationsapp OpenEarth, die meines Wissens nicht Open-Source ist. Der Iodé-Browser ist ein Firefox-Fork, MicroG ist auch dabei. Die Apps für Medien, Dokumente, Kontakte, etc. sind zwischen Calyx und Iodé weitgehend identisch.
    Ich war zunächst skeptisch gegenüber dem Konzept von Graphene, die originalen Google-Dienste anstatt MicroG anzubieten. Tatsächlich starteten die Googledienste beim erstmaligen Start unter Graphene auch ein Feuerwerk an Verbindungen zu Google (ca. 20 Hostadressen, siehe Mikes Analysen). In der Folge wurde aber ohne Zutun des Nutzers fast nur noch der Instant Messaging Dienst „mtalk.google.com“ kontaktiert, was keinen wesentlichen Unterschied zu MicroG darstellt. Das Konzept funktioniert also, zumal die Dienste durch ihre Sandbox eingeschränkt sind.
    Alle drei ROMs bieten Seedvault zur Systemsicherung, -migration. Damit könnte es möglich sein, Apps, Nutzerdaten zwischen diesen drei ROMs zu migrieren, was ich jedoch nicht getestet habe.
    Wer mag, kann Apps des Google Stock-ROMs mit in die Custom ROMs nehmen. Dazu bietet sich die Google Kameraapp an oder der Soundamplifier. Beide senden keine Daten. Wer nicht über das Playstore gehen will, kann die APKs aus dem Stock-ROM extrahieren (z.B. mit dem Package Manager aus F-Droid) und diese per Sideloading im Custom-ROM wieder aufspielen. Für die Google Kamera können auch die Systemapps camera.services und cameraextensions auf diese Art mitgenommen werden, falls sie im Custom-ROM nicht bereits vorhanden und zur Installation akzeptiert werden.

  5. Sensoren
    Ein Alleinstellungsmerkmal von GrapheneOS ist es, appfein den Sensorzugriff zu kontrollieren. Typischerweise verbaut sind z.B. Beschleunigungs-, Luftdruck-, Magnetfeldsensoren. Deren Blockierung ist sehr wünschenswert, da diese Sensoren als Mikrofone missbraucht werden können oder um die Bewegungsart zu detektieren (zu Fuss, Rad, Bahn, Auto) ohne dass der Nutzer dies erkennen kann. Neuere Versionen von CalyxOS haben in den Schnelleinstellungen immerhin von Haus aus einen Knopf um Sensoren global zu deaktivieren. Bei jedem Android ab V.10, damit auch unter Iodé sollte diese Funktion zudem unter Entwickleroptionen / Entwicklerkacheln aktivierbar sein. Für Iodé hatte ich das allerdings nicht ausprobiert.
    Die globale Deaktivierung der Sensoren hat den Nachteil, dass Funktionen wie Bildschirmrotation oder Kamera evtl. auch deaktiviert werden, was bei der appfeinen Regelung von Graphene vermeidbar ist.

  6. Resumée
    Ich habe mich schließlich für CalyxOS entschieden, da es für mich den besten Kompromiss zwischen Datenschutz, Sicherheit und Nutzerfreundlichkeit bietet. Ich schätze insbesondere die Möglichkeit, über ein globales VPN den Datenverkehr aller Nutzerprofile simultan kontrollieren zu können, sowie die angebotene Appauswahl. Die von Mike entdeckten Schwächen sind entweder behoben oder lassen sich abschalten.
    GrapheneOS ist sicher die beste Option für Nutzer, die höchste Sicherheit und Privatsphäre benötigen.
    IodéOS hat als Alleinstellungsmerkmal die eingebaute Trackerfilterung, die ohne VPN funktioniert und ein wie ich finde, schickes Design. Fragwürdig finde ich an Iodé die Appauswahl, sowie dass sie Dienste, die andere umsonst bereitstellen zu Geld machen wollen. Allerdings haben natürlich auch datenschutzfreundliche Entwicker das Recht auf Vergütung ihrer Arbeit. Iodé hatte bei meinem Vergleich das älteste Android.
    Ich vermisse weiterhin bei ausnahmslos allen mir bekannten Android-Forks und Custom-ROMs die Möglichkeit, Apps gegenüber anderen Apps „unsichtbar“ zu machen und das Auslesen der Android-ID zu sperren. Bei allen außer GrapheneOS vermisse ich Sensoren appfein zu regeln, bei allen außer CalyxOS die Möglichkeit das VPN global für alle Nutzerkonten zu schalten. Sind Euch bereits Wege bekannt, diese Funktionen zu bekommen?
    Im Vergleich zu Stock-Androids oder dem iOS finde ich alle drei ROMs ausgezeichnet und sehr empfehlenswert. Die Unterschiede liegen in Nuancen.

6 „Gefällt mir“

Schöner Bericht.
Sind Infos dabei, die für mich neu waren.

Ein für mich wichtiger Grund den ich so bei keinem anderen Rom gefunden habe.
CalyxOS kann Updates von F-Droid automatisch installieren.
Keine Bestätigung von Nöten.
Da ich Leute im Bekanntenkreis habe, die sonst nie ein Update machen würden.

Letztendlich finde ich auch alle 3 Custom Roms gut und jede hat seine Berechtigung.

1 „Gefällt mir“

Da ich noch nie automatische Updates benutzt habe und auch nicht möchte, habe ich das nie gegengeprüft. War aber der Meinung das seit der Ankündigung (Unattended updates for everyone, 1.19 is here) dies auf Geräte die Android 12 & höher haben funktionieren soll.

“Use Session Installer on both F-Droid and F-Droid Basic, including support for automatic background updates” - yes, this is the big one, the one that everybody wanted since forever. On Android 12 or later, apps will be autoupdated after the first install or first update, no root, no unlocking, no PrivExt needed. Older apps that can’t be updated will feature a banner explaining why.

Das wäre natürlich fantastisch.
Ging vor 7 Monaten noch nicht.
Hoffe hierzu kann ein Iode oder Graphene OS Besitzer berichten.

Zumindest wird mir unter iodéOS ‚Automatisch installieren‘ in F-Droid angeboten. Ich hab’s jetzt mal aktiviert und werde schauen, ob’s funktioniert:

GOS, Android 14 , Droid-Ify v0.4.9:

Hier geht das nicht. Mögliche Aktualisierungen werden zwar angezeigt, installieren muss ich sie aber händisch. In den Einstellungen gibt es diese Möglichkeit nicht. Kann aber daran liegen, dass ich eben statt der Standard-F-Droid-App Droid-Ify nutze.

Bei einem Gerät hier mit /e/ OS und der Standard-F-Droid-App 1.19.2 gibt es „Automatisch installieren“ in den Einstellungen nicht. Hier heißt es „Automatisch abrufen - Aktualisierungen werden automatisch heruntergeladen und Sie werden benachrichtigt, um sie zu installieren“

Den kompletten Internetzugang kannst du auch in iodéOS für jede App blockieren:
Lange auf das App-Icon tippen → App-Info → Mobile Daten und WLAN.

1 „Gefällt mir“

Die Einstellung stand schon immer drin.
Dennoch musste das Update per Hand installiert werden.

Wie gesagt, damals gab es außer CalyxOS keine OS welche F-Droid dementsprechend integriert hat.

Wollte nur einen besonderen Punkt erwähnen, da es ja um den Vergleich ging.

Automatische Updates in F-Droid funktioniert!

1 „Gefällt mir“

Das find ich super!
Dann ist mein Grund natürlich nicht mehr der rede Wert.

Noch ein Hinweis zu F-Droid unter Iodé- und Calyx-OS: Beide binden eigene Repositories in ihre F-Droid Version ein, die sie vorinstalliert bereitstellen. Diese Repositories lassen sich auch in jedes F-Droid unter anderen Androidversionen einbinden. Unter Einstellungen, Paketquellen diese beiden Adressen hinzufügen:

https://fdroid-repo.calyxinstitute.org/fdroid/repo
https://raw.githubusercontent.com/iodeOS/fdroid/master/fdroid/repo

Das Calyx-Repo bringt bei einem anderen Android wahrscheinlich nicht viel. Es sind nur zwei Systemapps drin, die wohl gerade mit den zuvor diskutierten automatischen Updates zusammenhängen. Im Iodé Repository befinden sich dagegen die Anwenderapps, die das OS mitbringt. Wer mag kann von dort z.B. den Iodé-Browser und andere Iodé-Appversionen auf jedem Android installieren.

Wie hast du den letzten Teil festgestellt? Soll der auch für GrapheneOS gelten?
Zumindest bei GrapheneOS müssen diese zwar pro Profil installiert werden, aber beim Wechsel des Nutzerprofils musste Ich ein VPN nicht ein- und/oder abschalten.

Profil A & B: RethinkDNS, Profil C: Wireguard.
Ich kann beliebig zwischen diesen wechseln, ohne dass eine einzige VPN Verbindung hier abreißt, oder beendet/gestartet werden muss. Da Pushverbindungen in Profil A und Profil B nicht beendet werden, obwohl diese über Rethink aufgebaut sind, wenn Ich die Profile wechsel, kann der VPN Service nicht gestoppt worden sein. Ebenso läuft die Wireguardverbindung von Profil C weiter (Datenverbrauch, Keep-Alive Handshakes) während Ich in Profilen mit aktivem RethinkDNS bin. Alle im „Lockdown“ Modus.

Lasse Ich Nutzerprofile im Hintergrund nicht laufen, dann macht die aktuelle Version von RethinkDNS, also neuer als v0.5.5a, Probleme bei mir. Dort muss Ich beim Starten eines Profils manuell auf Start in RethinkDNS klicken - der automatische Start ist aber in den Einstellungen auch als experimentell markiert. Das ging vorher aber ohne Probleme, ist also ein Problem bei RethinkDNS.
Falls du daher den Gedanken hast?

Würde mich über eine Rückmeldung diesbezüglich freuen, wäre ziemlich blöd für mich, wenn Ich falsch liege. Dann ist mein Setup im Eimer. :slight_smile:

Hallo Astolfo,
danke für Deinen Hinweis! Ich lag hier tatsächlich nicht ganz richtig, da ich zwei Beobachtungen vermengt habe. Eine davon ist nicht mehr aktuell:

  1. Unter dem aktuellen GrapheneOS habe ich nur geschaut, ob es in den VPN-Einstellungen eine Funktion „Globales VPN“ gibt, wie bei CalyxOS, über die der Datenverkehr aller Profile über dasselbe VPN gleitet werden kann.

  2. Schon früher hatte ich die Erfahrung gemacht, dass unter Android gleichzeitig nur eine VPN-Verbindung bestehen kann, dass ich ein einem Nutzerprofil also nur dann ein VPN schalten kann, wenn in keinem anderen Profil noch eine aktiv ist. Diese Einschränkung gilt unter Android 14 offensichtlich nicht mehr. Ich habe es nun auch in einem Stock Android 14 von Samsung ausprobiert. Auch dort kann ich, wie Du unter Graphene in zwei Profilen das VPN von Rethink DNS simultan eingeschaltet lassen. Ich vermute trotzdem, dass immer nur eine VPN simultan Daten senden kann, ähnlich wie auf einem Dual-SIM Handy simultan nur mit einer SIM telefoniert werden kann. Android scheint inzwischen aber so schlau zu sein selbständig zwischen den VPNs umschalten zu können. Ich hatte also quasi den Fortschritt verschlafen und blieb in meinem alten Trott. Die Frage ist, was mit Daten passiert, die Apps in einem Profil im Hintergrund senden wollen, während der Nutzer im anderen Profil aktiv ist. Hast Du schon mal überprüft, ob bei Dir in diesem Fall Daten am VPN vorbei gehen?

Die Einschränkung unter Graphene- und Iodé-OS ist also nun nur, dass für jedes Nutzerprofil separat eine eigene Firewall konfiguriert werden muss, während bei Calyx-OS eine globale Firewall für alle Profile geschaltet werden kann. Hier diese Funktion von Calyx im Screenshot:

Ich habe das Szenario einmal oberflächlich geprüft, und extra einen Raspberry Pi als WLAN-AP aufgesetzt, um den Traffic mitzuschneiden, da Ich momentan keine eigene, ordentliche Netzwerkinfrastruktur habe. Entsprechend kurz habe Ich getestet. Für Wireguard habe Ich extra einen Tunnel angelegt, an dessen Ende Ich ebenfalls den Traffic mitgeschnitten habe, um auch dort sicher zu gehen.

Dabei entspricht soweit alles meinen Erwartungen:
Profil A sendet über RethinkDNS, was sich an den durchgehend aktiven IP-Filterregeln, und den über DoH versandten DNS Anfragen erkennen lässt. Zusätzlich laufen dort etwaige Keep-Alive Handshakes, als auch sonstige Datenübertragungen weiter, während sich das Profil im Hintergrund befindet.

Profil C sendet über Wireguard, zur gleichen Zeit wie Profil A aktive Datenverbindungen aufzeigt. Ebenfalls an Handshakes, etc. im Traffic Mitschnitt erkennbar, egal welches Profil offen ist.
Dabei waren im Mitschnitt am WLAN AP keine Leaks auffindbar (Pakete die über Wireguard versandt werden sollten), und auch am Ende des Wireguard-Tunnels keine Leaks zu finden (Pakete, die normal vom Gerät versandt werden sollten - über Rethink oder einem Profil ohne VPN).

Natürlich ist in meinen Test in jeden Profil „Durchgehend aktives VPN“ und „Verbindungen ohne VPN blockieren“ aktiv, es sollte also definitiv auch nichts am VPN vorbei gehen - außer Wireguards eigene Anfrage an download.wireguard.com (Aktualisierungen), „Connectivity Checks“ vom System - zmd. unter GrapheneOS werden letztere auch unter Umgehung des VPN versandt, aber das sollte auf jeden Android Gerät so sein. Diese beinhalten aber alle keine Nutzdaten, und dass ein Gerät vorhanden ist, oder Wireguard benutzt wird, ist auch so zu erkennen.


Falls man bei Calyx „Globales VPN“ aktiv hat, kann dieses, falls es z.B. RethinkDNS ist, Anwendungsspezifisch filtern? Oder im Fall von Wireguard Anwendungen ausschließen? Es müsste dafür ja Zugriff auf die installierten Pakete und/oder deren UIDs, o.Ä. haben, was glaube Ich nicht der Fall sein wird, profilübergreifend.
Falls nicht, wäre das etwas unschön, wenn man das als Anforderung hat.
Aber ansich ein gutes Prinzip, da dann nicht unbedingt alles doppelt und dreifach laufen muss.

Hallo Astolfo,

Rethink-DNS, im Hauptprofil installiert, kann unter CalyxOS mit der Einstellung Globales VPN Apps, DNS-Domains und IP-Adressen sowohl aus dem Hauptprofil als auch dem Arbeitsprofil auflösen und einander zuordnen. Tatsächlich „sieht“ die App unter diesen Einstellungen scheinbar gar nicht, in welchem Profil eine App installiert ist. Falls daher dieselbe App in beiden Profilen installiert ist, erscheint sie in Rethink-DNS nur als eine App. In diesem Fall lassen sich also für die beiden App-Kopien keine unterschiedlichen Filtereinstellungen wählen. Das könnte für manche Anwendungsszenarien auch ein Nachteil sein. Tatsächlich wird in Rethink-DNS für Arbeitsprofilapps bei globalem VPN nicht die übliche Aktentasche im Icon angezeigt.

Noch ein Wort zum Arbeitsprofil unter CalyxOS. Ursprünglich hatte ich es mit Shelter aufgesetzt. Da ich ein Problem mit einer kommerziellen App hatte, die im Arbeitsprofil schon beim ersten Start abstürzte, habe ich das Arbeitsprofil neu aufgesetzt. CalyxOS bringt eine eigene Systemapp zum Einrichten des Arbeitsprofils mit. Mit einem damit eingerichteten Arbeitsprofil funktioniert die problematische App nun. Die CalyxOS Arbeitsprofil-App bringt nicht so viele Einstellungsmöglichkeiten mit wie Shelter, z.B. kann das Arbeitsprofil nur insgesamt eingefroren werden, während Shelter zusätzlich das Einfrieren einzelner Apps erlaubt. Ein mit der CalyxOS Arbeitsprofil-App eingerichtetes Arbeitsprofil ist aber offensichtlich besser in das Betriebssystem integriert und darin installierte Apps laufen stabiler. Es lässt sich z.B. schon beim Einrichten des Arbeitsprofils wählen, ob die MicroG Services dort installiert werden sollen oder nicht. Grundsätzlich können alle von CalyxOS angebotenen Anwenderapps auch gleich beim Einrichten in das Arbeitsprofil installiert werden.

1 „Gefällt mir“

Ja, das stimmt, das Magic Earth nicht Open Source ist. Ist zwar durchaus eine gute App, die ich immer wieder Leuten als Kompromiss empfehle, die meinen, sie könnten keinesfalls auf Google Maps verzichten wegen der Verkehrsinfos, und auch trackerfrei.

Aber kann nicht bei iodeOS zumindest zu Beginn bei der Installation bzw. beim Einrichten ausgewählt werden, welche Apps man installiert haben möchte und welche nicht?
Das ist mE bspw. bei /e/OS eines der größten Ärgernisse, das man da keine Wahl hat und Magic Earth und MicroG automatisch als Standard dabei sind. Ich hatte gehört, bei iodeOS sei das anders gelöst.

Bei iodOS kann man alle vorinstallierten Apps jederzeit wieder abwählen und durch eigene ersetzen.

1 „Gefällt mir“

/e/OS hat ganz andere Probleme und man kann nur von der Nutzung abraten: