# B8A — Wi-Fi / WCNSS read-only audit (Aurora JZ08AU, B7C) Дата: 2026-10-02. Система: Linux 7.2.7-aurora-bam1 #5, DT model «JZ08AU Aurora (RAM boot BAM1)», cache = B7C, uptime 23 мин, LTE/bearer работают. Канал: telnet 172.16.42.1 через 480s. Что было записано: только `/tmp/b8a*` на плате (tmpfs, RAM) и файлы в `logs/b8/b8a/`, `b8/b8a/` локально. DT, kernel, eMMC, firmware, modem stack, B7C cache не трогались; модули не грузились; reboot не было; интерфейсы не создавались. ## Таблица | Уровень | Найдено | Статус | Примечание | |---|---|---|---| | Hardware | MSM8916: встроенный WCNSS **Pronto** + внешний RF **Iris (WCN36xx)**. Сток Android: `wlan0` UP 192.168.100.1, MAC , hostapd + wcnss_service, `phy0` на `a000000.qcom,wcnss-wlan`; WCNSS FW CNSS.PR.1.4.2.C4-00084 | **PASS** (железо есть и работало) | Точная модель Iris **UNKNOWN**: в стоковом DT стоит generic MTP-узел `qcom,wcnss_wlan` с `qcom,has-autodetect-xo`, без имени чипа. Косвенно: FW caps без `DOT11AC` → скорее не WCN3680; WCN3620 vs WCN3660 не различить ни по DT, ни по логам | | DT | `/soc@0/remoteproc@a204000` = `qcom,pronto-v2-pil`,`qcom,pronto`, smd-edge `pronto` (edge 6, pid 4), `wcnss` (`qcom,wcnss`, WCNSS_CTRL) → `wifi` (`qcom,wcnss-wlan`, irq 145/146, local-mac-address **** от lk2nd по serial), `bluetooth`; `smp2p-wcnss`, `smsm/wcnss@6`, pinctrl `wcss-wlan-default-state` | **FAIL: `status = "disabled"`** | Отключено намеренно в нашем DTS (`linux/dts/msm8916-jz08-aurora-bam1.dts:45`). Также `reserved-memory/wcnss` disabled. Под `iris` **нет `compatible`** (upstream требует `qcom,wcn3620/3660/3660b/3680`, иначе «no matching compatible for iris»). Supplies vddxo/vddrfa/vddpa/vdddig/vddpx в узле есть | | Память | `wcnss_mem` dynamic 6 MiB в 0x86800000+128 MiB, disabled. Сток: `peripheral_mem` **0x8b600000 / 0x600000**. Сейчас 0x8b600000–0x8e6fffff = System RAM, mba @0x8e700000 | INFO | wcnss.mdt слинкован на 0x8b600000 (сразу за mpss_mem 0x86800000+0x4e00000), все LOAD-сегменты RELOCATABLE → динамическое размещение допустимо, но стоковый адрес свободен и известен | | remoteproc | Только `remoteproc0` = `4080000.remoteproc` (MPSS, mba.mbn, running). Нет `a204000.remoteproc` ни в platform devices, ни в `/sys/class/remoteproc` | **FAIL: WLAN remoteproc не существует** | `CONFIG_QCOM_WCNSS_PIL` is not set (и DT disabled) → драйвера `qcom-wcnss-pil`/`qcom-iris` нет. MPSS не перепутан: remoteproc0 — модем | | firmware | `/firmware/image/wcnss.mdt` + b00,b01,b02,b04,b06,b09,b10,b11 (FAT `modem` p1, RO); fw path = `/firmware/image`; sha256 == `firmware-fat/image` | **PASS** (есть) | Upstream имя по умолчанию `wcnss.mdt` → совпадает с путём, копировать не нужно. `/lib/firmware`, `/vendor/firmware` отсутствуют | | calibration / NV | Требуется `wlan/prima/WCNSS_qcom_wlan_nv.bin` (wcnss_ctrl NVBIN_FILE). В rootfs **нет**. Сток: `persist:/WCNSS_qcom_wlan_nv.bin` 29816 B sha256 `c6b71825…`; `system:/etc/firmware/wlan/prima/WCNSS_cfg.dat` 11322 B `68e31b4b…`; `WCNSS_qcom_cfg.ini` 9158 B `05588969…` (prima-only) | **FAIL (отсутствует в rootfs)** | Источник найден: раздел `persist` (mmcblk0p24, не смонтирован) и локальный дамп `partitions/persist.bin`. Без NV wcnss_ctrl не скачает NV → wcn36xx не стартует. `WCNSS_cfg.dat`/`cfg.ini` нужны только prima, не upstream | | kernel driver | `CONFIG_QCOM_WCNSS_CTRL=y` (rpmsg driver `qcom_wcnss_ctrl` зарегистрирован, устройств нет); `CONFIG_WLAN` not set → **нет wcn36xx**; `CONFIG_MODULES` not set (всё только built-in) | **FAIL** | lsmod пуст (ядро без модулей), `/lib/modules` нет. RPMSG_QCOM_SMD, QCOM_SMEM/SMP2P/SMSM, QCOM_SYSMON, MDT_LOADER, SCM = y (база готова) | | cfg80211 / mac80211 | `CONFIG_CFG80211` not set, MAC80211 нет; `CONFIG_WIRELESS=y`, `RFKILL=y` | **FAIL** | Нет `/sys/class/ieee80211`, `/proc/net/wireless`; regulatory db не нужен до cfg80211 | | userland | `iw`, `rfkill`, `ethtool`, `hostapd`, `wpa_supplicant` — absent | FAIL (позже) | Нужны для B8 AP-этапа, не сейчас | | wlan interface | `ip link`: lo, sit0, usb0, wwan0–7. **wlan0 нет**, rfkill пуст | **FAIL** | Следствие всего выше | dmesg (303 строки, весь буфер с 0 с): **ни одной** строки wlan/wcnss/pronto/iris/cfg80211/firmware-load для WLAN. Это не «ошибка», а отсутствие попытки: узел disabled + драйвера нет. Первая реальная точка обрыва — **DT `status="disabled"`**, сразу за ней (неявно, т.к. до неё не доходит) — **отсутствие `QCOM_WCNSS_PIL` в ядре**. Ошибки в dmesg вида `qcom-smsm mboxes`, `psci PC mode`, `qseecom untested` — старые, к WLAN не относятся. ## Цепочка ``` hardware Pronto + Iris WCN36xx (модель Iris UNKNOWN) PASS (сток Android: wlan0 AP работал) → DT remoteproc@a204000 / smd-edge pronto / wifi / iris FAIL status=disabled; iris без compatible; wcnss_mem disabled → remoteproc qcom_wcnss (pronto-v2) + qcom_iris FAIL CONFIG_QCOM_WCNSS_PIL=n → нет устройства remoteproc → firmware /firmware/image/wcnss.mdt+b* PASS на месте, имя совпадает с upstream default → NV wlan/prima/WCNSS_qcom_wlan_nv.bin FAIL нет в rootfs; источник = persist (p24) → ctrl qcom_wcnss_ctrl (rpmsg WCNSS_CTRL) built-in, нет канала → driver wcn36xx FAIL CONFIG_WLAN=n → phy cfg80211 / mac80211 FAIL CONFIG_CFG80211=n → wlan0 FAIL ``` **Реально дошли до:** hardware (доказан стоком) + DT-описание присутствует, но выключено. Firmware-блобы уже на месте. Цепочка в Linux не начинается вообще — ни одного probe-попытки WCNSS. ## Предлагаемый ОДИН следующий шаг — B8B (ждёт GO) **B8B: RAM-only проверка только Pronto remoteproc (без Wi-Fi стека).** Отдельный RAM-образ (RESET-held power-on → `fastboot boot`, eMMC и B7C cache не трогаются): - kernel: +`CONFIG_QCOM_WCNSS_PIL=y` (только это; cfg80211/wcn36xx — нет); - DT: `&wcnss` okay, `&wcnss_mem` okay с фиксированным стоковым `reg = <0x8b600000 0x600000>`, `&wcnss_iris` compatible (гипотеза `qcom,wcn3620` — 2.4 GHz-only, по FW caps без 11ac; регуляторы как в стоке); - firmware: существующий `/firmware/image/wcnss.mdt` (ничего не копировать), NV пока **не** добавлять. Критерий PASS: `remoteproc1` = a204000 `running`, появился rpmsg-канал `WCNSS_CTRL` на edge `pronto`, wcnss_ctrl получил version-ответ (версия FW в dmesg), ожидаемая ошибка только `Failed to load nv file …` (это и есть следующая граница). Параллельно MPSS/LTE/bearer не должны пострадать (проверка как в B7C). Открытый вопрос, влияющий на B8B: точная модель Iris (WCN3620 vs WCN3660/3660B). Самый надёжный read-only способ — маркировка чипа на плате (фото) — если есть возможность, это стоит сделать до B8B. ## Файлы - `b8a-dt.txt` — DT (повторный прогон `b8/b8a/b8a-dt.sh`: busybox find не входит в симлинк `/proc/device-tree` без `/`) - `b8a-kconfig.txt` (+ `config.full` = /proc/config.gz) - `b8a-modules.txt`, `b8a-firmware.txt`, `b8a-remoteproc.txt`, `b8a-net.txt` - `b8a-dmesg.txt` (+ `dmesg.full`) - `b8a-stock-ref.txt` — host-side: стоковый DT/Android/UART, хэши NV/cfg, wcnss.mdt program headers - скрипты: `b8/b8a/b8a-audit.sh` (на плате выполнена версия 671b9b0a… с багом пути DT; в файле уже исправлено), `b8/b8a/b8a-dt.sh`