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.
5.5 KiB
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:
- Linux в RAM через lk2nd (в
recovery) — без изменения цепочки (сессии 4–6 в NOTES); - aboot → lk1st; 3. GPT (tz 1 MiB); 4. tz → DB410c TZ.BF.3.0 + hyp → qhypstub (только вместе!);
- 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).