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 — 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, 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 — 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.