- Web app (Flask): status, config, firewall, logs, users, restart - Docs: AT commands, deploy, DNS, quickstart, web GUI - Scripts: connect, deploy, diag, healthcheck, modem-status, speedtest, status, troubleshoot - Init and iptables: 5g-router, 5g-webgui, rules.v4 - CHANGELOG, TODO, REVISION; config and README updates
132 lines
4.1 KiB
Bash
132 lines
4.1 KiB
Bash
#!/bin/sh
|
||
# Alpine 5G Router – modem/WAN diagnostic (run on device to debug “modem not up”)
|
||
# Rev: 1 (see REVISION in repo root)
|
||
# Usage: ./diag-modem-up.sh or /usr/local/bin/diag-modem-up.sh
|
||
|
||
CONFIG="/etc/5g-router.conf"
|
||
WAN_IF="${WAN_IF:-eth1}"
|
||
AT_PORT="${AT_PORT:-/dev/ttyUSB1}"
|
||
LOG_FILE="/var/log/5g-router.log"
|
||
[ -f "$CONFIG" ] && . "$CONFIG"
|
||
|
||
echo "=== Alpine 5G Router – modem/WAN diagnostic ==="
|
||
echo ""
|
||
|
||
# 1) Service
|
||
echo "--- 5g-router service ---"
|
||
if command -v rc-service >/dev/null 2>&1; then
|
||
rc-service 5g-router status 2>&1 || true
|
||
else
|
||
echo "OpenRC not found; service status skipped"
|
||
fi
|
||
echo ""
|
||
|
||
# 2) Config
|
||
echo "--- Config ($CONFIG) ---"
|
||
if [ -f "$CONFIG" ]; then
|
||
echo "WAN_IF=$WAN_IF AT_PORT=$AT_PORT"
|
||
grep -E '^APN=|^WAN_IF=|^AT_PORT=' "$CONFIG" 2>/dev/null || true
|
||
else
|
||
echo "Config file not found (using defaults)"
|
||
fi
|
||
echo ""
|
||
|
||
# 3) Modem USB
|
||
echo "--- Modem (lsusb) ---"
|
||
MODEM_LINE=$(lsusb 2>/dev/null | grep -i fibocom || lsusb 2>/dev/null | grep "0e8d" || true)
|
||
if [ -n "$MODEM_LINE" ]; then
|
||
echo "$MODEM_LINE"
|
||
if echo "$MODEM_LINE" | grep -q "7127"; then
|
||
echo " -> Mode 41 (0e8d:7127): AT port may not work; use Mode 40 (0e8d:7126)"
|
||
elif echo "$MODEM_LINE" | grep -q "7126"; then
|
||
echo " -> Mode 40 (RNDIS): AT port should be available"
|
||
fi
|
||
else
|
||
echo "No Fibocom / 0e8d device – modem not seen by USB"
|
||
fi
|
||
echo ""
|
||
|
||
# 4) WAN interface
|
||
echo "--- WAN interface ($WAN_IF) ---"
|
||
if ip link show "$WAN_IF" >/dev/null 2>&1; then
|
||
ip link show "$WAN_IF"
|
||
WAN_STATE=$(ip link show "$WAN_IF" 2>/dev/null | grep -oE 'state [A-Z]+' | awk '{print $2}')
|
||
WAN_IP=$(ip -4 addr show "$WAN_IF" 2>/dev/null | grep -oE 'inet [0-9.]+' | awk '{print $2}')
|
||
echo " State: $WAN_STATE IP: ${WAN_IP:-none}"
|
||
if [ "$WAN_STATE" = "DOWN" ]; then
|
||
echo " -> Interface is DOWN (connect-5g.sh may have failed or not run)"
|
||
fi
|
||
if [ -z "$WAN_IP" ]; then
|
||
echo " -> No IP (PDP not activated or modem did not assign address)"
|
||
fi
|
||
else
|
||
echo " Interface $WAN_IF does not exist (wrong name or modem not bound?)"
|
||
fi
|
||
echo ""
|
||
|
||
# 5) Default route
|
||
echo "--- Default route ---"
|
||
DEFAULT=$(ip route show default 2>/dev/null | head -1)
|
||
if [ -n "$DEFAULT" ]; then
|
||
echo "$DEFAULT"
|
||
DEF_DEV=$(echo "$DEFAULT" | awk '{print $3}')
|
||
if [ "$DEF_DEV" != "$WAN_IF" ]; then
|
||
echo " -> Default is via $DEF_DEV, not $WAN_IF (5G may be down or failover active)"
|
||
fi
|
||
else
|
||
echo " No default route"
|
||
fi
|
||
echo ""
|
||
|
||
# 6) AT port
|
||
echo "--- AT port ($AT_PORT) ---"
|
||
if [ -c "$AT_PORT" ]; then
|
||
echo " Exists (character device)"
|
||
out=$(timeout 4 sh -c "
|
||
cat $AT_PORT 2>/dev/null &
|
||
_p=\$!
|
||
sleep 0.3
|
||
echo -e 'AT\r' > $AT_PORT 2>/dev/null
|
||
sleep 1
|
||
kill \$_p 2>/dev/null
|
||
" 2>/dev/null)
|
||
if echo "$out" | grep -q 'OK'; then
|
||
echo " AT response: OK"
|
||
else
|
||
echo " AT response: no OK (raw: $(echo "$out" | head -1))"
|
||
fi
|
||
else
|
||
echo " Not available (missing or not a char device) – connect-5g.sh waits for this"
|
||
for p in /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2; do
|
||
[ -c "$p" ] && echo " Found: $p"
|
||
done
|
||
fi
|
||
echo ""
|
||
|
||
# 7) Last log lines
|
||
echo "--- Last 20 lines of $LOG_FILE ---"
|
||
if [ -f "$LOG_FILE" ]; then
|
||
tail -20 "$LOG_FILE" 2>/dev/null | sed 's/^/ /'
|
||
else
|
||
echo " Log file not found"
|
||
fi
|
||
echo ""
|
||
|
||
# 8) Connectivity
|
||
echo "--- Connectivity (ping 8.8.8.8) ---"
|
||
if ping -c 1 -W 3 8.8.8.8 >/dev/null 2>&1; then
|
||
echo " Reachable (modem/route may be OK)"
|
||
else
|
||
echo " Not reachable (WAN down or no default via 5G)"
|
||
fi
|
||
echo ""
|
||
echo "=== End diagnostic ==="
|
||
echo ""
|
||
echo "Typical fixes:"
|
||
echo " - Modem not in lsusb: power-cycle modem or USB; check cable"
|
||
echo " - Mode 41 (7127): reboot modem or run AT+GTUSBMODE=40 then AT+CFUN=1,1"
|
||
echo " - AT port missing: wait for modem to expose ttyUSB (can take 30s after boot)"
|
||
echo " - AT no OK: wrong port – set AT_PORT in $CONFIG (e.g. /dev/ttyUSB0)"
|
||
echo " - No modem IP: check APN in $CONFIG; check SIM/network registration"
|
||
echo " - Start connection: service 5g-router start or /usr/local/bin/connect-5g.sh"
|