Risk Register

All known risks, categorised by severity. Review before any destructive operation. Source: docs/risks.md.

🔴 Critical — Potential Hard Brick or Data Loss

IDRiskTriggerMitigation
R01Flash wrong bootloader (XBL/ABL)Copying NA2 xbl.elf/abl.elf to NA1Never flash XBL or ABL from NA2 onto NA1. A UFS bootloader on eMMC hardware = permanent brick.
R01bFlash custom XBLAny XBL modificationNever touch the xbl partition. ABL failure is recoverable via EDL. XBL failure = hard brick with no recovery.
R02EDL 900E — no recovery loaderDevice fully unresponsive in 900EEDL 9008 is the only recovery. Keep a working OS. Never flash boot without a verified backup.
R03Flash during low batteryDevice powers off mid-writeInstaller checks battery ≥ 40%. Do not flash manually on low battery.
R04Wrong programmer in EDLUsing NA2 UFS programmer on NA1 eMMCNA1 = prog_emmc_ufs_firehose_Sdm636_ddr.elf. NA2 = UFS programmer. Never mix.
R12ABL crash → no 9008, only battery-drain recoveryABL uses unmapped MMIO, bad pointer, etc.v2.0 incident: Raw MmioRead32(0x03069004) caused data abort → device bricked. Recovery required full battery drain + cold-boot PBL 9008. Never use raw MMIO without GCD memory mapping. Always identify last known-good ABL before flashing a new version.

🟠 High — Functionality Loss, Requires Recovery

IDRiskTriggerMitigation
R05Partition size mismatchNA2 image larger than NA1 partitionAlways check image size vs. partition size from Phase 01 before flashing.
R06Incorrect fstab block pathsBooting NA2 system with UFS paths on eMMCPhase 05 core task. Never flash un-patched system/vendor from NA2.
R07Incremental OTA on rooted deviceUpdate via OTA while rootedUse only full firmware images. Block OTA in AFWall+ during development.
R08Accidental userdata wipeWrong option in recoveryTWRP on e-ink is confusing. Proceed slowly and confirm each action.

🟡 Medium — Degraded Functionality

IDRiskTriggerMitigation
R09Loss of root after firmware flashFull OTA updateExpected behaviour. Re-root using Phase 02 procedure.
R10Onyx telemetry during testingUnblocked networkInstall AFWall+ immediately after rooting.
R11GPL compliance issuesPublishing firmware with Onyx kernel binaryDo not redistribute modified boot.img binaries in a way that implies GPL compliance.

🚨 Emergency Recovery Procedures

EDL 9008 — Boot Partition Restore

# 1. Trigger EDL 9008 (software, from Android)
adb reboot edl

# 2. Restore pristine boot partition
python edl.py --loader=prog_emmc_ufs_firehose_Sdm636_ddr.elf 
  w boot builds/backup-YYYY-MM-DD-pristine/boot.img

# 3. Reboot
python edl.py --loader=prog_emmc_ufs_firehose_Sdm636_ddr.elf reset

FDE RoT Mismatch — No EDL Required

If the device boots to the FDE password prompt but no password works (RoT changed due to ABL swap):

  1. Enter any wrong password repeatedly at the FDE prompt (~30 times).
  2. At ~7 remaining attempts: warning appears.
  3. After ~30 total: “Encryption unsuccessful” screen → tap factory reset.
  4. Device wipes userdata and re-encrypts under the current ABL’s RoT. Only userdata is lost — system and ABL preserved.

More posts