uzbek-plus/logs/beeline1/bee2-diag.sh
q 105bef466a Project Aurora: mainline ARM64 Linux on JZ08AU (MSM8916) LTE modem
Sanitized research log, build/reproducibility docs, DTS, kernel configs,
patches, initramfs sources, bootchain migration plans and test logs.
B5 direct boot PASS; B6 modem lifecycle in progress.
No dumps, NV/EFS, vendor firmware or device identifiers included.
2026-09-30 17:23:18 +03:00

64 lines
4.9 KiB
Bash

#!/bin/sh
# Beeline run 2 (cold boot): modem-up -> GET detect -> (gated) ONE dms online -> passive wait <=600 s (GET only)
# -> if NOT registered: read-only AT diag (+ transient AT+CEREG=<max>, restored) -> mm-up (disabled, debug log).
# NO AT+COPS=, no scan/register, no band/RAT, no APN/profile writes, no bearer. IMSI/ICCID/IMEI masked on-device.
O=/tmp/bee2; mkdir -p $O; Q="qmicli -p -d /dev/wwan0qmi0"; t() { cut -d' ' -f1 /proc/uptime; }
mask() { sed -E 's/([0-9]{6,})([0-9]{4})/******\2/g'; }
B=/sys/bus/platform/devices/4080000.remoteproc:bam-dmux
pm() { echo "### $(t) PM=$(cat $B/power/runtime_status 2>/dev/null) rproc=$(cat /sys/class/remoteproc/remoteproc0/state)"; }
nv() { for want in modemst1 modemst2 fsg fsc persist; do for p in /sys/class/block/mmcblk0p*; do
[ "$(sed -n 's/^PARTNAME=//p' $p/uevent)" = "$want" ] && echo "$want $(sha256sum /dev/$(basename $p) | cut -d' ' -f1)"; done; done; }
fin() { nv > $O/nv-after.txt; cat /sys/block/mmcblk0/stat > $O/stat-after.txt
cmp -s $O/nv-before.txt $O/nv-after.txt && echo "NV BEFORE==AFTER" > $O/nv-result.txt || echo "NV DIFFERENT" > $O/nv-result.txt
awk '{print "writes_completed="$5" sectors_written="$7}' $O/stat-after.txt >> $O/nv-result.txt
{ pm; ip link show wwan0; ip route; dmesg | grep -iE "Failed to resume|-110|-22|Resource temporarily|Oops|panic|fatal|watchdog|crash|ssr"; echo dmesg-end; } > $O/state.txt 2>&1
cp /tmp/rmtfs.log $O/rmtfs.log; [ -f /tmp/mm.log ] && mask < /tmp/mm.log > $O/mm.log
tar -C /tmp -cf /tmp/bee2.tar bee2; echo "BEE2-FINISHED $1"; }
nv > $O/nv-before.txt; cat /sys/block/mmcblk0/stat > $O/stat-before.txt
/bin/modem-up > $O/modem-up.txt 2>&1
for i in $(seq 1 30); do [ -e /dev/wwan0qmi0 ] && [ -e /sys/class/net/wwan0 ] && break; sleep 1; done
/bin/qmi-b3 > $O/p2-detect.txt 2>&1
M=$(timeout 30 $Q --dms-get-operating-mode 2>&1); echo "$M" > $O/mode-before.txt
grep -q "Card state: 'present'" $O/p2-detect.txt && grep -q "Application state: 'ready'" $O/p2-detect.txt || { echo "SIM NOT READY" > $O/stop.txt; fin SIM-NOT-READY; exit 1; }
if echo "$M" | grep -q "Mode: 'online'"; then echo "already online - no SET" > $O/set.txt
else { echo "### $(t) $Q --dms-set-operating-mode=online"; timeout 30 $Q --dms-set-operating-mode=online 2>&1; echo "### rc=$?"; } > $O/set.txt; fi
timeout 30 $Q --dms-get-operating-mode > $O/mode-after.txt 2>&1
# --- passive timeline (GET only), <=600 s
: > $O/timeline.txt; REG=0; T0=$(t)
for i in $(seq 1 150); do
R=$(timeout 20 $Q --nas-get-serving-system 2>&1); Y=$(timeout 20 $Q --nas-get-system-info 2>&1)
S=$(timeout 20 $Q --nas-get-signal-info 2>&1); C=$(timeout 20 $Q --nas-get-cell-location-info 2>&1)
echo "### $(t) $(echo "$R" | grep -E "Registration state|PS:|MNC:" | head -3 | tr -s ' \t\n' ' ')| SYS $(echo "$Y" | sed -n '/LTE service/,$p' | grep -E "Status:|True Status|Domain|Cell ID|Tracking" | tr -s ' \t\n' ' ')| CELL $(echo "$C" | grep -E "Tracking Area|Global Cell|EUTRA Absolute|Serving Cell ID" | head -4 | tr -s ' \t\n' ' ')| SIG $(echo "$S" | grep -E "RSRQ|RSRP|SNR" | tr -s ' \t\n' ' ')" >> $O/timeline.txt
echo "$R" | grep -q "Registration state: 'registered'" && echo "$R" | grep -q "PS: 'attached'" && { REG=1; break; }
[ $(awk "BEGIN{print ($(t)-$T0>600)}") = 1 ] && break
sleep 2
done
sleep 3
for c in --nas-get-serving-system --nas-get-system-info --nas-get-home-network --nas-get-signal-info --nas-get-rf-band-info \
--nas-get-cell-location-info --nas-get-system-selection-preference --dms-get-operating-mode; do
echo "### $(t) $c"; timeout 30 $Q $c 2>&1; echo "### rc=$?"; done 2>&1 | mask > $O/qmi-final.txt
pm >> $O/qmi-final.txt
if [ $REG = 1 ]; then echo REGISTERED > $O/result.txt
else
echo NOT-REGISTERED > $O/result.txt
# --- read-only AT diagnostics on wwan0at0 (MM not running yet)
A=/dev/wwan0at0
at() { cat $A > /tmp/at.out 2>&1 & P=$!; sleep 0.3; printf '%s\r' "$1" > $A; sleep ${2:-2}; kill $P 2>/dev/null; wait $P 2>/dev/null
echo ">>> $(t) $1"; tr -d '\r' < /tmp/at.out | grep -v '^$'; }
{ for c in "AT" "AT+CFUN?" "AT+COPS?" "AT+CREG?" "AT+CGREG?" "AT+CEREG=?" "AT+CEREG?" "AT+CEER" "AT+CGATT?" "AT+CGDCONT?" "AT+CSQ" "AT+CESQ"; do at "$c"; done
N0=$(tr -d '\r' < /tmp/at.out >/dev/null; at "AT+CEREG?" | sed -n 's/^+CEREG: *\([0-9]\),.*/\1/p' | head -1)
SUP=$(at "AT+CEREG=?" | sed -n 's/^+CEREG: *(\(.*\)).*/\1/p' | head -1)
echo "--- CEREG original n='$N0' supported='$SUP'"
for n in 5 4 3 2; do echo "$SUP" | grep -qE "(^|[^0-9])$n([^0-9]|$)|[0-9]-$n|-[$n-9]" && { NX=$n; break; }; done
[ -z "$NX" ] && echo "$SUP" | grep -qE '0-5' && NX=5
if [ -n "$NX" ] && [ -n "$N0" ]; then
echo "--- transient AT+CEREG=$NX"; at "AT+CEREG=$NX"; at "AT+CEREG?"; at "AT+CEER"
echo "--- restore AT+CEREG=$N0"; at "AT+CEREG=$N0"; at "AT+CEREG?"
else echo "--- CEREG extended mode not attempted (orig='$N0' sup='$SUP')"; fi
} 2>&1 | mask > $O/at-diag.txt
fi
killall qmi-proxy 2>/dev/null; sleep 1
/bin/mm-up > $O/mm-up.txt 2>&1
sleep 10
{ mmcli -L; mmcli -m 0; } 2>&1 | mask > $O/mmcli.txt
fin $(cat $O/result.txt)