[release] ChirpStack Network Server v3.13

ChirpStack Network Server v3.13.0


Uplink / downlink logging to Redis Stream

This implements the (optional) logging of uplink and downlink frames for gateways and devices to a Redis Stream for external logging and monitoring purposes. By default this option is disabled, it can be enabled in the Configuration.

LoRaWAN 2.4 GHz

This adds the ISM2400 band to ChirpStack for LoRaWAN 2.4 GHz support.


Refactor downlink scheduling

This includes the following changes:

txack / removing of queue items

A downlink queue-item will only be deleted when it has been successfully acknowledged for transmission by the gateway. In case the gateway was unable to transmit the downlink, then the downlink will stay in the queue and the downlink frame-counter is not incremented. Note that the multicast frame-counter is incremented on scheduling, not after a txack, as a multicast downlink can be transmitted by multiple gateways in order to reach all devices in the multicast-group.

re-encrypt queue-items

As per LoRaWAN 1.0.4 specifications, mac-commands must be prioritized over application payloads, this mean than when there is an
application payload in the queue with frame-counter N, but the downlink with frame-counter N will be a mac-command only downlink
(because of max. payload-size restrictions), the NS will request the AS to re-encrypt the application payload using frame-counter N+1 so
that it can be sent to the device at the next downlink opportunity.

Schema migrations

Refactor SQL schema migrations from sql-migrate to golang-migrate. (#525)

Update Go import path

This updates the Go import path to github.com/brocaar/chirpstack-network-server/v3. This fixes the go get issue, when importing github.com/brocaar/chirpstack-network-server/v3/adr when implementing a custom ADR algorithm.

Log timestamp precision

This adds ns precision to the log timestamp.

Custom authorization for roaming

This adds a configurable HTTP authorization header for roaming. (#528)

Class-C scheduling improvements

  • Lock Class-C downlink scheduling for device when a Class-A uplink is received, to avoid that the Class-C scheduler schedules a downlink within Class-A receive-window.
  • Add config option to lock gateway for a given time after a Class-C downlink, to avoid continuously sending Class-C downlinks and therefore not being able to receive any uplink (responses).


  • Do not try to lookup NetID of unknown devices when roaming is disabled.
1 Like