Hi everyone,
I'm currently running a private LoRaWAN network based on ChirpStack.
My setup includes several gateways connected through ChirpStack Gateway Mesh, with one border gateway connected to the Network Server and multiple mesh relay gateways forwarding uplinks through the mesh network.
Everything works correctly — however, I have a major issue regarding duty-cycle compliance.
The mesh relay gateways are currently forwarding uplinks from end-devices that are not part of my network (e.g. packets from other nearby LoRaWAN devices in the area).
This causes unnecessary radio transmissions between gateways and can easily lead to overuse of the EU868 ISM band and violation of the ETSI duty-cycle limit.
What I want to achieve
I would like to configure my mesh gateways so that they only forward uplinks from my own devices — ideally filtered by:
DevAddr (for ABP devices), or
JoinEUI / DevEUI (for OTAA devices)
What I have tried :
I attempted to filter on the border gateway (MQTT forwarder) using DevAddr filters — this works at MQTT level but not at the mesh level (the mesh relays still forward all uplinks).
I also tried to define filters in the mesh configuration TOML (e.g., [filters] dev_addr = [...]), but this did not seem to have any effect on the relay gateways.
My gateways run:
RAK7289v2
ChirpStack Gateway OS 4.8.1
ChirpStack Gateway Mesh 4.1.0
LuCI (OpenWrt 24.10)
My question
Is there a way to:
Filter uplinks at the mesh relay level, so that only uplinks from specific devices (or DevAddr ranges) are forwarded,
Or alternatively, extend chirpstack-gateway-mesh to support a "trusted device" or "DevAddr" filtering mechanism similar to the LoRaWAN Relay Specification?
I'm looking for the best technical approach (configuration, patch, or roadmap feature) to ensure my gateways only forward traffic from my own end-devices to stay compliant with ETSI Duty Cycle regulations.
Any guidance, ideas, or examples would be greatly appreciated 🙏
Thanks a lot for your help!