[Upgrading, Modifying and Unlocking] V0latyle:
WARNING: This is an EXPERIMENT for EXPERTS ONLY and is NOT for beginners or the faint of heart. If results are good, a guide will be forthcoming to use these methods to update obsolete devices.

As many of us are aware, older devices often get left out in the cold when it comes to updates. Users of the Pixel series are well aware of this - devices are generally only supported for 3 years after their release. This means that users of the OG Pixel through the Pixel 4/4XL no longer receive any updates.

However, I think I may have found a way to get around this. To combat fragmentation, AOSP introduced Project Treble as a modular solution for Android builds on various devices. The idea here is that the device-specific software would be kept separate from the kernel and system images, which would be generic, meaning that any kernel or system image could potentially run on any device. The device and vendor specific code are supposed to be contained to partitions such as /vendor_boot, /product, etc.

So, my thinking here is we may be able to manually update the kernel and/or system images on obsolete devices, thereby giving them a bit more life.

Your mission, if you choose to accept it, is to help me develop a way that older Android devices can be easily and painlessly updated to the latest Android builds.

Prerequisites:

Any Project Treble compliant device (Use this app to determine whether your device is compliant)

Unlocked bootloader

Knowledge of ADB/fastboot, device partitions, partition images, and what to do when something goes wrong

Now, the fun part.

Android Preview Generic System Image testing (should work on most devices)

Note: these builds are NOT up to date with current Pixel builds.

Download a Developer GSI release (make sure you're using the correct architecture for your device, use the GMS flavor if you want Gapps)

Extract system.img from the release zip and flash to /system (Not sure if vbmeta will be necessary)

More instructions here

AOSP Generic System Image testing

Note: These builds do NOT include GMS; you'll need to flash the GApps package of your choice. They ARE however updated continually.

Download a GSI from Android Continuous Integration:

master - Updated continuously. Builds below may be updated less frequently.

Android 13

Android 12

Android 11

Android 10

Extract system.img and flash to /system

If desired, flash the GApps package of your choice - unless someone can suggest otherwise, I believe this can only be done through TWRP

NikGapps

LiteGapps

MindTheGapps

Generic Kernel Image testing (may not work for all)

Download a Generic Kernel Image release that corresponds to your Android build (android12-5.10 is the 5.10 kernel for Android 12)

Extract boot.img from the release zip and flash to /boot

Pixel system "upgrade" (These are updated monthly, should work same as a GSI)

Download a full factory image for a newer device (Pixel 6, 7) from Factory Images for Nexus and Pixel Devices

DO NOT attempt to flash bootloader or radio images not intended for your device, this will result in a brick!

Extract system.img from the update image.zip and flash it to /system

Pixel feature "upgrade" (Most likely to have issues)

Download a full factory image for a newer device as described above

Again, DO NOT attempt to flash bootloader or radio images that are not for your device, this will result in a brick!

Extract system.img, system_ext.img, product.img from the update image.zip and flash them to their corresponding partitions

Feel free to try any one or combination of the above, and please share your results in this format:

Device

Original firmware/build

Type of experiment

Findings and notes

Other stuff:

To gain root, just patch your boot image in Magisk, then flash to /boot.

Samsung users: It's highly recommended that you use TWRP. However, if TWRP is not available, you can patch your stock recovery to enable Fastbootd, which will allow you to flash partitions directly from ADB command line.