uzbek-plus/logs/b8/b8a/B8A-RESULT.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

68 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`