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.
76 lines
8 KiB
Bash
76 lines
8 KiB
Bash
#!/bin/sh
|
|
# 480s side, B8D RAM test K (= B8C + built-in cfg80211/mac80211/wcn36xx + iw). No connect, no AP, wlan0 stays down. Board: full power-off >= 90 s, then RESET held at power-on (battery -> USB) -> lk1st fastboot.
|
|
# fastboot boot b8d image (RAM only, nothing written to eMMC/cache) -> wait MPSS/LTE START OK (B7C controller) -> PRE snapshot ->
|
|
# start WCNSS remoteproc via sysfs (only write of the test; auto-boot at ~1 s cannot find /firmware/image yet) -> POST snapshot.
|
|
K=$1; MODE=$2; [ -n "$K" ] || { echo "usage: $0 K [now|collect]"; exit 2; } # now = board already sits in fastboot; collect = skip boot
|
|
cd ~/doc/modem/jz08-aurora; O=logs/b8/b8d/c$K; mkdir -p $O; IMG=b8/b8d/out/aurora-b8d.img
|
|
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S.%3N) $*" | tee -a $A; }
|
|
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
|
|
echo "1c28d0a45a15212fa8e692109c11a6291d3dbaa0515771e78facb9408b78d019 $IMG" | sha256sum -c || exit 1
|
|
if [ "$MODE" != collect ]; then
|
|
OLD=$(ps -eo pid,cmd | grep "[u]artlog.py /dev/ttyUSB0" | awk '{print $1}'); [ -n "$OLD" ] && kill $OLD; sleep 1
|
|
U=logs/uart/b8d$K-$(date +%Y%m%d-%H%M%S); setsid nohup python3 tools/uartlog.py /dev/ttyUSB0 $U > $U.stderr 2>&1 < /dev/null &
|
|
act "B8D c$K: uartlog PID $! -> $U.log; waiting for fastboot <EMMC_SERIAL> (power off >= 90 s, then RESET held + battery -> USB)"
|
|
if [ "$MODE" != now ] && fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; then act "board already in fastboot - waiting for power-off first"
|
|
until ! fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do sleep 1; done; act "fastboot device gone (power removed)"; fi
|
|
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 600 ] && { act "ABORT: no fastboot in 20 min"; exit 1; }; sleep 2; done
|
|
act "fastboot device present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
|
|
else U=$(ls -t logs/uart/b8d$K-*.log | head -1); U=${U%.log}; act "collect-only mode, UART $U.log"; fi
|
|
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 90 ] && { act "ABORT: NCM not up after ~180 s"; cp $U.log $O/uart.log; exit 1; }; sleep 1; done; act "NCM ping ok"
|
|
printf 'grep -E "START OK|FAIL in|rollback" /run/aurora-modem/lifecycle.log | tail -1\n' > $O/.w
|
|
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
|
|
act "controller end: $(tn $O/.w 3 | grep -E '^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)' | tail -1)"
|
|
cat > $O/.snap <<'C'
|
|
echo SNAP-BEGIN; cat /proc/uptime; date -u; uname -a; cat /proc/device-tree/model; echo
|
|
for r in /sys/class/remoteproc/*; do echo "RP ${r##*/} name=$(cat $r/name) state=$(cat $r/state) fw=$(cat $r/firmware)"; done
|
|
echo ---rpmsg; for d in /sys/bus/rpmsg/devices/*; do echo "${d##*/} drv=$(readlink $d/driver | sed 's#.*/##')"; done | grep -vE "DATA[0-9]+_CNTL|DIAG"
|
|
echo ---pdev; ls /sys/bus/platform/devices | grep -iE "a204000|wcnss|iris|pronto"; ls -l /sys/bus/platform/devices/a204000.remoteproc/driver 2>&1
|
|
echo ---iomem; grep -E "^8[6-9a-f]" /proc/iomem
|
|
echo ---dmesg-reserved; dmesg | grep -E "reserved mem: .*(mpss|wcnss|mba)"
|
|
echo ---dmesg-wcnss; dmesg | grep -iE "wcnss|a204000|pronto|iris|remoteproc|smd|rpmsg|qcom_wcnss|nv file|firmware|wcn"
|
|
echo ---regulators; for r in /sys/class/regulator/*; do n=$(cat $r/name 2>/dev/null); case $n in *l5*|*l7*|*l9*|*s3*) echo "$n $(cat $r/microvolts 2>/dev/null) uV en=$(cat $r/state 2>/dev/null) users=$(cat $r/num_users 2>/dev/null)";; esac; done
|
|
echo ---modem; /etc/init.d/aurora-modem status
|
|
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
|
|
echo ---nvfile; ls -l /lib/firmware/wlan/prima/; sha256sum /lib/firmware/wlan/prima/WCNSS_qcom_wlan_nv.bin; cat /sys/module/firmware_class/parameters/path; echo
|
|
echo ---crash; dmesg | grep -cE "crash detected in a204000"; dmesg | grep -cE "Watchdog startup timeout"; dmesg | grep -cE "Failed to load nv"
|
|
echo ---wifi; ls -l /sys/class/ieee80211 2>&1; ls /sys/class/net; for n in /sys/class/net/wlan*; do [ -e $n ] && echo "$n addr=$(cat $n/address) addr_assign_type=$(cat $n/addr_assign_type) operstate=$(cat $n/operstate) drv=$(readlink $n/device/driver | sed "s#.*/##")"; done
|
|
ip link show wlan0 2>&1; iw dev 2>&1; echo ---rfkill; for r in /sys/class/rfkill/*; do [ -e $r ] && echo "$r $(cat $r/name) $(cat $r/type) soft=$(cat $r/soft) hard=$(cat $r/hard)"; done; echo ---iwreg; iw reg get 2>&1 | head -8
|
|
echo ---dmesg80211; dmesg | grep -iE "wcn36xx|cfg80211|mac80211|ieee80211|phy0|wlan0|regulatory"
|
|
echo ---emmc; awk "{print \"w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat; cat /sys/block/mmcblk0/ro
|
|
echo SNAP-END
|
|
C
|
|
tn $O/.snap 30 > $O/pre.txt; act "PRE snapshot: $(grep -c SNAP-END $O/pre.txt) end, $(grep '^RP ' $O/pre.txt | tr '\n' ' ')"
|
|
# continuous LTE ping on the board for the whole WCNSS window (detached from telnet; busybox has no nohup)
|
|
cat > $O/.ping <<'C'
|
|
printf 'trap "" HUP\nexec ping -c 600 -W 3 -I wwan0 77.88.8.8 > /tmp/b8d-ping.log 2>&1\n' > /tmp/b8d-ping.sh; setsid sh /tmp/b8d-ping.sh < /dev/null > /dev/null 2>&1 &
|
|
sleep 2; head -2 /tmp/b8d-ping.log
|
|
C
|
|
tn $O/.ping 5 > $O/ping-start.txt; act "ping started: $(grep -c bytes $O/ping-start.txt) replies in first 2 s"
|
|
cat > $O/.start <<'C'
|
|
for r in /sys/class/remoteproc/*; do [ "$(cat $r/name)" = a204000.remoteproc ] && W=$r; done; echo "WCNSS_RP=$W state=$(cat $W/state 2>&1)"
|
|
[ -n "$W" ] && [ "$(cat $W/state)" = offline ] && { echo start > $W/state; echo "START rc=$?"; }; cat /proc/uptime
|
|
sleep 15; echo "after15 state=$(cat $W/state 2>&1)"; dmesg | grep -E "a204000|wcnss|WCNSS|nv" | tail -8
|
|
C
|
|
tn $O/.start 25 > $O/start.txt; act "WCNSS start: $(grep -E 'WCNSS_RP|START rc|after15' $O/start.txt | tr '\n' ' ')"
|
|
cat > $O/.phy <<'C'
|
|
echo PHY-BEGIN; iw phy; echo ---iwlist; iw list | head -3; echo PHY-END
|
|
C
|
|
tn $O/.phy 6 > $O/iw-phy.txt; act "iw phy: $(grep -c PHY-END $O/iw-phy.txt) end, $(grep -E '^Wiphy|Band [0-9]' $O/iw-phy.txt | tr '\n' ' ')"
|
|
cat > $O/.mon <<'C'
|
|
for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done; cat /proc/uptime
|
|
echo "crash=$(dmesg | grep -cE 'crash detected in a204000') dog=$(dmesg | grep -cE 'Watchdog startup timeout') nvfail=$(dmesg | grep -cE 'Failed to load nv') wfatal=$(dmesg | grep -cE 'qcom-wcnss-pil.*fatal') wcnerr=$(dmesg | grep -ciE 'wcn36xx.*(fail|error|timeout)') phy=$(ls /sys/class/ieee80211 2>/dev/null | tr '\n' ',') wlan=$(ls /sys/class/net | grep -c wlan)"
|
|
ls /sys/bus/rpmsg/devices | grep -c "remoteproc1:smd-edge.WCNSS_CTRL"; echo "ping: $(grep -c bytes /tmp/b8d-ping.log) ok, last: $(tail -1 /tmp/b8d-ping.log)"
|
|
C
|
|
for m in 1 2 3 4 5 6; do sleep 60; tn $O/.mon 4 > $O/mon-$m.txt; act "mon $m: $(grep -E '^RP a204|^crash=|^ping:' $O/mon-$m.txt | tr '\n' ' ')"; done
|
|
tn $O/.snap 30 > $O/post.txt; act "POST snapshot (>=6 min after start): $(grep -c SNAP-END $O/post.txt) end, $(grep '^RP ' $O/post.txt | tr '\n' ' ')"
|
|
printf 'dmesg > /tmp/b8d-dmesg-pre-stop.txt; nc -l -p 9861 < /tmp/b8d-dmesg-pre-stop.txt &\n' > $O/.d1; tn $O/.d1 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9861 > $O/dmesg-pre-stop.full
|
|
cat > $O/.stop <<'C'
|
|
for r in /sys/class/remoteproc/*; do [ "$(cat $r/name)" = a204000.remoteproc ] && W=$r; done; cat /proc/uptime
|
|
echo stop > $W/state; echo "STOP rc=$?"; sleep 5; echo "state=$(cat $W/state)"; dmesg | tail -6
|
|
sleep 10; echo ---ping-summary; tail -4 /tmp/b8d-ping.log; grep -c bytes /tmp/b8d-ping.log; /etc/init.d/aurora-modem status | grep -E "controller|remoteproc|mm state|access tech"
|
|
awk "{print \"emmc w=\"\$5\" s=\"\$7}" /sys/block/mmcblk0/stat
|
|
C
|
|
tn $O/.stop 25 > $O/stop.txt; act "WCNSS stop: $(grep -E 'STOP rc|^state=|emmc' $O/stop.txt | tr '\n' ' ')"
|
|
printf 'cat /tmp/b8d-ping.log > /tmp/b8d-ping.copy; nc -l -p 9862 < /tmp/b8d-ping.copy &\n' > $O/.p; tn $O/.p 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9862 > $O/ping.log
|
|
printf 'dmesg > /tmp/b8d-dmesg.txt; nc -l -p 9863 < /tmp/b8d-dmesg.txt &\n' > $O/.d; tn $O/.d 3 >/dev/null; sleep 1; ncat --recv-only 172.16.42.1 9863 > $O/dmesg.full
|
|
cp $U.log $O/uart.log; act "B8D c$K END ($(wc -l < $O/dmesg.full) dmesg lines)"
|