# Aurora — отчёт сессии 1 (2026-09-29) ## 1. Hardware - SoC: MSM8916 (Sahara MSM_ID 0x007050e1), 4×Cortex-A53, Android 32-bit. - RAM: 512 MB (MemTotal 403480 kB; LK/QCDT выбирает "MSM 8916 512MB MTP", board-id 8/0x100). - eMMC: Hynix **H4G2a**, CID ``, PSN 0x, 3 909 091 328 B = 7 634 944 секторов (у JZ02: 3 875 536 896 B — другая eMMC). - PMIC: PM8916 (linear charger + VM-BMS, MPP4 current sink → lcd-bl, vibrator node enabled). - Батарея: присутствует, профиль `palladium_1500mah` (стандартный MTP-профиль, вероятно не откалиброван под реальный АКБ). - Идентификаторы: fastboot serialno **= eMMC PSN**, не серийник чипа. Sahara chip serial = **0x**. ## 2. Android / kernel - Android 4.4.4 KTU84P, `msm8916_32_512-user … eng.richal.20260709 test-keys`, product/model `MIFI`. - Kernel: `Linux 3.10.28 (richal@msa2) gcc 4.7 #1 SMP PREEMPT Tue Apr 14 2026`. - cmdline (из boot.img): `console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x3F ehci-hcd.park=3 androidboot.bootdevice=7824900.sdhci` - Baseband: PM.1.0.c7-00193-M8916EAAAANVZM-1. ## 3. Root / adbd - `uid=2000(shell)`, ro.secure=1, ro.debuggable=0, su нет. dmesg (klogctl) и /proc/cmdline недоступны. `adb root` не проверялся (user-build → бесполезно). - adb serial = `0` (как на JZ02). ## 4. Fastboot - Минимальный LK: getvar почти пустой. devinfo (последний сектор aboot): `ANDROID-BOOT!`, is_unlocked=0, is_tampered=0, charger_screen_enabled=1 — **как у JZ02**, bootloader, вероятно, locked. abootbak без devinfo. ## 5. EDL - `adb reboot edl` → 05c6:9008 — работает. ## 6. Sahara | | Aurora | JZ02 | |---|---|---| | Sahara ver | 2 (min 1) | 2 | | HWID | 0x007050e100000000 (OEM 0, MODEL 0) | тот же | | PK_HASH | cc3153a80293939b90d02d3bf8b23e0292e452fef662c74998421adad42a380f | тот же | | Serial | 0x | 0x | PK_HASH = публичный тестовый root Qualcomm ⇒ **secure boot не зафьюжен** (PBL принимает любой тест-подписанный программер). Инцидент: мой первый probe (`tools/sahara_probe.py`) отправил SAHARA_EXEC GET_SBL_VERSION — PBL его не поддержал, после этого modeswitch не вернул HELLO и PBL завис. Плата была восстановлена пользователем (перезагрузка в Android). Хранилище не затронуто. Вывод: только стандартный `edl` flow; не слать неподдерживаемые exec-команды. ## 7. Firehose - Файл: `firehose/007050e100000000_394a2e47cf830150_fhprg_peek.bin` - SHA256: `53f193500c03248f0d671ab57bfe9ca8a42967e97f28403294b4b3f854075aca` - Источник: bkerler edl Loaders, `qualcomm/factory/msm8916/` (тот же файл, что на JZ02). - ELF32, подписан цепочкой QUALCOMM (тестовые ключи), Sahara принял, `TargetName=MSM8916, MemoryName=eMMC, Version=1`. - READ: подтверждено (две независимые вычитки совпали). WRITE: не тестировалось. RESET: на JZ02 ненадёжен — после работы отключать питание вручную. - Использованы только команды: `printgpt`, `rl`, `rf`. ## 8. GPT Primary и backup: CRC header/entries OK, 28 слотов, записи идентичны, backup header на последнем LBA (7634943). Таблица совпадает с данными Android (/proc/partitions + by-name). Полная таблица: `MANIFEST.md`. Неразмеченное: LBA 34..131071 (до modem), 305170..393215 (между splash и DDR) — входит в full-emmc.bin. ## 9. Backup - `rl` (все разделы) и `rf` (вся eMMC) — две независимые вычитки, 19:24–19:33 MSK. - 27/27 разделов bit-identical между rl и rf, размеры = GPT. Хэши: `partitions/SHA256SUMS`, `dumps/full-emmc.sha256`. - Две копии: ноутбук + эта папка (sha256 проверены после копирования). ## 10. Bootchain (ELF-разбор, `bootchain/elfinfo.txt`) | образ | версия | сравнение с JZ02 | |---|---|---| | sbl1 = sbl1bak | BOOT.BF.3.0.1-00019 (HAAAANAZA) | раздел целиком **идентичен** | | rpm = rpmbak | RPM.BF.2.0.1-00027 | ELF-образ идентичен; раздел отличается только мусором после конца образа | | tz / tzbak | TZ.BF.2.2-2.2.0026 | ELF-образ идентичен. В хвосте tz — остатки старого TZ.BF.2.5.C6-00025 (не исполняется) | | hyp / hypbak | (hyp из TZ.BF.2.2) | ELF-образ идентичен; хвост hyp — остатки TZ.BF.2.5.C6 hyp | | aboot = abootbak (кроме devinfo) | LK, сертификат 2026-07-09 | **ДРУГОЙ** (JZ02: 2025-11-03). Добавлены SPI-панели st7735s/nv3023a, "Config SPI PANEL", charger mode | | DDR, sec, splash | — | разделы идентичны JZ02 | | modem | MPSS.DPM.1.0.C7-00193, WCNSS CNSS.PR.1.4.2.C4-00084 | те же сборки; образ раздела отличается (содержимое FAT не сравнивалось) | Вывод: SBL1/RPM/TZ/HYP де-факто те же, что stock JZ02. Отличается только LK (aboot). Не выводить отсюда, что DB410c TZ/qhypstub/lk1st от JZ02 подойдут без проверки — это только аналитический факт. ## 11. boot / recovery (`bootchain/boot|recovery/info.txt`) - Android boot image v0, page 2048, kernel @0x80008000, ramdisk @0x81000000, tags @0x80000100. - Ядро: zImage 32-bit, одно и то же в boot и recovery (sha256 8796a9cd…), без appended DTB. - DTB: **QCDT v2** (dt_size 0x46800), 8 записей → 2 уникальных DTB, одинаковые в boot и recovery. platform_id 0xce/0xf8/0xf9/0xfa, variant 8 (QRD/MTP), subtype 0 (`dtb_00`, "MSM 8916 MTP") и 0x100 (`dtb_01`, "512MB MTP"). - ramdisk: boot 534088 B, recovery 1071013 B (не распакованы — следующий шаг). ## 12. DT / board (`dt/dtb_01.dts` — активный для 512MB) - model "Qualcomm Technologies, Inc. MSM 8916 512MB MTP", compatible `qcom,msm8916-mtp`. - **Дисплей**: ST7735S "wx144" 128×128, command mode, RGB565 (bpp 16), 20 fps, cont-splash. - интерфейс: SPI через MDSS SPI (`qcom,mdss-spi-display`), BLSP1 **QUP4** `spi@78b8000` (BAM), клиент 16 МГц. - reset GPIO **118**, D/C GPIO **116** (disp_rst_n / disp_dc в /sys/kernel/debug/gpio). - vdd = **L17 2.85 В**, vddio = **L6 1.8 В**. - подсветка: PM8916 **MPP4** current sink (`lcd-bl`, 40 мА, manual). В Android также `lcd-backlight` (mdss). - альтернативная панель в DT/LK: NV3023A "jz05" 128×128 SPI (второй вариант поставки). - fb0: `mdssfb_d0000`, "spi panel", 128×128, virtual 128×256, 32 bpp, stride 512. - тачскрина нет. - **Кнопки**: PON power (qpnp_pon), `key_f2` GPIO37 (active-high, KEY_F2), `key_f3` GPIO107 (active-low, KEY_F3). Обе wakeup. - **SIM mux** (gpio-leds hack): sim1_switch GPIO22, sim2_switch GPIO23, sim3_switch GPIO1 (default on), sim_hotdet GPIO20 — **те же GPIO, что у JZ02**. - LEDs: RGB GPIO-LED как у JZ02 (GPIO6/7/8) в DT **нет**. - UART: console `serial@78b0000` (BLSP1 UART2, ttyHSL0, 115200). - USB: hsusb-otg @78d9000, usb-bam. - WCNSS: `qcom,wcnss_wlan@0a000000`, pronto PIL, 5-wire pinmux (GPIO40-44) — как JZ02. - Modem: `qcom,pil-q6v56-mss@4080000`, SMD/SMSM, **bam_dmux@4044000**, rmtfs sharedmem-uio. - Thermal: tsens sensor0/1/2/4/5, pm8916_tz, bms, battery; msm-thermal. - Audio: msm8x16 codec (headset jack detect), cdc-us-euro GPIO113 (JZ02: 120). - Камеры CCI camera@0/@1 "ok" — артефакт MTP-DT, физически камер нет (не проверялось). - Полный diff против JZ02 stock dtb_01: `dt/diff-jz02-vs-aurora-dtb01.txt`. Android runtime: rmt_storage, qmuxd, netmgrd, rild, wcnss_service, hostapd, dnsmasq, thermal-engine, mpdecision. wlan0 = AP 192.168.100.1/24; rmnet* + rev_rmnet* (SMD/BAM-DMUX). ## 13. JZ02 vs Aurora | | JZ02 | Aurora | класс | |---|---|---|---| | SoC | MSM8916 | MSM8916 | SAME | | RAM | не зафиксировано в заметках | 512MB | UNKNOWN | | eMMC | 3 875 536 896 B | 3 909 091 328 B, Hynix H4G2a | DIFFERENT | | GPT | 27 разделов | те же имена/порядок, другие размеры/смещения под eMMC | DIFFERENT (не переносить GPT) | | SBL1 | BOOT.BF.3.0.1-00019 | идентичен | SAME | | RPM | RPM.BF.2.0.1-00027 | ELF идентичен | SAME | | TZ | TZ.BF.2.2-2.2.0026 | ELF идентичен | SAME | | HYP | stock | ELF идентичен | SAME | | ABOOT | LK 2025-11 | LK 2026-07, SPI panel | DIFFERENT | | MPSS | MPSS.DPM.1.0.C7-00193 | та же версия, но переподписан 2026-04 и бинарно отличается | DIFFERENT (см. S2.7) | | PMIC | PM8916 | PM8916 | SAME | | WCNSS | CNSS.PR.1.4.2.C4-00084 | тот же, те же пины | LIKELY SAME | | Wi-Fi | WCN36x0 via pronto | то же | LIKELY SAME | | USB | hsusb-otg | то же | LIKELY SAME | | UART | ttyHSL0 @78b0000 | ttyHSL0 @78b0000, GPIO4/5 (DT), пады найдены | LIKELY SAME (у JZ02 pinctrl не сверялся) | | SIM mux | GPIO22/23/1/20 | GPIO22/23/1/20 | SAME (по DT) | | display | нет (в DT — generic DSI st7796s) | ST7735S SPI 128×128 | DIFFERENT | | buttons | vol_up GPIO107, reset GPIO37 | key_f3 GPIO107, key_f2 GPIO37 (+PON) | LIKELY SAME pins, другие коды | | LEDs | RGB GPIO6/7/8 | нет RGB; lcd-bl на MPP4 | DIFFERENT | | battery | ? | 1500 mAh, VM-BMS | UNKNOWN для JZ02 | | charger | ? | qpnp-linear-charger | UNKNOWN для JZ02 | | thermal | tsens | tsens + bms/battery | LIKELY SAME | | DT | QCDT v2, 2 DTB | QCDT v2, 2 DTB, ~1080 строк diff | DIFFERENT | | kernel | 3.10.28 (sha 56214cdd…) | 3.10.28 (sha 8796a9cd…) | DIFFERENT build | ## 14. Риски / блокеры - Firehose WRITE не проверен; edl reset ненадёжен (опыт JZ02) → после EDL-сессии нужен ручной power-cycle. - modemst1/2, fsg, persist — уникальные NV/RF-калибровки; бэкап есть, но писать туда нельзя. - Мусор в хвостах rpm/tz/hyp: при любой будущей записи bootchain сравнивать по ELF-образу, а не по хэшу раздела. - UART найден (сессия 2). Stock LK: только getvar/download — RAM-boot невозможен без записи (S2.4). - Аварийный вход в EDL без Android (кнопки/test point) не найден — сейчас EDL только через `adb reboot edl` или fastboot/LK. - Батарея: при экспериментах с ядром без charger/BMS драйвера возможен глубокий разряд. ## 15. Следующий безопасный шаг > Устарело после сессии 2: п.2 выполнен — `fastboot boot` в stock LK отсутствует (S2.4); п.3 выполнен (S2.5–S2.7); UART найден (S2.1). 1. Физически: отключить/подключить питание (плата сейчас в firehose-режиме), убедиться, что Android загрузился. 2. Проверить `fastboot oem device-info` / `fastboot boot ` (RAM-boot без записи) — понять, разрешает ли LK `fastboot boot`. Это ключ к тестам mainline без flash. 3. Распаковать ramdisk boot/recovery, собрать init/rc и firmware-список; снять содержимое FAT `modem` (mtools) и сравнить с JZ02. 4. Найти UART-пады (GPIO4/5) на плате — до начала порта Linux. 5. Только после этого: план mainline DTS `msm8916-jz08-aurora` (panel-mipi-dbi/ st7735 над SPI QUP4, gpio-keys, pm8916 charger/bms). --- # Сессия 2 (2026-09-29, 20:00–) — UART, fastboot policy, ramdisk, modem FAT Все операции read-only. В eMMC ничего не записано. ## S2.1 UART (подтверждён физически) - Пады RX/TX найдены пользователем на плате; вывод stock kernel console читается. - Расположение TX pad: **не сообщено** (дописать). - Расположение RX pad: **не сообщено** (дописать). - GND: **не сообщено**. - Уровень логики: **не измерялся** (MSM8916 GPIO bank = 1.8 В — ожидаемо, не подтверждено измерением). - Адаптер на 480s: CH340 (1a86:7523) → `/dev/ttyUSB0`, 115200 8N1. - Логика: BLSP1 UART2, `serial@78b0000` (`qcom,msm-lsuart-v14`, irq 0x6c), ttyHSL0, cmdline `console=ttyHSL0,115200,n8`. - pinctrl из Aurora `dt/dtb_01.dts` (`pinctrl-0 = <0xac>` → `pmx-uartconsole/uart-console`): - `qcom,pins = <&tlmm 4>, <&tlmm 5>` → **GPIO4, GPIO5**; `qcom,pin-func = 2`; - `drive-strength = 2` (мА), `bias-pull-down`; - только состояние `default` (active); **sleep-состояния в DT нет**. - TX = GPIO4, RX = GPIO5 — по таблице функций TLMM MSM8916 (blsp_uart2), в самом DT направление не указано. - Битые символы: встречаются кластерами там, где kernel printk пересекается с выводом из другого контекста (SBL→LK переход, параллельные CPU), не равномерно — нет оснований считать baudrate неверным. ## S2.2 Cold-boot UART log (`logs/uart/coldboot-20260929-200018.log/.raw`) Контекст: плата была выключена и сидела в **off-mode charging** (Android `charger`). Нажатие питания → `charger: [241128] rebooting` → `Restarting system` → полный bootchain. PON reason в ядре: `Triggered from Hard Reset and 'cold' boot`, power-off reason `PS_HOLD`. LK: `pm8x41_get_is_cold_boot` (текст повреждён). - PBL: вывода нет (ожидаемо). - **SBL1**: печатает boot-лог (`Format: Log Type - Time(microsec)`), `batt_voltage=3975`, `sbl1_efs_handle_cookies`, загрузка TZ/RPM/APPSBL, `QSEE Execution`, `SBL1, End` ≈ 335 мс. - **LK**: `Android Bootloader - UART_DM Initialized!!!`, `welcome to lk`, баннера/версии нет. - `[210] Panel power on done`, `[210] Config SPI PANEL.` — LK сам инициализирует ST7735S (splash). - DTB: `Using DTB entry 206/00000000/0x00000008/256 for device 206/00010000/0x0001…` → выбран **dtb_01** (512MB MTP). - cmdline от LK добавляет: `androidboot.emmc=true androidboot.serialno= androidboot.baseband=msm mdss_mdp.panel=1:spi:0:qcom,mdss_spi_st7735s_wx144_128x128_cmd`. - `booting linux @ 0x80008000, ramdisk @ 0x82000000 (534088), tags/device tree @ 0x81e00000`. - Сообщения `Authenticating boot image` в логе **не видно** (участок 400–500 мс частично повреждён) — не доказано ни то, ни другое. - **Kernel**: `[0.000000] Linux version 3.10.28 … Apr 14 2026`, ARMv7 (32-bit), model "MSM 8916 512MB MTP". `socinfo: id=206 ver=1.0 hw_plat=8 hw_plat_subtype=0 pmic_model=65547 (PM8916 v2.0)`. Memory 420 MB total. mdss_spi_panel_init: st7735s, continuous splash. BMS: soc=38, vbatt≈3.92 В. - **Модем** (normal boot): ext4 mount ≈8.3 с → `pil-q6v5-mss: modem: loading` 8.81 с → `pil: MBA boot done` 8.87 → `modem: Brought out of reset` 9.56 → `Power/Clock ready interrupt` 9.65 → `Subsystem error monitoring … up`. **MPSS стартует успешно**; строки `Failed to locate modem.mdt` в этой загрузке нет. - WCNSS: `wcnss_wlan probed`, WLAN FW caps ≈21.6 с. - Шум, не относящийся к делу: ov5648 camera probe fail (камеры нет), `gcc-mdss Failed to get pixel source` (SPI-панель без DSI), `display reset gpio request failed` (18.15 с, GPIO118 уже занят mdss_spi — предположение). ## S2.3 fastboot policy (`logs/fastboot/session-20260929-200145.txt`) - `adb reboot bootloader` → UART: `Restarting system with command 'bootloader'` → SBL → LK `pm8x41_get_is_cold_boot: Warm boot` → `fastboot: processing commands`. USB 18d1:d00d, serial . - `fastboot oem device-info` → `FAILED (remote: 'unknown command')`. - `fastboot getvar all` → пусто. ## S2.4 fastboot boot stock boot.img — **FAIL** - Образ: `partitions/boot.bin`, sha256 `1342def7…3c0a` = manifest (Aurora), ≠ JZ02 (`9cc36657…`). - `fastboot boot partitions/boot.bin` → `Sending 'boot.img' (16384 KB) OKAY` → `Booting FAILED (remote: 'unknown command')`. - UART LK: `[15510] fastboot: download:01000000` → `[16020] fastboot: boot` → unknown command. - Причина (статический анализ `partitions/aboot.bin`): в LK зарегистрированы только **`getvar:` и `download:`**. Нет `boot`, `flash:`, `erase:`, `continue`, `reboot`, `reboot-bootloader`, любых `oem`/`flashing`. **Точно так же урезан LK JZ02** (проверено тем же способом). - Следствия: - **FASTBOOT RAM BOOT = NOT AVAILABLE** на stock LK. - Из fastboot нельзя выйти программно — только отключение питания. - eMMC не изменялась (download пишет только в RAM-буфер LK; команд записи в LK нет вообще). - Обход записью в aboot НЕ предпринимался (по правилам сессии). ## S2.5 modem.mdt — объяснение - `init.target.rc`: `on fs` → `mount vfat …/by-name/modem /firmware ro …`; `init.qcom.rc`: `on early-boot` → `write /sys/kernel/boot_adsp/boot 1` (+ pil параметры из persist.sys.*, пустые → "cannot expand"). - В off-mode charging (`androidboot.mode=charger`) init выполняет `on charger` (монтирует только /system, стартует healthd/charger/vm_bms), **`on fs` не выполняется → /firmware не смонтирован**. Ядерный PIL-vote при этом пытается загрузить modem → `Failed to locate modem.mdt` / `pil_vote_load_worker: Failed to load modem`. - Пример пользователя содержит `charger: Enabling backlight` → это была загрузка в charger mode. Вывод: **сообщение нормально для зарядного режима, модем исправен** (в normal boot MPSS поднимается, см. S2.2). - Последовательность boot ramdisk JZ02 и Aurora идентична: из всех файлов boot ramdisk отличается только `init.rc` (у Aurora добавлены chown/chmod для sysfs LED `*_sec`, `*2`, `*2_sec`); init.target.rc/init.qcom.rc/fstab — одинаковые. ## S2.6 Ramdisk inventory (`tools/unpack-ramdisk.sh`, результат `bootchain/{boot,recovery}/ramdisk-root`) Воспроизведение: `tools/unpack-ramdisk.sh` (gzip → cpio -id --no-absolute-filenames; списки `ramdisk.list`). Оригиналы не менялись. - boot (gzip, 51 запись): init, init.rc, init.environ.rc, init.qcom.rc, init.target.rc, init.qcom.usb.rc, init.usb.rc, init.trace.rc, init.qti.carrier.rc, init.*.sh (class_main, mdm, class_core, early_boot, factory, qcom, ssr, syspart_fixup, usb), fstab.qcom, ueventd.rc, ueventd.qcom.rc, default.prop, sepolicy/*_contexts, charger, res/ (charger images), sbin/. - fstab.qcom: system ro, userdata (encryptable=footer), vold sdcard1 (7864900.sdhci), uicc0/1 на `78b7000.spi` (не используется), usbotg, zram 192 MiB. - cache/persist/firmware монтируются вручную в `on fs` (init.target.rc). - modem stack: rmt_storage, qmuxd, netmgrd, ril-daemon1/2 (`rild -c 1/2`), wcnss-service, wcnss_filter. - charger: `on charger` → healthd-charger, `/charger`, vm_bms; qbcharger по property. - default.prop: ro.secure=1, ro.debuggable=0, persist.sys.usb.config=none. - recovery (gzip, 73 записи): минимальный AOSP recovery (sbin/recovery, adbd, healthd, ueventd, watchdogd), etc/recovery.fstab (system/cache/userdata/boot/recovery/misc). default.prop: ro.secure=1, usb.config=diag,serial_smd,rmnet_bam,adb → **root в recovery нет**. - Сам recovery-ramdisk не содержит init.qcom.rc/init.target.rc → модем в recovery не стартует. ## S2.7 Modem FAT (раздел `modem`), пофайлово vs JZ02 (`firmware-fat-compare.tsv`, распаковано в `firmware-fat/`) Извлечено read-only `7z x partitions/modem.bin`. 53 файла у обеих плат, набор имён одинаковый. | группа | результат | |---|---| | wcnss.mdt, wcnss.b00-b11 | **SAME** | | cmnlib.*, keymaste.*, playread.*, widevine.* | **SAME** | | modem.b03, b04, b19 | SAME | | modem.mdt, b00-b02, b05-b07, b10, b12, b13, b15-b18, b20, b21, b24-b27 | **DIFFERENT** | | mba.mbn | **DIFFERENT** | - Базовая сборка та же (`M8916EAAAANVZM-1_20150909_103440`, MPSS.DPM.1.0.C7-00193), но Aurora-модем/MBA **переподписаны 2026-04-30** (cert 260430…Z), JZ02 — 2023-06-28. Отличаются кодовые сегменты (b05, b18, b20, b26…) → бинарно модифицированная прошивка, не просто другая подпись. **MPSS между платами НЕ взаимозаменяем** без отдельного анализа. ## S2.8 Безопасный путь RAM-boot — статус Stock LK (Aurora и JZ02) не умеет `fastboot boot`. Без записи в eMMC загрузить собственное ядро **невозможно** (EDL/firehose грузит только программер, не ядро). Любой путь требует **минимум одной записи**, которую пользователь должен одобрить явно. Вариант, который предлагаю к обсуждению (НЕ выполнен): - **lk2nd в раздел `recovery`** через firehose `program` (первая запись firehose — WRITE ещё не тестировался). - recovery — некритичный раздел, есть проверенный бэкап; boot/aboot/bootchain/NV не трогаются, обычная загрузка Android не меняется. - Вход: `adb reboot recovery` → stock LK грузит recovery → lk2nd → полноценный fastboot (`fastboot boot` → RAM boot). - Откат: EDL `program recovery partitions/recovery.bin` (или LK сам свалится в normal boot/fastboot при невалидном образе). - Открытые вопросы до записи: (1) проверяет ли stock LK подпись recovery (строки `Authenticating boot image` в LK есть, факт применения не доказан; чип unfused); (2) нужна ли поддержка QCDT/board-id для lk2nd на этой плате; (3) firehose WRITE сначала проверить на безопасной цели. - Альтернативы хуже: замена aboot (риск bootchain), замена boot (ломает stock Android). ## S2.9 Первый минимальный Linux RAM-boot (дизайн, не начат) - Цепочка: stock SBL1/TZ/HYP/LK → recovery=lk2nd → `fastboot boot` образа (Image.gz + DTB + initramfs), всё в RAM. - Ядро: mainline arm64 ≥ 6.6 (msm8916 поддержан upstream), defconfig + msm8916 фрагмент; **без** rmtfs/modem/wcnss на первом шаге. - DTB `msm8916-jz08-aurora.dts` (минимум): `#include "msm8916-pm8916.dtsi"`, memory от lk2nd, `&blsp_uart2 { status="okay"; }` (GPIO4/5, console ttyMSM0), `&sdhc_1` можно **disabled** на 1-м шаге (или только чтение), `&usb` peripheral (опционально), gpio-keys GPIO37 (active-high) / GPIO107 (active-low), `&pm8916_pwrkey`. - initramfs: static busybox, `/init` печатает в ttyMSM0: uname, /proc/cpuinfo, meminfo, interrupts, dmesg, gpio-keys events; никаких mount блочных устройств, никакого mkfs, никаких записей. - Критерии PASS: kernel стартует, UART, DT выбран (model), RAM ≈ 512 MB (минус reserved), таймер/GIC (interrupts растут), gpio-keys реагируют, USB (опц.), eMMC не тронута (sha256 boot/recovery/… до и после через EDL — по желанию). - Потом: sdhc_1 ro → rmtfs/modem (Aurora-собственный MPSS!) → wcnss → ST7735S (`panel-mipi-dbi`/`fb_st7735r` на `&blsp_spi4`, reset GPIO118, dc GPIO116, L17/L6, backlight PM8916 MPP4) → charger/BMS. --- # Сессия 3 — read-only preflight для lk2nd-в-recovery (2026-09-29 20:11–) UART: `logs/uart/preflight-recovery-20260929-201150.{log,raw}`. В eMMC ничего не записано нами (оговорка: stock recovery сам монтирует /cache ext4 rw — штатное поведение заводского recovery). ## P1 Эталонный recovery `partitions/recovery.bin`: 16 777 216 B = 32768 секторов с LBA 2395232 (= GPT), sha256 `0be90bc42efb0eae2e5376fef2c2786d68c614f679f6e214102a92b196b3a43d` = MANIFEST = SHA256SUMS = срез full-emmc.bin. ## P2 Normal boot после полного обесточивания OK: LK → DTB 206/…/0x8/256 (dtb_01) → kernel → modem `Brought out of reset` 9.7 с → `sys.boot_completed=1`, adb есть. ## P3 `adb reboot recovery` → stock recovery - kernel: `Restarting system with command 'recovery'` → SBL1 → LK `pm8x41_get_is_cold_boot: Warm…`, `pon_reason is 17 cold_boot:0`. - LK выбрал тот же DTB (206/00000000/0x8/256) и загрузил **recovery**: `booting linux @ 0x80008000, ramdisk @ 0x82000000 (1071013), tags/device tree @ 0x81e00000` (1071013 = размер ramdisk recovery.img; у boot 534088). - cmdline recovery = cmdline normal + ` gpt` (LK добавляет в recovery-пути); `androidboot.mode` не передаётся. - recovery kernel/init стартуют, /cache монтируется; USB не энумерируется (adbd в stock recovery не поднимается), UI ждёт клавиш — **за 5 мин сам не перезагрузился**. Выход — физически (кнопка/обесточивание). ## P4 Аутентификация образов — что доказано - UART: строк `Authenticating boot image`, `signature`, `Image Invalid`, `Recovery command`, `boot-recovery` **не наблюдалось** ни в normal, ни в recovery-пути. НО окно LK ~400–500 мс (где печатается выбор DTB и, возможно, загрузка/проверка образа) **систематически повреждено** в обоих логах (потеря байт, не baudrate) → отсутствие строки само по себе не доказательство. - Косвенное (сильное): **ни boot, ни recovery не несут подписи** по смещению, где её ищет Qualcomm LK (`imagesize_actual` = page + kernel + ramdisk + dt, всё page-aligned): - boot @0x6ee800: сплошные высокоэнтропийные остатки (>4 KiB, энтропия ~7.1 бит/байт на всех 256-байтных блоках) — не 256-байтная подпись; - recovery @0x771800: остатки старого DTB (строки `primary`, `SPK_RX_BIAS`, `Handset Mic`…) — подписи нет точно. - Тем не менее LK загрузил и запустил оба образа. - `androidboot.authorized_kernel=true` (LK добавляет при успешной аутентификации, строка есть в aboot) **отсутствует** в cmdline normal, recovery и charger загрузок. - Вывод: на Aurora stock LK **не требует валидной подписи** ни для boot, ни для recovery (либо проверка не выполняется, либо её результат не блокирует загрузку). Devinfo `is_unlocked=0` на это не влияет — locked-устройство грузит неподписанный recovery. - Не доказано: выполняется ли вычисление/проверка вообще (нужен неповреждённый UART в окне 400–500 мс или разбор кода). ## P5 Возврат в Android и EDL - Выход из stock recovery — вручную пользователем (перезагрузка); Android загрузился, `sys.boot_completed=1`, adb OK. - `adb reboot edl` → **05c6:9008** за <25 с (20:20:26). Sahara не трогали; выход из EDL — только обесточивание. ## P6 Итог preflight | пункт | результат | |---|---| | normal boot | OK | | stock recovery (`adb reboot recovery`) | OK (грузится, но зависает в UI без USB; выход — руками) | | auth path в UART | NOT OBSERVED (окно LK 400–500 мс повреждено) | | signature verification | де-факто не применяется: оба stock-образа без подписи грузятся | | EDL | OK | Оценка риска lk2nd-в-recovery: НИЗКИЙ для bootchain/NV (пишется только recovery; boot/aboot/NV не трогаются; normal boot не зависит от recovery; откат — EDL `program` оригинала, путь в EDL через adb из normal Android подтверждён). Остаточные риски: (1) первая firehose WRITE на Aurora; (2) lk2nd может не стартовать/зависнуть — выход только обесточиванием, плата после этого грузит normal Android (recovery грузится лишь по команде 'recovery' / misc BCB); (3) если misc получит `boot-recovery` (штатно пишет только recovery/Android), LK будет циклически грузить recovery → выход через EDL. --- # Сессия 4 — подготовка lk2nd для recovery (preflight 4–5). ЗАПИСЬ НЕ ВЫПОЛНЯЛАСЬ. Плата в EDL 05c6:9008, в Sahara/Firehose ничего не отправлялось. ## Сборка (`lk2nd-build/BUILD.md`) lk2nd **23.1** (`e9c8b217…`), цель `lk2nd-msm8916`, QCDT только `msm8916-512mb-mtp.dtb`, `LK2ND_FORCE_FASTBOOT=1`. Проверено по исходникам 23.1 (не по памяти): - `ABOOT_STANDALONE ?= 1` (lk2nd/project/base.mk) → `read_device_info`/`write_device_info` не вызываются (aboot.c:5515), `emmc_recovery_init` (единственный путь записи в misc при старте) пропущен (aboot.c:5662), `check_format_bit` пропущен. - В модулях `lk2nd/` нет ни одного `mmc_write`/`partition_write`/`mmc_erase`. Запись в eMMC возможна только по явной fastboot-команде. - `LK2ND_FORCE_FASTBOOT=1` → всегда меню fastboot, никакой автозагрузки boot+512k/extlinux. - UART: `target/msm8916/init.c:98 uart_dm_init(2, 0, BLSP1_UART1_BASE=0x78B0000)`; `platform/msm8916/gpio.c`: GPIO4 out / GPIO5 in, func 2 → та же консоль, что stock (serial@78b0000, 115200). - Самоперемещение: `arch/arm/crt0.S:110–128` — копирует себя с адреса загрузки (0x80008000) на линк-адрес 0x8F600000. ## Образ | поле | lk2nd (`recovery-lk2nd-16MiB.img`) | stock recovery | комментарий | |---|---|---|---| | magic | ANDROID! | ANDROID! | = | | page_size | 2048 | 2048 | = | | kernel_addr | 0x80008000 | 0x80008000 | = | | ramdisk_addr | 0x81000000 | 0x81000000 | = (stock LK всё равно кладёт на 0x82000000 — видно в UART) | | tags_addr | 0x80000100 | 0x80000100 | = (LK кладёт DT на 0x81e00000) | | second | 0 | 0 | = | | kernel_size | 0x44de0 (lk.bin, 282080 B) | 0x624c90 (zImage) | lk2nd = «ядро» для stock LK | | ramdisk_size | 1 | 0x1057a5 | lk2nd кладёт 1-байтовый ramdisk-заглушку | | dt_size | 0x1000, QCDT v2, 1 запись | 0x46800, QCDT v2, 8 записей | см. ниже | | QCDT entry | 0xce / 0x8 / 0x100 / 0x0 | entry1 = 0xce / 0x8 / 0x100 / 0x0 | **идентична записи, которую stock LK выбирает на Aurora** (UART `206/00000000/0x00000008/256`) | | DTB | msm-id <206 0>, board-id <8 0x100> | то же | | | cmdline | `lk2nd` | console=ttyHSL0… | stock LK дописывает свои androidboot.* как для stock | | image_end | 0x47000 (+16 B `SEANDROIDENFORCE`) | 0x771800 | 290832 B ≪ 16 MiB | Файл для записи = lk2nd.img + нули до 16 777 216 B (весь раздел детерминирован → побайтная сверка readback). Узлы устройств lk2nd в этом DTB не совпадут с cmdline Aurora (`st7735s_wx144_128x128` ≠ `st7735s_128128`) → generic, без чужих GPIO. ## Сессия 4b — ЗАПИСЬ lk2nd в recovery (одобрено пользователем: только шаги 0→A→B→C) Логи: `logs/lk2nd-write/00-printgpt.log, 01-write.log, 02-readback.log`. - 0 printgpt (20:30): Sahara serial 0x (Aurora), loader 53f19350… принят; `recovery: Offset 0x4918c000 (= LBA 2395232), Length 0x1000000`. OK. - A write (20:30:47–20:30:53): `edl w recovery lk2nd/recovery-lk2nd-16MiB.img` → `Wrote … to sector 2395232.` rc=0. - B readback: `edl r recovery …/recovery-after-lk2nd-write.bin` → `Dumped sector 2395232 with sector count 32768`. rc=0. - C: оба sha256 = `0dfa60a03a742ab2bf9f6e91e3887142cb7a0af2dd37c6373f7942703cd011e1`, размер 16777216, `cmp` без различий → **READBACK_MATCH**. - Сообщения Firehose (те же, что при чтении на JZ02/Aurora, безвредные): `Host's payload to target size is too large`, `logbuf@0x0801D0A0 fh@0x08019F08`, `Sector size in XML 4096 does not match disk sector size 512`. - **Firehose WRITE на Aurora: подтверждён** (один раздел, побайтная сверка). - Больше ничего не выполнялось: ни reset, ни reboot, ни misc, ни другие разделы. Плата осталась в EDL (firehose загружен). ## Адрес ramdisk 0x82000000 vs 0x81000000 в заголовке - Заголовки stock boot и stock recovery: ramdisk 0x81000000, tags 0x80000100. UART stock LK для обоих: ramdisk @0x82000000, tags/DT @0x81e00000, kernel @0x80008000 → LK **игнорирует адреса из заголовка** и подставляет свои фиксированные. - Это механизм CAF LK `ABOOT_IGNORE_BOOT_HEADER_ADDRS` → `update_ker_tags_rdisk_addr()` (app/aboot/aboot.c:397–406, в lk2nd-исходниках): `hdr->ramdisk_addr = ABOOT_FORCE_RAMDISK_ADDR; hdr->tags_addr = ABOOT_FORCE_TAGS_ADDR`. Смещения +0x02000000 / +0x01e00000 от базы 0x80000000 те же, что у msm8226/msm8974 в project/*.mk. Значения для msm8916 в stock-бинарнике не извлекались — вывод по поведению (UART), а не по коду aboot Aurora. - Вывод: runtime-переопределение со стороны LK; к lk2nd-образу применяется так же (одинаковый header layout). Не блокер. ## Сессия 5 — первый boot-test lk2nd (20:33–20:36) — PASS UART: `logs/uart/preflight-recovery-20260929-201150.log` (до 20:33:43: charger-boot + начало normal boot) и `logs/uart/lk2nd-boottest-20260929-203353.log` (дальше). Разрыв ~10 с (перезапуск логгера) пришёлся на kernel 0.6–12.9 с normal boot. fastboot: `logs/lk2nd-write/boottest-fastboot.txt`. - После обесточивания плата сначала поднялась в **charger mode** (20:33:24, `charger` в логе, `Failed to locate modem.mdt` — ожидаемо), затем перезапуск в normal Android (20:33:39). - Normal Android: PASS — adb OK, `sys.boot_completed=1`, `subsys modem ONLINE`, `wcnss ONLINE`, rmt_storage/qmuxd/netmgrd/ril-daemon/wcnss-service running (SIM ABSENT — SIM не вставлена). - `adb reboot recovery` (20:34:55): kernel `Restarting system with command 'recovery'` → SBL1 → stock LK `pon_reason is 145 cold_boot:0`, DTB `206/00000000/0x00000008/256` (запись из lk2nd QCDT), `cmdline: lk2nd androidboot.emmc=true androidboot.serialno= gpt androidboot.baseband=msm mdss_mdp.panel=1:spi:0:qcom,mdss_spi_st7735s_wx144_128x128_cmd`, `booting linux @ 0x80008000, ramdisk @ 0x82000000 (1), tags/device tree @ 0x81e00000` → **stock LK принял lk2nd**. - lk2nd (через ~0.2 с): `Android Bootloader - UART_DM Initialized!!!`, `welcome to lk`, `MMC card: H4G2a … 3909091328 bytes`, `Command line from previous bootloader: lk2nd …`, `Failed to find matching lk2nd device node: -1` (ожидаемо: generic), `No continuous splash: MDP GDSC is not enabled` (дисплей не нужен), `Fastboot mode was forced with compile-time…`, `USB init`, `udc_start()`, `fastboot: processing commands` (~0.57 с от старта lk2nd). - USB: 18d1:d00d, iManufacturer Google, iProduct Android, iSerial (тот же VID:PID, что stock LK fastboot — различать по getvar product). - fastboot: `devices` → ; `getvar version` → 0.5; `getvar product` → **lk2nd-msm8916**; `getvar all`: lk2nd:version 23.1, variant MTP eMMC, unlocked yes, secure no, max-download-size 0x10000000 (256 MiB), hw-revision 10000, lk2nd:panel qcom,mdss_spi_st7735s_wx144_128x128_cmd, wifimac , полная таблица разделов = GPT. - Стабильность: >60 с в fastboot, USB на месте, в UART только `STALL GET_DESCRIPTOR` (хост опрашивает BOS/qualifier — безвредно). ### ВАЖНО: lk2nd считает, что живёт в `boot`, а не в `recovery` Сборка по умолчанию `LK2ND_PARTITION_BASE ?= boot` (lk2nd/project/lk2nd.mk:16): getvar показывает виртуальный раздел `lk2nd` = первые 512 KiB **boot** и `boot` = 0xf80000 (со смещением 512 KiB). Для Aurora это неверно (lk2nd в recovery). Последствия при будущих командах записи через lk2nd: - `fastboot flash lk2nd …` перезапишет **начало stock boot** (ядро Android) — ЗАПРЕЩЕНО; - `fastboot flash boot …` запишет в boot со смещением 512 KiB — ломает stock boot — ЗАПРЕЩЕНО. - `fastboot boot`, `getvar`, `download` — не затрагиваются. Если когда-нибудь понадобятся записи через lk2nd — сначала пересобрать с `LK2ND_PARTITION_BASE=recovery` (отдельное решение, новая запись recovery). --- # Сессия 6 — первый Linux RAM boot через lk2nd (2026-09-29 22:00) — FAIL до передачи управления ядру Записей в eMMC: нет. lk2nd/recovery не менялись. ## Что собрано (всё в `linux/`) - Ядро: Linux **7.2.7** stable (`f42acb3678424d1e08f6ed27c0d8ba8a125e14d6`, git.kernel.org stable, тот же коммит, что база JZ02), чистый `git archive` (без правок JZ02) → `linux/src`; сборка на локальном диске `/home/q/aurora-kbuild` (virtiofs даёт clock skew). - Config: arm64 `defconfig` + `linux/aurora-ramboot1-v2.config` (только ARCH_QCOM, без драйверов чужих SoC, без btrfs/xfs/nfs/netfilter/ftrace, MODULES=n) → `artifacts/ramboot1/kernel.config`. Первая сборка (defconfig почти целиком) дала image_size 33.6 MiB — отброшена: lk2nd кладёт ARM64-ядро на 0x80000000, DTB на 0x81E00000, ramdisk на 0x82000000 (platform/msm8916 iomap.h ABOOT_FORCE_*), т.е. image_size обязан быть < 30 MiB. v2: image_size **22.31 MiB** (конец 0x81650000). - DTS `linux/dts/msm8916-jz08-aurora.dts` (+`build-dtb.sh`, out-of-tree cpp+dtc): `#include "msm8916.dtsi"`, model "JZ08AU Aurora (RAM boot 1)", serial0=&blsp_uart2 (serial@78b0000, pinctrl blsp_uart2_console_default GPIO4/5), stdout-path serial0:115200n8; явно disabled: sdhc_1 (eMMC), sdhc_2, usb, mpss, bam_dmux, bam_dmux_dma, wcnss. Проверено fdtget. - initramfs: Debian trixie `busybox-static 1:1.37.0-6+b9 arm64` (deb sha256 c833be48… = Packages index), `gen_init_cpio` (/dev/console, /dev/null), `/init` — proc/sys/devtmpfs, диагностика, бесконечный цикл shell. Без блочных устройств/сети/firmware. - Образ: Android boot v0, kernel = Image.gz + appended DTB (lk2nd: «Only one appended non-skales DTB, select it»), ramdisk = initramfs.cpio.gz, page 2048, cmdline `earlycon console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init` (ttyMSM / msm_serial_dm — из drivers/tty/serial/msm_serial.c). `artifacts/ramboot1/aurora-ramboot1.img` 9549824 B, sha256 `470ce4f82864600c5bed7e1791a38e84a802dc2cac7d43d15439f593b9e15347` (все хэши — SHA256SUMS). ## Результат (`logs/uart/ramboot1-20260929-215954.log`, `logs/uart/ramboot1-fastboot.txt`) - fastboot: `Sending 'boot.img' (9326 KB) OKAY`, `Booting OKAY`. - lk2nd: `decompressing kernel image: done` → `qcom,msm-id entry not found` → `Only one appended non-skales DTB, select it` → `kaslr-Seed is added` → **`Cannot boot ARM64 with old SCM calling convention`** → `booting linux @ 0x80000000, ramdisk @ 0x82000000 (1016607), tags/device tree @ 0x81e00000` → `Jumping to kernel via monitor` → `Failed to jump to kernel` → `ASSERT FAILED at (platform/msm_shared/scm.c:1085)` → каскад data abort (alignment fault) внутри lk2nd → ~18 с → сброс SoC → SBL1 → stock LK (Warm) → normal Android (22:00:24), adb/diag 05c6:9091. - **Linux не получил управление ни на одну инструкцию** (нет ни earlycon, ни `Booting Linux on physical CPU` от 7.2.7). ## Причина (доказано по исходникам lk2nd 23.1) - `lk2nd/smp/spin-table/spin-table.c:54`: если `!is_scm_armv8_support()` и ядро ARM64 → «Cannot boot ARM64 with old SCM calling convention». - `platform/msm_shared/scm.c` (~1060–1085): переход 32→64 делается SCM-вызовом `SCM_SVC_MILESTONE_32_64`; со старым (ARMv7) SCM TZ вызов возвращается → `ASSERT(0)`. - Stock TZ Aurora = TZ.BF.2.2-2.2.0026 (ELF идентичен JZ02 stock): только legacy SCM, без ARMv8 SMC/PSCI → **ARM64 невозможен на stock TZ/HYP**. - Это не ошибка DTS/ядра/образа/адресов. Аналогично JZ02/UZ801: там ARM64 стал возможен только после замены hyp (qhypstub) и aboot (lk1st) [и/или TZ от DB410c] — т.е. записей в bootchain. ## Варианты (решение за пользователем) A. **ARM32 mainline** (без записей): тот же DTS, ядро `ARCH=arm` (multi_v7 + ARCH_QCOM/msm8916). lk2nd содержит A32 spin-table (`spin_code_a32`) именно для SMP на старом TZ. Минусы: 32-bit userspace (Alpine armv7), расхождение с JZ02 (arm64). B. **Замена hyp → qhypstub** (+ возможно TZ → DB410c, + aboot → lk1st) через EDL — даёт ARM64 и PSCI, как у JZ02/UZ801. Это записи в bootchain (hyp/tz/aboot): высокий риск; откат только через EDL; отдельный preflight. --- # Сессия 7 — preflight миграции bootchain на ARM64 (2026-09-30). НИЧЕГО НЕ ЗАПИСАНО. Документы: `bootchain-migration/PREFLIGHT.md` (анализ, варианты, неопределённости), `bootchain-migration/WRITE-PLAN.md` (S0–S4, команды, откаты), артефакты + эталоны отката + SHA256SUMS в `bootchain-migration/`. Ключевое: одного qhypstub недостаточно (JZ02 S3); нужна пара DB410c TZ.BF.3.0 + qhypstub + правка GPT (TZ 605312 B > 512 KiB) + lk1st. Рекомендовано: вариант D (цепочка JZ02, по одной стадии). БЛОКЕР: аппаратный вход в EDL на Aurora не доказан (кандидат — кнопка KEY_F2 = GPIO37, тот же пин, что RESET/EDL у JZ02). Новый артефакт: lk1st-aurora (lk2nd 23.1 e9c8b217, `lk1st-msm8916 LK2ND_BUNDLE_DTB=msm8916-512mb-mtp.dtb LK2ND_FORCE_FASTBOOT=1`, qtestsign 0eef3b5 -v 3 aboot) → aboot-lk1st-aurora.mbn 327244 B (003c484e…), pad1M e4addbf8…. Aurora GPT candidate: той же правкой (13 байт, записи tz/tzbak), валидатор OK: primary 6e850a5d…, backup 795952a1…. ## Сессия 7b — S0: аппаратный вход в EDL (2026-09-29 22:22–22:50). Записей нет, Sahara не трогали. - Кнопки (`logs/s0/getevent-keys.txt`): 1 верхняя = KEY_POWER (qpnp_pon/KPDPWR); 2 у USB = KEY_POWER (qpnp_pon); 3 RESET = KEY_F1 (qpnp_pon/**RESIN**). gpio-keys (KEY_F2/GPIO37, KEY_F3/GPIO107) — ни одна физическая кнопка (отличие от JZ02, где RESET = GPIO37). - Плата без аккумулятора не стартует от USB (со слов пользователя). - Попытки «зажат RESET + подача питания»: **3/3 → 05c6:9008** (устр. 114, 115, 116). UART (`logs/uart/s0-edl-attempt2-20260929-224606.*`): EDL-загрузка = `SBL1, Start … pm_driver_init (batt_voltage=…) … clock_init, Delta` → тишина → 9008. Ни `Image Load`, ни QSEE, ни LK — **в EDL уводит stock SBL1 до загрузки TZ/RPM/HYP/ABOOT**. - НО: в попытках 2 и 3 перед EDL-загрузкой была обычная загрузка (SBL1 → LK → ядро 3.10), и EDL наступил только после следующего сброса (~10 с). Источник этого сброса не установлен: stock DT настраивает reset только для POWER (pon_1 s1 10.256 с + s2 2 с, warm), для RESIN (pon_2) reset не настроен. Попытка 2 — сброс вручную пользователем. - Вывод: воспроизводимо 3/3, механизм входа (SBL1) не зависит от tz/hyp/aboot, но не доказано, что без работающего ядра Android (т.е. при зависшем aboot/tz) произойдёт тот сброс, после которого SBL1 уходит в EDL. Нужен тест-симуляция без записи. ## Сессия 7c — S0 simulation (2026-09-29 22:54 – 00:06) — **S0 FAIL**. Записей нет. UART: `logs/uart/s0-testA-20260929-225444.*` - Test A #1 (lk2nd fastboot 22:56:57, RESET ~30 с): в 22:57:31 SBL1 → LK → Android (charger mode). EDL нет. Источник сброса не установлен. - Test A #2 (lk2nd fastboot 00:01:29, RESET 60 с непрерывно): **сброса нет**, плата осталась в lk2nd → у RESIN нет аппаратного сброса (согласуется со stock DT: reset настроен только для POWER/pon_1). - Test C (полное обесточивание, RESET зажат ДО подачи питания, держался ~10 с после): первый SBL1 прошёл полностью (Image Load ×3, QSEE, SBL1 End) → stock LK → Linux 3.10. **EDL нет**. - Вывод: зажатый RESET при старте SBL1 **не** переводит в EDL. Все 3 успешных входа в 9008 (попытки 1–3) случились только после загрузки stock Android и последующего сброса → вероятно, SBL1 уходил в download mode по признаку, выставленному stock-ядром (гипотеза, не доказано). Путь зависит от Android → **не является независимым аппаратным recovery path**. - Ранее сделанный вывод «SBL1 видит зажатый RESET → EDL» (сессия 7b) — **ОТОЗВАН**. - Bootloader writes: NO-GO. Нужен настоящий аппаратный EDL (PBL): кандидат — GPIO37 (KEY_F2 в stock DT, кнопка отсутствует; на JZ02 и UFI-001x GPIO37 = EDL-кнопка) → поиск площадки/посадочного места по фото платы, без замыканий наугад. ## Сессия 7d — S0 PASS: аппаратный EDL через USB D+ → GND (2026-09-30 00:14–00:16). Записей нет, Sahara не трогали. Метод (найден пользователем): аккумулятор подключён → замкнуть USB D+ на GND → подключить USB-C → отпустить → 05c6:9008. Выход: обесточивание. | # | время | USB | UART | |---|---|---|---| | 1 | 00:14:05 | 9008 (dev 127) | холодный старт: SBL1, Start → pm_driver_init (batt 4180) → clock_init, Delta → тишина | | 2 | 00:15:25 | 9008 (dev 002) | то же | | 3 | 00:15:51 | 9008 (dev 006) | то же | **3/3.** Без предварительной загрузки Android/LK (единственный SBL1-старт на попытку). Вход выполняет stock **SBL1** (не PBL: SBL1 печатает), до загрузки TZ/RPM/HYP/ABOOT (нет Image Load/QSEE). SBL1 в плане миграции не меняется, запись `sbl1` в GPT не меняется → путь не зависит от tz/hyp/aboot/Android/ADB. Если PBL не найдёт SBL1 (порча GPT) — PBL уходит в EDL сам (штатное поведение). Попытки 1–3 сессии 7b и выводы 7b/7c про RESET — недостоверны (со слов пользователя, часть попыток была загрузкой Android в режим зарядки). --- # Сессия 8 — S1: aboot ← lk1st-aurora (2026-09-30 00:18–00:22) — **PASS** Логи: `logs/bootchain/S1-*`, UART `logs/uart/S1-lk1st-boot-20260930-001922.*`. - Pre: вход в EDL через D+→GND; printgpt: Sahara serial 0x, aboot Offset 0x8100000 (LBA 264192), Length 0x100000; GPT stock (tz 0x80000). sha256: lk1st pad1M e4addbf8…6482, orig-aboot fd1af167…053a (= manifest; копии на 480s и локально), firehose 53f19350…. - Write: `edl w aboot bootchain-migration/aboot-lk1st-aurora.pad1M` → `Wrote … to sector 264192` (00:18:26). Readback `edl r aboot` → sha256 e4addbf8…6482, cmp OK → **READBACK_MATCH**. Контроль: abootbak, GPT primary/backup — без изменений. - Boot (00:20:25, обычное включение): SBL1 (Image Load ×3, `APPSBL Image Loaded`, QSEE, SBL1 End) → `welcome to lk` → `MMC card: H4G2a … 3909091328 bytes` → `Fastboot mode was forced` → USB → `fastboot: processing commands` (~0.55 с). - USB 18d1:d00d; fastboot: devices ; version 0.5; **product lk1st-msm8916**; lk2nd:version 23.1; variant MTP eMMC; unlocked yes; secure no; max-download-size 0x10000000; boot 0x1000000 (без виртуального раздела lk2nd); tz 0x80000, hyp 0x80000 (stock GPT). Стабильно (~36 с, ответы на все команды, ошибок в UART нет). Заставки нет (ожидаемо). - `fastboot oem reboot-edl` (misc.c: reboot_device(EMERGENCY_DLOAD)) → OKAY → 05c6:9008 за ~1 с. PASS. - Аппаратный EDL после S1: D+→GND → SBL1 Start → clock_init → тишина → 9008 (00:22:12). PASS. - Rollback: не требуется. Stock Android больше не грузится (ожидаемо). # Сессия 9 — S2: GPT (tz 512K→1M, tzbak → gap) (2026-09-30 00:24–00:26) — записи и проверки PASS Логи/readback: `logs/bootchain/S2-*`. Pre: serial 0x; aboot == lk1st (S1); sbl1 == stock; recovery == lk2nd image; gap 305184..306207 == zeros. | part | OLD | NEW | |---|---|---| | tz | 270336..271359 (1024 sect, 524288 B) | 270336..272383 (2048 sect, 1048576 B) | | tzbak | 271360..272383 (1024, 524288 B) | 305184..306207 (1024, 524288 B) — в неразмеченном промежутке 305170..393215 | | hyp | 272384..273407 (1024, 524288 B) | без изменений | - S2-A `ws 305184 orig-tzbak.bin` → readback c6f7db26…b4af == stock tzbak, cmp OK (GPT в этот момент ещё stock — проверено). - S2-B `ws 7634911 aurora-new-gpt-backup-33sectors.bin` → readback 795952a1…e18f, cmp OK. - S2-C `ws 0 aurora-new-gpt-primary-34sectors.bin` → readback 6e850a5d…b8b6, cmp OK. - S2-D: printgpt: tz Offset 0x8400000 Length 0x100000; tzbak Offset 0x9504000 (=LBA 305184) Length 0x80000; hyp 0x8500000/0x80000; sbl1/aboot/rpm/boot/recovery/DDR/fsg/splash — прежние. Валидатор по readback: hdr/entry CRC OK (обе копии), primary==backup, backup hdr на LBA 7634943, usable 34..7634910, disk GUID тот же, изменены только LBA-поля записей tz и tzbak (GUID/attrs/индексы те же). Содержимое области tz (1 MiB) == stock tz + старый tzbak (не менялось). - Переходное состояние безопасно: SBL1 грузит TZ по program headers ELF (stock tz уже содержит 19303 B мусора после image_end и грузится; JZ02 S2 с тем же TZ/SBL1 → lk1st OK). - Откат S2: ws 0 orig-gpt-primary-LBA0-33.bin; ws 7634911 orig-gpt-backup-LBA7634911-7634943.bin; ws 305184 orig-gap-LBA305184-306207.bin; rs+cmp. - S2 boot (00:26:58, обычное включение): SBL1 → APPSBL Image Loaded → QSEE → SBL1 End → lk1st → forced fastboot (~0.54 с). **PASS.** getvar: product lk1st-msm8916; partition-size tz 0x100000, tzbak 0x80000, hyp 0x80000, aboot 0x100000, sbl1/rpm 0x80000, boot/recovery 0x1000000. `fastboot oem reboot-edl` → OKAY → 05c6:9008. Rollback не требуется. - Состояние флеша после S2: sbl1/rpm/hyp stock; aboot = lk1st-aurora; GPT new (tz 1 MiB: stock TZ.BF.2.2 + бывший tzbak; tzbak @305184 = stock tzbak); recovery = lk2nd 23.1; boot/modem/NV/persist — не тронуты. # Сессия 10 — S3: tz ← DB410c TZ.BF.3.0-00714, hyp ← qhypstub (2026-09-30 00:30–00:33) — **PASS** Логи: `logs/bootchain/S3-*`, UART `logs/uart/S3-newchain-boot-20260930-003103.*`. - Pre: serial 0x; tz 0x8400000/0x100000, hyp 0x8500000/0x80000; tz-db410c.pad1M 8481892f…5363, hyp-qhypstub.pad512K 1a963047…4555; rollback orig-tzarea 0284863b… и orig-hyp 340049c1… == срезы full-emmc.bin. - A–C `edl w tz tz-db410c.pad1M` → `Wrote … sector 270336`; `r tz` → 8481892f…5363, cmp OK. - D–F `edl w hyp hyp-qhypstub.pad512K` → `Wrote … sector 272384`; `r hyp` → 1a963047…4555, cmp OK. (одна EDL-сессия, без перезагрузки между ними) - Контроль: GPT primary/backup == S2, aboot == lk1st, tzbak@305184 == stock. - Первый boot (00:31:32, обычное включение): SBL1 → Image Load ×3 (строка `QHEE Image Loaded`) → QSEE Execution → SBL1 End → lk1st `welcome to lk` → MMC → forced fastboot → `fastboot: processing commands` (~0.54 с). 0× panic/ASSERT/abort. → DB410c TZ PASS, qhypstub PASS (цепочка дошла до aboot; на stock TZ+qhypstub JZ02 висел), lk1st PASS. - fastboot: ; version 0.5; product lk1st-msm8916; lk2nd 23.1; tz 0x100000, tzbak 0x80000, hyp 0x80000, aboot 0x100000. SCM/PSCI lk1st при старте не логирует (проверка — при запуске ядра) → подтвердится на ARM64 RAM boot. - EDL после S3: `fastboot oem reboot-edl` → 9008 (PASS); аппаратный D+→GND → SBL1 Start → clock_init → тишина → 9008 (00:33:05, PASS). - Rollback: не требуется. Состояние флеша: sbl1/rpm stock; tz = DB410c TZ.BF.3.0 (1 MiB); hyp = qhypstub; aboot = lk1st-aurora; GPT new; tzbak@305184 = stock; recovery = lk2nd; boot/modem/NV/persist не тронуты. # Сессия 11 — ARM64 RAM boot #2 (A/B, тот же образ) — **LEVEL 5 PASS** (2026-09-30 00:36) Логи: `logs/uart/ramboot2-arm64-20260930-003530.{log,raw}`, `logs/uart/ramboot2-dmesg.txt` (198 строк), `logs/uart/ramboot2-fastboot.txt`. - Образ без изменений: `linux/ramboot1/aurora-ramboot1.img` sha256 470ce4f82864600c5bed7e1791a38e84a802dc2cac7d43d15439f593b9e15347 (Linux 7.2.7-aurora-ramboot1 arm64, appended DTB == msm8916-jz08-aurora.dtb, eMMC/SD/USB/MSS/WCNSS/BAM-DMUX disabled, busybox initramfs). - Команда: `fastboot boot linux/ramboot1/aurora-ramboot1.img` (lk1st) → Sending OKAY, Booting OKAY. - lk1st: decompress OK → «Only one appended non-skales DTB, select it» → `SCM call: 0x84000000 failed with :10000` (пробный вызов, некритично) → **`PSCI v1.0 detected, skipping SMP spin table`** → `booting linux @ 0x80000000 …` → `Jumping to kernel via monitor`. Ошибки «Cannot boot ARM64 with old SCM calling convention» / ASSERT **больше нет** (A/B: разница только в TZ.BF.3.0 + qhypstub). - Kernel: `Booting Linux on physical CPU 0x0000000000 [0x410fd030]`, Linux 7.2.7-aurora-ramboot1, `Machine model: JZ08AU Aurora (RAM boot 1)`, earlycon msm_serial_dm0 @0x78b0000; psci: PSCIv1.0 in firmware, SMCCC v1.0, OSI mode; `[Firmware Bug]: failed to set PC mode: -3` (известно для DB410c TZ, работает OSI, CPUidle PSCI OSI инициализирован). GIC: `Root IRQ handler: gic_handle_irq`; arch_timer cp15 19.20 MHz (virt), clocksource arch_sys_counter; arch_mem_timer IRQ растёт. SMP: CPU1–3 booted, 4 CPUs. Memory: 445304K/524288K available (512 MiB, reserved tz-apps/smem/hyp/tz/rmtfs/rfsa по upstream dtsi), MemTotal 482864 kB. console ttyMSM0 enabled; initramfs unpacked; `Run /init` → `=== AURORA RAM BOOT ===` → BusyBox v1.37.0 ash, prompt `~ #`. Блочных устройств нет кроме loop/nbd (eMMC не проявилась — DT disabled). Предупреждений/ошибок в dmesg больше нет. - Диагностика из shell (read-only): uname aarch64; model из /proc и /sys; 4 × Cortex-A53 (0xd03); /sys/class/tty: ttyMSM0 (+ttyS0-3 от 8250, не используются). - Записей в eMMC: нет. # Сессия 12 — RAM boot USB1: USB peripheral + NCM (2026-09-30 00:44) — **PASS-7** Эталон ramboot1 не изменён (470ce4f8…). Новое: `linux/dts/msm8916-jz08-aurora-usb1.dts` (diff: `linux/ramboot-usb1.dts.diff`), `linux/aurora-usb1.config` (дельта конфига: `linux/ramboot-usb1.config.diff`, 23 опции + LOCALVERSION, только добавления), `linux/initramfs-usb1/` (diff init: `linux/ramboot-usb1.init.diff`), артефакты `linux/artifacts/ramboot-usb1/` (SHA256SUMS). Логи: `logs/uart/usb1-20260930-004405.{log,raw}`, `logs/uart/usb1-dmesg.txt` (223 строки), `logs/uart/usb1-fastboot.txt`. - DTS: `#include "msm8916-pm8916.dtsi"` (RPM-регуляторы), `&pm8916_usbin` okay, `&usb` dr_mode="peripheral" + extcon=pm8916_usbin, `&usb_hs_phy` extcon; PHY supplies L7 1.8 V / L13 3.075 V (= stock HSUSB_1p8/3p3), init-seq upstream == stock. eMMC/SD/MSS/WCNSS/BAM-DMUX disabled. - Kernel 7.2.7-aurora-usb1: USB_SUPPORT, USB_GADGET, USB_CHIPIDEA(+UDC, MSM glue), PHY_QCOM_USB_HS, EXTCON_QCOM_SPMI_MISC, USB_CONFIGFS(+NCM); USB host = n; MODULES=n. Image image_size 0x1670000 (22.44 MiB, end 0x81670000 < DTB 0x81E00000). Image.gz e09d7e81…, DTB 998dcfd4…, initramfs efd2a3f0… (1017243 B), **aurora-usb1.img 7735d3df9c17b142786ac83d8ed382b2308f11d32ca38b51603237cedde89eb7** (9629696 B). - Boot: из RAM-shell ramboot1 `reboot -f` → SBL1 → lk1st fastboot → `fastboot boot linux/ramboot-usb1/aurora-usb1.img` (OKAY/OKAY) → PSCI v1.0 → Linux 7.2.7-aurora-usb1, model «JZ08AU Aurora (RAM boot USB1)». - USB: msm_hsusb 78d9000.usb (ChipIdea) + qcom usb-hs-phy; UDC **ci_hdrc.0**, state `configured`; gadget configfs `aurora`, NCM ifname **usb0** (dev , host ), 172.16.42.1/24 static. - Host (480s): lsusb **18d1:d001** «Aurora / Aurora RAM Boot / » (dev-only IDs, как JZ02), класс CDC NCM; интерфейс **enp0s20f0u2** (driver cdc_ncm), NM-профиль jz02-ncm применился автоматически: 172.16.42.2/24. - Ping: host→Aurora 5/5, 0% loss, avg 2.19 ms; Aurora→host 5/5, 0% loss, avg 2.24 ms. - Предупреждения: `Fixed dependency cycle(s)` usb↔phy (то же на JZ02, штатно); `msm_hsusb: Failed to create device link (0x180) with supplier remoteproc` (fw_devlink к отключённому remoteproc; USB работает); psci «failed to set PC mode: -3» (как раньше). Ошибок нет. - eMMC: отсутствует (0 строк mmc/sdhci, /sys/block только loop/nbd). SSH: не делался (в Debian busybox нет dropbear; есть telnetd — не включён). - Записей в eMMC: нет. # Сессия 13 — RAM boot EMMC1: eMMC READ-ONLY (2026-09-30 00:50) — **PASS-9** Эталоны не изменены (ramboot1 470ce4f8…, ramboot-usb1 7735d3df…). Новое: `linux/dts/msm8916-jz08-aurora-emmc1.dts` (diff `linux/ramboot-emmc1.dts.diff`), `linux/aurora-emmc1.config` (дельта = НЕТ: MMC/MMC_BLOCK/SDHCI/SDHCI_PLTFM/SDHCI_MSM/EFI_PARTITION уже =y), `linux/initramfs-emmc1/` (diff `linux/ramboot-emmc1.init.diff`), `linux/artifacts/ramboot-emmc1/` — ядро **байт-в-байт usb1** (Image.gz e09d7e81…), DTB 23f6464f…, initramfs ff3c202c…, **aurora-emmc1.img 93f61ce7…f8e9f** (9631744 B). Логи: `logs/uart/emmc1-20260930-005048.{log,raw}`, `logs/uart/emmc1-fastboot.txt`. - DTS: `&sdhc_1` okay (+alias mmc0); из upstream: bus-width 8, non-removable, mmc-ddr-1_8v, sdc1 pinctrl; vmmc=pm8916_l8 2.9 V, vqmmc=pm8916_l5 1.8 V (= stock L8/L5). sdhc_2 (SD), MSS, WCNSS, BAM-DMUX — disabled; USB/UART — как usb1. - init: RO **первым делом** (до USB): ждёт /dev/mmcblk0 → blockdev --setro на mmcblk0, p1..p27, boot0/1 → getro всем → `EMMC-RO-SUMMARY devices=30 all_ro=YES` (t≈1.86 s). Затем USB; отчёт по диску только при RO=OK. Нет mount/fsck/mkfs/trim/swap для mmcblk*. - Probe: `mmc0: SDHCI controller on 7824900.mmc using ADMA`; `new HS200 MMC card at address 0001`; `mmcblk0: mmc0:0001 H4G2a 3.64 GiB`; p1..p27; mmcblk0boot0/1 4 MiB; mmcblk0rpmb (chardev). **Режим: HS200, 8 bit, 1.8 V, 177.78 MHz** (debugfs ios) — НЕ DDR52: sdhci-msm включил HS200 по caps контроллера, хотя в DTS нет mmc-hs200-1_8v (ранее заявленное «DDR52 conservative» — неверно). `Card appears overclocked; req 177770000, actual 177777777 Hz` = округление GCC (+7777 Hz). CRC/tuning/timeout/I/O error: нет. - Карта: name H4G2a, manfid 0x90, oemid 0x14a, CID (== Android sysfs), serial 0x, 7634944 × 512 = 3909091328 B. - GPT глазами Linux == S2 GPT по всем 27 разделам (номер/start/size), все ro=1. tz p8 0x8400000/0x100000; tzbak p9 0x9504000/0x80000; hyp p10 0x8500000/0x80000; sbl1 p2 0x8000000/0x80000; aboot p4 0x8100000/0x100000; modem p1 0x4000000/0x4000000; boot p22 0xc18c000/0x1000000; recovery p26 0x4918c000/0x1000000; userdata p27 0x4a18c000/0x9ee6fe00. - SHA256 через mainline MMC == эталоны Firehose: sbl1 6a661ec9 (stock), rpm 5a9b857b (stock), DDR c3502047 (stock), sec 3b1cae78 (stock), aboot e4addbf8 (lk1st S1), hyp 1a963047 (qhypstub S3), tz 8481892f (DB410c S3), tzbak c6f7db26 (stock tzbak S2). 8/8 MATCH. (Вывод DDR/sec в первом прогоне потерялся на UART; повтор через файл /tmp — rc=0, совпадение.) - USB NCM: без регрессий — 18d1:d001, enp0s20f0u2 (jz02-ncm), ping host→Aurora 5/5 (avg 2.68 ms), Aurora→host 5/5 (avg 2.29 ms). - Записи: /sys/block/mmcblk0/stat: writes completed 0, sectors written 0 (reads 45 / 8616 sectors). **ZERO writes.** - Предупреждения: overclocked (выше); `l13: voltage operation not allowed` (было и в usb1; PHY vs фиксированный L13); `gcc … sync_state() pending due to 7824900.mmc` (информационное). - UART-канал теряет куски вывода при всплесках → для данных писать в /tmp и выводить отдельно (или по NCM). ## Сессия 13b — software poweroff из RAM-Linux (2026-09-30 01:00) — **НЕ работает (перезапуск)** - Пути в ядре: PSCI SYSTEM_OFF (`pm_power_off = psci_sys_poweroff`, psci-1.0 от DB410c TZ) и `qcom,pshold` (POWER_RESET_MSM, PS_HOLD low); результат зависит от PS_HOLD-конфигурации PM8916 (задаётся загрузчиком) и от VBUS (при USB PMIC может снова включиться). - Busybox `poweroff` без -f шлёт сигнал PID 1 (у нас PID 1 = shell-скрипт) → использовать только `sync; poweroff -f` (прямой reboot(POWER_OFF)). - Тест (USB + аккумулятор подключены): `sync; poweroff -f` → через ~0.4 с `SBL1, Start` → QHEE/APPSBL/QSEE → lk1st fastboot 18d1:d00d; NCM исчез. Т.е. SoC сбрасывается и сразу грузится заново. Причина (PS_HOLD=reset vs повторное включение по VBUS) не установлена. - lk1st fastboot: команды выключения нет (oem: dtb, log, reboot-edl, hash, screenshot). - Безопасное выключение сейчас = ручное обесточивание (USB, затем аккумулятор). Безопасно в любой момент: rootfs в RAM, eMMC RO/не используется, в lk1st fastboot записей нет. - Возможная будущая проверка (не выполнялась): при отключённом USB подать `sync; poweroff -f` через UART и смотреть, стартует ли SBL1. # Сессия 14 — B1 (modem FAT RO) + B2 (rmtfs -r + MPSS) (2026-09-30 01:10–01:16) — **PASS-11**. SIM T2 установлена, не использовалась. Эталоны ramboot1/usb1/emmc1 не изменены. Новое: `linux/dts/msm8916-jz08-aurora-modem1.dts` (diff `linux/ramboot-modem1.dts.diff`), `linux/aurora-modem1.config` (diff `linux/ramboot-modem1.config.diff`), `linux/initramfs-modem1/` (diff init `linux/ramboot-modem1.init.diff`, `root/bin/modem-up`, `root/bin/nv-check`, пакеты Alpine в `dl/` + APK-SHA256SUMS), `linux/artifacts/ramboot-modem1/` (Image.gz 95596fb9…, DTB 4269cf0b…, initramfs 010837f4…, **aurora-modem1.img 10745c98…7802**, 10133504 B). Логи: `logs/uart/modem1-20260930-011037.*`, `logs/modem1/*` (файлы с платы получены по NCM через `nc -l` → `ncat --recv-only`; UART теряет вывод). - Kernel delta vs usb1/emmc1: +REMOTEPROC, REMOTEPROC_CDEV, QCOM_Q6V5_MSS, QCOM_SYSMON (+ select: MDT_LOADER, PIL_INFO, Q6V5_COMMON, RPROC_COMMON, DEV_COREDUMP). BAM_DMUX, WWAN, WCNSS_PIL — off. image_size 22.50 MiB. - DTS delta vs emmc1: &mpss okay (+pinctrl sim_ctrl: gpio1 high, gpio20/22/23 low — как stock Aurora gpio-leds/Android runtime); &mpss_mem reg 0x86800000/0x4e00000 (= stock modem_adsp_region 78 MiB; Aurora modem.mdt span 0x86800000..0x8b300000 = stock PIL log); &mba_mem okay (dyn 1 MiB → 0x8e700000). wcnss, bam_dmux, bam_dmux_dma, sdhc_2 — disabled. - rmtfs: Alpine v3.24 `rmtfs 1.3-r0` (+qrtr-libs 1.2-r1, eudev-libs 3.2.14-r6, musl 1.2.6-r2); APKINDEX C: == JZ02 installed; бинарники == JZ02 (sha256). Исходник v1.3 (b30a3eb3): `-r` → storage_read_only: open O_RDONLY → RAM shadow; pwrite → RAM; sync no-op; O_RDWR только без -r. `-P` by-partlabel, `-s` rproc sync. Команда: `rmtfs -r -P -s -v` (только через /bin/modem-up, который сперва проверяет getro=1 для modemst1/2/fsc/fsg и ro у /firmware). Драйвер q6v5-mss: auto_boot=false → MSS стартует только по rmtfs -s. B1: RO всем 30 устройствам (t≈1.9 s) → stat до B1: 0 writes → nv_snapshot before → modem по PARTLABEL = mmcblk0p1 (ro=1) → `vfat ro,nosuid,nodev,noexec,relatime,…,shortname=lower,errors=remount-ro` на /firmware → 53 файла, **53/53 == Aurora reference** (firmware-fat-compare.tsv); modem.mdt aabbf109…, mba.mbn ac123b42…, modem.b18 d901d526… — Aurora (≠ JZ02). firmware_class.path=/firmware/image. B1_OK=1. B2 (`/bin/modem-up` в t=109 s): `powering up 4080000.remoteproc` → `Booting fw image mba.mbn, size 234176` → `MBA booted without debug policy, loading mpss` → `remote processor 4080000.remoteproc is now up` (+0.6 s). remoteproc0 **running** и через 77 s; нет fatal/crash/SSR/wdog. rmtfs жив; /tmp/rmtfs.log содержит только «registering services» (stdout буферизован при перенаправлении в файл — остальное в буфере); косвенно: VmData rmtfs 4656 kB ≈ shadow modemst1+modemst2+fsg+fsc (открываются только по запросу модема); fd: /dev/qcom_rmtfs_mem1 (RAM), сокет QRTR, без mmcblk. - NV: modemst1 637a71d1…, modemst2 9bb10190…, fsg b0a3b7e4…, fsc 5f70bf18…, persist ee48a843… — **BEFORE == AFTER**. - eMMC: /sys/block/mmcblk0/stat writes_completed 0, sectors_written 0 (reads 1048 / 258860 sectors — хэши + rmtfs shadow). - USB NCM: 18d1:d001, ping host→Aurora 5/5 (2.27 ms), Aurora→host 5/5 (2.31 ms). - Warnings: `qcom-smsm: mbox_request_channel: can't parse "mboxes"` ×3 (upstream smsm без mboxes, информационно), `remoteproc0: releasing` ×4 (probe deferral), fw_devlink/l13/overclock — как раньше. - SIM T2: интерфейсов для неё нет (QMI/WWAN/BAM-DMUX не включены, /dev: rpmsg_ctrl0/1, qrtr-tun, qcom_rmtfs_mem1). К SIM и модему никаких запросов не делалось. # Сессия 15 — B3: QMI control plane + SIM detect + passive NAS (2026-09-30 01:29–01:36) — **PASS-11** Эталоны ramboot1/usb1/emmc1/modem1 не изменены. Новое: `linux/patches/rpmsg_wwan_ctrl-port-race.patch` (из JZ02, sha256 7355d729…), `linux/aurora-qmi1.config` (diff `linux/ramboot-qmi1.config.diff`), DTS qmi1 (diff `linux/ramboot-qmi1.dts.diff`: только model), `linux/initramfs-qmi1/` (Alpine qmi-utils/libqmi 1.38.0_git20260414-r0 + closure в `dl/` + APK-SHA256SUMS; `src/linebuf.c`; `root/bin/qmi-b3`; modem-up diff `linux/ramboot-qmi1.modem-up.diff`), `linux/artifacts/ramboot-qmi1/` (Image.gz faf71c53…, DTB af75e4e3…, initramfs 59e4c52c…, **aurora-qmi1.img dae591e1…9652**). Логи: `logs/uart/qmi1-20260930-012917.*`, `logs/qmi1/*` (b3.txt с маскированными ICCID/IMSI). - JZ02 race patch: `JZ02V30-UFI-@/openrc/rpmsg_wwan_ctrl-port-race.patch` (7355d729…). Исправляет NULL deref в wwan_port_rx ← rpmsg_wwan_ctrl_callback ← rpmsg_wwan_ctrl_probe (JZ02 panic 2026-09-26: порт открыт до возврата wwan_create_port, rpwwan->wwan_port ещё NULL) — присваивает wwan_port в rpmsg_wwan_ctrl_start() до rpmsg_create_ept(). Код Aurora 7.2.7 идентичен контексту → **применён** (patch -p1 чисто) в /home/q/aurora-kbuild/src. (Примечание: в заметках JZ02 отдельно фигурирует ещё bam-dmux runtime-PM race — не относится к B3, BAM-DMUX выключен.) - Kernel delta vs modem1: +WWAN, +RPMSG_WWAN_CTRL (+WWAN_DEBUGFS по умолчанию). BAM_DMUX off, USB qmi_wwan не включался (USB host off). - Ошибка по ходу: первый образ qmi1 (cd4c9d98…) — /bin/modem-up без +x (потерян при sed>mv) → «Permission denied», MPSS не стартовал; исправлено (dae591e1…). - rmtfs: та же команда `rmtfs -r -P -s -v`, только `LD_PRELOAD=/usr/lib/linebuf.so` (setvbuf(stdout,_IOLBF) — механизм stdbuf; linebuf.so bac4480a…). Лог теперь построчно: open /boot/modem_fs1/fs2/fsg/fsc, alloc 917504 => 0x86700000, iovec … read; **write = 0** (даже в RAM-shadow). - MPSS: t=39.54 powering up → mba.mbn 234176 → MBA booted → 40.13 is now up → 40.74 wwan0at0, wwan0at1, 40.92 **wwan0qmi0** attached. Паники нет. rpmsg: DATA5_CNTL/DATA1/DATA4 → rpmsg_wwan_ctrl; IPCRTR → qcom_smd_qrtr; sys_mon → qcom_sysmon; прочие DATA*/DIAG*/apr* без драйвера. - qmicli 1.39.0 (Alpine libqmi 1.38.0_git20260414-r0 == JZ02), `qmicli -p -d /dev/wwan0qmi0`, только get-запросы (`/bin/qmi-b3`): DMS operating mode **'shutting-down'** (HW restricted no; как JZ02 S7 до ручного online); revision MPSS.DPM.1.0.c7-00193-M8916EAAAANVZM-1; DMS UIM state initialization-completed; UIM card status: slot 1 **present**, USIM app **ready**, personalization ready, **PIN1 disabled** (3/10), PIN2 enabled-not-verified; slot 2 no-atr (нет второй SIM); ICCID ; IMSI (MCC/MNC 250-20 = T2). NAS: home-network NotProvisioned; serving system not-registered-searching, CS/PS detached, RAT none; system-info GSM/WCDMA/LTE status none; signal-info InformationUnavailable; system selection pref (READ): mode 'lte', LTE bands 1,3,5,7,8,20,40, network selection automatic, ps-only, roaming any. → модем не зарегистрирован (радио фактически выключено режимом shutting-down/low-power). Режим НЕ менялся. - MPSS после запросов: running (uptime 116 s). qmi-proxy запущен (qmicli -p). - NV: modemst1 637a71d1…, modemst2 9bb10190…, fsg b0a3b7e4…, fsc 5f70bf18…, persist ee48a843… — BEFORE == AFTER (и == B2). - eMMC stat: writes_completed 0, sectors_written 0. USB NCM: ping 5/5 в обе стороны (~2.2 ms). BAM-DMUX: disabled весь B3. # Сессия 16 — B4a: DMS online + пассивное наблюдение (2026-09-30 01:50–01:53) — **PASS, автоматическая регистрация T2 LTE** Образ без изменений: ramboot-qmi1 (dae591e1…). Сценарий `linux/b4a/b4a.sh` (a200d960…; копия в `logs/b4a/`), результаты `logs/b4a/*`. - Ровно одна SET-команда: `qmicli -p -d /dev/wwan0qmi0 --dms-set-operating-mode=online` (t=1195.00) → «Operating mode set successfully», rc=0; GET → Mode 'online', HW restricted 'no'. Больше SET/scan/register/attach/bearer не выполнялось. - Шкала (39 циклов по ~3 s, только GET serving-system/system-info/signal-info): +0.1 s not-registered-searching, RAT none → **+3.2 s registered, PS attached, CS detached, RAT lte, PLMN 250-20 't2'**, LTE service available → стабильно до +118.7 s. Автоматическая регистрация модемом (network selection automatic из NV), userspace её не инициировал. - Signal LTE: при регистрации RSSI -59 / RSRQ -19 / RSRP -97 dBm / SNR -4.0 dB; в конце RSSI -65 / RSRQ -9 / RSRP -87 dBm / SNR 16.2 dB. cell-location: serving PCI 266 RSRP -90.0 RSRQ -7.5 RSSI -65.4; соседи PCI 491 (intra), 357/123 (inter). - RF: LTE, active band **eutran-1 (B1)**, EARFCN 100. Home network (теперь provisioned): MCC 250 MNC 20 'TELE2 RU'. Service domain pref ps-only → CS detached ожидаемо. - SIM после: slot1 present, USIM ready, PIN1 disabled. Mode online. MPSS running. Паник/SSR/wdog нет. - rmtfs после online: 1 запрос записи — `iovec 1, not forced` / `write 0:1792 0x86700000` (EFS caller 1 = modem_fs2, 1792 сектора) → удержан в RAM-shadow (-r). - NV на диске: modemst1/2, fsg, fsc, persist — BEFORE == AFTER. eMMC stat: writes 0, sectors_written 0 (до и после). - BAM-DMUX: disabled весь B4a (нет wwan0 netdev, ModemManager не запускался). USB NCM: ping 5/5 в обе стороны (~2.3 ms). - Следствие для будущего: с rmtfs -r изменения EFS (запись после регистрации) теряются при перезагрузке — ожидаемо и безопасно. # Сессия 17 — B4b1: BAM-DMUX kernel bring-up без bearer (2026-09-30 02:01–02:24) — **PASS-11** Эталоны не изменены. Новое: `linux/aurora-bam1.config` (diff `linux/ramboot-bam1.config.diff`: +QCOM_BAM_DMUX), DTS bam1 (diff `linux/ramboot-bam1.dts.diff`: &bam_dmux + &bam_dmux_dma okay), initramfs == qmi1 (59e4c52c…), `linux/artifacts/ramboot-bam1/` (Image.gz 9c20a372…, DTB a10056c5…, **aurora-bam1.img e24c8e5e…8eca**), сценарий `linux/b4b1/b4b1.sh` (6d54ab6c…). Логи: `logs/uart/bam1-20260930-020119.*`, `logs/b4b1/b4b1/*`. - JZ02-материалы (тот же Linux 7.2.7): рабочая схема = DT &bam_dmux/&bam_dmux_dma okay (msm8916-ufi.dtsi), probe на старте, отдельного bam-dmux патча нет. Известный риск: трафик через bam-dmux во время остановки MSS → «Failed to resume: -22» (sticky); порядок остановки JZ02 = wwan-quiesce (ip addr flush + link down всех wwan*) ДО остановки rmtfs/MSS. Recovery: unbind/bind /sys/bus/platform/drivers/bam-dmux/{unbind,bind} (устройство 4080000.remoteproc:bam-dmux) по заметкам НЕНАДЁЖЕН; power/control=on и autosuspend_delay_ms=3600000 — лишь смягчение; надёжно — только полное обесточивание. Upstream-фикс «net: wwan: qcom_bam_dmux: fix TX DMA channel use-after-free» (v5, 2026-09-03, Cc stable) в 7.2.7 отсутствует (старый bam_dmux_pc_vote(bool)) и по треду не влит → не бэкпортировался. - Код 7.2.7: probe ничего не делает, пока модем не поднимет pc-линию; netdev регистрируются по CMD_OPEN от модема; ndo_open/stop = BAM_DMUX_CMD_OPEN/CLOSE (мультиплексорный канал, не bearer/WDS) + pm_runtime_get_sync. - Порядок: eMMC RO → FAT RO → rmtfs -r → MPSS (39 s) → wwan0at0/at1/qmi0 → BAM-DMUX netdev wwan0..wwan7 (DOWN) → mode shutting-down → **одна SET `--dms-set-operating-mode=online`** (как B4a; attempt1 t=95.6) → registered 250-20 't2' LTE PS attached. - Попытка 1 сценария упала на моей ошибке (`nets()` затирал глобальный счётчик n → arithmetic error) до up/down; попытка 2 (исправлено) — полный прогон. - Runtime PM (device /sys/bus/platform/devices/4080000.remoteproc:bam-dmux, drv bam-dmux, control auto, autosuspend 1000 ms): 5 мин наблюдения — 10/10 suspended, active_ms 0; QMI каждые 60 s: online / registered / PS attached, MPSS running. - UP/DOWN wwan0 (без IP, без WDS): up rc=0 → UP,LOWER_UP; PM suspended→active (active_ms 0→1010→3267); down rc=0 → PM suspended (active_ms 4530), через 30 s — suspended. «Failed to resume»: 0. «Channel already open»: 0. Паник нет. - QMI после: online, SIM present/USIM ready, registered 250-20 't2', PS attached, RSRP -93 RSRQ -13 RSSI -64 SNR 11.6. MPSS running. - rmtfs: 1 write (`write 0:1792 0x86700000`, modem_fs2) → RAM shadow (-r). NV BEFORE == AFTER, eMMC writes 0 / sectors 0. USB NCM 5/5 в обе стороны. # Сессия 18 — B4b2 попытка 1: прямой qmicli data path (2026-09-30 02:29) — **STOP на start-network, bearer НЕ поднят** Образ ramboot-bam1 без изменений. Сценарий `linux/b4b2/b4b2.sh` (ab5e7844…), результаты `logs/b4b2/b4b2/*`. - Precheck OK: online, registered 250-20, PS attached, LTE, SIM ready, wwan0 DOWN, BAM-DMUX suspended. - WDA: `qmicli -p -d /dev/wwan0qmi0 --wda-set-data-format="link-layer-protocol=raw-ip"` → «Successfully set data format … Link layer protocol: 'raw-ip'», rc=0; но `--wda-get-data-format` (следующий запуск qmicli = новый WDA-клиент) → **'802-3'** → raw-ip НЕ подтверждён. **Моя ошибка в сценарии**: проверка grep 'raw-ip' совпала с выводом SET, а не GET → сценарий не остановился после WDA, как требовалось. - Bind: `--wds-bind-data-port=a2-mux-rmnet0 --client-no-release-cid` → CID '1', rc=0. - Start (единственная попытка): `--client-cid=1 --client-no-release-cid --wds-start-network="apn=internet,ip-type=ipv4"` (auth/user/pass не передавались) → нет ответа, «Operation was cancelled» (~40 s timeout), rc=1; `--wds-noop --client-cid=1` → «InvalidClientId». Повторов не было. - **Точное повторение JZ02** (PLAN-B S9): WDA set per-client, GET через новый клиент = 802-3; reused CID → timeout, release → InvalidClientId. Вывод: многошаговый поток «qmicli через qmi-proxy с --client-cid» на этом стеке неработоспособен (CID/WDA-состояние не переживают процесс qmicli). JZ02 данные поднимал только через ModemManager (держит постоянных клиентов в одном процессе). - После: WDS packet service 'disconnected'; online; registered; PS attached; SIM ready; wwan0 DOWN без IP; маршруты — только usb0; BAM-DMUX suspended; MPSS running; dmesg: 0 Failed to resume/Oops/panic; rmtfs — новых запросов нет; NV BEFORE==AFTER; eMMC writes 0 / sectors 0. # Сессия 19 — B4b2 через ModemManager (2026-09-30 02:49–02:57) — bearer CONNECTED, DNS OK, ping по table100 FAIL (не разобрано) Образ `linux/artifacts/ramboot-mm1/aurora-mm1.img` 38c960ef… (ядро/DTB = bam1; initramfs + MM 1.25.95_git20260527-r1, libqmi 1.38.0_git, dbus 1.16.2, polkit 127, eudev 3.2.14 + **modemmanager-udev** (install_if, сперва пропущен мной → "not candidate")); все пакеты == JZ02 (C: и файлы). Сценарии: `initramfs-mm1/root/bin/mm-up`, `b4b2-mm` (9b5df90a…); результаты `logs/b4b2mm/run3/b4b2mm/*`. - MM: plugin qcom-soc, primary wwan0qmi0, net wwan0..7, physdev bam-dmux; mm.log: raw-ip / a2-mux-rmnet0 (12 совпадений). - `mmcli -m 0 --simple-connect="apn=internet,ip-type=ipv4"` (одна попытка) → connected Bearer/1, rc=0. IPv4 26.224.4.252/29, gw 26.224.4.253, DNS 176.59.95.243, 176.59.95.242, MTU 1430, interface wwan0. - DNS через оператора (host-routes в main): nslookup ya.ru → 5.255.255.242 / 77.88.55.242 → **данные через wwan0 проходят**. - ping -I 77.88.8.8/1.1.1.1/8.8.8.8 через table 100 → 100% loss (причина не разобрана: вероятно моя policy-routing схема; счётчики bam-dmux = 0, драйвер их не ведёт). - Disconnect: successfully disconnected, connected: no, wwan0 down, BAM-DMUX suspended, MPSS running. Failed to resume: 0. - NV BEFORE==AFTER, eMMC writes 0 / sectors 0. # Сессия 20 — B4b2 retest (SIM T2 с ограничением «только Яндекс»), MM (2026-09-30 05:02–05:05) — **DATA PLANE PASS**; контент блокирует оператор Уточнение пользователя: SIM T2 ограничена оператором (только сервисы Яндекса) → 1.1.1.1/8.8.8.8 не критерии; провал ping из сессии 19 не доказывает сбой. Образ aurora-mm1.img 38c960ef… без изменений; tcpdump 4.99.6-r1 + libpcap 1.10.7-r0 (Alpine v3.24, sha256 в `logs/b4b2mm2/tcpdump-APK-SHA256SUMS`) загружены в RAM (/tmp/td) по NCM. Сценарий `linux/b4b2/b4b2-mm2.sh` (0fd51f71…), результаты `logs/b4b2mm2/b4b2mm2/*` (+ wwan0.pcap). - Одна попытка `mmcli -m 0 --simple-connect="apn=internet,ip-type=ipv4"` → connected Bearer/1, rc=0. IPv4 26.221.78.53/30, gw 26.221.78.54, DNS 176.59.95.243/176.59.95.242, MTU 1430, iface wwan0. - Маршруты: только /32 через wwan0 в main (77.88.8.8, 77.88.8.1, оба DNS T2, 3 адреса ya.ru); default НЕТ; `ip route get 77.88.8.8` → dev wwan0 src LTE-IP; `ip route get 172.16.42.2` → dev usb0 (management цел). - ping 77.88.8.8: 5 echo request ушли в wwan0, 0 reply (ICMP не пропускается оператором). - DNS через T2 DNS: nslookup ya.ru → 77.88.55.242, 5.255.255.242, 77.88.44.242 (+AAAA 2a02:6b8::2:242) — ответы получены по wwan0. - HTTP http://ya.ru → TCP SYN/SYN-ACK с 77.88.44.242:80 по wwan0, ответ «HTTP/1.1 302 Found, Location: http://internet-block.t2.ru/?p=LOCKB» → оператор перехватывает и отдаёт страницу блокировки (LOCKB). HTTPS https://ya.ru → «Connection reset by peer» (тоже оператор). - tcpdump wwan0: всего 42 пакета, TX (src LTE-IP) 26, RX (dst LTE-IP) 14: DNS-ответы, TCP SYN-ACK/данные HTTP. Счётчики netdev bam-dmux = 0 (драйвер не ведёт). - BAM-DMUX: active во время трафика (active_ms до ~33 s), после disconnect → suspended. Failed to resume/-110/-22/EAGAIN: 0. - Disconnect: `--simple-disconnect` → успешно, connected: no; маршруты/адрес удалены; wwan0 down. После: MM registered, PS attached; QMI registered; MPSS running. - rmtfs: новых запросов нет. NV BEFORE==AFTER. eMMC writes 0 / sectors 0. USB NCM работал всё время (результаты получены через него). - Вывод: LTE data plane (MM qcom-soc → WDA raw-ip → a2-mux-rmnet0 → WDS → bam-dmux wwan0 → IPv4) работает в обе стороны (UDP+TCP). Доступ к контенту даже ya.ru сейчас заблокирован оператором (редирект internet-block.t2.ru ?p=LOCKB) — вопрос SIM/тарифа, не платы. # Сессия 21 — Beeline SIM, финальный cellular test (2026-09-30 13:14–13:27) — **STOP: нет регистрации (registration-denied → limited)** SIM заменена пользователем на обесточенной плате (T2 → Beeline). Перед заменой плата была в lk1st fastboot (Linux не работал, bearer не было). Образ `linux/ramboot-mm1/aurora-mm1.img` 38c960ef… без изменений (sha256 сверен), `fastboot boot` через lk1st (`logs/uart/beeline1-fastboot.txt`). UART `logs/uart/beeline1-20260930-131418.*`; сценарии и результаты `logs/beeline1/` (bee-p23.sh 8d3e8cf2…, bee-obs.sh, bee-watch.sh, bee-safe.sh; bee23/, beeobs/, beewatch.txt, prof.txt, beesafe/). - Boot: EMMC-RO 30/30, B1_OK=1, NCM usb0 172.16.42.1 (ping OK). modem-up: MPSS up t≈108 s, wwan0qmi0/at0/at1, wwan0..7. - P2 (GET): DMS 'shutting-down'; UIM initialization-completed; slot1 present, USIM ready, PIN1 disabled (3/10), personalization ready; slot2 no-atr. ICCID ; IMSI → home 250-99 'Beeline' (SPN 'beeline'). Home network до online: NotProvisioned. NAS not-registered-searching. - P3: одна `--dms-set-operating-mode=online` (t=128.39, rc=0 → Mode 'online'). Далее только GET, без scan/register/band/RAT. +6 s: Selected 3gpp, RAT lte, searching; +97 s (t=226): **registration-denied** (~20 s); t=247 → снова not-registered-searching и так до t≈626 (конец наблюдения, ~500 s). LTE service 'limited' / True status 'limited-regional', Domain camped, PS detached, Forbidden no, Cell access all-calls. Camped: PLMN 250-99, **B3 EARFCN 1275**, PCI 390, TAC (cell-location TAC ), GCI ; RSRP −102…−104, RSRQ −19…−20, SNR −7…−1 dB, RSSI −61. Соседи intra PCI 55 (RSRP −100, RSRQ −14.5), 7, 61, 319; inter EARFCN 550 (B1), 3300 (B7). Причина отказа (EMM cause) через QMI GET не получена. - LTE attach PDN list '1', профиль 1: APN '' (пусто), ipv4-or-ipv6, auth none — тот же, с которым T2 регистрировалась за 3 s → APN профиля attach не объясняет отказ (не доказано). - MM 1.25.95 (qcom-soc): modem найден, state **disabled**, lock sim-pin2 (PIN2, не блокирует), SIM operator 25099 'beeline'. Bearer/connect НЕ выполнялись (Phase 4 не начата — нет регистрации). - Безопасность: NV (modemst1/2, fsg, fsc, persist) BEFORE==AFTER (== B2 эталоны); eMMC writes_completed 0 / sectors_written 0; rmtfs 2× `write 0:1792` → RAM shadow (-r). BAM-DMUX suspended, wwan0 DOWN, MPSS running, dmesg без Failed to resume/-110/-22/SSR/wdog. NCM OK. - Гипотезы (не проверены): SIM Beeline не активирована/заблокирована для данных или LTE; слабая/перегруженная сота B3 (RSRQ −20, SNR<0). Проверить SIM в телефоне там же (регистрация, LTE, мобильный интернет) до следующей попытки. # Сессия 22 — Beeline, повтор после полного обесточивания (2026-09-30 13:39–14:01) — **CELLULAR PASS (Aurora cellular bring-up закрыт)** Контроль: та же SIM в Redmi 9 (crDroid) — LTE 250-99 HOME, rejectCause 0, интернет OK, APN internet.beeline.ru, EARFCN 1275 / PCI 390. Образ aurora-mm1.img 38c960ef… без изменений; UART `logs/uart/beeline2-20260930-134119.*`, `logs/uart/beeline2-fastboot.txt`. Сценарии/результаты `logs/beeline1/`: bee2-diag.sh (98d89ad3…) → bee2/; bee-data.sh (11156676…) → beedata/; bee-data2.sh (94d47de8…) → beedata2/. curl для RAM: Alpine v3.24 curl 8.22.0 + closure (libcurl, libssl3/libcrypto3 3.5.9, nghttp2, c-ares, idn2, psl, unistring, brotli, CA bundle) — `linux/beeline/curl/` (APK C: сверены с APKINDEX, SHA256SUMS; cu.tar b5087392…), распакован в /tmp/cu, LD_LIBRARY_PATH (системный libcrypto не заменялся). - Регистрация: одна `--dms-set-operating-mode=online` (t=43.95) → +6.7 s **registered, PS attached**, 250-99 'Beeline', LTE B3 EARFCN 1275, **PCI 55**, ECI , TAC ; RSRP −103 / RSRQ −17 / SNR −3.0. Ветка reject-диагностики (AT+CEREG/CEER) не понадобилась — AT-команды не отправлялись. Сравнение с сессией 21 (denied): тогда serving PCI 390, ECI , system-info TAC (cell-location TAC ) — причина отказа не установлена (EMM cause не получен); после cold boot модем выбрал другую соту той же несущей и зарегистрировался сразу. - MM qcom-soc формирует bearer так: WDA Set Data Format (raw-ip) → Bind Data Port (a2-mux-rmnet0) → Set IP Family → WDS **Start Network с TLV APN/Username/ Auth/IP family** — профили модема НЕ создаются/не меняются (0× Create/Modify Profile в mm.log). rmtfs — 0 новых запросов записи. - Connect (одна попытка на проход): `mmcli -m 0 --simple-connect="apn=internet.beeline.ru,user=beeline,password=beeline,allowed-auth=pap,ip-type=ipv4"` → Bearer/1, rc=0. IPv4 10.46.47.17/30, gw 10.46.47.18, DNS 10.10.22.1, 194.186.191.1, MTU 1500, iface wwan0. Внешний IP (CGNAT) (1.1.1.1 trace: colo DME). - Маршрутизация: ядро без policy routing (`ip rule` → Operation not supported) → только /32 host-routes через wwan0 в main; default нет (`ip route get 8.8.4.4` → unreachable); `ip route get 172.16.42.2` → usb0. - Проход 1 (beedata): DNS OK (ya.ru, www.google.com через оба DNS Beeline), ping 77.88.8.8 5/5 (avg 49 ms), 1.1.1.1 5/5 (44 ms), HTTP ya.ru 302; HTTPS rc=60 «certificate is not yet valid» — **часы RAM-Linux ≈1970** (не сеть: TLS-сертификат получен). Disconnect OK. - Часы: `date -u -s @` (только системное время ядра, hwclock/RTC не трогали). - Проход 2 (beedata2, те же параметры connect): ping 5/5 оба; **HTTPS ya.ru HTTP/2 302** (капча Яндекса), **https://www.google.com/generate_204 → 204**, **https://1.1.1.1/cdn-cgi/trace → 200 TLSv1.3**, ssl_verify=0 везде; HTTP ya.ru 302. tcpdump wwan0: 152 пакета, TX 79 / RX 71, DNS 16, ICMP 20, tcp443 102, tcp80 12, SYN 4 / SYN-ACK 4, TLS handshake records 6. Во время данных модем перешёл на B1 EARFCN 550, PCI 147, ECI , TAC (RSRP −105, RSRQ −17, SNR −6.4). - BAM-DMUX: active во время трафика, после disconnect suspended; Failed to resume/-110/-22/EAGAIN/SSR/wdog: 0. MPSS running. - Disconnect: successfully disconnected, connected: no, /32 routes и адрес удалены, resolv.conf очищен, wwan0 DOWN; MM registered/home, QMI registered+PS attached. - NV modemst1/2, fsg, fsc, persist BEFORE==AFTER (оба прохода, == эталоны B2); eMMC writes_completed 0 / sectors_written 0. USB NCM ping OK всё время. - Итог: SIM detect, online, automatic registration, PS attach, bearer, IPv4, wwan0 TX/RX, DNS, ICMP, HTTP, HTTPS, clean disconnect — **PASS**. Замечание на будущее: для TLS в RAM-Linux выставлять время (NTP через wwan0 или date с хоста) до HTTPS. # Сессия 23 — B5 (direct boot из eMMC): Phase 0–1 audit (2026-09-30) — **STOP на Phase 1, записей нет** Ничего не записано, к плате не обращались (только анализ файлов зеркала). - Блокер 1 (доказан): текущий aboot = lk1st-aurora (e4addbf8…, == readback S1 и == sha из Linux S13) собран с `LK2ND_FORCE_FASTBOOT=1` (`lk2nd-build/src/build-lk1st-msm8916/config.h`; строка «Fastboot mode was forced with compile-time flag.» в aboot-lk1st-aurora.mbn и в UART S1/S2/S3). `app/aboot/aboot.c:5647` безусловно ставит boot_into_fastboot=true → `normal_boot` (lk2nd_boot()/boot_linux_from_mmc()) не выполняется НИКОГДА. ⇒ любая запись только в `boot` не меняет поведение power-on: lk1st остаётся в fastboot. B5 без изменения aboot невозможен. - Блокер 2 (доказан): golden aurora-mm1.img 38c960ef… = 20 606 976 B (Image.gz-dtb 8 658 738 + initramfs.cpio.gz 11 944 942, page 2048) > boot 16 777 216 B (LBA 396384, 32768 сект.). Даже тот же cpio (40 307 200 B) в xz -9e = 8 340 976 B → итог ≈17.0 MB > 16 MiB. zstd -19 хуже. - Попутно (для будущего дизайна): без FORCE_FASTBOOT lk1st сначала вызывает lk2nd_scan_devices() — ext2-mount (RO в LK) всех leaf-разделов ≥ LK2ND_BOOT_MIN_SIZE (+boot) и поиск extlinux/extlinux.conf, затем boot_linux_from_mmc() из `boot`; при ошибке → «Could not do normal boot» → fastboot. Клавиши lk1st msm8916: RESIN (кнопка RESET Aurora) = KEY_VOLUMEDOWN → fastboot; GPIO107 (pull-up, active-low) = KEY_VOLUMEUP → recovery. # Сессия 24 — B5a (minimal direct boot proof): A1–A3 + подготовка A4 (2026-09-30 14:20–14:40) — **ЗАПИСЕЙ НЕТ, ждёт GO** Артефакты `b5a/` (SHA256SUMS, копия на 480s сверена), логи `logs/b5a/A3/*`, UART `logs/uart/b5a-a3-20260930-142659.*`. - A1 сборка: чистые клоны lk2nd 23.1 e9c8b217 (tag 23.1, git clean), тот же toolchain/команда. Контроль воспроизводимости: FORCE=1 → unsigned 58d20d78 (== прошитый), qtestsign 0eef3b5 `-v 3 aboot` → 003c484e, pad1M → **e4addbf8 == текущий aboot** (бит-в-бит). Кандидат: та же команда без `LK2ND_FORCE_FASTBOOT=1` → unsigned 33c452e4…, signed `aboot-lk1st-aurora-autoboot.mbn` 327196 B 7b3fb5b3…, **pad1M 3b8cd266…0f85**. config.h diff = одна строка `-#define LK2ND_FORCE_FASTBOOT 1`. Все .o без debug-info идентичны, кроме app/aboot/aboot.o (aboot_init: в FORCE-сборке lk2nd_boot/normal path выкинуты как мёртвый код; в autoboot — есть). Строка «Fastboot mode was forced…» в autoboot-бинарнике отсутствует (0 вхождений). - Normal boot flow (исходник, autoboot): multislot нет (нет *_a/_b) → keys (lk2nd device node не матчится: lk1st без LK2ND_COMPATIBLE, cmdline пуст → generic): VOL_UP = GPIO107 pull-up active-low → recovery (там lk2nd = fastboot); VOL_DOWN = PM8916 RESIN (кнопка RESET) → fastboot; обе → EDL; KEY_HOME → false. reboot mode = PON_SOFT_RB_SPARE (обнуляется при полном обесточивании). ABOOT_STANDALONE: devinfo/misc/BCB/ffbm/format-bit не читаются. → lk2nd_boot(): ext2-mount **только чтение** (ext2 fs_api без write; lk2nd bdev без write; bcache dirty не ставится) на leaf-разделах ≥16 MiB + boot, ищет extlinux; не найдено → boot_linux_from_mmc(): header ANDROID!, page 2048, imagesize ≤ partition, target_use_signed_kernel && !unlocked → не проверяется (standalone unlocked), gzip-распаковка в scratch, update_ker_tags_rdisk_addr (ABOOT_FORCE_* 0x80080000 → лог «0x80000000»/0x82000000/0x81E00000), dt_size=0 → dev_tree_appended → boot_linux. Тот же scratch-буфер/распаковка/адреса/appended-DTB, что в cmd_boot (fastboot boot), которым emmc1 PASS (сессия 13). Ошибка → «Could not do normal boot» → fastboot. - A2 кандидат boot: `linux/artifacts/ramboot-emmc1/aurora-emmc1.img` 93f61ce7… 9 631 744 B: ANDROID! v0, page 2048, kernel Image.gz+DTB 8 608 417 B (gzip → arm64 Image 22 945 800 B, image_size 0x1670000, text_offset 0; appended DTB 65 425 B = 23f6464f…, model «JZ08AU Aurora (RAM boot EMMC1)»), ramdisk gzip 1 017 983 B, dt_size 0, cmdline `earlycon console=ttyMSM0,115200n8 ignore_loglevel loglevel=8 rdinit=/init`. `b5a/boot-emmc1-16MiB.img` = образ + нули до 16 777 216 B → **e9579f33…ebff**. - A3 (живое чтение Firehose, 14:27–14:35): вход mm1 RAM-Linux → `reboot -f` → lk1st → `fastboot oem reboot-edl` → 9008. Все чтения rc=0, 15/15 == documented: boot 1342def7 (stock, == partitions/boot.bin), aboot e4addbf8, GPT p 6e850a5d / b 795952a1 (== S2 кандидаты побайтно), sbl1 6a661ec9, rpm 5a9b857b, tz 8481892f, hyp 1a963047, tzbak@305184 c6f7db26, recovery 0dfa60a0, modemst1 637a71d1, modemst2 9bb10190, fsg b0a3b7e4, fsc 5f70bf18, persist ee48a843. printgpt: boot 0xc18c000/0x1000000, aboot 0x8100000/0x100000. - Находка (не блокер B5a): warm `reboot -f` из mainline → lk1st иногда висит после `target_init()` до «MMC card» ~15 с → сброс SoC → вторая попытка OK (сейчас 14:27:22→14:27:37; ранее сессия 19 02:49:13→02:49:28). 2 из ~6 warm reboot; на cold boot не наблюдалось. Причина не установлена. - Подготовлено (НЕ запускалось): `b5a/A4-write.sh` (7cda9d18…; гейты → boot → readback cmp → aboot → readback cmp → сверка остальных с A3), `b5a/A4-rollback.sh` (47de97b1…). # Сессия 25 — B5a: запись boot+aboot и 3 cold boot (2026-09-30 14:40–14:59) — **B5a PASS** - Pre-GO offline/RO проверка extlinux (`logs/b5a/A4pre/scan-check.{py,out}`): lk2nd 23.1 ищет только `/extlinux/extlinux.conf`; scan list = GPT-разделы ≥16 MiB + boot (вложенных MBR-subdevice нет ни в одном, у mmc1 protective MBR не проходит validate). Живые Firehose-дампы modem 04ada779 (==эталон), system f09ded23, cache 817118e4, userdata 1e021a0c + A3 persist/recovery + кандидат boot; ext-FS: system/persist/cache/userdata — debugfs (RO) «File not found» для /extlinux и /extlinux/extlinux.conf, то же на backup session 1. modem (FAT), boot, recovery — не ext. - `b5a/A4-write.sh` (7cda9d18) без изменений, EDL-сессия из A3: гейты OK → boot `Wrote … sector 396384`, readback e9579f33 cmp **BOOT_MATCH** → aboot `Wrote … sector 264192`, readback 3b8cd266 cmp **ABOOT_MATCH** → GPT p/b, tzbak, sbl1, rpm, tz, hyp, recovery, modemst1/2, fsg, fsc, persist == A3. Логи `logs/b5a/A4/`. - Состояние флеша теперь: aboot = lk1st-aurora-autoboot (3b8cd266…, без FORCE_FASTBOOT); boot = emmc1 + нули (e9579f33…); остальное как после S3/сессии 4b. - Cold boot ×3 (полное обесточивание USB+АКБ пользователем, без хоста/fastboot/reboot -f), UART `logs/uart/b5a-cold{1,2,3}-*.log`: по одному `SBL1, Start` → SBL1 End → lk1st `welcome to lk` → MMC → таблица block devices (== GPT) → `boot: Trying to boot from the file system` → decompress → appended DTB → PSCI v1.0 → `booting linux … ramdisk (1017983)` (~1.0 с от lk) → Linux 7.2.7 «JZ08AU Aurora (RAM boot EMMC1)», 4 CPU, 445132K/524288K, MemTotal 482692 kB, eMMC 27 разделов, EMMC-RO-SUMMARY 30/30 all_ro=YES, mmcblk0 writes 0, UDC configured, NCM ping 5/5 (~2.7 ms), shell по UART. 14:52 / 14:54 / 14:57 — **3/3 PASS**. Безвредно: `Failed detecting MMC/SDC @ slot2` (lk2nd опрашивает пустой SD-слот); окно UART ~280–820 мс lk повреждено (строка «Loading (boot) image» не читается). - Как попасть в fastboot теперь: зажать RESET (RESIN = KEY_VOLUMEDOWN) при включении (по коду; на железе не проверялось). Аварийно: HW EDL D+→GND. Откат: `b5a/A4-rollback.sh`. - B5b (extlinux/cache, exact golden mm1) НЕ начат — ждёт отдельного GO. # Сессия 26 — B5b (exact golden mm1 через extlinux): B1–B6 аудит + кандидат (2026-09-30 15:00–15:50) — **ЗАПИСЕЙ НЕТ, ждёт GO** Артефакты `b5b/` (SHA256SUMS), эмулятор и прогоны `b5b/emu/`. Плата: emmc1 Linux (B5a baseline), к flash только чтение. - B1 (исходник lk2nd 23.1): lk2nd_scan_devices() идёт по списку bio в порядке list_add_head → **userdata(p26), recovery(p25), cache(p24), persist, system, boot(p21), modem(p0)** (прочие <16 MiB пропускаются; wrp0 не leaf). Для каждого: fs_mount ext2 → lk2nd_try_extlinux("/extlinux/extlinux.conf"); **ничего не размонтирует**; find_mount/mount сравнивают префикс без границы «/» (ERR_ALREADY_MOUNTED) — до cache ничего не монтируется, конфликтов нет. ext2-драйвер LK: только rev≤1; ro_compat кроме sparse_super|large_file → mount -3; **incompat не проверяет** (extents/64bit/flex_bg/meta_bg/inline_data прочитает мусором); только прямые/IND/DIND/TIND блоки; group desc 32 B; каталоги линейно (dir_entry_2, filetype ок); write API нет. Парсер extlinux: ключи (регистр не важен) label, default, kernel|linux, initrd, append, fdt|devicetree, fdtdir, fdtoverlays; без DEFAULT → первый label; **FDT обязателен** (appended DTB в этом пути не используется); пути: абсолютный → "/" + path (// схлопывается), относительный → "/extlinux/"; нужны LF и завершающий \n (иначе «Failed to parse»). Загрузка: kernel файл → scratch 0x90000000 (256 MiB) → gzip (трейлер игнорируется) → kernel @DDR+text_offset(0), initrd @ROUNDDOWN(0x3200000−size,4K), DTB @initrd−2 MiB (max 2 MiB); kernel_max = tags_offset−kernel_offset. Любая ошибка до boot_linux → return → следующий раздел → «Bootable file system not found. Reverting to android boot.» → boot_linux_from_mmc(). Далее общий boot_linux() (как у Android-пути: update_device_tree, ASSERT при сбое DT). - B2 golden `linux/artifacts/ramboot-mm1/aurora-mm1.img` 38c960ef…: v0, page 2048, kernel @2048 8 658 738 B 0ff9c802 (= Image.gz-dtb: gzip 8 592 969 B 9c20a372 + appended DTB @file 8 595 017, 65 769 B a10056c5), ramdisk @8 660 992 11 944 942 B 250bf8ee, паддинги нулевые. Image 23 015 432 B 4603b02f, image_size 0x1680000, text_offset 0. Всё == build-артефактам mm1. Выбор: kernel-файл = **точный payload Image.gz-dtb**, fdt = точный appended DTB, initrd = точный initramfs, append = точный cmdline. - B3 cache: LBA 2133088, 262144 сект., 134 217 728 B (0x4118c000). Живой sha **817118e4** (Firehose A4pre + sha256 /dev/mmcblk0p25 на плате — совпали; поток nc префикс OK). ext4 (Android make_ext4fs): has_journal ext_attr resize_inode filetype **extent** sparse_super large_file **uninit_bg**, 4K, inode 256, UUID 57f8f4bc-…, 1554/32768 блоков, содержимое: /backup (пусто), /recovery/last_log (5836 B, stock recovery сессии 3), /recovery/last_install (0). Ценности нет; ≠ session-1 (6a8ab0bd). **Несовместим с lk2nd** (mount -3, extents). Backup: `b5b/backup/cache-current-817118e4.bin` (RO). - B4 кандидат `b5b/cache-extlinux-mm1.img` **409bbb11…14ed9**, 134 217 728 B, воспроизводим (`b5b/mkfs-candidate.sh` 045cc857: mke2fs 1.47.2 -t ext2 -O none,filetype,sparse_super, 4K, inode 128, 64 inodes, 1 group, фикс. UUID/hash_seed/время + debugfs sif времён). Файлы: /extlinux/extlinux.conf e14e9ad6 (173 B), /Image.gz-dtb 0ff9c802, /aurora-mm1.dtb a10056c5, /initramfs.cpio.gz 250bf8ee (+lost+found). inode flags 0x0 (block map, IND/DIND). e2fsck -fn rc=0. - Эмулятор `b5b/emu/lk2nd-scan-emu`: реальные boot.c/extlinux.c/util.c, lk2nd bdev wrapper/util, lib/bio, lib/partition, lib/fs, lib/fs/ext2, lib/bcache, lib/zlib_inflate из дерева 23.1 + шимы (bdev из образов по GPT A3, write→abort). S0 (текущий flash): таблица устройств == UART cold boot, mount rc: userdata/cache/persist/system −3, recovery/boot/modem −1 → Android boot (как на плате). S1 (кандидат): «Trying to boot 'mm1'» → boot_linux: kernel 4603b02f @DDR+0, image end +0x1680000, DTB a10056c5 @+0x249B000, initrd 250bf8ee @+0x269B000, cmdline точный. F1–F11 (нет conf/kernel/initrd/dtb, мусор, нет fdt, CRLF, нет \n, битый gzip, нули, битый sb) → все → «Reverting to android boot» (emmc1). - Не эмулируется (остаточный риск): зависание/краш LK на повреждённых метаданных; ASSERT в boot_linux (DT) → panic → EDL; ядро стартовало, но Linux упал — fallback нет. - Подготовлено (НЕ запускалось): `b5b/B5b-write.sh` c0ebd361, `b5b/B5b-rollback.sh` 72d3deb1. Вход в EDL — только HW (D+→GND). # Сессия 27 — B5b: запись cache + cold boot #1 PASS, cold boot #2 HANG (2026-09-30 15:27–15:42) — **STOP для анализа** - GO пользователя: заменить cache целиком. HW EDL (D+→GND) → `b5b/B5b-write.sh` c0ebd361 без изменений: Serial 0x, cache 0x4118c000/0x8000000, GPT==A3, boot e9579f33, aboot 3b8cd266, cache 817118e4 (pre) → `Wrote … sector 2133088` → readback 409bbb11 cmp **CACHE_MATCH** → GPT p/b, tzbak, boot, aboot, sbl1, rpm, tz, hyp, recovery, modemst1/2, fsg, fsc, persist == A3; modem, system, userdata == A4pre. Логи `logs/b5b/W/`, `logs/b5b/B5b-write.out`. - Cold boot #1 (`logs/uart/b5b-cold1-20260930-153540.log`): 15:36:57 SBL1 → lk1st → `booting linux @ 0x80000000, ramdisk @ 0x8269b000 (11944942), tags/device tree @ 0x8249b000` (адреса только extlinux-пути; == эмулятор; golden fastboot: 0x82000000/0x81e00000) → Linux `7.2.7-aurora-bam1 #5 … 04:59:18` (== golden в сессии 22), «JZ08AU Aurora (RAM boot BAM1)», 4 CPU (0-3), Memory 353708K/524288K (== golden), /proc/cmdline == APPEND, EMMC-RO 30/30, writes 0, NCM ping 5/5, shell, remoteproc offline, MM/rmtfs не запущены (штатно для mm1). **PASS.** Строка «Trying to boot 'mm1'» — в повреждённом окне UART lk 280–950 мс. Ещё 3 SBL1-старта (15:37:22, 15:37:37, 15:37:54) — выпадение аккумулятора (со слов пользователя, контакт нестабилен); все 3 тоже прошли extlinux → mm1; в зачёт не идут. - Cold boot #2 (`logs/uart/b5b-cold2-20260930-153935.log`): 15:41:10 SBL1 Start … QHEE/Image Loaded ×3, QSEE, **SBL1 End 15:41:11 → тишина** (нет «UART_DM Initialized»/ «welcome to lk»), USB не энумерируется (>40 с). Зависание ДО lk1st (TZ/qhypstub/ранний lk) — до любого чтения cache. Первый такой случай во всех UART-логах проекта (скан всех *.log: SBL1 End без lk — только этот). Причина не установлена (кандидат: нестабильный контакт АКБ). Ничего не писалось, отката не было. - Cold boot #2 повтор (АКБ закреплён) 15:43:50: SBL1 → lk1st → extlinux-адреса (0x8269b000/0x8249b000) → mm1: ядро #5 == golden, BAM1, CPU 0-3, 353708K, cmdline == APPEND, RO 30/30, writes 0, NCM 5/5, shell, remoteproc offline, MM/rmtfs нет. **PASS.** - Cold boot #3 (`logs/uart/b5b-cold3-20260930-154444.log`): 15:45:06 SBL1 Start → pm_device_init (Delta 17202 µs вместо обычных ~11.2–11.8 ms) → boot_config → sbl1_ddr_set_params → Pre_DDR_clock_init Delta → **тишина** (зависание внутри stock SBL1 до pm_driver_init/Image Load, т.е. до загрузки TZ/HYP/aboot и до чтения cache). 15:49:29 новый старт → SBL1 → lk1st → extlinux → mm1: все проверки как в #2 — **PASS**. - Итог наблюдений: все 6 загрузок, дошедших до lk1st, прошли extlinux → точный golden mm1. 2 ранних зависания (15:41 после SBL1 End; 15:45 внутри SBL1 DDR-init) — оба до кода/данных, изменённых в B5a/B5b; совпадают по времени с нестабильным контактом АКБ. Причина не доказана. - 15:49:29 — повторное обесточивание пользователем (подтверждено), не самовосстановление. - **B5b = PASS / CLOSED** (решение пользователя 2026-09-30). Baseline flash: aboot 3b8cd266 (lk1st autoboot), boot e9579f33 (emmc1, fallback), cache 409bbb11 (ext2 extlinux → exact golden mm1), остальное == A3. Power-on без хоста → mm1. - ОТКРЫТО (отдельный вопрос, без GO не исследуется): ранние зависания при включении до lk1st — 15:41 (после SBL1 End) и 15:45 (внутри SBL1 DDR-init, pm_device_init 17202 µs vs ~11.3–11.8 ms), на фоне нестабильного контакта АКБ. Также открыт warm reboot -f hang (сессия 24). # Session 28 — B6 RAM-only modem lifecycle (2026-09-30 16:09–16:47 on 480s clock) — **B6I NOT REACHED: re-attach alternates PASS/FAIL**. Nothing written to flash. Board: golden mm1 via extlinux (B5 baseline), a single Linux boot for the whole session. Scripts live only in board /tmp. Sources in `b6/` (SHA256SUMS), logs in `logs/b6/all/` (b6/c1..c6, aurora-modem.d/lifecycle.log, rmtfs.log, mm-*.log with IMSI masked), UART `logs/uart/b6-20260930-160910.log`. System clock set from 480s (`date -u -s @…`, RTC untouched) — for HTTPS only. - Reconstructed flow (Aurora 14–22 + JZ02 openrc/stopcycle/wwanfix + rmtfs v1.3 source): RO gates → `rmtfs -r -P -s -v` (with -s rmtfs itself writes "start"; on SIGTERM it does pwrite "stop" to remoteproc state and only then exits → MSS stops while rmtfs is still alive, rmtfs exits last) → MSS running (0.7 s) → wwan0qmi0+wwan0 (0.8 s) +2 s (JZ02 start_post guard) → [NEW gate] UIM card present + USIM ready → qmicli online (one successful SET; retries only on DeviceNotReady — the first 2–3 SETs ~3 s after MSS boot get DeviceNotReady(52)) → NAS registered+PS attached → kill qmi-proxy → udevd/dbus/polkitd/MM → MM modem detected (38–51 s) → MM state `disabled` is OK (session 22 pass 1: simple-connect enables it) → one simple-connect → IPv4 from bearer, /32 routes only. Stop: simple-disconnect → [NEW] `mmcli --disable` (low-power/detach) → delete our /32 routes, flush+down all wwan* → SIGTERM MM (+qmi-proxy) → BAM-DMUX suspended → SIGTERM rmtfs (MSS stop → exit). - Findings while debugging: this mmcli has no `--list-bearers` ("error: no actions specified" — also in session 22/JZ02 logs, so the JZ02 wwan-quiesce bearer check was a no-op); mmcli colours values even without a tty (`state: ESC[32mconnected`) → strip before grep; udevd rewrites /dev/disk/by-partlabel/* as relative links → use readlink -f. - PASS cycles (c1, c3, c5): registration 8–53 s, START OK 75–124 s; DNS (ya.ru, google via Beeline DNS), ping 77.88.8.8 3/3 and 1.1.1.1 3/3, HTTP ya.ru 302, HTTPS google 204 + 1.1.1.1 trace 200; STOP 4.0–4.6 s: bearer disconnected, routes/address removed, 0/8 wwan UP, MM/qmi-proxy/rmtfs gone, BAM-DMUX suspended, MSS offline; NCM ping OK. - All 6 harness cycles + 5 debug starts (11 MSS boots/stops in one boot): Failed to resume/-110/-22/EAGAIN/crash/fatal/watchdog/Oops = 0; `Channel already open: 0..7` on every MSS boot after the first (as on JZ02, harmless); eMMC writes_completed 0 / sectors_written 0; modemst1/2, fsg, fsc, persist == boot == B2 references; 30/30 eMMC devices getro=1. - **Blocker:** attach after MSS restart strictly alternates: c1 PASS, c2 FAIL, c3 PASS, c4 FAIL, c5 PASS, c6 FAIL (and the same across the earlier debug starts). FAIL = 250-99 LTE 'limited', PS detached, `not-registered-searching` / `registration-denied`, Forbidden no — the session 21 signature. Not fixed by explicit detach (c3→c4) or by 120 s re-attach holdoff (c5→c6). Every attach right after a successful session was rejected; every attach right after a rejected one succeeded. Hypothesis (not proven): "amnesic EFS" — with rmtfs -r, each rmtfs restart discards the RAM shadow (modem_fs2 write after attach), so every MSS boot presents the stale NAS context from disk (GUTI/KSI/NAS COUNT); the MME rejects it while it still holds the newer context, and a reject clears it. EMM reject cause not obtained (QMI GET has none). - Board final state: controller OFF, MSS offline, rmtfs/MM not running (udevd/dbus/polkitd left running), wwan all DOWN, USB NCM OK.