I would like to announce a new ChirpStack Component, the ChirpStack Concentratord!
The most used Packet Forwarder currently is the Semtech UDP Packet Forwarder. Support is provided by the ChirpStack Gateway Bridge which handles the UDP communication and transforms this into MQTT payloads. This has been and still is working great, but it has its limitations.
One of the recurring questions I’m getting is if the ChirpStack Network Server supports duty-cycle support. While it would be possible to implement these calculations at the Gateway Bridge or Network Server, technically they should be performed as close to the chipset as possible as a gateway could be shared by multiple networks. The Concentratord would be the right place to implement duty-cycle calculations in the future and expose this to the Network Server.
With the Concentratord I also want to make it easier to configure a gateway. Instead of having to know all the calibration values / tx power table values of a specific gateway, With the Concentratord config you only have to set your gateway model. To configure the channels, calculating the radio center frequencies and for each channel the offset is no longer needed.
An EU868 configuration could look like:
# Concentratord configuration. [concentratord] # Log level. # # Valid options are: # * TRACE # * DEBUG # * INFO # * WARN # * ERROR # * OFF log_level="INFO" # Log to syslog. # # When set to true, log messages are being written to syslog instead of stdout. log_to_syslog=false # Statistics interval. stats_interval="30s" # Configuration for the (ZeroMQ based) API. [concentratord.api] # Event PUB socket bind. event_bind="ipc:///tmp/concentratord_event" # Command REP socket bind. command_bind="ipc:///tmp/concentratord_command" # LoRa gateway configuration. [gateway] # Antenna gain (dB). antenna_gain=0 # Public LoRaWAN network. lorawan_public=true # Gateway vendor / model. model="multitech_mtac_lora_h_868_eu868_ap1_gps" # Gateway ID. gateway_id="0202030405060708" # LoRa concentrator configuration. [gateway.concentrator] # Multi spreading-factor channels (LoRa). multi_sf_channels=[ 868100000, 868300000, 868500000, 867100000, 867300000, 867500000, 867700000, 867900000, ] # LoRa std channel (single spreading-factor). [gateway.concentrator.lora_std] frequency=868300000 bandwidth=250000 spreading_factor=7 # FSK channel. [gateway.concentrator.fsk] frequency=868800000 bandwidth=125000 datarate=50000 # Beacon configuration. # # This requires a gateway with GPS / GNSS. # # Please note that the beacon settings are region dependent. The correct # settings can be found in the LoRaWAN Regional Parameters specification. [gateway.beacon] # Compulsory RFU size. compulsory_rfu_size=2 # Beacon frequency / frequencies (Hz). frequencies=[ 869525000, ] # Bandwidth (Hz). bandwidth=125000 # Spreading factor. spreading_factor=9 # TX power. tx_power=14
If you have a Raspberry Pi based gateway and would like to test the Concentratord, then download the latest ChirpStack Gateway OS image, which works with the Concentratord out-of-the-box! https://www.chirpstack.io/gateway-os/overview/. Gateway specific packages will be released soon.
If you would like to get involved, please let me know. One of the most important tasks is to extend the list of supported models and their calibration values and help is much appreciated
Two final notes:
- The ChirpStack Gateway Bridge will continue to support the Semtech UDP Packet Forwarder
- The concept of the Concentratord is inspired by the Kerlink Lorad daemon
Looking forward to your feedback!