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.
68 lines
8.9 KiB
Markdown
68 lines
8.9 KiB
Markdown
# 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 <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 **<MAC>** от 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`
|