DOWNLINK_GATEWAY TX_POWER error on Class C downlink, gateway tx_lut max rf_power is 25 but ChirpStack requests power 29

Viewed 27

Hi,

I am testing Class C downlinks with ChirpStack v4 in EU868 using a RisingHF RHF2S024-868 gateway and an RN2483 end device.

The device joins correctly by OTAA, the device profile has Class C enabled, and the node is configured in Class C (mac get class returns C). However, when I enqueue a downlink, ChirpStack reports:

DOWNLINK_GATEWAY / TX_POWER

In the downlink details I can see that ChirpStack is trying to transmit on 869.525 MHz with SF12 and power 29:

frequency: 869525000
power: 29
bandwidth: 125000
spreadingFactor: 12
codeRate: CR_4_5

I checked the gateway packet forwarder configuration (global_conf_eu868.json) and the tx_lut only goes up to rf_power: 25:

"tx_lut_15": { "rf_power": 25, "dig_gain": 0, "mix_gain": 15, "pa_gain": 3 }

So it looks like ChirpStack is requesting a TX power that the gateway does not support.

If I enqueue the downlink and then force an uplink from the RN2483, the pending downlink is delivered and the node receives mac_rx. So downlinks work after an uplink opportunity, but the immediate Class C downlink fails with TX_POWER.

What is the correct way to solve this in ChirpStack v4? Should I set downlink_tx_power = 25 in region_eu868.toml under [regions.network], or is there another recommended way to limit the downlink TX power for this gateway?

I would prefer not to modify the gateway tx_lut unless that is the proper solution.

Thanks.

1 Answers

ChirpStack sets the Tx power in EIRP. This needs to be compensated with the antenna gain and cable loss to get the correct tx power (in ERP) output from the radio.

Most likely, your antenna_gain config in the packet-forwarder is set to 0. This value gets subtracted from the requested Tx power (https://github.com/Lora-net/packet_forwarder/blob/master/lora_pkt_fwd/src/lora_pkt_fwd.c#L2344).

So if you set the antenna_gain config to 4, it would mean that if ChirpStack requests 29, the packet-forwarder will do a lookup of 29 - 4 = 25.

Since I believe 27 dBm ERP is a valid tx power for the requested frequency, you might want to update your tx_lut table + set the antenna_gain to 2 (which will correctly covert the EIRP input to ERP).

The ChirpStack Concentratord and the UDP Packet Forwarder for the SX1302/3 handle this different, instead of an exact match, it will perform a lookup in this table to find the tx_lut matching the highest value below or equal the requested value.