Fix OTA Updates on Custom ROM
Custom ROMs can receive OTA updates - but there are catches if you're rooted. This guide covers getting updates without breaking anything.
Understanding OTA on Custom ROMs
How OTA Works
Stock Android:
- Google/OEM pushes update
- Downloads in background
- Installs on reboot
Custom ROMs:
- ROM developer pushes update
- Similar process
- May have different update mechanism
The Root Problem
When you're rooted:
- OTA modifies boot partition
- Magisk is IN the boot partition
- OTA removes Magisk
- Root lost after update
Method 1: Update with Magisk Preservation
For ROMs with built-in updater (LineageOS, Evolution X, etc.)
When You Get Update Notification
1. DON'T install immediately
2. Open Magisk app
3. Check current version (remember it)
Update Process
Step 1: Install Update Normally
Settings → System → System Update
Download and install
DON'T reboot yet!
Step 2: Fix Magisk Before Reboot
1. Open Magisk
2. Install → Install to Inactive Slot (After OTA)
3. Wait for patching
4. Reboot
This installs Magisk to the update slot before you boot into it.
For A-only Devices
If "Install to Inactive Slot" isn't available:
1. Complete OTA install
2. Reboot (this removes root temporarily)
3. Re-root using normal method:
- Magisk → Direct Install
- Or patch boot.img again
Method 2: Manual OTA Download
If updater doesn't work or you want specific version:
Download OTA
Sources:
- ROM's official download page
- ROM's Telegram/Discord
- OTA URL from updater (can sometimes copy)
Flash via Recovery
1. Download OTA.zip
2. Copy to phone storage
3. Boot to TWRP/custom recovery
4. Install → Select OTA.zip
5. DO NOT wipe anything
6. Flash Magisk.zip immediately after
7. Reboot
Method 3: Full Update Reflash
Most reliable but more work:
Download Full ROM
1. Get latest ROM zip from developer
2. Get latest GApps (if needed)
3. Have Magisk.zip ready
Flash in Recovery
1. Boot to recovery
2. DO NOT wipe data
3. Flash ROM zip (dirty flash)
4. Flash GApps if needed
5. Flash Magisk.zip
6. Clear cache/dalvik
7. Reboot
This is effectively a dirty flash - your apps and data remain.
ROM-Specific Update Methods
LineageOS
Built-in updater:
Settings → System → Updater
Check → Download → Install
With Magisk:
- Install update
- Before reboot: Magisk → Install to Inactive Slot
- Reboot
Pixel Experience
Built-in OTA:
Settings → System → System Update
Works similarly to LineageOS.
Evolution X
OTA support:
Settings → About → Evolution X Updates
crDroid
Updater app:
App drawer → crDroid Updates
Preserving Magisk Modules
Most modules survive OTA if:
- You use "Install to Inactive Slot"
- Or reflash Magisk immediately
If Modules Break
After update, if something doesn't work:
1. Boot to recovery
2. Navigate to /data/adb/modules/
3. Delete problematic module folder
4. Reboot to system
5. Reinstall module (updated version)
Why OTA Might Fail
Common Causes
| Issue | Cause | Fix |
|---|---|---|
| "Verification failed" | System modified | Clean flash |
| "Update failed" | Signature mismatch | Download from official source |
| Boot loop after update | Incompatible Magisk/modules | Disable modules in recovery |
| Update not detected | Wrong version checking | Check manually on ROM site |
Modified System
If you modified /system, OTA may fail:
- Some customizations break OTA
- Substratum themes (older versions)
- Manual system edits
Fix: Clean flash or undo modifications.
A/B Partition Devices
Most modern phones have A/B partitions:
How A/B Updates Work
Current system: Slot A
Update installs to: Slot B
After reboot: Boot from Slot B
Slot A becomes: Inactive (failsafe)
Advantage for Root
You can install Magisk to inactive slot BEFORE rebooting:
- Update never touches current running system
- Root is pre-applied to update
- Seamless transition
Magisk "Inactive Slot" Option
This option appears only on A/B devices:
Magisk → Install → Install to Inactive Slot (After OTA)
When to Clean Flash Instead
Sometimes OTA isn't worth it:
Consider Clean Flash When
- Major Android version upgrade (13 → 14)
- ROM complete redesign
- Many OTAs accumulated
- Strange issues appearing
- Developer recommends clean flash
How to Tell
ROM changelog usually mentions:
- "Clean flash recommended"
- "Breaking changes"
- "New partition layout"
OTA Update Checklist
Before Update:
[ ] Backup important data
[ ] Note current Magisk version
[ ] Check ROM changelog for issues
During Update:
[ ] Download OTA completely
[ ] Install update
[ ] DON'T reboot immediately
Before Reboot:
[ ] Magisk → Install to Inactive Slot
[ ] Wait for completion
After Reboot:
[ ] Verify root works
[ ] Test critical apps
[ ] Check for module issues
Disabling OTA (If Unwanted)
Why Disable
- Current version works perfectly
- New update has issues
- Saving bandwidth
How to Disable
ADB method:
adb shell pm disable-user --user 0 com.android.updater
Or in ROM settings:
Settings → System → Updater → [menu] → Disable
Automation: OTA + Root
Some advanced users set up automated OTA handling:
Magisk + Customization Survival
Magisk's "systemless" nature helps:
- System partition stays clean
- OTA sees "stock" system
- Less likely to fail verification
Best Practices
- Keep modules updated
- Don't modify system partition manually
- Use systemless solutions for everything
- Keep Magisk updated
- Know your device's partition type (A/B or A-only)
Summary
OTA Update with Root:
1. Receive OTA notification
2. Install update (DON'T reboot)
3. Magisk → Install to Inactive Slot
4. Reboot
5. Root preserved!
If that fails:
1. Flash OTA manually in recovery
2. Flash Magisk.zip after
3. Reboot
OTA updates work on custom ROMs. Just need to handle Magisk correctly!
Keywords: ota update custom rom, magisk ota update, keep root after update, lineageos update, custom rom update root