e/OS install/sideload fails in recovery "because it's a downgrade" OnePlus 9

Hi there! I’ve just received my “brand new” (refurbished but as new) OnePlus 9. It was stock A12 (didn’t note which version but some april 2022 update if I remember well. I’ve unlocked the bootloader, installed e-Recovery (and tried LineageOS recovery as well, but it’s the same).

Then I started sideloading the latest e-1.6-s-20221201239247-dev-lemonade.zip based on A12 as well. After a few minutes in recovery my phone tells me:

Installing update…
E:Current SPL: 2022-11-05 Target SPL: 2022-10-05 this is considered a downgrade
E: Denying OTA because it’s SPL downgrade

Perfect. I’ve formatted already so now I have no bootable system and still it’s a downgrade? What to do? I’m a user with some skills but not an expert. I hope someone can help me quickly. Thanks!

ADD ON: I’ve tried the previous 1.5-version as well: same result. Since I’m not an expert: for download there are 2 files which I have no idea what to do with: MD5 and SHA256. Would those help to perform a “downgrade”?

I don’t have this device, but the /e/OS install instructions for it hint towards it being a so-called A/B device, with two slots for installed OSes (to enable OS updates in the background while you still use the device, user data is not doubled and stays as is).

What and how exactly did you format?

The recovery will be booted on the currently active OS slot, installing via ADB sideload will then be done on the inactive slot (seen this myself on my A/B device). Meaning, if a version of the prior OS remains on the inactive slot (and if it’s out-of-the-box stock Android, it should be the same version on both slots initially), my guess is that this would be what the downgrade check is checking against.

You can change the active slot with fastboot.
fastboot getvar current-slot will tell you the active slot (a or b)
You can then activate the other slot with fastboot --set-active=a or fastboot --set-active=b respectively.

No, the contents of these are two different checksums for the download files which you can check to make sure the files you downloaded are uncompromised. There are tools available for any popular computer OS to calculate the MD5 or SHA256 checksum of a given file for comparison.

Perhaps check out this thread https://forum.xda-developers.com/t/denying-ota-because-it-is-a-spl-downgrade.4463975/

Well, sorry, I didn’t format, I wiped the device in recovery.

So do you think (anyone knows?)… If I switch slot (yes it’s definitely an A/B device) and install the e/OS to slot B it works? Since if partials have remained in A, then the device will still give (probably) the same error. Anyone with this experience?

I didn’t have to do that yet in practice, but it sounds like a plan.
If this doesn’t work out, it should at least be possible to get rid of any OS on any slot somehow, I momentarily don’t know how and where exactly the build date for the downgrade check is kept.

Probably best not to switch slot because you may have older firmware there from OOS. The active slot you have the knowledge it is on android 12. Unless you successfully copied partitions?

I would start again in fastboot. I’m trying to find the files I used.

EDIT: Versions I used not online anymore; it was September.

But I deliberately chose the oldest dtbo, vendor, matching recovery from the Lineage downloads page so as to be older than the target eOS build.

I note that the recovery is not listed/described as “recovery~”, pretty sure it’s the boot.img

Follow the Lineage instructions for flashing.

1 Like

Thank you for your replies. Unfortunately only the 2022-11-13 versions are the oldest “out there” for LOS: Index of /pub/lineageos/full/lemonade

Using those, I still get the same error (considered a dowgrade, aborting). I’m out of ideas.

aibd’s tip https://forum.xda-developers.com/t/denying-ota-because-it-is-a-spl-downgrade.4463975/ is really out of my league. Someone who might want to help?

What about booting TWRP with fastboot? You don’t even need to install it … https://twrp.me/oneplus/oneplus9.html.

This would let you conveniently format the system partitions of the slots for instance, getting rid of the main chunk of any installed OSes.
(I’m always uncertain about how to do this correctly with fastboot.)

While you’re in TWRP anyway, if you can get the install file to the device (TWRP supports MTP, so copying via USB should be possible), you can use TWRP to install it, technically it’s the same as ADB sideloading it.

Sounds like a plan. Can’t try till next weekend though. In the meantime, all tips are welcome!

In my experiences with this device twrp won’t work over OOS12.

It’s given that we need a trio of dtbo, vendor and recovery all from same date/build to get a viable recovery onto the device (under oos12).

My (not-so-tech) logic that enabled me to flash OP9 tells me they need to be significantly older than the eOS build or of the exact same date contained in the eOS build.

That’s because I’m assuming the eOS builds are actually based on something somewhat older than the date displayed on the download pages.

When I installed the eOS pre-release test build it was dated 2022 10 19, and the dtbo etc I grabbed from LOS were dated 2022 09 29. So that’s 3 weeks difference.

Currently there is only a 12 day difference between what’s available on LOS and eos-1.6

So these are the options as I see it:

  1. e developers provide copies of dtbo, vendor,recovery matching the os download. Just like LOS do.
  2. You/us the users extract the required items from the downloaded rom using payload dumper tools
  3. Source older copies of the required items from somwhere, somehow.

Option 1. would be preferred , obviously

Option 3. I can share the older copies from my ecloud via private message if you like.


Huge thanks und kuddos to user chrisrg who had the fitting solution:

The vendor_boot, DTBO and Recovery that the installation-docs refer to, are too new! Also on LineageOS-website the listed files are too new! This means, without the correct files, no one will be able to install /e/OS on an OnePlus 9 5G - those files MUST be added. I will write this in another topic as well. Chrisrg gave me the files; I suppose he will be happy to share those with the team (otherwise I can). But they HAVE to be added in the install docs as a download!!!

I’m up and running, and very thankful to the team for supplying the ROM and chrisrg for the missing link!


Glad you’re up and running now.

As a footnote I would say again that the preferrred solution to this would be Option 1 in my post above. :wink:

1 Like

I’m unfortunately in the same boat. I tried both extracting the dtbo and vendor_boot img from the e-1.6-s-20221201239247-dev-lemonadep.zip. But to no avail. Nothing seems to work without the matching downloads.

Could I also receive or download the appropriate dtbo and vendor_boot img files? Thank you in advance!

Model: 9 Pro (LE2123)

As a sidenote:
dtbo and vendor_boot img from the rolling releases Index of /pub/lineageos/full/lemonadep (latest) in combination with the regular LineageOS do work as expected.

What happened exactly? Did you flash the two extracted files and then flash the matching e-recovery , then reboot to recovery? Did you get that far?

Thanks for the quick response.

Actually, I got it all the way to into booting the newly installed OS. But when it started into the OS it just hangs indefinitely. The screen becomes completely unresponsive and remains black. Touch does not work either. No way to reboot or redo the flashing.

I noticed that slot a was used, whereas the other princeton mirror dtbo and vendor_boot im uses slot b.

Long press the on/off button. This is the result (video recorded and converted to gif):


Had to wait till the battery drains and now I could boot into recovery. pfff.

I’m very curious to see if another dtbo and vendor_boot img could solve the above?

Just noticed your edit below the photo! So I’ll start again

No, I don’t think so. You got the install done all right and I think the problem is the other slot when you boot into the new installed eos.

If you boot into recovery now , presumably that is slot b?
When you first flashed e- recovery at the start of installing that was slot-a, right?

I think if you get back to your starting slot (which was presumably with oos 12) and boot the e-recovery that should still be there (or you could start again from that slot), then install the copy-partitions .zip before doing the factory reset etc. This was at one point included in the install guide if I remember correctly and anyway I think it may help.

Apologies for my edits.

If you boot into recovery now , presumably that is slot b?
When you first flashed e- recovery at the start of installing that was slot-a, right?

That is correct.

I think if you get back to your starting slot (which was presumably with oos 12) and boot the e-recovery that should still be there (or you could start again from that slot), then install the copy-partitions .zip before doing the factory reset

Will try that out. If it all works out, I’ll report back. Thanks for your feedback. Appreciated.

After sideloding copy-psrtitions, reboot recovery before factory reset.

That is exactly what I did and checked what slot (b) was active.