diff --git a/docs/bootchain.md b/docs/bootchain.md new file mode 100644 index 0000000..2aa33d1 --- /dev/null +++ b/docs/bootchain.md @@ -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+. diff --git a/docs/emmc.md b/docs/emmc.md new file mode 100644 index 0000000..7da5ddd --- /dev/null +++ b/docs/emmc.md @@ -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-заглушка. diff --git a/docs/firmware.md b/docs/firmware.md new file mode 100644 index 0000000..4ed308b --- /dev/null +++ b/docs/firmware.md @@ -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. diff --git a/docs/peripherals.md b/docs/peripherals.md new file mode 100644 index 0000000..49eb860 --- /dev/null +++ b/docs/peripherals.md @@ -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 в хост.