QManager-GO is an all-in-one cellular management appliance and telemetry suite built for Qualcomm-based Quectel modems (including RG501Q-EU SDX55 and RM520N-GL SDX65).
Replacing legacy Lighttpd web servers, PHP-FPM, shell CGI scripts, and external helper binaries, QManager compiles down to a single, zero-dependency standalone binary (qmanager-armv7) with the optimized Next.js 16 frontend embedded directly into the Go executable via embed.FS.
- Single Static Binary: Zero external runtime requirements (no Lighttpd, PHP, Python, Entware, or Dropbear dependencies).
- Native Standalone SSH Daemon: Pure Go SSH server running on Port 22 (or custom port) with
/etc/shadowauthentication, dynamic WebUI controls, authorized public keys support, and auto-generated Ed25519 host keys. - Zero-Touch Auto TLS / HTTPS: Dual HTTP (port 80) and HTTPS (port 443) listener with automatic on-the-fly ECDSA P-256 self-signed certificate generation (
internal/tlsgen). - Self-Healing Zero-Touch LAN & DHCP: Automatic PCIe Ethernet detection,
bridge0binding, link-local169.254.x.xflushing, and dynamicdnsmasqDHCP server provisioning. - Direct Character Device Access: High-performance pure-Go AT command engine interfacing directly with
/dev/smd11with thread-safe mutex serialization and 3-tier priority execution. - Zero Flash Wear (RAM-First Lifecycle): Telemetry streams, real-time signal charts, 1000-line circular syslog buffer, and DPI proxy run exclusively in RAM/tmpfs to protect raw NAND flash (UBIFS).
- Traffic Engine (DPI Bypass): Embedded on-demand
tpwsbinary engine with Full Bypass, YouTube Video Optimizer, and Force TCP modes. - Native Web Console: Built-in root shell terminal powered by pure Go Pseudo-Terminal (PTY) over WebSockets (
/console/ws), eliminating externalttyddaemons. - Modular Tailscale VPN: On-demand service management and background installer without bloating the core binary.
- Comprehensive AT Terminal: 2-line Command Palette with 43 Quectel diagnostic presets (temperature
AT+QTEMP, serving/neighbour cells, Carrier AggregationAT+QCAINFO, cell unlockAT+QNWLOCK). - Comprehensive Subsystem Diagnostics: 26 native Go diagnostic probes across 8 categories with one-click
.tar.gzSupport Diagnostics Bundle export. - Internationalization (i18n): 5 languages supported (English, Bahasa Indonesia, 简体中文, 繁體中文, Italiano).
- Real-Time Cellular Telemetry — Live RSRP, RSRQ, SINR, RSSI, band, bandwidth, PCI, EARFCN/NR-ARFCN, eNodeB/gNodeB ID, and Carrier Aggregation (EN-DC + LTE-CA) topology.
- Traffic Engine & Video Optimizer — In-memory DPI circumvention proxy (
tpws) with automated iptables management and live bypass verification. - Cell & Band Locking — 1-click LTE/5G band selection, EARFCN/PCI locking, and emergency lock-release recovery.
- Native Web Console — In-browser interactive root shell terminal via PTY WebSocket bridge.
- Tailscale VPN Integration — Modular host daemon management with Auth URL capture and QR code login.
- Custom DNS Presets — 1-click apply for 9 popular public DNS providers (Cloudflare, Google, AdGuard, Quad9, Mullvad, etc.).
- System Health Diagnostics — Automated multi-point subsystem checks with instant support bundle generation.
- Root SSH Management — Secure password update engine using native
openssl passwd -1and atomic shadow file substitution. - SMS Center — In-browser SMS inbox/outbox and background forwarding engine.
- Connection Watchdog — 4-tier link monitoring and automatic modem recovery.
# 1. Full Build (Frontend Static Export + Go ARMv7 Binary)
make build
# 2. Build Frontend Only
make build-frontend
# 3. Build Backend Only (Cross-compilation for ARMv7 / Quectel Linux)
make build-backend
# 4. Package Release Tarball (qmanager-armv7.tar.gz)
make package
# 5. Run Backend Unit & Regression Tests
make test- Extract the release tarball on your device:
mkdir -p /tmp/qmanager_pkg && cd /tmp/qmanager_pkg tar -xzf qmanager-linux-armv7.tar.gz
- Run the installer script:
chmod +x install.sh ./install.sh
- Open your browser at
http://192.168.225.1(or your modem's IP).
If your modem previously ran legacy QManager (PHP/Bash/Lighttpd) or SimpleAdmin, clean it up completely:
# 1. Stop & disable legacy daemons
systemctl stop lighttpd qmanager-poller qmanager-ping qmanager-watchcat \
qmanager-firewall qmanager-setup qmanager-cfun-fix qmanager-console \
qmanager-ethernet qmanager-imei-check qmanager-mtu qmanager-tower-failover \
qmanager-ttl qmanager_tailscale_install qmanager-auto-update.timer 2>/dev/null || true
systemctl disable lighttpd qmanager-poller qmanager-ping qmanager-watchcat \
qmanager-firewall qmanager-setup qmanager-cfun-fix qmanager-console \
qmanager-ethernet qmanager-imei-check qmanager-mtu qmanager-tower-failover \
qmanager-ttl qmanager_tailscale_install qmanager-auto-update.timer 2>/dev/null || true
# 2. Remove legacy web server files (Preserves /etc/qmanager/ configuration!)
rm -rf /usrdata/qmanager/console \
/usrdata/qmanager/lighttpd.conf* \
/usrdata/qmanager/locales-* \
/usrdata/qmanager/www \
/usrdata/www \
/tmp/qmanager* 2>/dev/null || true- English Operations & Troubleshooting Guide
- Panduan Troubleshooting Bahasa Indonesia
- Architecture & Developer Guide
This project builds upon the work of several fantastic open-source projects:
- dr-dolomite/QManager-RM520N — Original QManager frontend design, UI concepts, and telemetry workflows.
- 1alessandro1/atcli_rust by @1alessandro1 — Safe, lightweight Rust AT command CLI utility (
atcli_smd11) for Qualcomm modems. - bol-van/zapret by @bol-van — High-performance, lightweight
tpwsDPI circumvention engine. - tailscale/tailscale — Zero-config mesh VPN daemon.
- creack/pty — Pure Go Pseudo-Terminal (PTY) interface for UNIX platforms.
- gorilla/websocket — Fast and reliable WebSocket implementation for Go.
- go-chi/chi — Lightweight, idiomatic HTTP router for Go.
This project is licensed under the MIT License with Commons Clause.
Personal, educational, and non-commercial use is permitted.
