uzbek-plus/docs/QUICKSTART.md
q 105bef466a Project Aurora: mainline ARM64 Linux on JZ08AU (MSM8916) LTE modem
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.
2026-09-30 17:23:18 +03:00

5.5 KiB
Raw Blame History

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 — 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 (только вместе!);
  3. 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); проприетарные файлы берите из своих источников и сверяйте sha256 (BLOBS.md).