Redmi Note 8 (ginkgo) Custom ROM & Unbrick Guide
A complete working guide to the Redmi Note 8 (ginkgo) — which custom ROM to pick for a Snapdragon 665 in 2026, how to escape a repartitioned ColorOS or HyperOS install, and how to bring a bricked phone back with the official partition table.
WARNING: Everything below touches the partition table, the bootloader and the file system of a phone. Get a step wrong and you end up with “The system has been destroyed” — or worse, an EDL-only brick. I am not responsible for what happens to your device. Read the whole thing once before you start typing commands.
The Redmi Note 8 (2019) is one of those phones that refuses to die. A Snapdragon 665, UFS 2.1 storage and a 1080p screen still make a perfectly usable handset in 2026 — but the stock MIUI it shipped with is the main thing holding it back. This guide covers the two things people actually get stuck on: picking a ROM that respects the aging hardware, and getting out of the repartitioned-ROM trap that turns a working phone into a brick.
If you are new to this, read my Redmi 9 bootloader unlock guide first — the mindset and the safety rules carry over.
ginkgouses the Qualcomm Mi Unlock flow, not the MediaTek one, but the “back up your data and keep your stock ROM” part is identical.
1. Know your device before anything else
| Detail | Value |
|---|---|
| Device | Xiaomi Redmi Note 8 (2019) |
| Codename | ginkgo |
| SoC | Qualcomm Snapdragon 665 |
| Storage | UFS 2.1 |
| Required base firmware | Official MIUI 12.5 on Android 11 |
Careful: the Redmi Note 8T — the NFC variant — is codename
willow, notginkgo. Most community ROMs are unified and cover both, but many are not. Always read the codename list on the download page before you flash. “Works on Redmi Note 8” on its own means nothing.
The base firmware requirement is not a suggestion. Everything in this guide assumes you are coming from MIUI 12.5 on Android 11 — for example V12.5.2.0.RCOINXM for India or V12.5.2.0.RCOMIXM for Global. If you are still on an Android 10 MIUI build, flash the Android 11 firmware for ginkgo first, or the ROM zips will fail or bootloop.
2. Choosing the right ROM for this hardware
The Snapdragon 665 and its UFS 2.1 storage have aged, and the single biggest difference between “smooth phone” and “laggy phone” is the Android version you pick. In rough order of how much I’d recommend them:
LineageOS 18.1 (Android 11) — raw speed and gaming king
The lowest idle RAM usage of anything on this list, zero background bloat, and the highest sustained frame rates in games. This is the pick for 3GB and 4GB RAM variants, where every megabyte of idle usage counts.
The trade-off is honest: Android 11 is old, and some modern apps will eventually stop supporting it. If you use this phone as a gaming handheld or a secondary device, that trade is worth it.
Builds and the official install steps live on the LineageOS wiki page for ginkgo.
LineageOS 22.2 (Android 15) — the modern daily driver
The sweet spot for daily use and current app compatibility. It sidesteps the extra AI and background overhead that Android 16/17 builds carry on this chipset, while still giving you fresh security patches and Play Store support.
Current zips are on the LineageOS downloads page — pick the newest build listed for ginkgo.
Project Infinity X — the best all-rounder
If you want it to just work out of the box: GApps pre-installed, built-in high-FPS game unlockers, and working SafetyNet / Play Integrity so banking apps stop complaining — without any manual tweaking. Not the fastest, not the leanest, but the least amount of work.
Releases are published on SourceForge and the ProjectInfinity-X GitHub org.
OEM ports (ColorOS 16, HyperOS, etc.) — heavy and invasive
These look and feel great. Custom rendering engines make the animations genuinely smooth, and it feels like a much newer phone.
Then you live with it: they take forever to boot, eat enormous amounts of RAM and storage, and — this is the important one — almost all of them ship with a repartition script that permanently alters your factory partition layout.
| ROM | Android | Best for | Main trade-off |
|---|---|---|---|
| LineageOS 18.1 | 11 | Gaming, 3GB/4GB RAM | Old Android, app support fading |
| LineageOS 22.2 | 15 | Daily driver | Slightly heavier than 18.1 |
| Project Infinity X | 15/16 | All-rounder, banking apps | Less lean than LineageOS |
| ColorOS 16 / HyperOS ports | 15/16 | Looks and animations | Heavy; forces a repartition |
3. The golden rule of ginkgo partitions
This is the section that saves your phone.
When you flash a repartition script — for ColorOS 16, HyperOS, or any “retrofit dynamic partition” ROM — it rewrites the physical boundaries of your system, vendor and userdata partitions. The phone now has a different partition layout than the one Xiaomi shipped.
The catch: Xiaomi’s official
flash_all.batscript inside the MIUI Fastboot ROM does not re-flash the partition table (gpt_both0.bin). It assumes the stock layout is already there.
So if you run Mi Flash over a repartitioned phone, every image writes to the wrong offset. The result is the black screen with “The system has been destroyed.” You are not actually dead — the bootloader is still unlocked and fastboot still works — but no amount of re-running Mi Flash will fix it until you put the factory partition table back first.
Which is exactly what Part 4 does.
4. Unbrick and restore the factory partition layout
Step 1 — Force boot into fastboot
Even with “The system has been destroyed” on screen, fastboot still responds. Hold Volume Down + Power for a full 10 to 15 seconds, until the screen goes black and the Fastboot bunny appears. Let go the moment you see it.
Step 2 — Verify the bootloader is still unlocked
Connect the phone to your PC, open a Command Prompt inside your platform-tools folder and run:
1
fastboot oem device-info
You want both of these to read true:
1
2
(bootloader) Device unlocked: true
(bootloader) Device critical unlocked: true
If Device unlocked is false, stop here. You cannot flash a partition table on a locked bootloader, and you’ll need to get it unlocked before anything else.
Step 3 — Extract the official fastboot ROM (twice)
Download the official MIUI 12.5 Android 11 fastboot ROM — the .tgz file, not the .zip recovery ROM. Then:
- Extract the
.tgzwith 7-Zip. - Extract the resulting
.taragain. Yes, twice. - Keep going until you see a folder containing
flash_all.batand animagessubfolder. - Move that folder somewhere short with no spaces —
C:\romis the standard choice. Deep paths with spaces break the batch script.
Step 4 — Manually flash the partition table and VBMeta
Open a Command Prompt inside the images folder — for example C:\rom\images — and run:
1
2
fastboot flash partition gpt_both0.bin
fastboot flash vbmeta vbmeta.img
PS: Do not add
--disable-verityor--disable-verificationflags to thatvbmetaflash.ginkgo’s stockvbmeta.imghas noAVB_MAGICheader, so those flags throw an error instead of helping. Flashing it plain works fine.
This is the step everyone skips. Doing it restores the stock boundaries, so the next flash actually lands where it should.
Step 5 — Flash the full stock firmware into the clean layout
Still in the Command Prompt, step up one directory to the main ROM folder and run the clean flash script:
1
2
cd ..
flash_all.bat
Let it run. It takes 5 to 10 minutes and the phone will reboot itself when it’s done.
WARNING: Never run
flash_all_lock.bat. That variant relocks your bootloader at the end, and on a phone you’ve been repartitioning that is a one-way trip to a locked, unflashable device.
If the phone boots into MIUI 12.5, you’ve successfully escaped the repartition trap — you’re back to a clean stock base with stock partitions, which is the only sane starting point for any custom ROM.
5. Installing a recovery and flashing LineageOS
Once you’re on a clean Android 11 firmware base with stock partitions, follow this order exactly. Do not improvise between steps.
Step 1 — Flash a standard (non-dynamic) recovery
Grab a standard ginkgo recovery — OrangeFox Recovery R11.1 or the official LineageOS Recovery. Do not use a dynamic-partition recovery on a stock layout; it expects a partition table you don’t have yet.
1
fastboot flash recovery recovery.img
Step 2 — Boot into recovery immediately
Do not let the phone boot into MIUI first. MIUI overwrites your custom recovery with the stock one on first boot. If that happens, you flash the recovery again and start over.
Hold Volume Up + Power for about 10 seconds. The moment the Redmi logo appears, release Power but keep holding Volume Up until the recovery loads.
PS: If you’re using OrangeFox, flash the full
OrangeFox.zipfrom inside the recovery once, so it installs its survival scripts and won’t get overwritten by a subsequent ROM flash.
Step 3 — Format Data (mandatory)
Any time you change partition tables or switch ROM bases, the userdata file system has to be reset — MIUI’s encryption is not something these recoveries understand.
- In OrangeFox/TWRP: Wipe → Format Data → type
yes→ confirm. - Then Reboot → Recovery, so the recovery refreshes the newly formatted storage.
Step 4 — Wipe the system partitions
Go to Wipe, select Dalvik / ART Cache, Cache, System and Vendor, then swipe to wipe.
Careful: do not wipe Internal Storage if you already copied the ROM zip onto the phone — you’ll delete your own install file. Copy the zips after wiping, or leave Internal Storage alone.
Step 5 — Flash the ROM, then GApps
- Copy your
LineageOS.zip— and a matching GApps package such as MindTheGapps or NikGApps — from your PC to the phone over USB. - Flash the ROM zip first.
- Immediately flash the GApps zip, before booting into the system for the first time.
- If you’re on official LineageOS Recovery instead: tap Reboot to Recovery after the ROM, then
adb sideloadthe GApps package.
- If you’re on official LineageOS Recovery instead: tap Reboot to Recovery after the ROM, then
- Tap Reboot System.
PS: The first boot takes 3 to 5 minutes and looks like it has hung. Leave it alone. Every boot after that takes seconds.
6. Cheat sheet
Everything above, in the order you’ll actually type it.
Check the connection:
1
fastboot devices
Check the bootloader lock status:
1
fastboot oem device-info
Restore the stock partition layout (run inside images):
1
fastboot flash partition gpt_both0.bin
Restore stock VBMeta (run inside images):
1
fastboot flash vbmeta vbmeta.img
Flash a clean MIUI base without relocking (run inside the main ROM folder):
1
flash_all.bat
Flash the custom recovery:
1
fastboot flash recovery recovery.img
7. Notes
- Verify the codename, every time.
fastboot getvar productshould returnginkgo. If it returnswillow(the Note 8T), only flash ROMs that explicitly listwillow. - Keep the stock fastboot ROM on your PC. Not in a browser download you’ll re-fetch later. The whole recovery path in Part 4 depends on having it locally.
- A repartition script is not reversible by any button in recovery. The only way back is the
gpt_both0.binflash above. If you’re not prepared to do that, don’t flash a repartition ROM. - Newer is not better on this chipset. Android 15 builds are the practical ceiling for daily use on a Snapdragon 665. Android 16 ports work, but you’ll feel the RAM pressure.
- Battery age beats ROM choice. A 2019 phone with its original battery will feel slow no matter what you flash. A cheap replacement cell often does more for perceived speed than switching Android versions.
- Related reading: my Redmi 9 custom ROMs compilation if you also own a device from that family, and the Mi Unlock walkthrough for
cattailfor the bootloader side in more detail.
8. Appendix: a real flash session
Everything in this guide was run end to end on a Redmi Note 8 while writing it, so here is the raw fastboot transcript rather than a tidied-up summary of it. Folder paths are shortened to C:\rom and C:\work; nothing else is edited.
Two lines in the log look like errors but are not:
fastboot: error: Failed to find AVB_MAGIC at offset: 0is the expected result of trying--disable-verityon a stock ginkgovbmeta.img. That is exactly why this guide tells you to flash it without those flags.Warning: skip copying ... avb footeris fastboot refusing to write an AVB footer onto a sparse image. Normal forsystem,vendor,custand the partition table itself.
Show the full transcript (319 lines)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
C:\rom>fastboot oem device-info
(bootloader) Verity mode: true
(bootloader) Device unlocked: true
(bootloader) Device critical unlocked: true
(bootloader) Charger screen enabled: true
OKAY [ 0.004s]
Finished. Total time: 0.005s
C:\rom>cd images
C:\rom\images>fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img
fastboot: error: Failed to find AVB_MAGIC at offset: 0
C:\rom\images>fastboot flash partition gpt_both0.bin
Warning: skip copying partition image avb footer (partition partition size: 0, partition image size: 34304).
Sending 'partition' (33 KB) OKAY [ 0.011s]
Writing 'partition' OKAY [ 2.359s]
Finished. Total time: 2.397s
C:\rom\images>fastboot flash vbmeta vbmeta.img
Sending 'vbmeta' (4 KB) OKAY [ 0.006s]
Writing 'vbmeta' OKAY [ 0.004s]
Finished. Total time: 0.027s
C:\rom\images>cd ..
C:\rom>flash_all.bat
C:\rom>fastboot getvar product 2>&1 | findstr /r /c:"^product: *ginkgo" || echo Missmatching image and device
product: ginkgo
C:\rom>fastboot getvar product 2>&1 | findstr /r /c:"^product: *ginkgo" || exit /B 1
product: ginkgo
C:\rom>set CURRENT_ANTI_VER=1
C:\rom>for /F "tokens=2 delims=: " %i in ('fastboot getvar anti 2>&1 | findstr /r /c:"anti:"') do (set version=%i )
C:\rom>(set version=1 )
C:\rom>if [1] EQU [] set version=0
C:\rom>if 1 GTR 1 (
echo current device antirollback version is greater than this package
exit /B 1
)
C:\rom>fastboot flash xbl C:\rom\images\xbl.elf ||
Sending 'xbl' (3449 KB) OKAY [ 0.083s]
Writing 'xbl' OKAY [ 0.017s]
Finished. Total time: 0.117s
C:\rom>fastboot flash xblbak C:\rom\images\xbl.elf ||
Sending 'xblbak' (3449 KB) OKAY [ 0.087s]
Writing 'xblbak' OKAY [ 0.022s]
Finished. Total time: 0.127s
C:\rom>fastboot flash xbl_config C:\rom\images\xbl_config.elf ||
Sending 'xbl_config' (48 KB) OKAY [ 0.003s]
Writing 'xbl_config' OKAY [ 0.002s]
Finished. Total time: 0.021s
C:\rom>fastboot flash xbl_configbak C:\rom\images\xbl_config.elf ||
Sending 'xbl_configbak' (48 KB) OKAY [ 0.004s]
Writing 'xbl_configbak' OKAY [ 0.002s]
Finished. Total time: 0.023s
C:\rom>fastboot flash imagefv C:\rom\images\imagefv.elf ||
Sending 'imagefv' (20 KB) OKAY [ 0.004s]
Writing 'imagefv' OKAY [ 0.002s]
Finished. Total time: 0.021s
C:\rom>fastboot flash imagefvbak C:\rom\images\imagefv.elf ||
Sending 'imagefvbak' (20 KB) OKAY [ 0.005s]
Writing 'imagefvbak' OKAY [ 0.001s]
Finished. Total time: 0.022s
C:\rom>fastboot flash uefisecapp C:\rom\images\uefi_sec.mbn ||
Sending 'uefisecapp' (125 KB) OKAY [ 0.005s]
Writing 'uefisecapp' OKAY [ 0.003s]
Finished. Total time: 0.024s
C:\rom>fastboot flash uefisecappbak C:\rom\images\uefi_sec.mbn ||
Sending 'uefisecappbak' (125 KB) OKAY [ 0.010s]
Writing 'uefisecappbak' OKAY [ 0.005s]
Finished. Total time: 0.035s
C:\rom>fastboot flash qupfw C:\rom\images\qupv3fw.elf ||
Sending 'qupfw' (48 KB) OKAY [ 0.012s]
Writing 'qupfw' OKAY [ 0.005s]
Finished. Total time: 0.033s
C:\rom>fastboot flash qupfwbak C:\rom\images\qupv3fw.elf ||
Sending 'qupfwbak' (48 KB) OKAY [ 0.011s]
Writing 'qupfwbak' OKAY [ 0.005s]
Finished. Total time: 0.032s
C:\rom>fastboot flash metadata C:\rom\images\metadata.img ||
Warning: skip copying metadata image avb footer due to sparse image.
Sending 'metadata' (44 KB) OKAY [ 0.011s]
Writing 'metadata' OKAY [ 0.005s]
Finished. Total time: 0.032s
C:\rom>fastboot flash tz C:\rom\images\tz.mbn ||
Sending 'tz' (1960 KB) OKAY [ 0.051s]
Writing 'tz' OKAY [ 0.011s]
Finished. Total time: 0.078s
C:\rom>fastboot flash tzbak C:\rom\images\tz.mbn ||
Sending 'tzbak' (1960 KB) OKAY [ 0.052s]
Writing 'tzbak' OKAY [ 0.011s]
Finished. Total time: 0.083s
C:\rom>fastboot flash rpm C:\rom\images\rpm.mbn ||
Sending 'rpm' (219 KB) OKAY [ 0.016s]
Writing 'rpm' OKAY [ 0.005s]
Finished. Total time: 0.047s
C:\rom>fastboot flash rpmbak C:\rom\images\rpm.mbn ||
Sending 'rpmbak' (219 KB) OKAY [ 0.010s]
Writing 'rpmbak' OKAY [ 0.005s]
Finished. Total time: 0.031s
C:\rom>fastboot flash hyp C:\rom\images\hyp.mbn ||
Sending 'hyp' (361 KB) OKAY [ 0.012s]
Writing 'hyp' OKAY [ 0.006s]
Finished. Total time: 0.033s
C:\rom>fastboot flash hypbak C:\rom\images\hyp.mbn ||
Sending 'hypbak' (361 KB) OKAY [ 0.010s]
Writing 'hypbak' OKAY [ 0.006s]
Finished. Total time: 0.042s
C:\rom>fastboot flash keymaster C:\rom\images\km4.mbn ||
Sending 'keymaster' (232 KB) OKAY [ 0.010s]
Writing 'keymaster' OKAY [ 0.005s]
Finished. Total time: 0.031s
C:\rom>fastboot flash keymasterbak C:\rom\images\km4.mbn ||
Sending 'keymasterbak' (232 KB) OKAY [ 0.011s]
Writing 'keymasterbak' OKAY [ 0.006s]
Finished. Total time: 0.033s
C:\rom>fastboot flash cmnlib C:\rom\images\cmnlib.mbn ||
Sending 'cmnlib' (385 KB) OKAY [ 0.011s]
Writing 'cmnlib' OKAY [ 0.006s]
Finished. Total time: 0.033s
C:\rom>fastboot flash cmnlibbak C:\rom\images\cmnlib.mbn ||
Sending 'cmnlibbak' (385 KB) OKAY [ 0.020s]
Writing 'cmnlibbak' OKAY [ 0.006s]
Finished. Total time: 0.042s
C:\rom>fastboot flash cmnlib64 C:\rom\images\cmnlib64.mbn ||
Sending 'cmnlib64' (503 KB) OKAY [ 0.021s]
Writing 'cmnlib64' OKAY [ 0.007s]
Finished. Total time: 0.043s
C:\rom>fastboot flash cmnlib64bak C:\rom\images\cmnlib64.mbn ||
Sending 'cmnlib64bak' (503 KB) OKAY [ 0.014s]
Writing 'cmnlib64bak' OKAY [ 0.007s]
Finished. Total time: 0.042s
C:\rom>fastboot flash modem C:\rom\images\NON-HLOS.bin ||
Sending 'modem' (119617 KB) OKAY [ 2.763s]
Writing 'modem' OKAY [ 0.501s]
Finished. Total time: 3.324s
C:\rom>fastboot flash dsp C:\rom\images\dspso.bin ||
Sending 'dsp' (32768 KB) OKAY [ 0.758s]
Writing 'dsp' OKAY [ 0.129s]
Finished. Total time: 0.902s
C:\rom>fastboot flash dspbak C:\rom\images\dspso.bin ||
Sending 'dspbak' (32768 KB) OKAY [ 0.759s]
Writing 'dspbak' OKAY [ 0.139s]
Finished. Total time: 0.913s
C:\rom>fastboot flash bluetooth C:\rom\images\BTFM.bin ||
Sending 'bluetooth' (876 KB) OKAY [ 0.025s]
Writing 'bluetooth' OKAY [ 0.008s]
Finished. Total time: 0.048s
C:\rom>fastboot flash bluetoothbak C:\rom\images\BTFM.bin ||
Sending 'bluetoothbak' (876 KB) OKAY [ 0.027s]
Writing 'bluetoothbak' OKAY [ 0.016s]
Finished. Total time: 0.060s
C:\rom>fastboot flash storsec C:\rom\images\storsec.mbn ||
Sending 'storsec' (19 KB) OKAY [ 0.010s]
Writing 'storsec' OKAY [ 0.005s]
Finished. Total time: 0.031s
C:\rom>fastboot flash devcfg C:\rom\images\devcfg.mbn ||
Sending 'devcfg' (41 KB) OKAY [ 0.011s]
Writing 'devcfg' OKAY [ 0.005s]
Finished. Total time: 0.032s
C:\rom>fastboot flash devcfgbak C:\rom\images\devcfg.mbn ||
Sending 'devcfgbak' (41 KB) OKAY [ 0.011s]
Writing 'devcfgbak' OKAY [ 0.005s]
Finished. Total time: 0.033s
C:\rom>fastboot flash abl C:\rom\images\abl.elf ||
Sending 'abl' (216 KB) OKAY [ 0.011s]
Writing 'abl' OKAY [ 0.005s]
Finished. Total time: 0.042s
C:\rom>fastboot flash ablbak C:\rom\images\abl.elf ||
Sending 'ablbak' (216 KB) OKAY [ 0.012s]
Writing 'ablbak' OKAY [ 0.005s]
Finished. Total time: 0.034s
C:\rom>fastboot flash dtbo C:\rom\images\dtbo.img ||
Sending 'dtbo' (24576 KB) OKAY [ 0.581s]
Writing 'dtbo' OKAY [ 0.109s]
Finished. Total time: 0.717s
C:\rom>fastboot flash vbmeta C:\rom\images\vbmeta.img ||
Sending 'vbmeta' (4 KB) OKAY [ 0.006s]
Writing 'vbmeta' OKAY [ 0.001s]
Finished. Total time: 0.023s
C:\rom>fastboot flash vbmetabak C:\rom\images\vbmeta.img ||
Sending 'vbmetabak' (4 KB) OKAY [ 0.004s]
Writing 'vbmetabak' OKAY [ 0.001s]
Finished. Total time: 0.022s
C:\rom>fastboot flash boot C:\rom\images\boot.img ||
Sending 'boot' (65536 KB) OKAY [ 1.510s]
Writing 'boot' OKAY [ 0.270s]
Finished. Total time: 1.795s
C:\rom>fastboot flash recovery C:\rom\images\recovery.img ||
Sending 'recovery' (65536 KB) OKAY [ 1.512s]
Writing 'recovery' OKAY [ 0.279s]
Finished. Total time: 1.807s
C:\rom>fastboot flash system C:\rom\images\system.img ||
Warning: skip copying system image avb footer due to sparse image.
Sending sparse 'system' 1/6 (776284 KB) OKAY [ 17.914s]
Writing 'system' OKAY [ 0.001s]
Sending sparse 'system' 2/6 (774312 KB) OKAY [ 18.139s]
Writing 'system' OKAY [ 0.001s]
Sending sparse 'system' 3/6 (774312 KB) OKAY [ 18.069s]
Writing 'system' OKAY [ 0.001s]
Sending sparse 'system' 4/6 (774312 KB) OKAY [ 18.119s]
Writing 'system' OKAY [ 0.001s]
Sending sparse 'system' 5/6 (774312 KB) OKAY [ 18.109s]
Writing 'system' OKAY [ 0.001s]
Sending sparse 'system' 6/6 (498996 KB) OKAY [ 11.768s]
Writing 'system' OKAY [ 0.001s]
Finished. Total time: 102.174s
C:\rom>fastboot flash vendor C:\rom\images\vendor.img ||
Warning: skip copying vendor image avb footer due to sparse image.
Sending sparse 'vendor' 1/2 (775304 KB) OKAY [ 17.888s]
Writing 'vendor' OKAY [ 0.001s]
Sending sparse 'vendor' 2/2 (269572 KB) OKAY [ 6.427s]
Writing 'vendor' OKAY [ 0.001s]
Finished. Total time: 26.416s
C:\rom>fastboot flash userdata C:\rom\images\userdata.img ||
Warning: skip copying userdata image avb footer due to sparse image.
Sending 'userdata' (68192 KB) OKAY [ 1.575s]
Writing 'userdata' OKAY [ 0.001s]
Finished. Total time: 2.708s
C:\rom>fastboot flash cache C:\rom\images\cache.img ||
Warning: skip copying cache image avb footer due to sparse image.
Sending 'cache' (56 KB) OKAY [ 0.006s]
Writing 'cache' OKAY [ 0.003s]
Finished. Total time: 7.516s
C:\rom>fastboot erase ddr
Erasing 'ddr' OKAY [ 0.044s]
Finished. Total time: 0.049s
C:\rom>fastboot erase misc
Erasing 'misc' OKAY [ 0.078s]
Finished. Total time: 0.083s
C:\rom>fastboot erase apdp
Erasing 'apdp' OKAY [ 0.078s]
Finished. Total time: 0.083s
C:\rom>fastboot flash cust C:\rom\images\cust.img
Warning: skip copying cust image avb footer due to sparse image.
Sending 'cust' (180568 KB) OKAY [ 4.169s]
Writing 'cust' OKAY [ 0.001s]
Finished. Total time: 4.189s
C:\rom>fastboot reboot
Rebooting OKAY [ 0.736s]
Finished. Total time: 0.738s
C:\rom>pause
Press any key to continue . . .
C:\rom>cd ..
C:\work>ls
@RafitaDev.ColorOS15.zip MiFlash20220507 Qualcomm_USB_Driver_v1.0.10065.1
Ginkgo_64_-Repartion-_8.5GB_2GB.zip OrangeFox-ginkgo-stableR11.1 ginkgo_in_global_images_V12.5.2.0.RCOINXM_20220617.0000.00_11.0_in
Magisk-v31.0.apk OrangeFox-ginkgo-stableR11.1.zip miui_GINKGOGlobal_V12.5.2.0.RCOMIXM_75abe1782e_11.0.zip
C:\work>cd OrangeFox-ginkgo-stableR11.1
C:\work\OrangeFox-ginkgo-stableR11.1>ls
INSTALL.txt META-INF recovery.img sdcard
C:\work\OrangeFox-ginkgo-stableR11.1>fastboot flash recovery recovery.img
Sending 'recovery' (65536 KB) OKAY [ 1.511s]
Writing 'recovery' OKAY [ 0.282s]
Finished. Total time: 1.814s
C:\work\OrangeFox-ginkgo-stableR11.1>fastboot reboot recovery
Rebooting into recovery OKAY [ 0.001s]
Finished. Total time: 0.002s
Where each part maps to this guide: the
oem device-infoandgpt_both0.binsection is Part 4, theflash_all.batrun is the rest of Part 4, and the OrangeFoxrecoveryflash at the very end is Part 5 Step 1.
