Full CLI & Web GUI for the Optus Sagemcom FAST5393LTE-A 5G Router
Circumvent locked DNS settings · Manage every router feature · Beautiful real-time dashboard
The Optus Sagemcom FAST5393LTE-A (also known as the Optus Ultra WiFi 5G Modem) ships with a locked-down DNS configuration. The web admin panel at http://192.168.0.1 only allows selecting from a predefined dropdown list of DNS providers — you cannot enter arbitrary IP addresses. This means:
- No Pi-hole custom DNS servers
- No AdGuard Home integration
- No Cloudflare Gateway or other privacy DNS
- No custom DNS for any reason
The router uses an Angular SPA frontend that communicates with an internal REST API (/api/v1/*). The UI is just a skin — the real power is the API underneath.
OptusCLI talks directly to that API, bypassing the locked UI entirely.
┌─────────────────┐ HTTP REST API ┌──────────────────────┐
│ OptusCLI │ ◄──────────────────► │ FAST5393LTE-A │
│ (Node.js) │ /api/v1/* │ Sagemcom Router │
│ │ │ 192.168.0.1 │
│ • CLI (optusctl)│ Direct login │ │
│ • Web GUI (3000)│ Cookie session │ 51+ API endpoints │
└─────────────────┘ └──────────────────────┘
The router exposes 151 API endpoints across /api/v1/ and /api/v2/. Authentication is a simple direct-login flow — POST credentials to /api/v1/login and receive session cookies (salt, nonce, conid). No challenge-response, no hashing required on firmware SGKY10001970+.
git clone https://github.com/your/optuscli.git
cd optuscli
npm installcp settings.conf.sample settings.confEdit settings.conf with your router details:
{
"host": "http://192.168.0.1",
"username": "optus",
"password": "cases92452xf"
}The default username is optus. The password is on the sticker on the bottom of your router.
Security:
settings.confis gitignored. Your password never leaves your machine.
# System overview
node optusctl.js status
# View current DNS
node optusctl.js dns
# BYPASS: Set custom DNS (Pi-hole, AdGuard, Cloudflare, etc)
node optusctl.js dns --set 1.1.1.1 1.0.0.1
# List all connected devices
node optusctl.js devices
# View WiFi status
node optusctl.js wifi --status
# Discover all available API endpoints
node optusctl.js system --discovernpm run web
# Opens at http://localhost:3000node optusctl.js status
# Model, firmware, hardware, WAN status, connected device countnode optusctl.js dns # View current DNS config
node optusctl.js dns --set 1.1.1.1 1.0.0.1 # Set custom DNSnode optusctl.js devices # All devices
node optusctl.js devices --active # Active only
node optusctl.js devices --json # JSON output
node optusctl.js devices --nickname aa:bb:cc:dd "Living Room TV"
node optusctl.js devices --block aa:bb:cc:ddnode optusctl.js wifi --status # Radio status
node optusctl.js wifi --scan # Scan for networks
node optusctl.js wifi --guest # Guest network settings
node optusctl.js wifi --wps # WPS push buttonnode optusctl.js wan # WAN status
node optusctl.js wan --stats # IP statisticsnode optusctl.js lan # LAN statisticsnode optusctl.js firewall # View config
node optusctl.js firewall --rules # Firewall rules
node optusctl.js firewall --level high # Set level
node optusctl.js firewall --level off # Disablenode optusctl.js nat # NAT/DMZ status
node optusctl.js nat --rules # Port forward rules
node optusctl.js nat --dmz 192.168.0.100 # Set DMZ
node optusctl.js nat --dmz-off
node optusctl.js nat --add "Web Server" tcp 80 192.168.0.100 80
node optusctl.js nat --delete "Web Server"node optusctl.js system --info # Device information
node optusctl.js system --features # Hardware features
node optusctl.js system --log # System log
node optusctl.js system --time # NTP/time settings
node optusctl.js system --discover # Discover all endpoints
node optusctl.js system --reboot # Reboot router
node optusctl.js system --factory-reset # Factory reset
node optusctl.js system --backup # Backup confignode optusctl.js diag --ping 8.8.8.8 # Ping test
node optusctl.js diag --traceroute 8.8.8.8 # Traceroute
node optusctl.js parental --enable # Parental controls
node optusctl.js parental --disable
node optusctl.js cellular # 4G/5G status
node optusctl.js voice # VoIP status
node optusctl.js usb # USB devices
node optusctl.js ddns # Dynamic DNS
node optusctl.js vpn # VPN config
node optusctl.js upnp # UPnP config
node optusctl.js raw /api/v1/hosts # Raw API callLaunch with npm run web and open http://localhost:3000.
| Tab | Functionality |
|---|---|
| Overview | System info, WAN status, DHCP/LAN, real-time traffic bars, WiFi radios, NTP time, cellular signal |
| Devices | Full device table with IP, MAC, connection type, lease time. Block devices inline. |
| Network | DNS settings editor, WAN IPv4, LAN stats (RX/TX bytes/packets), ARP table |
| WiFi | Radio status, band steering, guest network, WPS push button, network scan |
| Security | Firewall level control (Off/Low/Medium/High), NAT/DMZ status, parental controls, UPnP |
| Advanced | Port forwarding rule management, add/delete rules, ping/traceroute diagnostics, system log viewer |
- Dark theme with glassmorphism cards
- Animated gradient orbs background
- Grid overlay pattern
- Real-time WebSocket updates (3s polling)
- Responsive layout
- Toast notifications
The router exposes 151 API endpoints. Run optusctl system --discover to find which ones are active on your firmware.
| Category | Endpoint | Method | Description |
|---|---|---|---|
| Auth | /api/v1/login |
POST | Direct login (username + password) |
| Auth | /api/v1/authenticated |
GET | Check session validity |
| DHCP | /api/v1/dhcp |
GET/PUT | DHCP config & DNS servers |
| DNS | /api/v1/dns/ipv4 |
GET/PUT | Static DNS configuration |
| Hosts | /api/v1/hosts |
GET | Connected devices |
| WiFi | /api/v1/wireless/ssid_status |
GET | WiFi radio status |
| WiFi | /api/v2/wireless/wirelessScan/scan |
POST | Trigger WiFi scan |
| WAN | /api/v1/wan/status |
GET | WAN connection status |
| Firewall | /api/v1/firewall |
GET/PUT | Firewall level |
| NAT | /api/v1/nat/rules |
GET/POST | Port forwarding rules |
| NAT | /api/v1/nat/dmz |
GET/PUT | DMZ configuration |
| System | /api/v1/device/reboot |
POST | Reboot router |
| System | /api/v1/device/factory |
POST | Factory reset |
| System | /api/v1/device/log |
GET | System log |
| System | /api/v1/ntp |
GET | NTP/time settings |
| Parental | /api/v1/parental_control |
GET/PUT | Parental controls |
| USB | /api/v1/usb/devices |
GET | USB device list |
| VPN | /api/v1/vpn |
GET | VPN configuration |
| VoIP | /api/v1/voice |
GET | VoIP/telephony status |
| Cellular | /api/v1/optus/cellular |
GET | 4G/5G cellular status |
| Diagnostics | /api/v1/internet_utilities/ping |
POST | Ping test |
| Diagnostics | /api/v1/internet_utilities/traceroute |
POST | Traceroute |
| UPnP | /api/v1/upnp/igd |
GET | UPnP IGD status |
| DDNS | /api/v1/dns/dynamic_dns |
GET | Dynamic DNS config |
| Events | /api/v1/events/subscribe |
POST | SSE event stream |
- Model: FAST5393LTE-A (Sagemcom)
- Type: 5G Fixed Wireless Access modem/router
- CPU: Broadcom ARM-based SoC
- WiFi: Dual-band 802.11ac (2.4GHz + 5GHz) with band steering
- Ethernet: 4× Gigabit LAN ports + 1× WAN (some models)
- USB: 1× USB 2.0 for storage/print sharing
- VoIP: 2× FXS ports for analog phones
- LTE/5G: Qualcomm Snapdragon X55 or similar 5G modem
- Platform: Sagemcom proprietary Linux-based firmware
- Web UI: Angular SPA (single-page application)
- API Server: Sagemcom REST server (
Server: Sagemcom Rest) - Auth: Cookie-based session (salt, nonce, conid)
- API Version: v1 (primary), v2 (newer endpoints)
- The router does not support
PUTto the DNS endpoint without theenableStaticparameter - DNS bypass works via the DHCP endpoint with
dnsserversparameter - Session cookies have a 15-minute TTL — OptusCLI handles keepalive automatically
- The
/api/v1/login-paramsendpoint (challenge-response) exists but direct login bypasses it - Some endpoints return 404 on this firmware but 200 on others — use
--discover
OptusCLI/
├── optusctl.js # CLI entry point (19 commands, 80+ flags)
├── server.js # Express + Socket.io web server
├── lib/
│ ├── RouterClient.js # HTTP client with auth, session, discovery
│ ├── RouterAPI.js # Typed API methods for all endpoints
│ └── OptusHelpers.js # Cryptography utilities (legacy)
├── web/
│ └── index.html # Web GUI (dark theme, live dashboard)
├── settings.conf.sample # Configuration template
└── package.json
Q: Is this safe? Can I brick my router? No read-only command can damage anything. Mutations (DNS change, reboot, factory reset) are clearly marked. The CLI asks for confirmation before destructive actions.
Q: Does this void my warranty? Using the router's own undocumented API shouldn't void warranty. These are the same API calls the official web UI makes.
Q: Why not just use the web UI?
The web UI locks DNS server selection to a dropdown of ~20 providers. You cannot enter 192.168.0.100 for your Pi-hole.
Q: What firmware versions are supported? Tested on SGKY10001970. Earlier versions (SGKY10000893) use a different auth flow — the code handles both.
Q: Can I run the Web GUI on a different port?
PORT=8080 npm run webProject based on work done by: https://github.com/CptMeetKat/OptusDNSBypass/tree/main
MIT
Built to liberate router management. Not affiliated with Optus or Sagemcom.
