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.
64 lines
4.9 KiB
Bash
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)
|