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
This commit is contained in:
nearxos
2026-02-02 09:38:23 +02:00
parent 1136a332b5
commit 160ad641ce
46 changed files with 4320 additions and 40 deletions

131
scripts/diag-modem-up.sh Normal file
View File

@@ -0,0 +1,131 @@
#!/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"