IodeOS feedback (first install) Fairphone 5

Hey everyone,
I recently got my hands on the Fairphone 5 and decided to install iodéOS. As someone who values both sustainability and privacy, this pairing felt like a perfect match!

Installation

The installation process was surprisingly smooth, with the iodéOS installer working seamlessly alongside Fairphone’s unlockable bootloader script. It took me less than an hour to get the OS up and running, which is impressive.

Features & Daily Use

The iodé blocker and the detailed app privacy stats are standout features. I also appreciate the system-level DNS encryption, which adds an extra layer of security and peace of mind.

Battery life has been excellent so far. With my daily use, I can manage up to 3 days on a single charge, which is quite impressive!

The user interface is another highlight—it’s clean, snappy, and feels well-optimized for the Fairphone 5’s hardware.

Areas for Improvement

While I’m very happy overall, there are a few small details I think could be improved:

  • Shortcut noise in “Do Not Disturb” mode: The shortcut to activate ultra low brightness quickly (holding VOL+ and VOL–) still makes noise even when “Do Not Disturb” mode is enabled.
  • Luminosity slider placement: The brightness slider in the status bar requires sliding down twice to access. Moving it to the first menu would make it more convenient.
  • Auto-brightness behavior in the dark: This may be specific to the Fairphone 5’s sensor, but in dark environments, the screen brightness frequently switches between 0 and 1. It feels like the screen’s own light is triggering the sensor, creating a loop of adjustments.

Thanks for all the hard work and i wish you the best the future!

I’ve also just started using Iode on a Fairphone 5, was using /e/ previously.

Generally, super happy with Iode. Love that it is closer to LineageOS (less bloat, keeps Trebuchet and AudioFX). I miss /e/ app store, as Aurora can be clunky sometimes, but a small price to pay to not be two major versions of Android behind and stuck at 60hz.

I like the persistent notification in Iode too about what it blocks and what it doesn’t.

Biggest problems I have are stability issues. I don’t think Iode or /e/ can do anything about it! I don’t understand how LineageOS based OS seem to have such bugs but FPOS does not. The main one being soft reboots to the boot animation (apparently only if you have 90hz enabled).

Also some confusion about standard vs reinforced blocking. Obviously reinforced is better but how exactly? Is it just a paywall so you only block ~80% of stuff by standard and let others through unless you pay or is reinforced strict to the point where it might break stuff, so its good to be able to have it on/off.

1 Like

Were you able to lock the bootloader after flashing? I just tried installing it but with no luck. It’s “corrupted” and therefore won’t boot after locking.

I went back to stock firmware and tried again. I tried iode v6.0…

Someone any ideas what’s going on?

Maybe you trigged anti-rollback protection. Whatever you were running before you tried to install Iode OS what was the Android patch date?

Iode for me is 5th Jan 2025… so actually I’d be surprised if you were triggering that!

At the very beginning of the flash process for Iode, did you get any errors when it tried to erase and then flash “avb_custom_key”?

fabian@X13:~/Downloads/iode-6.0-20250131-FP5-fastboot$ sudo ./flash-all.sh
[sudo] Passwort für fabian: 
Erasing 'avb_custom_key'                           OKAY [  0.009s]
Finished. Total time: 0.015s
Warning: skip copying avb_custom_key image avb footer (avb_custom_key partition size: 0, avb_custom_key image size: 1032).
Sending 'avb_custom_key' (1 KB)                    OKAY [  0.002s]
Writing 'avb_custom_key'                           OKAY [  0.007s]
Finished. Total time: 0.024s
mke2fs 1.46.6 (1-Feb-2023)
Creating filesystem with 4096 4k blocks and 4096 inodes

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

Warning: skip copying metadata image avb footer due to sparse image.
Sending 'metadata' (52 KB)                         OKAY [  0.003s]
Writing 'metadata'                                 OKAY [  0.002s]
Finished. Total time: 0.065s
******** Did you mean to fastboot format this ext4 partition?
Erasing 'metadata'                                 OKAY [  0.022s]
Finished. Total time: 0.026s

    F2FS-tools: mkfs.f2fs Ver: 1.16.0 (2023-04-11)

Info: Debug level = 1
Info: Trim is disabled
Info: Set conf for android
Info: Enable Project quota
Info: not exist /proc/version!
Info: Segments per section = 1
Info: Sections per zone = 1
Info: sector size = 512
Info: total sectors = 448795544 (219138 MB)
Info: zone aligned segment0 blkaddr: 512
Info: add quota type = 0 => 4
Info: add quota type = 1 => 5
Info: add quota type = 2 => 6
Info: format version with
  "6.8.0-52-generic"
[f2fs_init_sit_area: 641] 	Filling sit area at offset 0x00600000
[f2fs_init_nat_area: 675] 	Filling nat area at offset 0x01600000
[f2fs_add_default_dentry_root:1258] 	Writing default dentry root, at offset 0x2a800
[f2fs_write_root_inode:1303] 	Writing root inode (hot node), offset 0x2a200
[f2fs_write_default_quota:1390] 	Writing quota data, at offset 0002a801 (1/2)
[f2fs_write_default_quota:1390] 	Writing quota data, at offset 0002a802 (2/2)
[f2fs_write_qf_inode:1441] 	Writing quota inode (hot node), offset 0x2a201
[f2fs_write_default_quota:1390] 	Writing quota data, at offset 0002a803 (1/2)
[f2fs_write_default_quota:1390] 	Writing quota data, at offset 0002a804 (2/2)
[f2fs_write_qf_inode:1441] 	Writing quota inode (hot node), offset 0x2a202
[f2fs_write_default_quota:1390] 	Writing quota data, at offset 0002a805 (1/2)
[f2fs_write_default_quota:1390] 	Writing quota data, at offset 0002a806 (2/2)
[f2fs_write_qf_inode:1441] 	Writing quota inode (hot node), offset 0x2a203
[f2fs_update_nat_default:1478] 	Writing nat root, at offset 0x00001600
Info: Overprovision ratio = 0.310%
Info: Overprovision segments = 343 (GC reserved = 329)
[f2fs_write_check_point_pack: 857] 	Writing main segments, cp at offset 0x00000200
[f2fs_write_check_point_pack: 945] 	Writing Segment summary for HOT/WARM/COLD_DATA, at offset 0x00000201
[f2fs_write_check_point_pack: 959] 	Writing Segment summary for HOT_NODE, at offset 0x00000202
[f2fs_write_check_point_pack: 971] 	Writing Segment summary for WARM_NODE, at offset 0x00000203
[f2fs_write_check_point_pack: 982] 	Writing Segment summary for COLD_NODE, at offset 0x00000204
[f2fs_write_check_point_pack: 990] 	Writing cp page2, at offset 0x00000205
[f2fs_write_check_point_pack:1010] 	Writing NAT bits pages, at offset 0x000003fe
[f2fs_write_check_point_pack:1031] 	Writing cp page 1 of checkpoint pack 2, at offset 0x00000400
[f2fs_write_check_point_pack:1050] 	Writing cp page 2 of checkpoint pack 2, at offset 0x00000405
[f2fs_write_super_block:1083] 	Writing super block, at offset 0x00000000
Info: format successful
Warning: skip copying userdata image avb footer due to sparse image.
Sending 'userdata' (97 KB)                         OKAY [  0.004s]
Writing 'userdata'                                 OKAY [  0.007s]
Finished. Total time: 0.161s
Sending 'modem_a' (184796 KB)                      OKAY [  5.893s]
Writing 'modem_a'                                  OKAY [  0.517s]
Finished. Total time: 7.991s
--------------------------------------------
Bootloader Version...: FP5.UT2K.B.098.20250109
Baseband Version.....: 13
Serial ...........: *****
--------------------------------------------
extracting android-info.txt (0 MB) to RAM...
Checking 'product'                                 OKAY [  0.002s]
Setting current slot to 'a'                        OKAY [  0.002s]
extracting fastboot-info.txt (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to disk... took 0.037s
Writable partitions are not supported
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting boot.img (96 MB) to disk... took 0.235s
archive does not contain 'boot.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'boot_a' (98304 KB)                        OKAY [  3.040s]
Writing 'boot_a'                                   OKAY [  0.279s]
extracting super_empty.img (0 MB) to RAM...
extracting dtbo.img (24 MB) to disk... took 0.047s
archive does not contain 'dtbo.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'dtbo' (24576 KB)                          OKAY [  0.784s]
Writing 'dtbo'                                     OKAY [  0.063s]
extracting super_empty.img (0 MB) to RAM...
extracting vendor_boot.img (96 MB) to disk... took 0.175s
archive does not contain 'vendor_boot.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'vendor_boot' (98304 KB)                   OKAY [  3.125s]
Writing 'vendor_boot'                              OKAY [  0.311s]
extracting super_empty.img (0 MB) to RAM...
extracting vbmeta.img (0 MB) to disk... took 0.000s
archive does not contain 'vbmeta.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'vbmeta' (8 KB)                            OKAY [  0.002s]
Writing 'vbmeta'                                   OKAY [  0.001s]
extracting super_empty.img (0 MB) to RAM...
extracting vbmeta_system.img (0 MB) to disk... took 0.000s
archive does not contain 'vbmeta_system.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'vbmeta_system' (4 KB)                     OKAY [  0.001s]
Writing 'vbmeta_system'                            OKAY [  0.001s]
Rebooting into fastboot                            OKAY [  0.002s]
< waiting for any device >
extracting super_empty.img (0 MB) to disk... took 0.000s
Sending 'super' (4 KB)                             OKAY [  0.001s]
Updating super partition                           OKAY [  0.007s]
Resizing 'odm_a'                                   OKAY [  0.004s]
Resizing 'product_a'                               OKAY [  0.004s]
Resizing 'system_a'                                OKAY [  0.004s]
Resizing 'system_ext_a'                            OKAY [  0.004s]
Resizing 'vendor_a'                                OKAY [  0.004s]
extracting super_empty.img (0 MB) to RAM...
extracting odm.img (1 MB) to disk... took 0.048s
archive does not contain 'odm.sig'
Resizing 'odm_a'                                   OKAY [  0.004s]
Sending 'odm_a' (1428 KB)                          OKAY [  0.050s]
Writing 'odm_a'                                    OKAY [  0.062s]
extracting super_empty.img (0 MB) to RAM...
extracting product.img (1083 MB) to disk... took 3.740s
archive does not contain 'product.sig'
Resizing 'product_a'                               OKAY [  0.004s]
Sending sparse 'product_a' 1/5 (262024 KB)         OKAY [  8.229s]
Writing 'product_a'                                OKAY [  0.600s]
Sending sparse 'product_a' 2/5 (262092 KB)         OKAY [  8.260s]
Writing 'product_a'                                OKAY [  0.555s]
Sending sparse 'product_a' 3/5 (262060 KB)         OKAY [  7.963s]
Writing 'product_a'                                OKAY [  0.581s]
Sending sparse 'product_a' 4/5 (262008 KB)         OKAY [  8.054s]
Writing 'product_a'                                OKAY [  0.520s]
Sending sparse 'product_a' 5/5 (57836 KB)          OKAY [  1.809s]
Writing 'product_a'                                OKAY [  0.175s]
extracting super_empty.img (0 MB) to RAM...
extracting system.img (931 MB) to disk... took 3.079s
archive does not contain 'system.sig'
Resizing 'system_a'                                OKAY [  0.004s]
Sending sparse 'system_a' 1/4 (262092 KB)          OKAY [  8.296s]
Writing 'system_a'                                 OKAY [  0.603s]
Sending sparse 'system_a' 2/4 (262052 KB)          OKAY [  8.509s]
Writing 'system_a'                                 OKAY [  0.498s]
Sending sparse 'system_a' 3/4 (261964 KB)          OKAY [  8.531s]
Writing 'system_a'                                 OKAY [  0.604s]
Sending sparse 'system_a' 4/4 (164508 KB)          OKAY [  5.380s]
Writing 'system_a'                                 OKAY [  0.427s]
extracting super_empty.img (0 MB) to RAM...
extracting system_ext.img (459 MB) to disk... took 1.535s
archive does not contain 'system_ext.sig'
Resizing 'system_ext_a'                            OKAY [  0.004s]
Sending sparse 'system_ext_a' 1/2 (260442 KB)      OKAY [  8.588s]
Writing 'system_ext_a'                             OKAY [  0.948s]
Sending sparse 'system_ext_a' 2/2 (207024 KB)      OKAY [  6.736s]
Writing 'system_ext_a'                             OKAY [  0.511s]
extracting super_empty.img (0 MB) to RAM...
extracting vendor.img (906 MB) to disk... took 2.978s
archive does not contain 'vendor.sig'
Resizing 'vendor_a'                                OKAY [  0.004s]
Sending sparse 'vendor_a' 1/4 (262032 KB)          OKAY [  8.330s]
Writing 'vendor_a'                                 OKAY [  0.595s]
Sending sparse 'vendor_a' 2/4 (262112 KB)          OKAY [  8.515s]
Writing 'vendor_a'                                 OKAY [  0.513s]
Sending sparse 'vendor_a' 3/4 (262140 KB)          OKAY [  8.303s]
Writing 'vendor_a'                                 OKAY [  0.572s]
Sending sparse 'vendor_a' 4/4 (138756 KB)          OKAY [  4.197s]
Writing 'vendor_a'                                 OKAY [  0.399s]
Finished. Total time: 162.164s
Erasing 'userdata'                                 OKAY [  0.037s]
Finished. Total time: 0.040s
Sending 'abl_a' (152 KB)                           OKAY [  0.006s]
Writing 'abl_a'                                    OKAY [  0.004s]
Finished. Total time: 0.023s
Sending 'aop_a' (204 KB)                           OKAY [  0.007s]
Writing 'aop_a'                                    OKAY [  0.004s]
Finished. Total time: 0.018s
Sending 'bluetooth_a' (3388 KB)                    OKAY [  0.110s]
Writing 'bluetooth_a'                              OKAY [  0.021s]
Finished. Total time: 0.188s
Sending 'cpucp_a' (184 KB)                         OKAY [  0.006s]
Writing 'cpucp_a'                                  OKAY [  0.004s]
Finished. Total time: 0.018s
Sending 'devcfg_a' (56 KB)                         OKAY [  0.003s]
Writing 'devcfg_a'                                 OKAY [  0.003s]
Finished. Total time: 0.013s
Sending 'dsp_a' (65536 KB)                         OKAY [  2.144s]
Writing 'dsp_a'                                    OKAY [  0.154s]
Finished. Total time: 2.305s
Sending 'featenabler_a' (88 KB)                    OKAY [  0.004s]
Writing 'featenabler_a'                            OKAY [  0.003s]
Finished. Total time: 0.015s
Sending 'hyp_a' (3604 KB)                          OKAY [  0.117s]
Writing 'hyp_a'                                    OKAY [  0.022s]
Finished. Total time: 0.150s
Sending 'imagefv_a' (64 KB)                        OKAY [  0.003s]
Writing 'imagefv_a'                                OKAY [  0.003s]
Finished. Total time: 0.013s
Sending 'keymaster_a' (264 KB)                     OKAY [  0.010s]
Writing 'keymaster_a'                              OKAY [  0.005s]
Finished. Total time: 0.023s
Sending 'multiimgoem_a' (16 KB)                    OKAY [  0.001s]
Writing 'multiimgoem_a'                            OKAY [  0.003s]
Finished. Total time: 0.011s
Sending 'qupfw_a' (56 KB)                          OKAY [  0.002s]
Writing 'qupfw_a'                                  OKAY [  0.003s]
Finished. Total time: 0.010s
Sending 'shrm_a' (48 KB)                           OKAY [  0.002s]
Writing 'shrm_a'                                   OKAY [  0.003s]
Finished. Total time: 0.011s
Sending 'tz_a' (3716 KB)                           OKAY [  0.125s]
Writing 'tz_a'                                     OKAY [  0.022s]
Finished. Total time: 0.156s
Sending 'uefisecapp_a' (124 KB)                    OKAY [  0.005s]
Writing 'uefisecapp_a'                             OKAY [  0.004s]
Finished. Total time: 0.016s
Sending 'xbl_config_a' (224 KB)                    OKAY [  0.009s]
Writing 'xbl_config_a'                             OKAY [  0.006s]
Finished. Total time: 0.022s
Sending 'xbl_a' (3604 KB)                          OKAY [  0.119s]
Writing 'xbl_a'                                    OKAY [  0.025s]
Finished. Total time: 0.152s
Rebooting into bootloader                          OKAY [  0.000s]
Finished. Total time: 0.051s
OKAY [  0.027s]
Finished. Total time: 0.027s

I just restored to latest FP5 factory image with January 5th security patch level, and locked both non- and critical bootloader.
Went into developer mode and unlocked again using code.
Rebooted into fastboot to unlock bootloader (not the critical) and went back straight to fastboot, then ran the script for iode-6.0-20250131-FP5-fastboot

There doesn’t seem to be an issue during install, I think, but after locking it is corrupted again.

Thanks to the forum for preventing me from posting my serial.

I don’t really know how that security patch thing is checked in the bootloader. Maybe it needs to be NEWER. It might be that you need to wait for the next Iode, flash that, to be able to lock the bootloader.

fwiw, I had a red message “corrupted OS” and then only booted to fastboot. That was when I triggered the rollback protection.

Your messages about avb_custom_key look normal.

Not sure why you use sudo though :wink:

Yeah the sudo was just another try :wink:

I guess I’ll use stock for a while now. /e/-OS does not have the January patch yet. /e/-OS worked fine and was lockable until recently.

Thanks though :slight_smile: