uzbek-plus/NOTES.md

146 KiB
Raw Permalink Blame History

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 <EMMC_CID>, PSN 0x<EMMC_SERIAL>, 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_SERIAL> = eMMC PSN, не серийник чипа. Sahara chip serial = 0x<SAHARA_SERIAL>.

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<SAHARA_SERIAL> 0x<JZ02_SAHARA_SERIAL>

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 <stock boot.img> (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=<EMMC_SERIAL> 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 <EMMC_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<SAHARA_SERIAL> (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=<EMMC_SERIAL> 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 <EMMC_SERIAL> (тот же VID:PID, что stock LK fastboot — различать по getvar product).
  • fastboot: devices → <EMMC_SERIAL>; 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<SAHARA_SERIAL>, 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 <EMMC_SERIAL>; 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<SAHARA_SERIAL>; 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<SAHARA_SERIAL>; 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: <EMMC_SERIAL>; 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 / <EMMC_SERIAL>» (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 <EMMC_CID> (== Android sysfs), serial 0x<EMMC_SERIAL>, 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) <PUBLIC_IP> (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 @<epoch 480s> (только системное время ядра, 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 ищет только <part>/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<SAHARA_SERIAL>, 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.

Session 29 — B6J1 capture registration-denied + B6J2 rmtfs audit (2026-09-30 17:37–17:51 MSK) — J1 captured, J2 GO, J3 NOT STARTED (board hung in SBL1 on warm reboot). Nothing written to flash.

Scripts b6j/ (SHA256SUMS; b6j-in1.tar 16a53ac1…): controller copy with RAM-only knobs MODEM_STOP_DISABLE / MODEM_RMTFS_PERSIST / MODEM_REG_SNAP (original b6/aurora-modem untouched), j1.conf / j3.conf, j-snap.sh (QMI GET + AT read queries, AT port opened ONCE), j-run.sh (j1|j3 harness). Logs logs/b6j/j1/ (j1.tar 2c60d128…), UART logs/uart/b6-20260930-160910.log (same boot as session 28, uptime 6694–7003 s).

  • J1 lifecycle = minimal proven: rmtfs -r -P -s -v per cycle, no MM --disable / qmicli low-power in stop, holdoff 0, MODEM_KEEP_ON_FAIL=1. c1 PASS (reg 4.2 s, B3/1275 PCI 55 TAC ECI , DNS/ICMP/HTTP/HTTPS PASS, stop rc=0, rmtfs writes 0). c2 FAIL: DMS online 3.2 s → 180 s not-registered-searching, PS detached; snapshot at +0.5 s, stack kept, then clean stop rc=0 (0.5 s).
  • c2 snapshot: serving-system limited, Forbidden no, CS/PS detached, PLMN 250-99; system-info LTE Status limited / True Status none / Domain none, Cell 156465929 TAC , SIM reject info 'available' (SIM not invalidated → not EMM #3/#6/#7/#8); signal RSRP −107 RSRQ −20 SNR −8.8; cell-location: B1 EARFCN 550 PCI 35 TAC ECI (neighbours 149/308/147/187), rf-band eutran-3/1275 (inconsistent with cell-location); DMS online; UIM slot1 present, USIM ready, PIN1 disabled. MM not running (fail precedes MM stage) → mmcli n/a.
  • AT (wwan0at0, one open/close, 3 s spacing, raw in c2/snap/at.txt): AT OK; +CEREG: 0,2; +CGREG: 0,2; +CREG: 0,2; +CGATT: 0; +COPS: 0; +CEER: No cause information available. CEREG n=0 → no reject cause; AT+CEREG=5 NOT sent (per instruction).
  • rmtfs: c1 (PASS) 0 EFS writes; c2 (FAIL) 1 write iovec 0 / write 0:1792 (modem_fs1, whole image) after the reject. Session 28: writes by caller 0 ×6, caller 1 ×2.
  • Safety: NV modemst1/2, fsg, fsc, persist before == after (== B2 refs); eMMC writes 0/0; BAM-DMUX suspended; dmesg Failed to resume/-110/-22/EAGAIN/SSR = 0; NCM OK.
  • J2 (b6j/J2-rmtfs-audit.md): in v1.3 the -r shadow_buf lives in a static rmtfds[] slot; storage_open() returns the existing slot for the same node+path without re-reading; BYE/DEL_CLIENT are no-ops; ENETRESET loop keeps storage; only QMI CLOSE (never sent by this modem: 0 in 11+ boots) or process exit frees it → a long-lived rmtfs keeps MSS EFS writes across MSS restarts; backing partitions are re-read only by a new rmtfs process. GO.
  • J3 start: reboot -f at 17:47:07 → SBL1 log stops after Pre_DDR_clock_init (no USB device on 480s, >4 min) = the known early pre-lk hang. Needs a physical power-cycle. J3 not run.

Session 29b — B6J3 long-lived rmtfs (2026-09-30 18:01–18:10 MSK) — 3 PASS → FAIL on cycle 4; rmtfs hypothesis NOT supported. B6 stays OPEN.

User power-cycled the board after the SBL1 hang; fresh golden mm1 (Linux 7.2.7-aurora-bam1), clock from 480s. Logs logs/b6j/j3/ (j3.tar d8b61543…), b6j-in2.tar. Baseline: 30/30 eMMC getro=1, /firmware vfat ro, MSS offline, no rmtfs/MM/qmi-proxy/udevd/dbus, NV == B2 refs, eMMC writes 0, NCM OK. ONE rmtfs -r -P -v (pid 1273, no -s), MSS start/stop via remoteproc sysfs, no MM disable, holdoff 0, KEEP_ON_FAIL=1.

| c | reg | latency | cell (TAC/PCI/ECI, ch) | signal at reg | data | rmtfs writes | | 1 | PASS | 6.2 s | 7661/55/156465929 B3 1275 | RSRQ −15 SNR −2.2 | PASS 10.45.164.101 | 0 | | 2 | PASS | 2.1 s | same | RSRQ −16 SNR −1.0 | PASS 10.44.134.61 | 0 | | 3 | PASS | 8.2 s | same | RSRQ −19 SNR −5.8 | PASS 10.83.20.58 | 0 | | 4 | FAIL | >180 s registration-denied | PLMN 250-01 (MTS), roaming on, Forbidden yes, TAC PCI 47 ECI B3 1425 | RSRP −84 SNR 9.8 | not run | 1 (fs1, after reject) | All cycles: stop rc=0, BAM suspended, MSS offline, rmtfs pid constant, Failed to resume/-110/-22/EAGAIN/SSR 0, NCM ok, eMMC 0/0. End: MSS offline → rmtfs-stop rc=0; NV before == after; eMMC writes 0. rmtfs.log: 1× "registering services" for 4 MSS boots; each boot re-OPENs fs1/fs2/fsg/fsc → same caller ids 0..3 (slot reuse, no re-read per J2); 0 writes in c1–c3 → the shadow equalled the on-disk image up to c4, i.e. MSS saw exactly the EFS content it saw in the old per-cycle-rmtfs flow. c4 AT: +CEREG 0,2 / +CGREG 0,2 / +CREG 0,2 / +CGATT 0 / +COPS 0 / +CEER "No cause information available" (CEREG=5 not sent). SIM reject info 'available'.

Interpretation: PASS→PASS (twice) breaks the strict alternation, but a FAIL still occurs with one rmtfs process, and before it the RAM EFS never diverged from disk → the "amnesic EFS" mechanism cannot explain it. Hypothesis rejected. Two FAIL signatures across sessions 21/28/29: (A) HPLMN 250-99 cell TAC , Status limited, Forbidden no, not-registered-searching (s28 c2/c6 + debug, J1 c2; RSRQ −20, SNR −8.8); (B) foreign PLMN camp, registration-denied, Forbidden yes, roaming (s28 c4: 250-02; J3 c4: 250-01, strong cell), s21: TAC . Beeline radio at the board is marginal even on PASS (RSRQ −15…−20, SNR −1…−8), a strong foreign-PLMN cell exists. Cause of (A) still unknown (no EMM cause obtainable with n=0). Nothing persistent was changed; no retry workaround, no T2.

Session 29c — B6K reject-cause capture (2026-09-30 18:17–18:21 MSK) — FAIL on cycle 1; AT+CEREG=5 / AT+CGREG=3 → ERROR; no numeric cause. STOP.

Same boot as 29b. Lifecycle fixed for the whole series = J1 variant (rmtfs -r -P -s -v per cycle, no MM disable/low-power, holdoff 0, KEEP_ON_FAIL=1)

  • RAM-only hooks: MODEM_HOOK_PRE_ONLINE (k-at.sh gate), MODEM_HOOK_PRE_MM (k-at.sh close). b6j-in3.tar a884ce31…; logs logs/b6j/k/ (k.tar f15b06b7…). Baseline: 30/30 RO, MSS offline, rmtfs/MM/qmi-proxy absent, wwan0–7 down, BAM suspended, NCM ok; NV hashed by harness (before == after).
  • k-at: wwan0at0 opened once at 969.69 (MSS up + wwan0qmi0 + 2 s), held until the FAIL queries, closed 1181.73. Raw: c1/at/at.clean.txt. AT OK; AT+CEREG=5 → ERROR; AT+CGREG=3 → ERROR (no other values tried); pre-online: +CEREG: 0,6 / +CGREG: 0,6 / +CREG: 0,6. DMS online SET at 981.95 (first SET accepted, 0.1 s — no DeviceNotReady this time because the AT setup delayed it ~12 s). No URCs during the 180 s (n=0). FAIL queries: +CEREG 0,2 / +CGREG 0,2 / +CREG 0,2 / +CGATT 0 / +COPS 0 / +CEER: EMM attach failed.
  • QMI at FAIL: controller saw 'registration-denied' at 1162.24; snapshot 0.5 s later 'not-registered-searching', PS detached, PLMN 250-99, Forbidden no, Status limited, True Status limited-regional, Domain camped, SIM reject info available; cell ECI PCI 390, B3 EARFCN 1275, system-info TAC 41028 vs cell-location TAC ; RSRP −101/−102, RSRQ −18, SNR −3.0; neighbour PCI 55 (the PASS cell) RSRP −102.1 RSRQ −18.2. DMS online; USIM ready. = exactly the session-21 FAIL cell (PCI 390, ECI , TAC /7661).
  • rmtfs: 1 write (fs1, after the failure) → RAM shadow only. eMMC 0/0, NV unchanged, BAM suspended, dmesg errors 0, NCM ok; MSS offline, rmtfs exited.
  • Observation (not proven): FAIL cells carry TAC (s21 PCI 390 Beeline; J3 c4 250-01; now PCI 390 Beeline); PASS cell PCI 55 ECI TAC .

Session 29d — B6L passive recovery observation (2026-09-30 18:39–18:43 MSK) — Scenario A: self-recovery PCI 390 → PCI 55, registered + PS attached, no intervention. STOP.

Same boot. Lifecycle = J1 variant (l.conf == j1.conf: rmtfs -r -P -s -v per cycle, minimal stop, holdoff 0, KEEP_ON_FAIL=1), no AT hooks. Observer b6j/l-obs.sh (QMI GETs + AT read queries; wwan0at0 opened once for the whole observation; 15 s period, 900 s max, stop 1 sample after PASS). b6j-in4.tar 8f99b548…; logs logs/b6j/l/ (l.tar 9c9e7dbc…), timeline l/c1/obs/timeline.tsv (TAC/ECI per getter kept in separate columns).

  • Baseline: checksums OK, 30/30 RO, MSS offline, rmtfs/MM absent, BAM suspended, NCM ok.
  • Cycle 1 (first startup attempt): DMS online at 2276.21 → 180 s timeout at 2456.53 'not-registered-searching'. No cleanup; MSS/rmtfs/radio untouched, MM not started.
  • t=0 (2457.24): ss not-registered-searching, PS detached, 250-99, limited, Forbidden no; si limited / limited-regional / camped, si ECI , si TAC ; cl PLMN 25099, cl TAC , cl ECI , EARFCN 1275, PCI 390; RSRP −100 RSRQ −19 SNR −3.4; AT +CEREG 0,2 +CGREG 0,2 +CREG 0,2 +CGATT 0 +COPS: 0,0,"Beeline beeline",9.
  • t=15 s (2472.28): ss registered, PS attached, available; si available / domain ps, si ECI , si TAC ; cl TAC , cl ECI , EARFCN 1275, PCI 55; RSRP −100 RSRQ −19 SNR −1.6; AT +CEREG 0,1 +CGREG 0,1 +CREG 0,0 +CGATT 1 +COPS: 0,0,"Beeline beeline",7. t=35 s: unchanged (registered/attached, PCI 55). → recovery happened between 2461.4 and 2472.3 = 185–196 s after DMS online, i.e. just after the controller's T_REG=180 s gives up.
  • Only GET/read queries were issued during the window (QMI via qmi-proxy, AT read queries); no mode/selection change.
  • Safety: MSS running throughout, BAM suspended, dmesg errors 0, NCM ok every sample, eMMC 0/0; clean stop rc=0 → MSS offline → rmtfs exited; NV before == after. rmtfs: 1 write (fs1) in RAM shadow.
  • Interpretation: failures are cell selection/registration timing on marginal Beeline coverage (initial camp on PCI 390 whose system-info reports TAC / ECI ≠ cell-location TAC / ECI ; attach fails, "EMM attach failed"), and the modem recovers by itself by reselecting PCI 55. The lifecycle is not the direct cause. Earlier "FAIL" verdicts may partly be an artefact of the 180 s registration timeout.

Session 29e — B6M registration state machine, 6-cycle target (2026-09-30 18:49–18:57 MSK) — STOP on cycle 2: REGISTRATION_TIMEOUT (360 s). 1/2 PASS. B6 OPEN.

Same boot. Lifecycle = J1 variant + MODEM_REG_SM=1, T_REG=360 (m.conf; b6j-in5.tar 3f3cebfb…): 3 s poll of NAS serving-system + system-info; cell-location + signal only on state/cell change → reg-trans.tsv; immediate FAIL only for local errors (MSS, qmi dev, rmtfs, SIM, BAM error, dmesg crash/wdog, usb0 ping). Logs logs/b6j/m/ (m.tar 3cac04d4…; m-table.tsv, c*/reg-trans.tsv). Baseline: checksums OK, 30/30 RO, MSS offline, rmtfs/MM absent, BAM suspended.

  • c1 PASS: searching → t+3.5 s limited/limited-regional camped PCI 55 → t+6.9 s registered + PS attached (PCI 55, TAC ); 0 denied; bearer 10.42.49.49; DNS/ping 3+3/HTTP 302/HTTPS 204+200; stop rc=0 (4.0 s), BAM suspended.
  • c2 (started ~13 s after c1 stop) REGISTRATION_TIMEOUT: 12 transitions, 1 registration-denied, never registered. Path (PCI): 55 (250-99, limited-regional, camped) → 47 (250-01 MTS, TAC , denied, RSRP −83) → 55 → 64 (250-20 Tele2, TAC , cl TAC ) → 55 → 149 → 147 (Beeline B1/550) → 55 → 187 → 149 → 55. On PCI 55 the whole time: limited, True Status limited-regional/none, PS detached; RSRP −99…−113, RSRQ −12…−17, SNR −2…−5. PCI 390 never seen. At 360 s: AT +CEREG 0,2 / +CGREG 0,2 / +CREG 0,2 / +CGATT 0 / +COPS 0 / +CEER: EMM attach failed; Forbidden no; SIM reject info available; DMS online; USIM ready.
  • Safety: no local failure; dmesg errors 0; NCM ok; eMMC 0/0; NV before == after; after STOP MSS offline, rmtfs exited, BAM suspended.
  • Consequences: (1) B6L "PCI 390 is the bad cell" is not sufficient — attach also fails for >360 s while camped on PCI 55, the PASS cell. (2) Pattern again: a quick re-attach right after a successful session (MSS stop without detach, ~13 s gap) failed (same as s28 c1→c2, J1 c1→c2); J3 c1→c2→c3 were counter-examples. (3) 'limited-regional' on TAC is consistent with a TA-restriction type reject, but no EMM cause is available. (Harness row label ">180s" is stale text; the deadline was 360 s. init_pci column '-' = first transition row had no cell yet; real initial PCI 55.)

Session 29f — B6N1 long-lived MSS, 6 bearer cycles (2026-09-30 19:02–19:06 MSK) — N1 PASS 6/6

Same boot (warm-hung + power-cycled boot of 18:01). New RAM-only: aurora-modem disconnect (simple-disconnect, our /32 routes, flush+down all wwan*, wait BAM suspended; MSS, rmtfs, MM and DMS radio stay up); start with rmtfs+MSS+MM alive reuses them and only simple-connects. n.conf = j1.conf + MODEM_REG_SM=1, T_REG=600. Harness b6j/n-run.sh (b6j-in6.tar d5b551b5…). Logs logs/b6j/n1/ (n1.tar 7be48a4a…, n-table.tsv).

  • One MSS start (rmtfs -r -P -s -v pid 25000): searching → t+3.6 s registered + PS attached, PCI 55 TAC , 0 denied, no reselection.
  • 6 bearer cycles with MSS/rmtfs/MM (pid 25486) never restarted: connect rc=0 (cycles 2–6 ≈ 6 s), IPv4 10.38.215.205 each time (network kept the default bearer), DNS ok, ping 3+3, HTTP 302, HTTPS 204+200, disconnect rc=0, stale routes 0, wwan none UP / no address, BAM suspended after each disconnect, NCM ok, eMMC 0/0, dmesg errs 0.
  • Shutdown: stop rc=0 3.7 s (MM stop → BAM suspended → SIGTERM rmtfs → MSS offline → rmtfs exited last). NV before == after; eMMC w=0 s=0.

Session 29g — B6N2 cold boots (2026-09-30, user power cycles; driver b6j/n2-boot.sh on 480s, logs logs/b6j/n2bK/)

  • Boot 1 (power-on 19:08, uptime 0 min at baseline): 30/30 RO, /firmware ro, MSS offline, no daemons, NV == refs. One MSS start → registered + PS attached t+3.6 s, PCI 55 TAC (RSRP −100 RSRQ −15 SNR −1.4), 0 denied, no reselection; bearer 10.46.102.140; DNS ok, ping 3+3, HTTP 302, HTTPS 204+200; disconnect rc=0; clean stop rc=0; NV unchanged, eMMC 0/0, dmesg errs 0, NCM ok. PASS (n2b1.tar 360251b8…).
  • Boot 2 (power-on 19:11, uptime 0 min): baseline identical to boot 1 (30/30 RO, fw ro, MSS offline, no daemons, NV == refs). One MSS start → t+3.5 s limited/limited-regional camped PCI 55 → t+41.6 s limited on 250-20 (Tele2) PCI 231 EARFCN 100 → t+54.4 s registered + PS attached PCI 55 TAC (RSRP −102 RSRQ −17 SNR −4.2); 0 denied, 2 reselections; bearer 10.40.197.148; DNS ok, ping 3+3, HTTP 302, HTTPS 204+200; disconnect rc=0; stop rc=0; NV unchanged, eMMC 0/0, dmesg errs 0, NCM ok. PASS (n2b2.tar 48ffc4fb…).
  • Boot 3: user's power cycle; while re-plugging, the USB-C cable was briefly pulled → two power-ons (19:15:34 and 19:16:03, both from SBL1 Start), nothing run in either; the test ran on the 19:16:03 boot (uptime 0 min at baseline, same baseline as boots 1–2). One MSS start → t+6.8 s registered + PS attached on PCI 149 (Beeline B1 EARFCN 550, TAC , ECI ); the signal reading at that moment was a placeholder (−140 dBm / 0 dB / −18.4 dB = not measured yet); 0 denied; bearer 10.36.246.137; DNS ok, ping 3+3, HTTP 302, HTTPS 204+200; disconnect rc=0; stop rc=0; NV unchanged, eMMC 0/0, dmesg errs 0, NCM ok. PASS (n2b3.tar 3896a0c4…).
  • B6N result: N1 6/6 + N2 3/3 → B6 RAM lifecycle PASS (per user's criteria; rapid MSS restart / re-attach reliability is a separate, non-blocking item). Registration latency on cold boots: 3.6 / 54.4 / 6.8 s (min 3.6, median 6.8, max 54.4); N1 3.6 s. Transient denied: 0 in all N runs. No SSR/watchdog, no BAM -110/-22/EAGAIN, NV unchanged, eMMC writes 0, USB management never lost. Nothing persistent was integrated.

Session 30 — B6P persistent integration P0–P5 (2026-09-30) — candidate built, nothing written; P6 waits for fastboot entry

Details b6p/B6P-DESIGN.md; build b6p/build-candidate.sh; diffs b6p/diff-b6n-vs-b6p.diff, b6p/diff-old-b6-vs-b6p.diff; copy on 480s ~/doc/modem/jz08-aurora/b6p.

  • P0: production controller = proven b6j/aurora-modem (aa9e9aa2, B6N) minus diagnostic code; config /etc/aurora/modem.conf; state /run/aurora-modem.
  • P2: golden mm1 has NO OpenRC; PID 1 = custom busybox /init. User decision: no OpenRC, one /etc/init.d/aurora-modem started from /init after NCM (only if EMMC_RO_OK and B1_OK); cmdline kill switch aurora.modem=off.
  • P5: b6p/out/aurora-mm1-b6p.img 20 617 216 B 18a25e39…9090: golden kernel/header/cmdline, ramdisk = golden initramfs.cpio.gz (exact bytes) + overlay gzip member 651fc826 (REPLACES /init 5db9dc7e→9d6694fb; NEW /usr/sbin/aurora-modem 6e922dec, /etc/init.d/aurora-modem 533f47ea, /etc/aurora/modem.conf 6ffb206e). mkbootimg.py reproduces golden 38c960ef bit-for-bit. Golden initramfs not rebuildable from tree (mtimes, b4b2-mm edited).
  • P6 entry (lk1st autoboot source, aboot.c:5584–5598): PM8916 RESIN (Aurora RESET button = KEY_VOLUMEDOWN) pressed when lk1st starts → fastboot; GPIO107 (VOLUMEUP) must NOT be pressed (both → dload). Not yet tried on hardware.
  • P6 PASS (2026-09-30 20:19–20:23, UART same log file; logs/b6p/p6/ p6.tar 13f521fa, logs/uart/b6p-p6-fastboot.txt): RESET held at power-on → lk1st fastboot: processing commands (18d1:d00d, serial <EMMC_SERIAL>, product lk1st-msm8916) — RESIN fastboot entry works on hardware. fastboot boot b6p/out/aurora-mm1-b6p.img (18a25e39) rc=0 → Linux #5 BAM1, EMMC-RO 30/30, B1_OK=1, aurora-modem: starting at t=9.5 s, clock 1970 (not set). Autostart: MSS 0.7 s → registered + PS attached t+3.6 s (PCI 390, TAC , ECI ) → MM detected 40.2 s → connect → wwan0 10.80.93.64/25, START OK 62.8 s. Data on autostart bearer: DNS ok, ping 3+3, HTTP 302 (HTTPS skipped: clock 1970, per P4). 3 × (disconnect rc=0 → 0 routes, no wwan UP, BAM suspended, MSS/rmtfs 1043/MM 1535 unchanged → start/reconnect → data PASS, same IPv4). Service stop rc=0 (4.0 s: MM → BAM → MSS offline → rmtfs last). NV == /tmp/nv-before, eMMC 0/0, dmesg errs 0, NCM ok. Test tools only pushed at run time (b6p/test/p-run.sh, p-datatest, curl), not in the image.
  • P7 boot 2 PASS (20:38–20:40; p7b2.tar 9c660c70): RESET-held power-on → fastboot → fastboot boot 18a25e39 rc=0 → autostart t≈10 s (clock 1970) → t+6.8 s limited/limited-regional camped PCI 390 → t+10.1 s registered + PS attached PCI 390 TAC → START OK 77.9 s, wwan0 10.81.4.117/30; DNS/ping 3+3/HTTP 302 PASS; service stop rc=0; NV unchanged, eMMC 0/0, dmesg errs 0, NCM ok.
  • P7 boot 3 PASS (20:44–20:46; p7b3.tar 78353764): autostart → t+6.9 s registered + PS attached PCI 55 TAC → START OK 75.6 s, wwan0 10.41.108.226/30; DNS/ping 3+3/HTTP 302 PASS; service stop rc=0 (4.0 s); NV unchanged, eMMC 0/0, dmesg errs 0, NCM ok. (MM log shows network NITZ time 2026-09-30 17:46:09 UTC — note for B7.)
  • P6/P7 RAM result: 3/3 candidate boots PASS (START OK 62.8 / 77.9 / 75.6 s; registration 3.6 / 10.1 / 6.9 s; 0 MSS retries), + 3/3 reconnects in P6.
  • P8: b6p/cache-extlinux-b6p.img 9fea693a… (mkfs-cache-b6p.sh, B5b recipe; B5b recipe re-verified to reproduce 409bbb11). lk2nd emulator: S3 boots 'b6p' (ramdisk 8dcb61c8 @+0x2699000, DTB @+0x2499000), F1–F11 → android boot (emmc1); harness regression == session 26.
  • P9: live RO hashes on the board: cache 409bbb11, boot e9579f33, aboot 3b8cd266, rest == A3, eMMC writes 0. Prepared (NOT run): b6p/B6P-write.sh 151c0498 (= B5b-write.sh with new hashes), b6p/B6P-rollback.sh 2d2532f0 (→ 409bbb11). Full list b6p/B6P-PREFLIGHT.md. STOP — waiting for GO for the cache write.

Session 31 — B6P cache write (2026-10-01, user GO, HW EDL) — CACHE_MATCH, B6P_WRITE_VERIFIED

b6p/B6P-write.sh 151c0498 unchanged: gates OK (loader, candidate 9fea693a, rollback image 409bbb11, 9008, serial, cache geometry, GPT == A3, boot e9579f33, aboot 3b8cd266, pre-cache 409bbb11) → Wrote b6p/cache-extlinux-b6p.img to sector 2133088 → readback 9fea693a == candidate (CACHE_MATCH) → GPT p/b, tzbak, boot, aboot, sbl1, rpm, tz, hyp, recovery, modemst1/2, fsg, fsc, persist == A3; modem, system, userdata == A4pre. Logs logs/b6p/W/, logs/b6p/B6P-write.out. Flash now: cache 9fea693a (extlinux → B6P), boot e9579f33 (emmc1 fallback), aboot 3b8cd266; rest unchanged. Rollback: b6p/B6P-rollback.sh (→ 409bbb11).

Session 31b — B6P persistent cold boot 1 (2026-09-30 22:00–22:12 on 480s clock) — boot path PASS, autostart/registration/bearer PASS, DATA FAIL. STOP.

  • Two power-ons (user): 22:00:55 and 22:05:25; both lk1st → extlinux 'b6p' (ramdisk @ 0x82699000 (11955862), tags/device tree @ 0x82499000 == emulator S3) → Linux #5, EMMC-RO 30/30, B1_OK=1, service autostart. No host action on the boot path.
  • 22:00 boot: controller reached SET ... online at t=13.4 s, then no further UART output at all for 4 min (no "DMS online", no REG line) until the 22:05 power cycle. Its /run logs are lost; cause unknown (controller/qmicli stall vs. board hang — NCM was not probed then). Modem may have gone online/attached before the cut.
  • 22:05 boot (tested, logs logs/b6p/pc1/, pc1.tar fd83a3fb; /run/aurora-modem incl. MM debug log in logs/b6p/pc1-run/, pc1-run.tar): t+3.6 s limited PCI 187 → t+38.7 s registered + PS attached PCI 147 (B1 EARFCN 550, TAC , RSRP −108) → MM → simple-connect → Bearer/1 wwan0 10.46.122.74/30 gw .73, DNS 10.10.22.1/194.186.191.1, MTU 1500 → START OK 107.2 s. Clock 1970. Data: nslookup ya.ru/google via 10.10.22.1 → timeout; ping 77.88.8.8 0/3, 1.1.1.1 0/3; routes correct (77.88.8.8 dev wwan0 src 10.46.122.74; usb0 intact). BAM-DMUX runtime active_ms 1251 → 14813 during the test (TX was handed to BAM), but no RX at all. MM data-path setup identical to passing cold boot B6N n2b1: WDA link layer 802-3 → raw-ip, Bind Data Port a2-mux-rmnet0 SUCCESS, Start Network OK, MTU 1500. No network-side disconnect during the test (only our Stop Network at 141.9 s, cm 2000). dmesg errors 0. Service stop rc=0; NV unchanged; eMMC 0/0; NCM ok.
  • Test tooling glitch: first pc1.tar fetch empty (nc: bind: Address already in use on port 9995 on the board); refetched OK. Not a device issue.
  • Not proven: user-plane dead with a correctly established bearer; differences vs all passes = cell PCI 147 (B1) and the preceding abrupt power cut of an online modem (22:00 boot). Same symptom family as JZ02 S9 PARTIAL (TX to BAM, zero RX).

Session 31c — B6P persistent cold boots 2–3 (2026-09-30 22:15–22:28) — pc2: REGISTRATION_TIMEOUT + spontaneous reset during rollback stop; pc3 PASS. STOP.

pc-boot.sh fixed (test side only): UART offset from last SBL1, Start, unique fetch port 9960+K, NCM alive-probe every 30 s (logs/b6p/pcK-alive.txt).

  • pc2 (user power-on 22:15:37): extlinux b6p → autostart → 600 s limited service on Beeline, never registered: reselections among PCI 55 / 147 / 308 (B3 1275 / B1 550), status limited (none/none), 0 denied → FAIL in RADIO_ONLINE: REGISTRATION_TIMEOUT after 600s → rollback full stop: wwan down, qmi-proxy stopped, BAM suspended, SIGTERM rmtfs 1045 at 22:25:59.377 → wwan ports disconnected → no further kernel output; 11 s later (22:26:10.78) SBL1 Start (batt_voltage=4199), i.e. a reset with no panic/watchdog message. NCM alive-probe OK up to 22:25:52. User did not report a power cycle at that time (to confirm). /run logs of pc2 lost.
  • pc3 (= the boot after that reset, 22:26:10): extlinux b6p → autostart → t+3.6 s registered + PS attached PCI 55 TAC → START OK 72.2 s, wwan0 10.47.193.46/30 → DNS/ping 3+3/HTTP 302 PASS → service stop rc=0; NV unchanged; eMMC 0/0; dmesg errs 0; NCM ok. PASS (pc3.tar 2569bacc).
  • Tally of persistent boots: boot path extlinux 'b6p' 4/4 (22:00, 22:05, 22:15, 22:26); modem result: 22:00 silent after online SET (cut by user), pc1 bearer up but no user-plane RX (PCI 147), pc2 no registration in 600 s + reset in stop, pc3 PASS (PCI 55).
  • Reset reason (read 22:30 on the 22:26 boot, read-only regmap debugfs of PM8916 PON 0x800–0x80F): PON_REASON1 0x808=0x10 → USB charger insertion; POFF_REASON2 0x80D=0x20 → UVLO (under-voltage lock-out); POFF_REASON1 0x80C=0x00; WARM_RESET_REASON1 0x80A=0x02 (PS_HOLD, probably stale). Decode per downstream qpnp-power-on.c (b6p/test/pon-decode.txt). ⇒ the 22:26 reset was a supply under-voltage power-off (then re-power from USB), not a kernel/SW reset — consistent with the known flaky battery contact during modem shutdown. pstore empty (no ramoops region in DT); /dev/watchdog present (qcom-wdt). Test side: p-run.sh now records PON regs at the start of every boot (p-test.tar rebuilt). User decision: keep B6P cache; fix battery + better RF; 3 more cold boots.

Session 31d — B6P cold boots with secured battery + moved antenna (2026-09-30 23:10–)

  • 23:10:47 power-on stalled inside SBL1 after Pre_DDR_clock_init (known early pre-lk hang; during user handling), 23:11:33 power-on OK.
  • pc4 PASS (pc4.tar e00707db): PON 0808=10 (USB), 080a/080c/080d=00 (clean power removal). extlinux b6p → autostart → t+3.6 s registered + PS attached PCI 55 (B3 1275, TAC ) → START OK 72.0 s wwan0 10.45.64.176/27 → DNS/ping 3+3/HTTP 302 → service stop rc=0; NV unchanged, eMMC 0/0, dmesg errs 0, NCM ok.
  • pc5 power-on 23:26:59: HANG after SBL1, End (QSEE Execution done), no "UART_DM Initialized"/"welcome to lk", no USB device, NCM never up (>10 min). Same signature as B5b 15:41 (hang between SBL1 End and lk1st) — before lk1st runs, i.e. before cache/extlinux/B6P image is read. Not a B6P runtime event. UART saved logs/b6p/pc5-hang-uart.txt. Early boot hangs so far: 15:41 (after SBL1 End), 15:45 + 23:10:47 (inside SBL1 DDR init), 23:26:59 (after SBL1 End). Needs a power cycle; boot 5 of the 3-boot series to be repeated.
  • pc5 retry (user power cycle ~23:40, UART logs/b6p/pc5b-uart.txt): 23:40:25 SBL1 → lk1st → extlinux b6p → Linux (EMMC-RO at 1.9 s) → 23:40:39 new SBL1 Start with no kernel message (Linux ≈13 s old, inside /init before USB/modem) → lk1st hangs after target_init() ~11 s (known lk hang) → 23:40:50 SBL1 → hang after SBL1 End (no lk, no USB, still at 23:41:41). batt_voltage 4197 mV at both SBL1 starts. Whether 23:40:39 was caused by the power-cycle handling is unknown. Pre-lk / early-boot failures are now frequent (23:10:47, 23:26:59, 23:40:39→50) and independent of the B6P image (all before cache is read, or before modem start).
  • pc5 PASS (power-on 23:43:49; pc5.tar d36f1f2d): PON 0808=10 (USB), 080d=20 (UVLO) latched from the preceding power-off (pc4 after a user cycle showed 00 — so the latched POFF depends on how power went away; not conclusive). extlinux b6p → autostart → t+3.6 s limited PCI 7 → t+6.9 s registered + PS attached PCI 55 (B3 1275) → START OK 55.2 s wwan0 10.82.175.12/29; radio after autostart PCI 147 B1 EARFCN 550, RSRP −103, RSRQ −14, SNR −1.2 → DNS/ping 3+3/HTTP 302 PASS (data OK on PCI 147, so pc1's dead user-plane is not simply "PCI 147") → service stop rc=0; NV unchanged, eMMC 0/0, dmesg errs 0, NCM ok.
  • pc6 PASS (power-on 23:45:57; pc6.tar b808a44a): PON 0808=10, 080d=20 (UVLO latched, as pc5). extlinux b6p → autostart → t+3.6 s limited PCI 7 → t+6.9 s registered + PS attached PCI 7 (B3 1275, TAC , ECI ) → START OK 64.4 s wwan0 10.82.7.27/29; radio after autostart PCI 390 B3 EARFCN 1275, RSRP −99, RSRQ −18, SNR −4.4 → DNS/ping 3+3/HTTP 302 PASS → service stop rc=0; NV unchanged, eMMC 0/0, dmesg errs 0, NCM ok.
  • Series with secured battery + moved antenna: pc4, pc5, pc6 = 3/3 PASS (registration 3.6 / 6.9 / 6.9 s; START OK 72.0 / 55.2 / 64.4 s; 0 denied; no reset during runtime/stop). Per user criteria: B6P persistent integration = OPERATIONAL. Separate open reliability issues (non-blocking for B6P): R1 UVLO power-off during modem/rmtfs shutdown (pc2, 22:26; PON decode) — not repeated with secured battery; R2 early boot hangs before lk1st / in lk1st (SBL1 DDR-init, after SBL1 End, lk target_init) and one unexplained restart 13 s into Linux (23:40:39) — all before modem start; R3 pc1 bearer up but no user-plane RX (not reproduced; PCI 147 later worked in pc5); R4 22:00 boot silent after online SET (cut by user; not reproduced); R5 rapid MSS restart re-attach quirk (from B6M).

B6P status — PASS (2026-10-01)

Implemented: extlinux boot from cache (9fea693a; rollback image 409bbb11), initramfs overlay on exact golden mm1 bytes, modem autostart (/init → /etc/init.d/aurora-modem, no OpenRC), aurora-modem controller (rmtfs → MSS → QMI → SIM → online → registration state machine ≤600 s → ModemManager → bearer; disconnect/reconnect without MSS restart; clean stop, rmtfs last). Validation: 3/3 RAM candidate boots, 3/3 cold boots from flash (pc4–pc6), LTE registration, bearer, DNS/ICMP/HTTP, clean shutdown. Safety: eMMC writes 0; NV partitions unchanged. Known issues: early boot hangs before Linux (SBL1 DDR-init / after SBL1 End / lk target_init); possible battery/contact instability (UVLO reset during modem stop, pc2); fast MSS restart re-attach needs investigation; single unreproduced cases (pc1 no RX, 22:00 stall after online SET); marginal Beeline RF at the install location.