Install ChirpStack Concentratord
This section installs and configures the ChirpStack Concentratord for the LoRa concentrator module. The hardware path is different between the two variants, so pick the tab below that matches your device:
Connects via USB, the standard ChirpStack Concentratord configuration.
Connects via SPI through a RAK2287 HAT, a different install path.
- USB (FIBER, CM4)
- SPI via RAK2287 HAT (FIBER Lite, Pi 5)
-
Download and install the ChirpStack Concentratord binary:
curl -sL https://artifacts.chirpstack.io/downloads/chirpstack-concentratord/chirpstack-concentratord-sx1302_4.5.3_linux_arm64.tar.gz | sudo tar -xzf - -C /usr/bin --no-same-owner chirpstack-concentratord-sx1302 -
Create the configuration directory with proper ownership:
sudo install -o chirpstack -g chirpstack -m 0750 -d /etc/chirpstack-concentratord -
Create the configuration file with proper ownership and permissions:
sudo install -o chirpstack -g chirpstack -m 0640 /dev/null /etc/chirpstack-concentratord/chirpstack-concentratord.toml -
Write the Concentratord configuration file:
cat << EOF | sudo tee /etc/chirpstack-concentratord/chirpstack-concentratord.toml > /dev/null[concentratord]log_level="INFO"log_to_syslog=falsestats_interval="30s"disable_crc_filter=false[concentratord.api]event_bind="ipc:///tmp/concentratord_event"command_bind="ipc:///tmp/concentratord_command"[gateway]antenna_gain=0lorawan_public=trueregion="EU868"model="rak_5146"model_flags=["USB"]time_fallback_enabled=truegateway_id=""[gateway.concentrator]multi_sf_channels=[868100000,868300000,868500000,867100000,867300000,867500000,867700000,867900000,][gateway.concentrator.lora_std]frequency=868300000bandwidth=250000spreading_factor=7[gateway.concentrator.fsk]frequency=868800000bandwidth=125000datarate=50000[gateway.location]latitude=0.0longitude=0.0altitude=0EOF -
Create the systemd service file for Concentratord:
cat << EOF | sudo tee /etc/systemd/system/chirpstack-concentratord.service > /dev/null[Unit]Description=ChirpStack ConcentratordDocumentation=https://www.chirpstack.io/Wants=network-online.targetAfter=network-online.target[Service]User=chirpstackGroup=chirpstackExecStart=/usr/bin/chirpstack-concentratord-sx1302 -c /etc/chirpstack-concentratord/chirpstack-concentratord.tomlRestart=on-failure[Install]WantedBy=multi-user.targetEOF -
Add the
chirpstackuser to thedialoutgroup for serial port access:sudo usermod -aG dialout chirpstack -
Reload the systemd daemon to recognize the new service:
sudo systemctl daemon-reload -
Enable and start the ChirpStack Concentratord service:
sudo systemctl enable --now chirpstack-concentratord -
Check the service logs to verify successful startup and obtain the gateway ID:
sudo journalctl -fu chirpstack-concentratordtipCopy the Gateway ID from the log output. You will need it to register the gateway in ChirpStack.
The FIBER Lite concentrator is the same RAK5146 LoRaWAN concentrator card, but seated on a RAK2287 Pi HAT connected via SPI, a different hardware path (SPI device + GPIO reset pin) than the USB-connected variant above.
You do not need RAKwireless's SX1302 HAL installer. ChirpStack Concentratord bundles the HAL
and ships a vendor profile for this hardware, which supplies the pin mapping (reset on
gpiochip0 line 17), the RSSI offsets and the TX gain table.
-
Enable SPI and confirm the HAT is detected.
dtparam=spi=onships commented out in Raspberry Pi OS:grep spi /boot/firmware/config.txt # expect: dtparam=spi=on (uncommented)ls /dev/spidev* # expect: /dev/spidev0.0 and /dev/spidev0.1If
dtparam=spi=onis commented out, uncomment it (or append it) in/boot/firmware/config.txtand reboot. If no/dev/spidev*device appears after that, the HAT is not seated. Do not continue until it is. -
Download and install the ChirpStack Concentratord binary. ChirpStack does not publish Concentratord in its apt repository or as a GitHub release asset, only as a tarball on the artifacts server:
curl -sL https://artifacts.chirpstack.io/downloads/chirpstack-concentratord/chirpstack-concentratord-sx1302_4.7.1_linux_arm64.tar.gz | sudo tar -xzf - -C /usr/bin --no-same-owner chirpstack-concentratord-sx1302 -
Create the configuration directory:
sudo mkdir -p /etc/chirpstack-concentratord -
Write the Concentratord configuration file:
cat << EOF | sudo tee /etc/chirpstack-concentratord/chirpstack-concentratord-sx1302.toml > /dev/null[concentratord]log_level="INFO"log_to_syslog=falsestats_interval="30s"[concentratord.api]event_bind="ipc:///tmp/concentratord_event"command_bind="ipc:///tmp/concentratord_command"[gateway]antenna_gain=2lorawan_public=trueregion="EU868"model="rak_2287"model_flags=[]gateway_id=""time_fallback_enabled=true[gateway.concentrator]multi_sf_channels=[868100000,868300000,868500000,867100000,867300000,867500000,867700000,867900000,][gateway.concentrator.lora_std]frequency=868300000bandwidth=250000spreading_factor=7[gateway.concentrator.fsk]frequency=868800000bandwidth=125000datarate=50000EOFwarningThe
[gateway.concentrator]channel plan is mandatory. The vendor profile supplies only the pin mapping, RSSI offsets and gain table, but it does not supply a channel plan. Without it every radio comes upenabled: falseat frequency 0 and the daemon blocks indefinitely onOpening SPI communication interfacewith no error message, which looks exactly like a wiring or detection fault but is purely a configuration problem.notemodel="rak_5146"works here too. The two profiles share the same reset pin and neither drives a power-enable pin; they differ only in the SX1261 configuration used for Listen Before Talk, which EU868 does not use. -
Create the systemd service file for Concentratord:
cat << EOF | sudo tee /etc/systemd/system/chirpstack-concentratord.service > /dev/null[Unit]Description=ChirpStack ConcentratordDocumentation=https://www.chirpstack.io/After=network.target[Service]Type=simpleExecStart=/usr/bin/chirpstack-concentratord-sx1302 -c /etc/chirpstack-concentratord/chirpstack-concentratord-sx1302.tomlRestart=on-failureRestartSec=5Group=chirpstackUMask=0007[Install]WantedBy=multi-user.targetEOFwarningGroup=chirpstackandUMask=0007are load-bearing. Unlike the USB variant, this service runs as root so it can reach the SPI device and the GPIO reset pin, which means the ZeroMQ IPC sockets it creates in/tmpwould default toroot:rootmode 0755. The MQTT Forwarder connects to them as the unprivilegedchirpstackuser, and connecting to a unix socket requires write permission, so it would be refused. These two lines make the socketsroot:chirpstackmode 0770 instead. Both services will reportactiveeither way. The only symptom is that no uplinks ever reach MQTT. -
Reload the systemd daemon to recognize the new service:
sudo systemctl daemon-reload -
Enable and start the ChirpStack Concentratord service:
sudo systemctl enable --now chirpstack-concentratord -
Check the service logs to verify successful startup and obtain the gateway ID:
sudo journalctl -u chirpstack-concentratord | grep 'Gateway ID'A healthy start looks like this.
Frame receivedlines appear on their own from any LoRaWAN traffic within range, before you register a device of your own:INFO [libconcentratord::reset] Triggering sx130x resetINFO [...::concentrator] Configuring radio, radio: 0, enabled: true, center_freq: 867500000INFO [...::cmd::root] Gateway ID retrieved, gateway_id: "0016c001f13999e8"INFO [...::handler::uplink] Frame received, freq: 868100000, bw: 125000, mod: LoRa, dr: SF7tipCopy the Gateway ID from the log output. You will need it to register the gateway in ChirpStack.