Device model
Redmi 12
Codename
fire
SoC
MT6769Z
Firmware version
HyperOS 1.0.8.0.UMXMIXM
Which step failed?
Verification (fastboot oem lks)
Full terminal output
python mtk.py da seccfg unlock
DaHandler - [LIB]: Device is in BROM mode. No preloader given, trying to dump preloader from ram.
DAXFlash - Uploading xflash stage 1 from MTK_DA_V5.bin
XFlashExt - Patching da1 ...
Mtk - Patched "Patched loader msg" in preloader
Mtk - Patched "hash_check" in preloader
Mtk - Patched "Patched loader msg" in preloader
Mtk - Patched "get_vfy_policy" in preloader
XFlashExt - Patching da2 ...
XFlashExt - Security check patched
XFlashExt - DA version anti-rollback patched
XFlashExt - SBC patched to be disabled
XFlashExt - Register read/write not allowed patched
DAXFlash - Successfully uploaded stage 1, jumping ..
Preloader - Jumping to 0x200000
Preloader - Jumping to 0x200000: ok.
DAXFlash - Successfully received DA sync
DAXFlash - Sending emi data ...
DAXFlash - DRAM setup passed.
DAXFlash - Sending emi data succeeded.
DAXFlash - Uploading stage 2...
DAXFlash - Upload data was accepted. Jumping to stage 2...
DAXFlash - Boot to succeeded.
DAXFlash - Successfully uploaded stage 2
DAXFlash - DA SLA is disabled
DAXFlash - EMMC FWVer: 0x0
DAXFlash - EMMC ID: Y0S256
DAXFlash - EMMC CID: 9b010059305332353600ed5408e7ca8f
DAXFlash - EMMC Boot1 Size: 0x400000
DAXFlash - EMMC Boot2 Size: 0x400000
DAXFlash - EMMC GP1 Size: 0x0
DAXFlash - EMMC GP2 Size: 0x0
DAXFlash - EMMC GP3 Size: 0x0
DAXFlash - EMMC GP4 Size: 0x0
DAXFlash - EMMC RPMB Size: 0x1000000
DAXFlash - EMMC USER Size: 0x3a3e000000
DAXFlash - Starting DA extensions ...
DAXFlash - Extensions were accepted. Jumping to extensions...
DAXFlash - Boot to succeeded.
DAXFlash - DA Extensions successfully added at 0x4fff0000
Main - Handling da commands ...
XFlashExt - Detected V4 Lockstate
Sej - AES128 CBC - HACC init
Sej - AES128 CBC - HACC run
Sej - AES128 CBC - HACC terminate
Sej - AES128 CBC - HACC init
Sej - AES128 CBC - HACC run
Sej - AES128 CBC - HACC terminate
SecCfgV4 - hwtype found: V4
Sej - AES128 CBC - HACC init
Sej - AES128 CBC - HACC run
Sej - AES128 CBC - HACC terminate
Done |██████████| 100.0% Write: (0x200/0x200),0.00 MB/s
DaHandler - Successfully wrote seccfg.
PS C:\Program Files\mtkclient>
______________________________________________________________
python .\scan_lk.py "C:\\lk_b.bin"
[*] Reading C:\\lk_b.bin...
[*] Size: 8,388,608 bytes
[*] Scanning...
══════════════════════════════════════════════════════════
LK BINARY SCAN REPORT — MTKClient Unlock Analyzer
══════════════════════════════════════════════════════════
File size : 8,388,608 bytes (8.0 MB)
MD5 : 4646ef8af86814a0f0c50629389a3411
SHA256 : 20c514c5d871fea02c7c370e925e6918...
┌─────────────────────────────────────────┐
│ VERDICT: COMPATIBLE_SECCFG_ONLY │
│ Score : 52/100 (52%) │
│ Method: seccfg unlock only (no RPMB loc│
└─────────────────────────────────────────┘
[MAGIC] Jz8PNRUF : ✗ ABSENT
[RPMB] Type : UFS_Samsung_0x400000
magic : 0x3FE0
lock_state_len : 0x40E0
signature_data : 0x41E0
[RSA] Modulus : ✓ FOUND
@ 0x0010E508
Key size: 2048 bits
[SECCFG] Version : generic
[FUNCTIONS] 7 detected:
✓ mi_get_lock_state: Reads RPMB lock state — overrides seccfg when magic present
✓ get_lock_state: Main lock state function — reads seccfg + RPMB
✓ seccfg_set_lock_state: Writes lock state to seccfg partition
✓ rpmb_read: Reads N bytes from RPMB
✓ rpmb_write: Writes N bytes to RPMB
✓ fastboot_oem_lks: Hidden fastboot OEM lock state commands
✓ verify_unlock_sig: RSA signature verification for unlock token
[FASTBOOT] 6 OEM commands:
✓ oem lks @ 0x0009D560
✓ oem setmtklks @ 0x0009D3B4
✓ oem chkmtklks @ 0x0009D3A4
✓ flashing get_unlock_ability @ 0x0009D580
✓ oem unlock @ 0x0009D568
✓ oem lock @ 0x0009D574
══════════════════════════════════════════════════════════
RPMB magic not found. seccfg alone should work (MIUI13 or older).
══════════════════════════════════════════════════════════
PS C:\Users\xiaomi-hyperos-bootloader-unlock> python .\scan_lk.py "C:\Program Files\mtkclient\lk_a.bin"
[*] Reading C:\Program Files\mtkclient\lk_a.bin...
[*] Size: 8,388,608 bytes
[*] Scanning...
══════════════════════════════════════════════════════════
LK BINARY SCAN REPORT — MTKClient Unlock Analyzer
══════════════════════════════════════════════════════════
File size : 8,388,608 bytes (8.0 MB)
MD5 : 2f09e417ac0a2795450b68ce2fe9e92e
SHA256 : 7af84c911cf68a20c5f305a23cea5ce2...
┌─────────────────────────────────────────┐
│ VERDICT: COMPATIBLE_SECCFG_ONLY │
│ Score : 52/100 (52%) │
│ Method: seccfg unlock only (no RPMB loc│
└─────────────────────────────────────────┘
[MAGIC] Jz8PNRUF : ✗ ABSENT
[RPMB] Type : UFS_Samsung_0x400000
magic : 0x3FE0
lock_state_len : 0x40E0
signature_data : 0x41E0
[RSA] Modulus : ✓ FOUND
@ 0x0010E508
Key size: 2048 bits
[SECCFG] Version : generic
[FUNCTIONS] 7 detected:
✓ mi_get_lock_state: Reads RPMB lock state — overrides seccfg when magic present
✓ get_lock_state: Main lock state function — reads seccfg + RPMB
✓ seccfg_set_lock_state: Writes lock state to seccfg partition
✓ rpmb_read: Reads N bytes from RPMB
✓ rpmb_write: Writes N bytes to RPMB
✓ fastboot_oem_lks: Hidden fastboot OEM lock state commands
✓ verify_unlock_sig: RSA signature verification for unlock token
[FASTBOOT] 6 OEM commands:
✓ oem lks @ 0x0009D560
✓ oem setmtklks @ 0x0009D3B4
✓ oem chkmtklks @ 0x0009D3A4
✓ flashing get_unlock_ability @ 0x0009D580
✓ oem unlock @ 0x0009D568
✓ oem lock @ 0x0009D574
══════════════════════════════════════════════════════════
RPMB magic not found. seccfg alone should work (MIUI13 or older).
══════════════════════════════════════════════════════════
.\fastboot.exe oem lks
(bootloader) lks = 1
.\fastboot.exe getvar unlocked
unlocked: no
.\fastboot.exe getvar secure
secure: yes
Operating system
windows 11
USB port type
USB 2.0 (black port)
Did you use a preloader file?
No — let mtkclient auto-detect
What have you already tried?
So mtkclient "says" it wrote successfully, but the phone still behaves like it's locked.
Things I already tried:
- Ran the unlock command several times (at first it wasn't writing anything new)
- Locked and unlocked again to force a real write
- Checked that "OEM unlocking" is enabled in Developer Options (it is)
Something that might help:
I looked at the seccfg partition file in hex, before and after writing. There was a value that changed from 3 to 1 after forcing lock/unlock, but even so the phone still doesn't recognize itself as unlocked. So I suspect there's something else (maybe a signature or extra verification) that isn't updating properly, besides that value.
I don't know much about this technically, so any help understanding what might be going on, or if there's anything else I could try, would be really appreciated. Happy to provide more info or run more tests if needed.
Device model
Redmi 12
Codename
fire
SoC
MT6769Z
Firmware version
HyperOS 1.0.8.0.UMXMIXM
Which step failed?
Verification (fastboot oem lks)
Full terminal output
Operating system
windows 11
USB port type
USB 2.0 (black port)
Did you use a preloader file?
No — let mtkclient auto-detect
What have you already tried?
So mtkclient "says" it wrote successfully, but the phone still behaves like it's locked.
Things I already tried:
Something that might help:
I looked at the
seccfgpartition file in hex, before and after writing. There was a value that changed from3to1after forcing lock/unlock, but even so the phone still doesn't recognize itself as unlocked. So I suspect there's something else (maybe a signature or extra verification) that isn't updating properly, besides that value.I don't know much about this technically, so any help understanding what might be going on, or if there's anything else I could try, would be really appreciated. Happy to provide more info or run more tests if needed.