Sanitized research log, build/reproducibility docs, DTS, kernel configs, patches, initramfs sources, bootchain migration plans and test logs. B5 direct boot PASS; B6 modem lifecycle in progress. No dumps, NV/EFS, vendor firmware or device identifiers included.
964 lines
117 KiB
Markdown
964 lines
117 KiB
Markdown
# 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 <MAC>, полная таблица разделов = 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 <MAC>, host <MAC>), 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 <REDACTED>; IMSI <REDACTED> (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 <LTE IP> 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 <REDACTED>; IMSI <REDACTED> → 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> (cell-location TAC <CELL>), GCI <CELL>; 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 <CELL>, TAC <CELL>; RSRP −103 / RSRQ −17 / SNR −3.0. Ветка reject-диагностики (AT+CEREG/CEER) не понадобилась — AT-команды не отправлялись.
|
||
Сравнение с сессией 21 (denied): тогда serving PCI 390, ECI <CELL>, system-info TAC <CELL> (cell-location TAC <CELL>) — причина отказа не установлена
|
||
(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 <CELL>, TAC <CELL> (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("<mp>/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 в этом пути не используется); пути: абсолютный → "<mp>/" + path (// схлопывается), относительный → "<mp>/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.
|