Files
Alpine_5G/scripts/diag-modem-up.sh
nearxos 160ad641ce Add web GUI, docs, scripts, and 5G router config
- 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
2026-02-02 09:38:23 +02:00

132 lines
4.1 KiB
Bash
Raw Permalink 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.

#!/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"