Files
Alpine_5G/scripts/troubleshoot-5g.sh
nearxos 9dc35a57a2 Enhance 5G modem management with integrated web GUI and connection control
- Introduced a web GUI for managing 5G connections, replacing the standalone 5g-router service.
- Updated scripts to ensure exclusive access to the AT port, preventing conflicts.
- Improved troubleshooting documentation in 5G_MODEM_TROUBLESHOOTING.md, adding checks for processes using the AT port.
- Enhanced connection management in the web app, including auto-connect and detailed status APIs.
- Updated installation scripts to reflect changes in service management and dependencies.
2026-02-02 10:34:25 +02:00

172 lines
6.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 full troubleshoot: collect all logs and run diagnostics
# Run on device: /usr/local/bin/troubleshoot-5g.sh
# Or via SSH: ssh root@device /usr/local/bin/troubleshoot-5g.sh
# Rev: 1 (see REVISION in repo root)
CONFIG="/etc/5g-router.conf"
AT_PORT="${AT_PORT:-/dev/ttyUSB1}"
WAN_IF="${WAN_IF:-eth1}"
LOG_FILE="/var/log/5g-router.log"
AT_LOCK="/var/lock/5g-at.lock"
[ -f "$CONFIG" ] && . "$CONFIG" || true
# Acquire lock on AT port so we don't conflict with connect-5g.sh or modem-status-at.sh
exec 9>"$AT_LOCK"
flock -w 15 9 || echo "Warning: could not acquire AT lock (another process using port)"
echo "=============================================="
echo " Alpine 5G Router Full Troubleshoot"
echo " $(date -Iseconds)"
echo "=============================================="
echo ""
# --- 1) Kernel / USB / tty (recent) ---
echo "--- 1) Kernel messages (dmesg, last 40 lines) ---"
dmesg 2>/dev/null | tail -40 || echo "(dmesg not available)"
echo ""
# --- 2) USB devices ---
echo "--- 2) USB devices (lsusb) ---"
lsusb 2>/dev/null || echo "(lsusb not available)"
if lsusb 2>/dev/null | grep -q "0e8d:7127"; then
echo " -> WARN: Modem in Mode 41 (7127). AT port may not work. Need Mode 40 (7126)."
elif lsusb 2>/dev/null | grep -q "0e8d:7126"; then
echo " -> Modem in Mode 40 (RNDIS) OK for AT on ttyUSB1"
fi
echo ""
# --- 3) Serial / AT port nodes ---
echo "--- 3) Serial devices (/dev/ttyUSB[0-9]*, /dev/ttyACM[0-9]*) ---"
if [ -e /dev/ttyUSB ] && [ -f /dev/ttyUSB ] && [ ! -c /dev/ttyUSB ]; then
echo " Stray file /dev/ttyUSB (no number) remove with: rm /dev/ttyUSB"
fi
for d in /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 /dev/ttyUSB4 /dev/ttyUSB5 /dev/ttyACM0 /dev/ttyACM1; do
[ -e "$d" ] || continue
ls -la "$d" 2>/dev/null
if [ -f "$d" ] && [ ! -c "$d" ]; then
case "$d" in /dev/ttyUSB*) _m=188; _n="${d#/dev/ttyUSB}";; /dev/ttyACM*) _m=166; _n="${d#/dev/ttyACM}";; *) _m=188; _n=0;; esac
echo " -> BAD: $d is a regular file. Fix: rm $d && mknod $d c $_m $_n && chmod 660 $d && chown root:dialout $d"
fi
done
if ! ls /dev/ttyUSB[0-9]* /dev/ttyACM[0-9]* 2>/dev/null | grep -q .; then
echo " No ttyUSB/ttyACM devices. Modem may not be bound or not in Mode 40."
fi
echo ""
# --- 4) Config ---
echo "--- 4) Config ($CONFIG) ---"
if [ -f "$CONFIG" ]; then
grep -E '^[A-Za-z_]+=' "$CONFIG" 2>/dev/null | sed 's/^/ /' || true
else
echo " File not found (using defaults: AT_PORT=$AT_PORT, WAN_IF=$WAN_IF)"
fi
echo ""
# --- 5) Processes using the AT port (can block or conflict) ---
echo "--- 5) Processes using $AT_PORT (lsof) ---"
if [ -e "$AT_PORT" ]; then
if command -v lsof >/dev/null 2>&1; then
_lsof=$(lsof 2>/dev/null | grep -F "$AT_PORT")
if [ -n "$_lsof" ]; then
echo "$_lsof" | sed 's/^/ /'
else
echo " No process has $AT_PORT open (good)"
fi
else
echo " (lsof not installed install with: apk add lsof)"
fi
else
echo " Port does not exist (nothing to list)"
fi
echo ""
# --- 6) AT port test (with longer wait like connect-5g.sh) ---
echo "--- 6) AT command test on $AT_PORT (wait 3s) ---"
if [ -c "$AT_PORT" ]; then
out=$(timeout 8 sh -c "
[ -c \"$AT_PORT\" ] || exit 1
cat $AT_PORT 2>/dev/null &
_p=\$!
sleep 0.5
echo -e 'AT\r' > $AT_PORT 2>/dev/null
sleep 3
kill \$_p 2>/dev/null
" 2>&1)
if echo "$out" | grep -q 'OK'; then
echo " AT response: OK (modem responding)"
else
echo " AT response: no OK (modem not responding or wrong port)"
echo " Raw output:"
echo "$out" | head -10 | sed 's/^/ /'
fi
else
echo " $AT_PORT not available (missing or not a character device)"
fi
echo ""
# --- 7) AT probe on all ttyUSB (which port responds) ---
echo "--- 7) AT probe on each ttyUSB port ---"
for port in /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3; do
[ -c "$port" ] || continue
out=$(timeout 5 sh -c "[ -c \"$port\" ] || exit 1; cat $port 2>/dev/null & _p=\$!; sleep 0.3; echo -e 'AT\r' > $port; sleep 2; kill \$_p 2>/dev/null" 2>/dev/null)
if echo "$out" | grep -q 'OK'; then
echo " $port: OK (use this as AT_PORT if different from config)"
else
echo " $port: no OK"
fi
done
echo ""
# --- 8) 5g-router service ---
echo "--- 8) 5g-router service ---"
if command -v rc-service >/dev/null 2>&1; then
rc-service 5g-router status 2>&1 | sed 's/^/ /'
else
echo " OpenRC not found"
fi
echo ""
# --- 9) WAN interface and routing ---
echo "--- 9) WAN interface ($WAN_IF) and default route ---"
if ip link show "$WAN_IF" >/dev/null 2>&1; then
ip link show "$WAN_IF" 2>/dev/null | sed 's/^/ /'
ip -4 addr show "$WAN_IF" 2>/dev/null | sed 's/^/ /'
else
echo " Interface $WAN_IF does not exist"
fi
ip route show default 2>/dev/null | sed 's/^/ /'
echo ""
# --- 10) Full 5g-router log ---
echo "--- 10) Full 5g-router log (last 60 lines of $LOG_FILE) ---"
if [ -f "$LOG_FILE" ]; then
tail -60 "$LOG_FILE" 2>/dev/null | sed 's/^/ /'
else
echo " Log file not found"
fi
echo ""
# --- 11) Optional: modem status script ---
if [ -x "/usr/local/bin/modem-status-at.sh" ]; then
echo "--- 11) modem-status-at.sh (registration, signal) ---"
/usr/local/bin/modem-status-at.sh 2>&1 | head -30 | sed 's/^/ /'
else
echo "--- 11) modem-status-at.sh ---"
echo " Not installed"
fi
echo ""
echo "=============================================="
echo " End troubleshoot copy this output to share"
echo "=============================================="
echo ""
echo "Quick fixes to try:"
echo " - ttyUSB is regular file: rm $AT_PORT && mknod $AT_PORT c 188 1 && chmod 660 $AT_PORT && chown root:dialout $AT_PORT"
echo " - Stray /dev/ttyUSB (no number): rm /dev/ttyUSB"
echo " - Port held by another process (see section 5): stop ModemManager (rc-service ModemManager stop) or restart 5g-router"
echo " - Modem in Mode 41 (7127): power-cycle modem or reboot; need Mode 40 (7126) for AT"
echo " - AT not OK: set AT_PORT in $CONFIG to the port that showed OK above (e.g. /dev/ttyUSB0)"
echo " - Restart connection: service 5g-router restart or /usr/local/bin/connect-5g.sh"