[release] ChirpStack v4.2



Fix devices to specific region configuration (optional)

This adds a Region configuration option to the device-profile, which lists the region configurations for the selected Region. If a region configuration is selected, then the device will only be able to work under the selected configuration. If no region configuration is selected, then the device will be able to operate under all available region configurations for the selected region.


This adds support for Java and Kotlin API SDK code generation. (#64)


  • Add description configuration option per region configuration.
  • Change name to id within the region configuration (name will be used as fallback option).
  • Make gateway state in UI consistent and make expected stats interval configurable. (#76)
  • Add Python type information to Python API SDK code. (#68)
  • Add back crc_status field to UplinkRxInfo message (the status will be reported as no CRC until the ChirpStack Gateway Bridge, ChirpStack Concentratord and / or ChirpStack MQTT Forwarder have been updated).
  • Add back Class-B ping-slot parameters to the device-profile.
  • Update Class-B ping-slot data-rate configuration in examples.
  • Remove separate gateway topic config and move it into single topic_prefix configuration.
  • Reset internally stored channels to default on ADRACKReq uplink to avoid out-of-sync channel configuration on device.
  • Update internal dependencies.


  • Fix hiding Delete device option if the user has no permissions to perform this action. (#71)
  • Fix not recording device metrics if auto-detect of measurements is disabled. (#94)

Hi team,
I only want to understand the usage of this feature.
So we still have to set Region for Device-profile template.

Then in device-profile, Region=0 means “not selected”?
Then Region should not have required * right? And default Region should be blank instead of 0.

I’m a bit confused about Region and Region configurations.
It means I can have many Region configurations for 1 region?

Thanks a lot and have a nice day.

Well done for this:


1 Like

That’s a feature I never knew I needed so much.

Obvious question: would it be possible for devices too?

Yes, for example you could have a set of 8 US915 channel gateways and 16 channel US915 gateways. In that case, you will have two region configurations for the same US915 region.

You will always have to define the main region for the device-profile (template), e.g. US915. Defining the region-configuration (8 channels, 16 channels) is optional. If you leave it blank, then ChirpStack will automatically assign the device to the region under which the receiving gateway is assigned.

However, you might want to restrict this… E.g. the device should only be able to use the 8 channel gateway coverage. In that case you select the region configuration in the device-profile.

1 Like

I think we can add it for devices too, as we do know the expected uplink frequency of the device :slight_smile:

When Gateway OS v 4.2 will be published?

So in this example, I assume this would allow a given device to join on either Region Configuration, depending on whether the receiving gateway supported 8 or 16 channels. But I also assume that this would be problematic if there was overlapping coverage of both gateway types (i.e. if the receiving gateway happened to be the 8-channel gateway, the device would be configured for 8 channels; no problem there for the 16-channel gateway, but if the opposite were to happen, the 8-channel gateway may miss half of the uplinks)?

If my assumptions are correct, it seems that it might be useful to have the ability to configure a device for 8 channels, but still allow it to use 16-channel gateways in the same Region (i.e. regardless of which gateway receives from the device, it’s limited to only use 8 channels). Possible? And of course for this to work, the 8-channel “network” would need to be a subset of the 16-channel “network”.