{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Teltonika",
  "model": "RUT955",
  "models": [
    "RUT955"
  ],
  "vendor_website": "teltonika-networks.com",
  "description": "LTE router with I/O and GPS: system, mobile data and I/O values over the Modbus server",
  "revision": 2,
  "revised": "2026-11-10",
  "source": "Teltonika Networks Wiki, \"RUT955 Modbus\"; https://wiki.teltonika-networks.com/view/RUT955_Modbus",
  "sources": [
    {
      "title": "RUT955 Modbus (Teltonika Networks Wiki)",
      "url": "https://wiki.teltonika-networks.com/view/RUT955_Modbus",
      "note": "Modbus Registers: get and set parameter tables",
      "version": "wiki revision 123083"
    }
  ],
  "notes": [
    "Teltonika RUT955 LTE router with I/O and GPS: the Modbus TCP server and the serial Modbus server both answer with the same system values. The registers are holding registers (function 3 to read, 6 and 16 to write).",
    "The manual lists a register address (0-based, as sent on the bus) and a register number (address + 1). This map uses the address.",
    "Text values take 2 characters per register. Numbers take 2 registers; the manual gives no word order, so big is assumed.",
    "Mobile data counters are in bytes, kilobytes or megabytes, as chosen by the Mobile data type setting of the Modbus server.",
    "The server is off by default. Factory settings: TCP port 502, device ID 1 (0 answers to any ID), serial 9600 baud, 8 data bits, no parity, 1 stop bit.",
    "With 'Enable custom register block' on, registers from 1025 onward are a user-defined block that is not in this map.",
    "Left out because the manual is not clear: Change APN (length not fixed)."
  ],
  "unit_id": 1,
  "baudrate": 9600,
  "parity": "N",
  "databits": 8,
  "stopbits": 1,
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "official",
  "registers": [
    {
      "name": "System uptime",
      "group": "Info",
      "area": "holding",
      "address": 1,
      "access": "R",
      "type": "uint32",
      "description": "System uptime"
    },
    {
      "name": "Mobile signal strength",
      "group": "Info",
      "area": "holding",
      "address": 3,
      "access": "R",
      "type": "int32",
      "unit": "dBm",
      "description": "RSSI"
    },
    {
      "name": "Temperature",
      "group": "Info",
      "area": "holding",
      "address": 5,
      "access": "R",
      "type": "int32",
      "scale": 0.1,
      "unit": "°C"
    },
    {
      "name": "System hostname",
      "group": "Info",
      "area": "holding",
      "address": 7,
      "access": "RW",
      "type": "string",
      "length": 16
    },
    {
      "name": "GSM operator name",
      "group": "Info",
      "area": "holding",
      "address": 23,
      "access": "R",
      "type": "string",
      "length": 16
    },
    {
      "name": "Serial number",
      "role": "serial",
      "group": "Info",
      "area": "holding",
      "address": 39,
      "access": "R",
      "type": "string",
      "length": 16
    },
    {
      "name": "LAN MAC address",
      "group": "Info",
      "area": "holding",
      "address": 55,
      "access": "R",
      "type": "string",
      "length": 16
    },
    {
      "name": "Device name",
      "group": "Info",
      "area": "holding",
      "address": 71,
      "access": "RW",
      "type": "string",
      "length": 16
    },
    {
      "name": "Currently active SIM card slot",
      "group": "Info",
      "area": "holding",
      "address": 87,
      "access": "R",
      "type": "string",
      "length": 16
    },
    {
      "name": "Network registration info",
      "group": "Info",
      "area": "holding",
      "address": 103,
      "access": "R",
      "type": "string",
      "length": 16
    },
    {
      "name": "Network type",
      "group": "Info",
      "area": "holding",
      "address": 119,
      "access": "R",
      "type": "string",
      "length": 16
    },
    {
      "name": "Digital input (DIN1) state",
      "group": "I/O",
      "area": "holding",
      "address": 135,
      "access": "R",
      "type": "int32"
    },
    {
      "name": "Digital galvanically isolated input (DIN2) state",
      "group": "I/O",
      "area": "holding",
      "address": 137,
      "access": "R",
      "type": "int32"
    },
    {
      "name": "Current WAN IP address",
      "group": "Info",
      "area": "holding",
      "address": 139,
      "access": "R",
      "type": "uint32",
      "description": "The manual calls it an 8-bit unsigned integer but gives two registers; read as one 32-bit number"
    },
    {
      "name": "Analog input (PIN 9) value",
      "group": "I/O",
      "area": "holding",
      "address": 141,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "GPS latitude coordinate",
      "group": "GPS",
      "area": "holding",
      "address": 143,
      "access": "R",
      "type": "float32"
    },
    {
      "name": "GPS longitude coordinate",
      "group": "GPS",
      "area": "holding",
      "address": 145,
      "access": "R",
      "type": "float32"
    },
    {
      "name": "GPS fix time",
      "group": "GPS",
      "area": "holding",
      "address": 147,
      "access": "R",
      "type": "string",
      "length": 16,
      "description": "Text format (Unix timestamp×1000)"
    },
    {
      "name": "GPS date and time",
      "group": "GPS",
      "area": "holding",
      "address": 163,
      "access": "R",
      "type": "string",
      "length": 16,
      "description": "Text format (DDMMYYhhmmss)"
    },
    {
      "name": "GPS speed",
      "group": "GPS",
      "area": "holding",
      "address": 179,
      "access": "R",
      "type": "float32"
    },
    {
      "name": "GPS satellite count",
      "group": "GPS",
      "area": "holding",
      "address": 181,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "GPS accuracy",
      "group": "GPS",
      "area": "holding",
      "address": 183,
      "access": "R",
      "type": "float32"
    },
    {
      "name": "Mobile data received today (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 185,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent today (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 187,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received this week (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 189,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent this week (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 191,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received this month (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 193,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent this month (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 195,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received last 24h (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 197,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent last 24h (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 199,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Galvanically isolated open collector output status",
      "group": "I/O",
      "area": "holding",
      "address": 201,
      "access": "RW",
      "type": "uint16",
      "write_min": 0,
      "write_max": 1
    },
    {
      "name": "Relay output status",
      "group": "I/O",
      "area": "holding",
      "address": 202,
      "access": "RW",
      "type": "uint16",
      "write_min": 0,
      "write_max": 1
    },
    {
      "name": "Switch WiFi ON/OFF",
      "group": "Control",
      "area": "holding",
      "address": 203,
      "type": "uint16",
      "access": "W",
      "description": "Turns WiFi ON or OFF",
      "write_min": 0,
      "write_max": 1
    },
    {
      "name": "Switch mobile data connection",
      "group": "Control",
      "area": "holding",
      "address": 204,
      "type": "uint16",
      "access": "W",
      "description": "Turns mobile data connection ON or OFF",
      "write_min": 0,
      "write_max": 1
    },
    {
      "name": "Active SIM card",
      "group": "Info",
      "area": "holding",
      "address": 205,
      "access": "RW",
      "type": "uint16",
      "write_min": 0,
      "write_max": 2,
      "enum": {
        "0": "Switch to the other SIM",
        "1": "SIM1",
        "2": "SIM2"
      },
      "description": "Reading gives the active SIM; writing 1 or 2 selects it, 0 switches to the other one"
    },
    {
      "name": "Reboot",
      "group": "Control",
      "area": "holding",
      "address": 206,
      "type": "uint16",
      "access": "W",
      "description": "Write 1 to reboot the device",
      "write_min": 1,
      "write_max": 1
    },
    {
      "name": "Mobile data received last week (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 292,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent last week (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 294,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received last month (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 296,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent last month (SIM1)",
      "group": "Mobile data",
      "area": "holding",
      "address": 298,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received today (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 300,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent today (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 302,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received this week (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 304,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent this week (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 306,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received this month (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 308,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent this month (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 310,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received last 24h (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 312,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent last 24h (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 314,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received last week (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 316,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent last week (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 318,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data received last month(SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 320,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Mobile data sent last month (SIM2)",
      "group": "Mobile data",
      "area": "holding",
      "address": 322,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Digital non-isolated input",
      "group": "I/O",
      "area": "holding",
      "address": 324,
      "access": "R",
      "type": "uint16"
    },
    {
      "name": "Digital open collector output",
      "group": "I/O",
      "area": "holding",
      "address": 325,
      "access": "RW",
      "type": "uint16",
      "write_min": 0,
      "write_max": 1
    },
    {
      "name": "Modem ID",
      "group": "Info",
      "area": "holding",
      "address": 328,
      "access": "R",
      "type": "string",
      "length": 8
    },
    {
      "name": "ACL activity",
      "group": "Info",
      "area": "holding",
      "address": 345,
      "access": "RW",
      "type": "uint16",
      "write_min": 0,
      "write_max": 1
    },
    {
      "name": "ACL status",
      "group": "Info",
      "area": "holding",
      "address": 346,
      "access": "R",
      "type": "float32"
    },
    {
      "name": "IMSI",
      "group": "Info",
      "area": "holding",
      "address": 348,
      "access": "R",
      "type": "string",
      "length": 16
    },
    {
      "name": "Unix timestamp",
      "group": "Info",
      "area": "holding",
      "address": 364,
      "access": "R",
      "type": "uint32"
    },
    {
      "name": "Local ISO time",
      "group": "Info",
      "area": "holding",
      "address": 366,
      "access": "R",
      "type": "string",
      "length": 12
    },
    {
      "name": "UTC time",
      "group": "Info",
      "area": "holding",
      "address": 378,
      "access": "R",
      "type": "string",
      "length": 12
    },
    {
      "name": "Switch 2.4GHz WiFi ON/OFF",
      "group": "Control",
      "area": "holding",
      "address": 390,
      "type": "uint16",
      "access": "W",
      "description": "Turns 2.4GHz WiFi ON or OFF",
      "write_min": 0,
      "write_max": 1
    },
    {
      "name": "LAN IP",
      "group": "Info",
      "area": "holding",
      "address": 394,
      "access": "RW",
      "type": "uint32",
      "description": "The manual calls it an 8-bit unsigned integer but gives two registers; read as one 32-bit number"
    },
    {
      "name": "Send SMS",
      "group": "Control",
      "area": "holding",
      "address": 396,
      "type": "uint16",
      "access": "W",
      "description": "Sends an SMS with content defined in Add SMS (397) register",
      "write_min": 0,
      "write_max": 1
    },
    {
      "name": "Add SMS",
      "group": "Info",
      "area": "holding",
      "address": 397,
      "access": "RW",
      "type": "string",
      "length": 90
    }
  ]
}
