Collection of articles for working with Multitech devices in LoRaWAN networks.
Date: December 17, 2025
Gateway: MTCAP3 (172.16.33.111)
Firmware: 7.4.0-BETA2-7-g7e2e653f
The /api?fields=stats endpoint provides access to real-time device statistics and status information. Unlike configuration endpoints, stats endpoints are primarily read-only and provide monitoring data.
The stats endpoint returns an array of available stat categories:
GET /api?fields=stats
Available Categories:
bluetooth - Bluetooth statisticscpu - CPU usage and loaddashboard - Comprehensive dashboard view (most useful!)dns - DNS server statisticsdocker - Docker container statisticsdualSim - Dual SIM statusextUsb - External USB statisticsflashStatus - Flash storage statusgps - GPS location and statusgre - GRE tunnel statisticsiface - Network interface statisticsifaceHistory - Interface historyifaceTotal - Total interface statisticsipsec - IPsec tunnel statisticsipsecLinkStatus - IPsec link statuslan0 - LAN interface statslora - LoRa gateway statisticsloraNodes - LoRa node statisticsmemory - Memory usagemodbus - Modbus statisticsovpn - OpenVPN tunnel statisticspackages - Installed packagesradio - Cellular radio statisticsradioFwuStatus - Radio firmware update statusradioPdpConfEffective - Effective PDP context configurationradioPdpConfStatic - Static PDP context configurationradioSimStatus - SIM card statusremoteMgmt - Remote management statusrootfsInfo - Root filesystem informationsaveAndRestore - Save/restore statusserial - Serial port statisticsservice - Service statusstorage - Storage statisticsGET /api?fields=stats/<category>
Example:
GET /api?fields=stats/radio
GET /api?fields=stats/memory
GET /api?fields=stats/cpu
The stats/dashboard endpoint provides a comprehensive system overview with the most commonly needed information:
GET /api?fields=stats/dashboard
Dashboard Includes:
system - Full system informationcellular_summary - Complete cellular configuration and statusni - All network interfaces with detailed configurationstats_radio - Current radio statusstats_memory - Memory usagestats_iface_ppp0 - Cellular interface statusstats_iface_wlan0 - WiFi client statusstats_dns - DNS configurationstats_gps - GPS statusstats_radioPdpConfEffective - Active APN configurationwaninfo_currentWan - Currently active WAN interfacewifi_ap - WiFi AP statuswifi_client - WiFi client statusdhcp - DHCP server statusipPassthrough - IP passthrough configurationbluetooth - Bluetooth statusstats_dualSim - Dual SIM statusstats/radio)Real-time cellular radio information:
{
"stats_radio": {
"carrier": "AT&T Wireless Inc.",
"network": "AT&T",
"model": "LE910C4-WWXD",
"firmware": "M0F.603007",
"imei": "016666003998671",
"imsi": "310170410613094",
"iccid": "89011703274106130943",
"rssi": 25,
"rssidBm": "-63",
"netreg": "SEARCHING",
"service": "Unknown",
"roaming": false,
"mcc": "310",
"mnc": "260",
"lac": "74B4",
"cid": "4F8A",
"channel": "512",
"type": "LTE",
"supportedCellularModes": "2g,3g,4g",
"simCarrierCode": "att",
"simMcc": "310",
"simMnc": "170"
}
}
Key Fields:
rssi / rssidBm - Signal strengthnetreg - Network registration statuscarrier / network - Network operatorroaming - Roaming statuslac / cid - Cell tower locationmcc / mnc - Mobile country/network codestats/memory)System memory usage:
{
"stats_memory": {
"mem": {
"total": "483524608",
"used": "53329920",
"free": "372219904",
"shared": "4263936",
"buff/cache": "57974784",
"available": "414412800"
},
"swap": {
"total": "0",
"used": "0",
"free": "0"
}
}
}
stats/iface_<interface>)Per-interface statistics:
GET /api?fields=stats/iface_ppp0 # Cellular interface
GET /api?fields=stats/iface_eth0 # Ethernet interface
GET /api?fields=stats/iface_wlan0 # WiFi interface
Example for cellular (stats/iface_ppp0):
{
"stats_iface_ppp0": {
"localIp": "10.123.45.67",
"remoteIp": "10.64.64.64",
"dnsServers": ["8.8.8.8", "8.8.4.4"],
"cellStatus": "Connected",
"cellStatusCode": "CONNECTED",
"cellularMode": "LTE",
"rssi": "25",
"rssiDbm": "-63",
"roaming": false,
"tower": "4F8A",
"areaCode": "74B4",
"pci": "123",
"uptime": 15234,
"timestamp": "12/17/2025 20:40:36"
}
}
stats/cpu)CPU usage and load:
GET /api?fields=stats/cpu
stats/gps)GPS location and status:
GET /api?fields=stats/gps
stats/lora)LoRa gateway statistics:
GET /api?fields=stats/lora
stats/service)Service status for all system services:
GET /api?fields=stats/service
GET /api/lora/status
Returns process IDs for LoRa services:
{
"lora-network-server": 12811,
"lora-packet-forwarder": [12845],
"lora-cloud-connector": 3332,
"lora-basic-station": 0,
"lora-lens-server": 0
}
GET /api/lora/gateways
Returns registered LoRa gateways with statistics:
[
{
"gweui": "00-80-00-00-d0-00-42-6e",
"ip_addr": "127.0.0.1",
"ip_port": 56078,
"last_seen": "2025-12-17T20:39:42Z",
"version": 2,
"rx_count": 2501,
"rx_ok": 2366,
"rx_forwarded": 2496,
"crc_errors": 130,
"mic_fails": 0,
"uplinks": 2370,
"uplinks_ok": 0,
"uplinks_nok_mic": 0,
"uplinks_nok_unknown": 2113,
"downlinks": 0,
"downlinks_ack_requested": 0,
"downlink_count": 0,
"tx_count": 0,
"ack_rate": 1.0,
"total_channels": 10,
"rx_ch_0": 325,
"rx_ch_1": 302,
...
}
]
GET /api/lora/devices
Returns registered LoRa end devices:
[
{
"deveui": "00-80-00-ff-00-00-00-02",
"name": "",
"class": "A",
"device_profile_id": 16,
"network_profile_id": 1,
"created_at": "2025-09-30T15:56:29Z",
"last_seen": "2025-12-15T22:18:21Z",
"last_nonce": 443,
"last_app_nonce": 20,
"rejoin_count": 0,
"firmware_version": "",
"hardware_version": "",
"product_id": "",
"serial_number": "",
"tags": ""
}
]
# Get comprehensive cellular status
GET /api?fields=stats/dashboard
# Extract key fields:
# - stats_radio.rssiDbm (signal strength)
# - stats_radio.netreg (registration status)
# - stats_iface_ppp0.cellStatus (connection status)
# - stats_iface_ppp0.localIp (assigned IP)
# - cellular_summary.currentProviderProfile (active profile)
# Get system health metrics
GET /api?fields=stats/cpu,stats/memory,stats/storage
# Monitor:
# - CPU load
# - Memory usage
# - Disk space
# Get all interface stats
GET /api?fields=stats/iface,stats/ifaceTotal
# Monitor:
# - Bytes sent/received
# - Packet counts
# - Error rates
# Get LoRa gateway and device stats
GET /api/lora/gateways
GET /api/lora/devices
GET /api?fields=stats/lora,stats/loraNodes
# Monitor:
# - Gateway uptime
# - Packet forwarding rates
# - Device activity
# - Signal quality
stats/radio - Signal strengthstats/iface_ppp0 - Connection statusstats/cpu - CPU loadstats/dashboard - Overall system statusstats/memory - Memory usage/api/lora/gateways - LoRa gateway statsstats/service - Service healthstats/storage - Disk usage/api/lora/devices - Device inventoryinactivity=true parameter to prevent session timeout during monitoring:
GET /api?fields=stats/radio&inactivity=true
stats/dashboard endpoint is optimized for comprehensive monitoring with a single request| Aspect | Stats Endpoints | Config Endpoints |
|---|---|---|
| Access Pattern | GET /api?fields=stats/<category> |
GET /api?fields=<resource> |
| Purpose | Real-time monitoring | Configuration management |
| Mutability | Read-only | Read/write (PUT/POST/DELETE) |
| Update Frequency | Real-time or near-real-time | On-demand |
| Persistence | Not saved | Saved with /api/command/save |
| Session Timeout | Can use inactivity=true |
Normal session timeout |
#!/bin/bash
# Monitor cellular connection
GATEWAY="https://172.16.33.111"
COOKIES="/tmp/gateway-cookies.txt"
# Login
curl -k -s -X POST "${GATEWAY}/api/login" \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin2019!"}' \
-c "${COOKIES}"
# Monitor loop
while true; do
# Get radio stats without updating session timeout
stats=$(curl -k -s "${GATEWAY}/api?fields=stats/radio&inactivity=true" -b "${COOKIES}")
rssi=$(echo "$stats" | jq -r '.result.stats_radio.rssidBm')
status=$(echo "$stats" | jq -r '.result.stats_radio.netreg')
carrier=$(echo "$stats" | jq -r '.result.stats_radio.carrier')
echo "$(date): Signal: ${rssi}dBm, Status: ${status}, Carrier: ${carrier}"
sleep 10
done