---
title: "Uplink Data Message"
canonical: "https://docs.loriot.io/space/NMS/6032848/Uplink%20Data%20Message"
format: markdown
---
> Macro (rw-ui-tabs-macro)
> 
> > Macro (rw-tab)
> 
> <u>**Uplink Data Message**</u>
> 
> An **Uplink Data Message** is a message received from a registered end-device on the Network Server which is sent to the defined [Application Outputs](https://docs.loriot.io/space/NMS/6033171/Application+Outputs).
> 
> - Every received message will be sent to the defined endpoint in the configured verbosity in a JSON format.
> - An uplink is identifiable by the `rx` value present in the `cmd `field on the JSON message.
> - Only the frame reached by the first gateway is sent to the Application Outputs via the `cmd: "rx"` message.
> - If a given frame was reached by more than one gateway, it is possible to verify which gateways forwarded the frame using [Cache Queries](https://docs.loriot.io/space/NMS/6031843/Cache+Queries) (only if [Gateway Information](https://docs.loriot.io/space/NMS/6032911/Gateway+Message#How-to-configure-the-Gateway-Message-verbosity) is enabled for the Application).
> 
> 
> Every uplink JSON message corresponds to one frame produced by your device; it contains not only the raw application payload, but also additional meta-data.
> 
> - If APPSKEY is assigned to a device, the `data` field will be populated with decrypted data, and `encdata` will be omitted.
> - If APPSKEY is missing, the `encdata` field will be populated with the encrypted payload, and `data` will be omitted.
> - Additionally, if the end-device is [linked to a Payload Codec](https://docs.loriot.io/space/NMS/6033269/Link+Devices+to+a+Payload+Codec), the uplink message will include the `decoded` field populated with the decoded data returned by the Codec.
> 
> 
> <u>**Rx Message Activation and Verbosity**</u>
> 
> > ℹ️ **The following instructions are applicable for NMS release versions v8.9.0 and later.**
> > ℹ️ 
> > ℹ️ Instructions for previous NMS release versions can be found further below.
> 
> From the Outputs Customization Options in the [Application Outputs](https://docs-loriot.atlassian.net/wiki/spaces/NMS/pages/6033171) page users can configure the delivery of the `rx` message by selecting one of the following options:
> 
> - **Disabled**: disables the delivery of the `rx` message.
> - **Basic Verbosity**: enables the delivery of the `rx` message, with basic verbosity.
> - **Extended Verbosity**.
> 
> ![image-20251117-175258.png](media://e355c35e-0156-4c7c-a9be-bc7cc2976077)
> 
> > ℹ️ More information about Basic and Extended verbosity is included below.
> 
> 
> <u>**End-device name addition to rx and gw messages**</u>
> 
> > ℹ️ **This feature was introduced with NMS release version v8.9.0.**
> 
> From the Outputs Customization Options in the [Application Outputs](https://docs-loriot.atlassian.net/wiki/spaces/NMS/pages/6033171) page it's also possible to toggle the addition of the end-device **name** to `rx` and `gw` messages sent to the configured Outputs.
> 
> ![image-20251117-180646.png](media://cbb0916a-4719-40b8-9764-2572fbe11859)
> 
> 
> <u>**Rx Output Activation and Verbosity (NMS versions prior to v8.9.0)**</u>
> 
> From the Features section of the [Application Details page](https://docs-loriot.atlassian.net/wiki/spaces/NMS/pages/6033083) it is possible to toggle between enabling or disabling the delivery of `rx` messages to Application Outputs.
> 
> ![image-20240314-072359.png](media://6eaa4875-5f1c-4614-b7f0-7f09fc81450d)
> 
> Additionally, from the same section, it is possible to configure the verbosity of the `rx` message.
> 
> ![image-20240314-072426.png](media://82776ee2-793b-4ac1-9bfa-8af17ece1063)
> 
> > ℹ️ More information about Basic and Extended verbosity is included below.
> 
> 
> <u>**Basic verbosity**</u>
> 
> **Message format **[Typescript interface notation](https://www.typescriptlang.org/docs/handbook/interfaces.html)
> 
> ```json
> {
>   cmd      : 'rx';    // identifies type of message, rx = uplink message
>   seqno    : number;  // LORIOT NMS uplink frame counter at Application level
>   EUI      : string;  // end-device EUI, 16 hex digits (without dashes)
>   ts       : number;  // server timestamp as number (milliseconds from Linux epoch)
>   ack      : boolean; // acknowledgement flag as set by end-device
>   bat	   : number;  // end-device battery status, response to the DevStatusReq LoRaWAN MAC Command
>   fcnt     : number;  // end-device frame counter, a 32-bit number
>   port     : number;  // port as sent by the end-device
>   offline  : boolean; // status of connection to Network Server upon receipt of the frame
> 
>   name?    : string;  // end-device name
>                       // only present if Send device name option is enabled
>   
>   encdata? : string;  // data payload (APPSKEY encrypted hex string)
>                       // only present if APPSKEY is not assigned to end-device
> 
>   data?    : string;  // data payload (decrypted, plaintext hex string)
>                       // only present if APPSKEY is assigned to end-device
> 	   
>   decoded? : any;     // decoded data returned by the Payload Codec
>                       // only present when a valid Payload Codec is linked
> }
> ```
> 
> **Example Message**
> 
> ```json
> {
>   "cmd"     : "rx",
>   "seqno"   : 2,
>   "EUI"     : "0102030405060708",
>   "ts"      : 1470850675433,
>   "ack"     : false,
>   "bat"     : 254,
>   "fcnt"    : 1,
>   "port"    : 1,
>   "offline" : false,
>   "name"    : "Water meter",
>   "data"    : "0102AABB",
>     "decoded": {
>       "data": {
>         "temperature": 28.15,
>         "humidity": 0.32,
>         "pulseCounter": 1
>         },
>       "errors": [],
>       "warnings": []
>       }
> }
> ```
> 
> | Parameter | Type | Description |
> | --- | --- | --- |
> | `cmd` | string | identifies type of message, always `rx` for uplink data messages |
> | `seqno` | number | LORIOT NMS uplink frame counter at Application level |
> | `EUI` | string | end-device EUI, 16 hex digits (without dashes) |
> | `ts` | number | server timestamp as a number of milliseconds from Linux epoch |
> | `ack` | boolean | acknowledgement flag as set by end-device |
> | `bat` | number | end-device battery status, response of the `DevStatusReq` LoRaWAN MAC Command |
> | `fcnt` | number | end-device frame counter, a 32-bit integer number |
> | `port` | number | port number as sent by the end-device |
> | `offline` | boolean | status of connection to Network Server upon receipt of the frame |
> | `name` | string (optional) | end-device name, only present if **Send device name** option is enabled |
> | `encdata` | string (optional) | encrypted data payload as hexadecimal string, only present if APPSKEY is not assigned to end-device |
> | `data` | any (optional) | decrypted data payload as hexadecimal string, only present if APPSKEY is assigned to end-device |
> | `decoded` | string (optional) | decoded data returned by the Payload Codec, only present when a valid Payload Codec is linked |
> 
> 
> <u>**Extended verbosity**</u>
> 
> The LORIOT Network Server can deliver extended radio information to the Application Outputs.
> 
> The extended radio information is reported as registered by the first gateway that received the frame.
> 
> **Message format **[Typescript interface notation](https://www.typescriptlang.org/docs/handbook/interfaces.html)
> 
> ```json
> {
>   cmd      : 'rx';    // identifies type of message, rx = uplink message
>   seqno    : number;  // LORIOT NMS uplink frame counter at Application level
>   EUI      : string;  // end-device EUI, 16 hex digits (without dashes)
>   ts       : number;  // server timestamp as number (miliseconds from Linux epoch)
>   ack      : boolean; // acknowledgement flag as set by end-device
>   fcnt     : number;  // end-device frame counter, a 32-bit number
>   port     : number;  // port as sent by the end-device
>   bat      : number;  // end-device battery status, response to the DevStatusReq LoRaWAN MAC Command
>   offline  : boolean; // status of connection to Network Server upon receipt of the frame
>   
>   name?    : string;  // end-device name
>                       // only present if Send device name option is enabled
>   
>   encdata? : string;  // data payload (APPSKEY encrypted hex string)
>                       // only present if APPSKEY is not assigned to end-device
>   
>   data?    : string;  // data payload (decrypted, plaintext hex string)
>                       // only present if APPSKEY is assigned to end-device
>   
>   decoded? : any;     // decoded data returned by the Payload Codec
>                       // only present when a valid Payload Codec is linked
>   
>   // extended radio information
>   
>   freq     : number;  // radio frequency at which the frame was received, in Hz
>   dr       : string;  // radio data rate - spreading factor, bandwidth and coding rate
>                       // e.g. SF12 BW125 4/5
>                       // UPDATED: previously the field was called 'sf'
>   rssi     : number;  // frame rssi, in dBm, as integer number
>   snr      : number;  // frame snr, in dB, one decimal place
>   toa      : number;  // frame time-on-air during transfer, in milliseconds
> }
> ```
> 
> **Example Message**
> 
> ```json
> {
>   "cmd"     : "rx",
>   "seqno"   : 2,
>   "EUI"     : "0102030405060708",
>   "ts"      : 1470850675433,
>   "ack"     : false,
>   "bat"     : 156,
>   "offline" : false,
>   "name"    : "Water meter",
>   "fcnt"    : 1,
>   "port"    : 1,
>   "data"    : "0102AABB",
>   "freq"    : 868500000,
>   "dr"      : "SF12 BW125 4/5",
>   "rssi"    : -130,
>   "snr"     : 1.2,
>   "toa"     : 196,
>   "decoded": {
>     "data": {
>       "temperature": 28.15,
>       "humidity": 0.32,
>       "pulseCounter": 1
>       },
>     "errors": [],
>     "warnings": []
>     },
> }
> ```
> 
> | Parameter | Type | Description |
> | --- | --- | --- |
> | `cmd` | string | identifies type of message, always 'rx' for uplink data messages |
> | `seqno` | number | LORIOT NMS uplink frame counter at Application level |
> | `EUI` | string | end-device EUI, 16 hex digits (without dashes) |
> | `ts` | number | server timestamp as a number of milliseconds from Linux epoch |
> | `ack` | boolean | acknowledgement flag as set by end-device |
> | `bat` | number | end-device battery status, response of the DevStatusReq LoRaWAN MAC Command |
> | `fcnt` | number | end-device frame counter, a 32-bit integer number |
> | `port` | number | port number as sent by the end-device |
> | `offline` | boolean | status of connection to Network Server upon receipt of the frame |
> | `name` | string (optional) | end-device name, only present if **Send device name** option is enabled |
> | `encdata` | string (optional) | encrypted data payload as hexadecimal string, only present if APPSKEY is not assigned to end-device |
> | `decoded` | any (optional) | decoded data returned by the Payload Codec, only present when a valid Payload Codec is linked |
> | `data` | string (optional) | decrypted data payload as hexadecimal string, only present if APPSKEY is assigned to end-device |
> | `freq` | number | radio frequency at which the frame was received, in Hz |
> | `dr` | string | radio data rate - spreading factor, bandwidth and coding rate, e.g. SF12 BW125 4/5 |
> | `rssi` | number | frame rssi, in dBm, as integer number |
> | `snr` | number | frame snr, in dB, one decimal place |
> | `toa` | number | frame time-on-air during transfer, in milliseconds |
> 
> > Macro (rw-tab)
> 
> <u>**Uplink Data Message**</u>
> 
> An "Uplink Data Message" is a message received from a registered End-Point on the Network Management System which is sent to the defined [Application Outputs](https://docs.loriot.io/space/NMS/6033171/Application+Outputs) in a JSON format.
> 
> Every uplink JSON message corresponds to one frame produced by an End-Point; it contains not only the raw application payload, but also additional meta-data.
> 
> - Every received message will be sent to the defined Outputs in a JSON format.
> - An uplink is identifiable by the `rx` value present in the `cmd` field on the JSON message.
> - Only the frame reached by the first Base Station is sent to the Application Outputs via the `cmd: rx` message.
> - If a given frame was reached by more than one Base Station, it is possible to verify which Base Stations forwarded the frame using [Cache Queries](https://docs.loriot.io/space/NMS/6031843/Cache+Queries).
> 
> > ℹ️ - Data present in the `data` field is decrypted (in mioty® protocol, decryption takes place in the Base Station).
> > ℹ️ - Radio information is reported as seen by the first Base Station that received the frame.
> > ℹ️ - Additionally, if the End-Point is <u>[linked to a Payload Codec](https://docs.loriot.io/space/NMS/6033269/Link+Devices+to+a+Payload+Codec)</u><u>,</u> the uplink message will include the `decoded` field populated with the decoded data returned by the Codec.
> 
> 
> <u>**Rx Message Activation**</u>
> 
> Starting with NMS release version v8.9.0, users can toggle the sending of **Rx Messages** for the Application (the message is enabled by default).
> 
> ![image-20260903-155548.png](media://b47436a2-0261-4129-8aa0-608da3759cc5)
> 
> 
> <u>**End-Point name addition to rx and gw messages**</u>
> 
> Starting with NMS release version v8.9.0, it's also possible to toggle the addition of the End-Point **name** to `rx` and `gw` messages sent to the configured Outputs.
> 
> ![image-20260903-160101.png](media://77c354f3-6d56-4ec9-9a53-ae2d95f18096)
> 
> 
> <u>**Rx Message format**</u>
> 
> **Message format **[Typescript interface notation](https://www.typescriptlang.org/docs/handbook/interfaces.html)
> 
> ```json
> {
>   cmd      : 'rx';    // identifies type of message, rx = uplink message
>   seqno	   : number;  // LORIOT NMS uplink frame counter at Application level
>   EUI      : string;  // End Point EUI, 16 hex digits (without dashes)
>   ts       : number;  // server timestamp as number (miliseconds from Linux epoch)
>   fcnt     : number;  // frame counter, a 32-bit number
>   data     : string;  // data payload (decrypted, plaintext hex string)
>   rssi     : number;  // frame rssi, in dBm, as integer number
>   snr      : number;  // frame snr, in dB, one decimal place
>   name?    : string;  // End-Point name
>                       // only present if Send End Point name option is enabled
>   protocol : 'mioty'; // must always have the value 'mioty'
> }
> ```
> 
> **Example Message**
> 
> ```json
> {
>   "cmd"      : "rx",
>   "seqno"    : 2,
>   "EUI"      : "0102030405060708",
>   "ts"       : 1470850675433,
>   "fcnt"     : 1,
>   "data"     : "0102AABB",
>   "rssi"     : -130,
>   "snr"      : 1.2,
>   "name"     : "Water meter",
>   "protocol" : "mioty"
> }
> ```
> 
> | Parameter | Type | Description |
> | --- | --- | --- |
> | `cmd` | string | identifies type of message, always `rx` for uplink data messages |
> | `seqno` | number | LORIOT NMS uplink frame counter at Application level |
> | `EUI` | string | End Point EUI, 16 hex digits (without dashes) |
> | `ts` | number | server timestamp as a number of milliseconds from Linux epoch |
> | `fcnt` | number | frame counter, a 32-bit integer number |
> | `data` | string | decrypted data payload as hexadecimal string |
> | `rssi` | number | frame rssi, in dBm, as integer number |
> | `snr` | number | frame snr, in dB, one decimal place |
> | `name` | string (optional) | End-Point name, only present if **Send End Point name** option is enabled |
> | `protocol` | string | identifies the mioty® protocol, always `mioty` |