UG65 - MQTT gateway data showing in binary

I have a UG65 gateway (on firmware 60.0.0.42-r5) and have been trying to get it to send data to my MQTT broker as JSON. The application data does show in JSON, but the gateway topics (e.g gateway/id/event/stats) show up in binary as shown in the snippet below.
ߴ��08j����z ��a (�

When I look at the web dashboard everything seems fine as I can see the gateway is online and the lorawan frames coming in.

I have modified the configuration files from GitHub - chirpstack/chirpstack-docker: Setup ChirpStack using Docker Compose to include json=true.

chirpstack.toml

# Logging.
[logging]

  # Log level.
  #
  # Options are: trace, debug, info, warn error.
  level="info"


# PostgreSQL configuration.
[postgresql]

  # PostgreSQL DSN.
  #
  # Format example: postgres://<USERNAME>:<PASSWORD>@<HOSTNAME>/<DATABASE>?sslmode=<SSLMODE>.
  #
  # SSL mode options:
  #  * disable - no SSL
  #  * require - Always SSL (skip verification)
  #  * verify-ca - Always SSL (verify that the certificate presented by the server was signed by a trusted CA)
  #  * verify-full - Always SSL (verify that the certification presented by the server was signed by a trusted CA and the server host name matches the one in the certificate)
  dsn="postgres://chirpstack:chirpstack@$POSTGRESQL_HOST/chirpstack?sslmode=disable"

  # Max open connections.
  #
  # This sets the max. number of open connections that are allowed in the
  # PostgreSQL connection pool.
  max_open_connections=10

  # Min idle connections.
  #
  # This sets the min. number of idle connections in the PostgreSQL connection
  # pool (0 = equal to max_open_connections).
  min_idle_connections=0


# Redis configuration.
[redis]

  # Server address or addresses.
  #
  # Set multiple addresses when connecting to a cluster.
  servers=[
    "redis://$REDIS_HOST/",
  ]

  # TLS enabled.
  tls_enabled=false

  # Redis Cluster.
  #
  # Set this to true when the provided URLs are pointing to a Redis Cluster
  # instance.
  cluster=false


# Network related configuration.
[network]

  # Network identifier (NetID, 3 bytes) encoded as HEX (e.g. 010203).
  net_id="000000"

  # Enabled regions.
  #
  # Multiple regions can be enabled simultaneously. Each region must match
  # the 'name' parameter of the region configuration in '[[regions]]'.
  enabled_regions=[
#    "as923",
#    "as923_2",
#    "as923_3",
#    "as923_4",
#    "au915_0",
#    "cn470_10",
#    "cn779",
#    "eu433",
    "eu868",
#    "in865",
#    "ism2400",
#    "kr920",
#    "ru864",
#    "us915_0",
#    "us915_1",
  ]


# API interface configuration.
[api]

  # interface:port to bind the API interface to.
  bind="0.0.0.0:8080"

  # Secret.
  #
  # This secret is used for generating login and API tokens, make sure this
  # is never exposed. Changing this secret will invalidate all login and API
  # tokens. The following command can be used to generate a random secret:
  #   openssl rand -base64 32
  secret="you-must-replace-this"


[integration]
  enabled=["mqtt"]

  [integration.mqtt]
    server="tcp://$MQTT_BROKER_HOST:1883/"
    json=true

    username="user"
    password="password"

    client_id="chirpchirp"

If the gateway uses binary (Protobuf) or JSON is configured at the gateway, not at the ChirpStack side. At the ChirpStack side you can configure if the application payloads (MQTT integration) are forwarded as binary (Protobuf) or JSON.

The recommended encoding for GW <> NS is binary.

1 Like