uzbek-plus/README.md
q dddc11e57b B8: Wi-Fi (WCNSS/Pronto + wcn36xx + hostapd test AP) and persistent B8F cache
B8A audit, B8B Pronto remoteproc (fixed wcnss_mem 0x8b600000), B8C stock NV
(fixes Pronto startup watchdog), B8D cfg80211/mac80211/wcn36xx -> phy0/wlan0,
B8E wlan0 up + WPA2/CCMP test AP, B8F eMMC cache 857c9c30 with aurora-wifi
autostart: 3/3 class-A cold boots, AP up 76-94 s after power-on, LTE unaffected.
PSK, NV and PSK-bearing images are not published.
2026-10-02 22:55:20 +03:00

11 KiB
Raw Blame History

uzbek-plus — Project Aurora: mainline ARM64 Linux на LTE-модеме JZ08AU (MSM8916)

Плата JZ08AU-XPA-7J-R3 («Aurora»): Qualcomm MSM8916, 512 MiB RAM, eMMC 3.64 GiB, LTE-модем, Wi-Fi, дисплей. Стоковая прошивка — Android 4.4 (ядро 3.10). Здесь — журнал и воспроизводимые материалы перевода платы на mainline Linux 7.2.7 arm64, который загружается автономно с eMMC и поднимает LTE через ModemManager.

Это не прошивка «скачай и залей». Всё, что касается записи во flash, делалось на одном конкретном экземпляре, по одной стадии, с backup и readback-сверкой. Перед любой записью сделайте и проверьте полный backup СВОЕГО устройства (см. docs/QUICKSTART.md). Никогда не прошивайте NV/EFS-разделы (modemst1, modemst2, fsg, fsc, persist) с другого устройства — там калибровки RF и идентификаторы конкретного модема.

Статус (2026-10-03)

Подсистема Статус
ARM64 Linux (7.2.7, PSCI, 4 CPU) PASS
eMMC (HS200, строго read-only в Linux) PASS
USB NCM (gadget, 172.16.42.1/24) PASS
MPSS (modem remoteproc, rmtfs -r) PASS
QMI (rpmsg wwan ctrl) PASS
BAM-DMUX (wwan0) PASS
LTE registration PASS
LTE Internet (DNS/ICMP/HTTP/HTTPS) PASS
Direct boot с eMMC без хоста (B5) PASS / CLOSED
B6 — lifecycle модема (RAM) PASS / CLOSED
B6P — автозапуск модема из flash (persistent) PASS / CLOSED
B7 — время от сети (DMS/NITZ, без RTC) PASS / CLOSED
Wi-Fi (WCNSS/Pronto + wcn36xx, тестовая AP WPA2, автозапуск из flash) — B8 PASS / CLOSED (см. ниже)
Router stack (NAT/firewall/VPN) TODO
Дисплей в Linux TODO
Батарея / зарядка TODO

Рабочая цепочка загрузки (baseline B5)

Power → stock SBL1 → DB410c TZ (TZ.BF.3.0) → qhypstub → lk1st (aboot, autoboot)
      → cache: ext2 + extlinux/extlinux.conf → B8F (ядро b8d + DTB b8b + initramfs: модем, время, Wi-Fi) → ARM64 Linux → LTE + Wi-Fi AP
Fallback: extlinux не найден / не парсится / не грузится → Android boot image из раздела boot (emmc1 rescue)

Текущее содержимое flash на референсной плате (sha256, первые 8 hex):

раздел содержимое sha256
sbl1, rpm, DDR, sec stock (не менялись) sbl1 6a661ec9, rpm 5a9b857b
GPT stock + tz 512K→1M, tzbak перенесён в свободный промежуток @LBA 305184 primary 6e850a5d, backup 795952a1
tz DB410c TZ.BF.3.0-00714, дополнен нулями до 1 MiB 8481892f
hyp qhypstub, до 512 KiB 1a963047
aboot lk1st (lk2nd 23.1) autoboot, подписан qtestsign, до 1 MiB 3b8cd266
boot emmc1 rescue image (+ нули до 16 MiB) e9579f33
cache ext2 + extlinux + B8F (ядро 7.2.7-aurora-b8d, DTB b8b, initramfs B7C + Wi-Fi) 857c9c30 (откат: B7C 14fe453a → T4 9d3bc890 → B6P 9fea693a)
recovery lk2nd 23.1 (fastboot) 0dfa60a0
modem, NV/EFS, persist, system, userdata не менялись (Linux монтирует modem FAT только RO) —

Golden mm1 (Android boot image, для fastboot boot): aurora-mm1.img sha256 38c960ef…, ядро 7.2.7-aurora-bam1 #5. Все хэши целиком: b5a/SHA256SUMS, b5b/SHA256SUMS, bootchain-migration/SHA256SUMS, linux/*/SHA256SUMS, docs/BLOBS.md.

B8 status — Wi-Fi PASS (2026-10-03)

  • Pronto (WCNSS) через upstream qcom_wcnss remoteproc: штатный wcnss.mdt из RO-FAT modem, wcnss_mem фиксирован 0x8b600000/6 MiB, Iris qcom,wcn3620 (XO 19.2 MHz подтверждён прошивкой); штатный NV WCNSS_qcom_wlan_nv.bin из persist своего устройства (не публикуется). Без NV Pronto падает по Watchdog startup timeout каждые ~46 с.
  • Ядро: QCOM_WCNSS_PIL, CFG80211, MAC80211, WCN36XX built-in → phy0 (2.4 GHz, AP/managed) → wlan0.
  • Сервис aurora-wifi: после LTE START OK → WCNSS → wlan0 → hostapd 2.11 (тестовая AP, WPA2-PSK/CCMP, канал 6). PSK в репозитории нет (wifi.conf.in).
  • 3/3 холодных загрузки с eMMC без ввода: AP через 76–94 с после включения, телефон подключается и держит соединение, LTE не страдает.
  • Открыто: задержка кадров к клиенту в power save (у wcn36xx нет set_tim), нет regulatory.db (world 00), MAC 02:… из DT lk2nd.
  • Нет DHCP/NAT/DNS/firewall — это следующий этап (router stack). Материалы: b8/, logs/b8/, NOTES.md сессия 36.

B6P status — PASS

Implemented:

  • extlinux boot from cache (ext2, lk2nd 23.1 extlinux path; fallback — emmc1 из boot)
  • custom initramfs overlay поверх точных байтов golden mm1 (заменён только /init, добавлены контроллер, сервис, конфиг)
  • modem autostart: /init → /etc/init.d/aurora-modem start (без OpenRC), конфиг /etc/aurora/modem.conf
  • контроллер aurora-modem start|disconnect|stop|status: rmtfs -r -P -s → MSS → QMI → SIM → online → state machine регистрации (registered + PS attached, до 600 s) → udev/dbus/polkit/ModemManager → bearer → /32-маршруты; reconnect без перезапуска MSS; stop: bearer → routes → wwan down → MM → BAM-DMUX idle → MSS offline → rmtfs последним

Validation:

  • RAM (fastboot boot через RESET при включении): 3/3 загрузки, автозапуск, 3/3 reconnect без перезапуска MSS
  • 3/3 cold boots from flash (закреплённый АКБ): LTE registration 3.6–6.9 s, bearer established, data connectivity verified (DNS/ICMP/HTTP; HTTPS не требуется — часы 1970 до B7), clean shutdown verified
  • Работает с часами 1970 (RTC/NTP не трогались)

Safety:

  • eMMC writes: 0 (все блочные устройства getro=1, rmtfs -r держит EFS в RAM)
  • NV partitions unchanged (modemst1/2, fsg, fsc, persist — sha256 до/после каждой загрузки)
  • единственная запись во flash на этом этапе — cache с readback-сверкой; остальные разделы сверены с эталонами

Материалы: b6p/ (дизайн, preflight, сборка, скрипты записи/отката, тестовые скрипты), b6j/ (диагностика B6J–B6N), NOTES.md сессии 29–31.

Known issues

  • Early boot hangs before Linux startup (внутри SBL1 DDR-init, после SBL1, End, в lk1st target_init) — до чтения cache, не связано с B6P
  • Possible battery/contact instability: один сброс во время остановки модема, PMIC POFF reason = UVLO (under-voltage); с закреплённым АКБ не повторялся
  • Fast MSS restart may require investigation: повторная регистрация сразу после stop/start MSS в одном boot может не пройти
  • Единичные случаи (не воспроизведены): bearer поднят, но нет входящего трафика; зависание контроллера после online SET
  • Сигнал Beeline в месте установки маргинальный (RSRQ −13…−20 dB); регистрация иногда идёт через limited / соседние соты

Структура репозитория

путь что
NOTES.md подробный журнал всех сессий (sanitized)
docs/QUICKSTART.md порядок действий для второго устройства
docs/RECOVERY.md аппаратный EDL, откаты
docs/BUILD.md как пересобрать lk1st/lk2nd, ядро, DTB, initramfs, boot image, cache-образ
docs/BLOBS.md проприетарные/device-specific файлы, которых нет в репозитории: имя, sha256, назначение, где взять свой
linux/ DTS, фрагменты и полные kernel config, патч, init/скрипты initramfs, списки пакетов + APK sha256
lk2nd-build/, b5a/ запись сборки lk2nd/lk1st, config.h diff, скрипты записи/отката B5a
b5b/ генератор ext2/extlinux-образа cache, эмулятор сканирования lk2nd (исходники + результаты)
bootchain-migration/ preflight, write plan, редактор/валидатор GPT
b6/ первый RAM-only прототип контроллера (сессия 28)
b6j/ диагностика B6J–B6N: rmtfs-аудит, AT/QMI-снимки, state machine регистрации, харнессы
b6p/ persistent-интеграция: контроллер, сервис, конфиг, сборка initramfs/boot.img/cache, эмулятор, запись/откат, тесты
b7/ B7: время от сети (DMS/NITZ), проверка по NTP, cache B7C
b8/ B8: Wi-Fi — аудит, WCNSS/NV, wcn36xx, hostapd, сервис aurora-wifi, cache B8F (запись/откат/эмулятор)
tools/ утилиты: UART-логгер, Sahara probe, распаковка boot.img, sanitizer публикации
logs/ sanitized логи: UART, QMI, ModemManager, EDL, результаты тестов
android/ снимок стокового Android (getprop, gpio, input, leds, …), sanitized

Что намеренно не опубликовано

Полные дампы eMMC и разделов, NV/EFS (modemst1/2, fsg, fsc), persist, userdata, файлы прошивки модема, стоковые SBL1/RPM/TZ/aboot/boot/recovery/system, Firehose-программер, DB410c TZ, собранные бинарники, Wi-Fi NV (WCNSS_qcom_wlan_nv.bin), PSK тестовой AP и образы с ним (B8F initramfs/cache). Идентификаторы (IMEI, IMSI, ICCID, eMMC CID/serial, Sahara serial, MAC, номера сот, cookies) заменены на <PLACEHOLDER>. Как это сделано — tools/publish-sanitize.py; значения идентификаторов в репозиторий не попадают.