Sanitized research log, build/reproducibility docs, DTS, kernel configs, patches, initramfs sources, bootchain migration plans and test logs. B5 direct boot PASS; B6 modem lifecycle in progress. No dumps, NV/EFS, vendor firmware or device identifiers included.
67 lines
5.5 KiB
Markdown
67 lines
5.5 KiB
Markdown
# QUICKSTART — второе устройство JZ08AU / MSM8916
|
||
|
||
Цель: повторить наши шаги на **своём** экземпляре, ничего не сломав и ничего не перенося с нашей платы.
|
||
|
||
> Одинаковая маркировка платы (JZ08AU-XPA-7J-R3) **не гарантирует** одинаковые:
|
||
> панель дисплея, eMMC (производитель/размер/разметка), прошивку модема (mba/modem.* подписываются и меняются между партиями),
|
||
> калибровку RF, калибровку Wi-Fi, периферию (GPIO, кнопки, светодиоды, зарядка).
|
||
> Любое наше значение (хэш, адрес, LBA, GPIO) — только ориентир для сравнения. Проверяйте на своей плате.
|
||
|
||
## 0. Что понадобится
|
||
|
||
- USB-UART 3.3 V (у нас CH340), 115200 8N1. UART консоль: BLSP1 UART2 (`serial@78b0000`), GPIO4 = TX, GPIO5 = RX.
|
||
- Linux-хост с `edl` (bkerler/edl), `adb`, `fastboot`, python3.
|
||
- Заряженный аккумулятор: плата от одного USB не стартует.
|
||
|
||
## 1. Проверить ревизию платы
|
||
|
||
Сфотографируйте обе стороны, запишите маркировку PCB, eMMC, PMIC, наличие дисплея. Сравните с нашей (`README.md`).
|
||
В стоковом Android: `getprop` (модель, сборка), `cat /proc/cmdline`, `ls -l /dev/block/platform/*/by-name` — сохраните
|
||
(наш снимок для сравнения: `android/`). Ожидаемо: MSM8916, 512 MiB RAM, 27 GPT-разделов, `msm8916_32_512`.
|
||
|
||
## 2. Подключить UART
|
||
|
||
Найдите площадки TX/RX/GND (по DT: GPIO4/GPIO5). Подключайте только RX/TX/GND, **не подавайте** 3.3 V с адаптера.
|
||
Логгер: `tools/uartlog.py /dev/ttyUSB0 logs/uart/<name>` (пишет `.raw` и `.log` с метками времени хоста).
|
||
|
||
## 3. Снять stock UART-логи
|
||
|
||
Холодный старт стокового Android с логгером: должны быть видны `SBL1, Start … SBL1 End`, stock LK, ядро 3.10.
|
||
Сравните с `logs/uart/coldboot-*.log` (у нас). Это единственный эталон «как было» — сделайте его до любых изменений.
|
||
|
||
## 4. Проверить EDL (05c6:9008)
|
||
|
||
Сначала программно: `adb reboot edl` (на стоке работает). Затем **аппаратно** (нужно для восстановления, когда ничего не грузится):
|
||
см. [RECOVERY.md](RECOVERY.md) — D+ → GND. Не продолжайте, пока аппаратный EDL не воспроизводится 3/3.
|
||
Проверьте Sahara (`edl` печатает serial/HWID/PK hash). Наш чип unfused (PK hash = Qualcomm test root); ваш может отличаться —
|
||
тогда подписи/программер могут не подойти.
|
||
|
||
## 5. Полный backup
|
||
|
||
Через Firehose, только чтение: `edl rl <dir> --genxml` (все разделы) и полный образ eMMC. Проверьте:
|
||
- sha256 каждого раздела; повторное чтение даёт те же хэши;
|
||
- GPT primary/backup валидны (CRC), разделы == `printgpt`;
|
||
- копии лежат минимум в двух местах.
|
||
|
||
Без проверенного backup дальше не идти.
|
||
|
||
## 6. Проверить GPT
|
||
|
||
Сравните свою разметку с `MANIFEST.md` / `partitions/rawprogram0.xml`. Все LBA в наших скриптах (tz @270336, tzbak @305184,
|
||
hyp @272384, aboot @264192, boot @396384, cache @2133088, …) верны **только** для нашей разметки. Если у вас хоть одно
|
||
значение другое — пересчитайте, наши `*-write.sh` не использовать как есть.
|
||
|
||
## 7. Сохранить NV/EFS своего устройства
|
||
|
||
`modemst1`, `modemst2`, `fsg`, `fsc`, `persist` (+ `modem` FAT) — отдельно, с sha256, в нескольких местах.
|
||
Это калибровки и идентичность **вашего** модема. Чужие NV не прошивать никогда. В Linux мы запускаем `rmtfs -r`
|
||
(EFS только в RAM) и держим все блочные устройства read-only — делайте так же, пока нет отдельного решения.
|
||
|
||
## 8. Только потом — миграция bootchain
|
||
|
||
По одной стадии, каждая: preflight → запись → readback cmp → загрузка → проверка EDL:
|
||
1. Linux в RAM через lk2nd (в `recovery`) — без изменения цепочки (сессии 4–6 в NOTES);
|
||
2. aboot → lk1st; 3. GPT (tz 1 MiB); 4. tz → DB410c TZ.BF.3.0 + hyp → qhypstub (только вместе!);
|
||
5. ARM64 RAM boot; 6. B5a: lk1st autoboot + boot = rescue image; 7. B5b: cache = ext2/extlinux.
|
||
Документы: `bootchain-migration/PREFLIGHT.md`, `bootchain-migration/WRITE-PLAN.md`, NOTES.md сессии 7–27.
|
||
Бинарники собирайте сами ([BUILD.md](BUILD.md)); проприетарные файлы берите из своих источников и сверяйте sha256 ([BLOBS.md](BLOBS.md)).
|