Apply OTA Updates บน Rooted Xiaomi Mi A2 มักปวดหัว มักต้อง Unroot แล้ว Root ใหม่ทั้งกระบวนการ โชคดีมีวิธีติดตั้ง Magisk ที่รองรับ OTA Updates
อยาก Root Mi A2 พร้อม Apply OTA โดยไม่ Unroot ตามคู่มือด้านล่างอย่างระมัดระวัง
ข้อกำหนด
- ADB and Fastboot (ดูคู่มือ How to Install ADB on Windows)
- MiFlash Tool
Bootloader Unlock ก่อน - ระวัง Xiaomi Bootloader Unlock Program ช้ามาก อาจใช้ สัปดาห์ ได้ Unlock Code รู้จัก ARB (Anti-rollback Protection) ใน Xiaomi Devices
Bootloader Unlocked แล้ว ดีแล้ว ดำเนินต่อ
- Settings > System > About Phone > Build Number 7 ครั้ง Unlock Developer Mode
- Settings > Developer Options > Enable OEM Unlocking
- Shutdown Device กด Volume Down+Power ปล่อยตอนเข้า Fastboot Menu
- เชื่อม Mi A2 USB PC ADB Terminal (Shift+Right Click ADB Folder > Open Command Window Here)
- ADB:
fastboot oem unlock(Reboot Phone Erase All Data ขณะ Unlock)
ติดตั้ง Magisk
Download ติดตั้ง Magisk Manager APK ล่าสุดบนโทรศัพท์
Download Patched boot.img จากรายการด้านล่าง - หรือ Patch Original boot.img เอง (ด้านล่างรายการ Boot.img Downloads)
สำคัญ: Download Patched boot.img ต้อง Build Number เดียวกับที่อยู่ Check Settings > About Phone อย่า Flash ไฟล์ตรงบน Memory โทรศัพท์ Magisk จะไม่ทำงาน ปฏิบัติตามคำสั่งอย่างแม่นยำ!
Download Patched boot.img ไป ADB Folder PC
- patched_boot 9.6.4.0 (July 2018) - Patched Magisk 17.1
- patched_boot 9.6.6.0 (Aug 2018) - Patched Magisk 17.1
- patched_boot 9.6.8.0 (Sep 2018) - Patched Magisk 17.1
Flash ผิด boot.img Flash Original boot.img กลับได้:
- original boot.img 9.6.4.0 (July 2018) - From Fastboot ROM
- original boot.img 9.6.6.0 (Aug 2018) - From OTA Update
- original boot.img 9.6.8.0 (Sep 2018) - From OTA Update
Manual Patch boot.img: ต้อง Original boot.img หาใน Official Fastboot ROM ZIP สำหรับ daisy ให้ Build Number ตรงกับโทรศัพท์ Download Original boot.img Build Number เดียวกัน หรือ Upgrade/Downgrade Version
ได้ Original boot.img (Extract จาก Fastboot ROM ZIP) Copy ไป External Memory (SD Card) ของโทรศัพท์
เปิด Magisk Manager ถาม Install Magisk Accept > "Patch Boot Image File" > เลือก boot.img ที่โอนมา
Process ~1 นาที ปิดตอนเสร็จ ใน Phone Memory /Download จะมี "patched_boot.img" โอนไป PC วางใน ADB Folder หลัก
Reboot Device Fastboot Mode (Power+Volume Down) ADB Terminal PC
ADB: fastboot boot patched_boot.img
Phone Boot ปกติ กลับ Android System เปิด Magisk Manager ถาม Install อีกครั้ง Install > Direct Install Reboot เสร็จ
ป้องกัน OTA อนาคต: Settings > System > Developer Options > Disable Automatic System Updates ติดตั้ง OTA Manual เท่านั้น อย่า Auto OTA บน Rooted Device
วิธี Apply OTA Updates ในอนาคต
สำคัญ: OTA Updates ทำงานได้ก็ต่อเมื่อ Partitions ทั้งหมด Untouched! Magisk Restore Original boot.img ได้ แต่ถ้า Modify /system Partition (Manual Edit build.prop, Add/Remove System App) OTA จะ Refuse Install
ลอง Apply OTA โดยไม่ Flash Full Stock ROM: Flash Modified Partitions เท่านั้น เช่น Flash /system Partition จาก Original Fastboot ROM ใช้ .img ที่ถูกต้องจาก Original ROM ZIP
OTA ใหม่พร้อมติดตั้ง: Magisk Manager > "Uninstall > Restore Images" อย่า Reboot Yet
ปิด Magisk Settings > System > System Update Install OTA Download เสร็จ 2-Stage Update แนะนำดื่มกาแฟ เล่น Madalin Stunt Cars 2 หรือ The Impossible Quiz (Good Luck!)
Update Stages เสร็จ ถาม Restart อย่า Restart! Magisk Manager อีกครั้ง > Install > Install > Install to Inactive Slot (After OTA) ถึงค่อย Reboot
Reboot เสร็จ ควรได้ Android Updated พร้อม Magisk Intact
Troubleshooting
Note: ก่อน Operation ใดๆ Disable Screen Security (Lock, PIN, Password, Fingerprint) เพราะ Risk Encryption Issues Backup แนะนำมาก
ไม่ทำตามคู่มือแม่นยำ อาจเจอปัญหา:
OTA Updater เช็ค Partitions Untouched หาก Modified จะไม่ Install
Partition ที่ User Mod มักแก้: Boot Partition (Magisk/TWRP) และ System Partition (Config Files, System Apps)
System Partition Modified ด้วย Magisk Modules = Effectively Untouched (Magisk Register Changes ใน /data Trick Android ว่า Applied /system)
Boot Partition Modified จริง แต่ติดตั้ง Magisk ตามคู่มือ Magisk Save Untouched Boot Partition Copy Restore ก่อน OTA = Update Works
ติดตั้ง Magisk อื่นไม่ตามคู่มือ Magisk อาจ Alert Cannot Restore Original boot.img ตอน Apply OTA
Fix: Flash Vanilla (Original) boot.img จาก Point 6:
fastboot getvar current-slot fastboot flash boot_? boot.img
Command แรกบอก Current Slot (a หรือ b) Command ที่ 2 Flash Original Boot แต่เปลี่ยน "?" เป็น a หรือ b (Current Slot จาก Command แรก)
boot.img Version ต้องตรง Android Build Version บนโทรศัพท์
OTA ยัง Refuse: น่าจะแก้ /system Partition โดยตรง (เช่น build.prop โดยไม่ใช้ Magisk Module) Flash Original system.img:
fastboot getvar current-slot fastboot flash system_? system.img
Slot เหมือนกัน หา system.img จาก OTA Updates ZIP (พร้อม .img อื่นๆ):
- 9.6.8.0 (Sep 2018) OTA Update Dump as .img files
- 9.6.6.0 (Aug 2018) OTA Update Dump as .img files
Extract system.img เอง: ใน Fastboot Images (ไม่ Update ทุกเดือน مثل OTA) หรือ Extract จาก OTA Update ZIPs ใน Thread นี้ ใช้ Python Scripts:
- Download "extract_android_ota_payload.py" และ "update_metadata_pb2.py" ให้ Execution Property
- Install package "python-protobuf"
- Command:
./extract_android_ota_payload.py /path/to/payload.bin(payload.bin จาก OTA ZIP) - Extract .img Files รวม system.img ใน Current Directory
- Windows: ติดตั้ง Latest Python2 Script ควรทำงาน
Last Resort: MiFlash Latest Fastboot Image (แม้เก่ากว่า Current Version) ใช้ "flash_all.bat" Backup Data ก่อน (Phone Full Reset)
ไม่อยาก Backup ใช้ "flash_all_except_storage.bat" เก็บ Data แต่ Warning บางครั้ง Access Data ไม่ได้ (Encryption Problems)
หลัง Flash เริ่มคู่มือ Point 5 หรือ 6 ใหม่
Downgrade Build Version ผ่าน Fastboot ไม่ปัญหา ถ้า Android Main Version เดียวกัน (Oreo 8.1 ตอนนี้)
Patched/Original Boot Files สำหรับ Mi A2 jasmine (ไม่ใช่ Mi A2 Lite daisy - ไฟล์ daisy อยู่ส่วนบน)
- patched_boot 9.6.9.0 (July Update) - Patched Magisk 17.1
- patched_boot 9.6.10.0 (Aug Update) - Patched Magisk 17.1
- original boot.img 9.6.9.0 (July Update) - From Fastboot ROM
- original boot.img 9.6.10.0 (Aug Update) - From Fastboot ROM