The built-in OTA Updater application fails on executing system update due to legacy paths and missing packages on A/B architecture target.
New Issue, Regression, or Feature Request?
New issue
Additional Information:
Note: I am not a developer myself; I used an AI/LLM to help me troubleshoot the device and structure this technical report.
OTA Updater fails with the following stack trace:
java.io.FileNotFoundException: /cache/recovery/uncrypt_file: open failed: ENOENT
The Updater relies on the legacy uncrypt mechanism RecoverySystem.installPackage() pointing to physical /cache partition, which does not exist on the Xiaomi Mi 9 (A/B partitioning).
Full stack traces captured via adb logcat *:E confirm that org.lineageos.updater fails to locate the /cache/recovery/uncrypt_file resource when preparing the update payload.
Troubleshooting Steps Undertaken:
Ran adb logcat -c && adb logcat *:E to monitor the Updater process during interaction.
Attempted manual OTA Sideload of the official package iode-4.36-20260902-cepheus-ota.zip from Recovery → Apply from ADB.
The Recovery rejected/cancelled the payload installation due to errors referencing missing cache/temporary mount points during package verification.
Despite the Recovery warning (“Previous installation has failed. Your device may fail to boot if you reboot now.”), the device successfully booted back into the active Slot A with all user data intact, confirming the update engine/recovery fails prior to altering the operational system partition.
Attempted to reset the Updater state via Settings > Preinstalled apps (uninstalling, rebooting, reinstalling) to check if a new System Updater component was hidden. The issue persisted on the legacy updater (org.lineageos.updater).
Some Xiaomi Mi 9 (Cepheus) devices are acting strangely. Several Mi 9 (Cepheus) devices running iodéOS have already had update issues. My posts here on this forum always went unanswered. That was back when @rik hadn’t yet revitalized the iode forum.
iodéOS OTA update from Cepheus 4.34 to 4.36 using iodé-recovery failed;
manual update from 4.34 to 4.36 using iodé-recovery via ADB sideload iode-4.36-20260902-cepheus-ota.zip failed;
clean install via iode-4.36-20260902-cepheus-fastboot failed.
No, in the Updater app I get no message, it’s just a silent fail.
Pressing Install triggers the “Apply Update : You are about to install (…)” screen. Confirming with Ok triggers the “preliminary update preparations”, and when it reaches 100% then nothing happens, the Install button remains available, like I did nothing.
That message java.io.FileNotFoundException: /cache/recovery/uncrypt_file: open failed: ENOENT I get it in the terminal on my PC (phone connected to PC) when I monitor what’s happening when I press Install in the Updater.
The message may also have appeared during manual OTA Sideload, when the phone was in recovery mode (sorry, it’s been two weeks, memory might fail me a little). Basically, while trying to update with the .zip file sitting on my PC and the phone in recovery mode (still connected to the PC).
Both ways fail, and it seems both fail for the same reason : they rely on the partition “/cache” which does not exist, and so the update can’t happen.
Again, it was two weeks ago, and using a LLM, so I may be wrong or missing something here, but if anyone can think of anything, I can test further.
(edit)
Oh, I just realized iodysseus suggested a workaround. I’ll try that if the problem doesn’t get resolved, thank you very much iodysseus.