MQTT - fields always in BASE64?


In the MQTT messages I see that many fields are BASE64 encoded (data, devEUI, devAddr) (see MQTT message below)

Q: Was it also the case in earlier version of ChirStack or was it altered as of a specific version?

  "applicationID" : "1",
  "applicationName" : "test-application",
  "deviceName" : "02-test",
  "devEUI" : "NjI1MlU3bRY=",
  "rxInfo" : [ ],
  "txInfo" : {
    "frequency" : 868100000,
    "modulation" : "LORA",
    "loRaModulationInfo" : {
      "bandwidth" : 125,
      "spreadingFactor" : 7,
      "codeRate" : "4/5",
      "polarizationInversion" : false
  "adr" : true,
  "dr" : 5,
  "fCnt" : 21,
  "fPort" : 1,
  "data" : "RECA",
  "objectJSON" : "",
  "tags" : { },
  "confirmedUplink" : true,
  "devAddr" : "AIPm8Q=="


Hi @DeBuffel,

When you set the Application Server marshaler to json_v3, the data is in text, if you use protobuf or json, the fields are in base64.


But might it be that in previous Chirpstack versions the data was BASE64 and the devEUI nd devAddr was not? (the data was always in base64)

Imho the devEUI was not base64 in previous version. Maybe I am wrong or maybe it was changed?


The difference is the marshaler config. json_v3 is the legacy format, json or protobuf is the recommended format, as you can directly use the structs generated by Protobuf to unmarshal these payloads.

See HTTP - ChirpStack open-source LoRaWAN<sup>®</sup> Network Server for some examples.


Yes, you are right. The default marshaler probably was changed in a version (overlooked it).
All fixed now. Thnx