# 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/` (пишет `.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 --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)).