Unofficial builds for Google Pixel devices

New builds published:

  • PIxel 4a and higher: v7.1
  • Pixel 3a and lower: v6.11 (sadly, LineageOS does not provide A16 / LOS 23 updates for these devices)

Major Announcement for users of @rik’s Unofficial iodéOS Pixel builds:

Due to changes on the LineageOS for microG server that hosts my unofficial iodéOS Pixel builds, and also due to us now implementing OTA updates for these builds, a new signing key has been used to make builds starting in January 2026.

This means if you attempt to install an update using “Updater App > 3 dots > Local update” it will fail, due to the mismatch between the build signature of the pre-Jan-2026 build and the new build. In order to update without losing data you will need to boot into Recovery and install the new build via adb sideload. While installing, you will get a warning message that the “Build signature does not match”. Accepting this warning will then proceed to install the new build and you will be all set with the new build signature and with the OTA update configuration.

Future builds will now come “OTA” directly from the Updater App without the need to manually download them and apply as “Local Updates”. Enjoy!

4 Likes

Hello Rik,

thank you for your support. Now I know what I need to do.
I am already familiar with Seedvault from my move from calyx to iode.

1 Like

Yes, sorry you have to do that, but I think you can appreciate that while we make the unoffiicial builds with the same source code it is a different build with different build keys and signatures, so it is essentially like installing a “new” ROM to move between these. Good luck!

I have the same key pair for both avb and ota signing (so the parameter for --key-avb and --key-ota is the same, though the passphrase to decrypt the private key still needs to be typed twice, but may be omitted if the private key is not encrypted), and use the following script to make lockable personal ota packages:

#!/bin/sh
exec "$HOME/git/avbroot/target/release/avbroot" ota patch \
     --key-avb "$1" --key-ota "$1" --cert-ota "$2" \
     --rootless --clear-vbmeta-flags -i "$3" -o "$4"

“$3” is the ota package to be resigned, “$4” is the path to save the resigned output.

You can use the current build process to produce non-lockable ota packages, and then use avbroot and the same key pair(s) to turn them into lockable ota packages by resigning.

1 Like

I can look at this a bit down the road, but I notice that my devices (Pixel 3a XL) are not supported, only the 4 series and higher: Supported devices · Issue #299 · chenxiaolong/avbroot · GitHub

So I could make a blind build but I would be a bit uneasy distributing that. If you are willing to test on your device, knowing that a useless paperweight is a real possibility then I could pass it to you (when I get it made)?

This is not true, as I have a resigned lineagos running on a pixel 2, and even aura (razer phone 2), which is once supported by divestos with relocking.

Pixel 3a XL might be special someway, but according to #299 and #274, only resigning stock google ota packages would be problematic, so resigning iodeos builds should be okay.

#299 is misleading someway, as it mixed up device support and specific (google stock) ota package format support.

1 Like

Thank you for the great efforts you put into building these.

Are you using Seedvault as a plan B? Rik seems to think it will update without losing data.

Thanks @rik. Here are the detailed steps I used to successfully update my Pixel 4a5g unofficial build from Iode 6.7 to Iode 7.1 without losing data:

  1. Back up phone, just in case.

  2. Connect phone to computer via USB

  3. Open a terminal

  4. Confirm authorized ADB connection with adb devices

  5. Download the IodeOS…zip file for the 7.1 unofficial Rik build onto computer

  6. Boot Pixel into recovery mode from computer terminal using adb reboot recovery. This re-confirms adb connection and provides a clear path to Recovery Mode.

  7. Sideload the IodeOS…zip file.

    1. On the device, select “Apply Update”, then “Apply from ADB”.

    2. On the host machine, sideload the package using: adb -d sideload /path/to/zip

    3. Wait for Pixel to show the “Signature failed” error. Choose “Yes” to continue to load anyway.

    4. Wait for Pixel to show “To install additional packages, you need to reboot recovery first. Do you want to reboot to recovery now?” Select NO.

    5. Select “Reboot System now” from recovery main menu.

    6. Check IodeOS system update information on the Pixel to confirm that the update was successfull.

2 Likes

Thanks for the info. Yes, I use Seedvault as a backup; a backup can never hurt.
There are two different cases here.

  1. The case you describe: unofficially iodeOS from v6.7 to v7.1 via adb sideload without losing data.

  2. The case I mean: unofficially iodeOS v7.1 to official v7.1. Rik tested this and ended up in a boot loop.

2 Likes

I tried the same and did a factrory reset via recovery, but the unofficial 7.1. did not install because of key verification failure. I didnt get a bootloop then, but just landed in the old 6.9. official ROM.
What did I miss?

You need to “proceed anyway” when you are warned about the key verification failure, this is due to now using a different build key as described above. Thanks to @HandyTravis above a few posts for writing up the details to move to 7.1.

I would have done so (as usual…), but the question didnt come up!