docs: bootloader, emmc GPT40, firmware/programmers, peripherals map

This commit is contained in:
SashegDev
2026-09-07 07:22:19 +00:00
parent cca5bce8cb
commit c71733042e
4 changed files with 104 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
# Bootchain Lumia 550 (MSM8909, 32-bit, eMMC)
```
PBL ROM 0x00100000 [immutable] -> SBL1 (eMMC User LBA 32768) -> QSEE/TZ + RPM -> UEFI (Microsoft) -> BootMgr/FlashApp -> MainOS
EDL при ошибке: 05C6:9008 Sahara
```
## PBL
- Адрес: 0x00100000, aarch32. НЕ 0xFC010000 (это 64-бит 8996+).
- TCSR_BOOT_MISC_DETECT 0x193D100 bit0 = EDL cookie.
- IMEM 0x08600000 4K: mem_dump 0x10, restart_reason 0x65c, boot_stats 0x6b0, diag_dload 0xc8.
- Грузит SBL1 в L2 TCM + RPM CodeRAM, сверяет по OEM_PK_HASH (QFPROM).
- WIP: PBL-stub скипает проверку (оригинал упадет без QFPROM из дампа).
## SBL1 (НЕ XBL!)
- 8909 = старый SBL1, не XBL_SEC/XBL_Loader (те для Kryo/UFS).
- Инит: buses, DDR 0x80000000 1GB, clocks, CDT, PMIC, USB, thermal.
- Грузит: QSEE -> RPM FW -> APPSBL(UEFI) в DDR. Поддержка RAM dump по Sahara/USB.
- LBA SBL1 ~32768, UEFI ~45056, RPM ~53248 (уточнить ffureader из orig FFU).
## UEFI (Microsoft)
- FlashApp/BootMgr/FFULoader.efi, PlatformID Microsoft.MSM8909.*.
- Secure FFU bitmap 0019: sync v1 + async v1/v3.
- BCD: testsigning/flightsigning (фикс BSOD после unlock).
- DPP -> Windows\DPP копирование.
## Несостыковки (честно)
1. virt-машина не подходит (RAM 0x40000000 vs 0x80000000) — нужна saimaa-машина.
2. Оригинал SBL/UEFI требует QFPROM/PK_HASH из живого дампа.
3. ABL/LinuxLoader тут нет — не таскать из 835+.
+26
View File
@@ -0,0 +1,26 @@
# eMMC 8GB 4.5 — Lumia 550
## Геометрия QEMU
`emmc.img = Boot1 + Boot2 + RPMB + User` конкатенацией.
- Boot1/Boot2 одинаковые, кратно 128K. Берем 4M (пустые нули — Lumia грузится из User).
- RPMB 4M (под UEFI_RT_NV_RPMB, ключ через auth-key, в QEMU не persists).
- User ~7456M: вся GPT на 40 разделов.
- Подключение: sdhci platform 0x07824000 8bit (НЕ pci!), сектор 512, EXT_CSD REV 5.
- SDC2 0x07864000 4bit — microSD до 200GB, пустая.
## GPT 40 (Type-GUID фиксированы, Unique — на устройство, LBA — из ffureader!)
DPP, MODEM_FSG/FS1/FS2/FSC, DDR, SEC, APDP, MSADP/DPO/LogFS, SSD 16K,
BACKUP_BS_NV, UEFI_BS_NV/RT_NV(+RPMB), LIMITS, SBL1, PMIC, DBI, UEFI ~2.5M,
RPM, HYP, TZ, WINSECAPP, TZAPPS, BACKUP_*, PLAT 8M (pconf.bin!),
EFIESP 64M FAT, MMOS ~80M, MainOS ~2-3G NTFS, Data остаток NTFS.
## Brick-механика (фича!)
- dd поверх DPP/MODEM_FSG/FS1/FS2/SSD/UEFI_*NV/PLAT/SBL1 = труп + потеря IMEI.
- DPP чужой не шить никогда. Снэпшоты только ручные.
- Восстановление: 9008 + MPRG8909_fh.ede + RM1127_fh.edp + orig FFU.
## Boot1/2 логика (открытый вопрос)
- QEMU умеет PART_CONFIG 0/1/2/7 + BOOT_ACK + bootbus.
- У 550 почти наверняка BOOT_ENABLE=7 (User) или 0, Boot1/2 пустые.
- Нужен `mmc extcsd read` + `getstorageinfo` из живого тела для 1:1.
- До этого: Boot1/2 = нули, WIP-заглушка.
+25
View File
@@ -0,0 +1,25 @@
# Firmware / Programmers
## FFU orig RM-1127 (последняя стабильная)
- Ветка `1078.0042 / 10586.13333 / OS 10.0.10586.494` (сент 2016).
- Имя: `RM1127_1078.0042.10586.13333.15206.0352F3_retail_prod_signed.ffu` (~2.0GB).
- RU CV: `059X5R5 VAR EURO 6A CV` (RAR ~1.4GB).
- RM-1128 отдельно: `059X5K7 VAR LTA 7R CV`.
- Источники: lumiadb.com > halabtech id113695 > VK сборник > firmwaredrive.
- Чужой RM не лить: 0x1106 SEC_HDR_FAIL.
- Проверка orig: размер ~2GB + PlatformID Microsoft.MSM8909 + secure header + .vpl/.dcp в комплекте.
## Emergency / программаторы
- Lumia-путь: `MPRG8909_fh.ede + RM1127_fh.edp` (XDA 3748037 / protobetatest / Astoria-репо).
`thor2 -mode emergency -hexfile MPRG8909_fh.ede -edfile RM1127_fh.edp [-ffufile orig.ffu]`
- EDL-путь (для отладки): `prog_emmc_firehose_8909_ddr.mbn ELF32 ~277KB`
(bananahackers / Hovatek / androidfilehost). Магия `7F 45 4C 46`.
- Решает PK_HASH, не HWID. Чужой = `signature wasn't accepted`.
- Donor для WPInternals: всегда RM-1085 (950XL) FFU, даже для 550.
## Форматы (коротко)
- MBN: hdr 40B + code + cert + RSA2048. ELF = MBN без обертки, смотреть по магии.
- Sahara: HELLO/READ_DATA/END/DONE, 05C6:9008.
- Firehose XML: configure/program/read/erase/patch/peek/poke/power/getstorageinfo.
- FFU v1: sec header 32B + catalog + hashtable + ImageHeader + StoreHeader + payload @0xC0000 chunk 128K.
- GPT0.bin = 34 сектора (MBR+HDR+entries). RKH.hex имя = SHA256 RKH.
+23
View File
@@ -0,0 +1,23 @@
# Карта памяти + периферия (для dts)
## Критично для boot (полно)
- DDR 0x80000000 1GB + carveout: qseecom 0x87A00000 2M, modem_adsp 0x88000000 85M, peripheral 0x8D500000 5M, splash 0x83000000 12M
- IMEM 0x08600000 4K, SMEM 0x87D00000 1M
- SDC1 0x07824000 8bit eMMC, SDC2 0x07864000 4bit SD
- TLMM 0x01000000 3M (113 GPIO), SPMI 0x200F000 (PM8909 SID0)
- UART1 0x078AF000 IRQ107 (лог!), USB 0x078D9000 IRQ134/140
- INTC 0x0B000000, TIMER 0x0B020000 19.2MHz, MPM 0x4A3000 32kHz
## PM8909 (SPMI)
- PON 0x0800: KPDPWR=POWER 116, RESIN=VOL_DOWN 114
- MPP2 подсветка DSI hx8394d_720p bl_ctrl_pwm, PWM 0xBC00, VIB 0xC000, RTC 0x6000
- CHG/BMS 2100mAh (BV-T4G съемный), VADC/ADC_TM, L1-L18, WCD codec 0xF000
- Кнопки: VolUp gpio90, Camera focus 91 / snapshot 92
## Заглушки OK
WCNSS Pronto 0x0A000000, MSS modem PIL, MDSS/DSI (только FB файл),
charger=4.0V 25C, RTC фикс, thermal 35C, RPM/TZ SMC=nop, I2C/SPI сенсоры absent.
## USB
- 05C6:9008 EDL (Sahara/Firehose), 045E:9006 Flash/MassStorage, Micro-B 2.0.
- thor2/WDRT/WPInternals только Windows — из WSL проброс через usbip в хост.