Skip to content

AU915 Dwell Time Restriction Regardless of Version Selected (1.0.2 or 1.0.3) (UplinkDwellTime = 1) (TxParamSetupReq) #1010

Open
@ElectronicallyE

Description

@ElectronicallyE

Hello,

According to README.md:

This library implements V1.0.3 of the LoRaWAN specification. However, it can also be used with V1.0.2. The only significant change when selecting V1.0.2 is that the US accepted power range in MAC commands is 10 dBm to 30 dBm; whereas in V1.0.3 the accepted range 2 dBm to 30 dBm.

Another notable change between these versions is the implementation of the 400 ms dwell time limitation for JoinReq in AU915. This means that JoinReqs can only be made at a maximum spreading factor of SF10 (DR2) instead of SF12 (DR0):

LoRaWAN 1.0.2 Regional Parameters (Feb 2017)

2.5 Australia 915-928MHz ISM Band
2.5.2 AU915-928 Channel Frequencies
Lines 789-782
If using the over-the-air activation procedure, the end-device should broadcast the JoinReq message alternatively on a random 125 kHz channel amongst the 64 channels defined using DR0 and a random 500 kHz channel amongst the 8 channels defined using DR6. The end device should change channel for every transmission.

2.5.3 AU915-928 Data Rate and End-point Output Power encoding
Line 785
The TxParamSetupReq MAC command is not implemented by AU915-928 devices.

LoRaWAN 1.0.3 Regional Parameters (July 2018)

2.6 AU915-928MHz ISM Band
2.6.2 AU915-928 Channel Frequencies
Lines 855-858
If using the over-the-air activation procedure, the end-device SHALL broadcast the JoinReq message alternatively on a random 125 kHz channel amongst the 64 channels defined using DR2 and a random 500 kHz channel amongst the 8 channels defined using DR6. The end device SHOULD change channel for every transmission.

Lines 861-866
The default JoinReq Data Rate is DR2 (SF10/125KHz), this setting ensures that end-devices are compatible with the 400ms dwell time limitation until the actual dwell time limit is notified to the end-device by the network server via the MAC command TxParamSetupReq.

AU915-928 end-devices MUST consider UplinkDwellTime = 1 during boot stage until reception of the TxParamSetupReq command.

Changing the LoRaWAN version only appears to affect lmic_us915.c:

int8_t LMICus915_pow2dbm(uint8_t mcmd_ladr_p1) {
        if ((mcmd_ladr_p1 & MCMD_LinkADRReq_POW_MASK) >
            ((LMIC_LORAWAN_SPEC_VERSION < LMIC_LORAWAN_SPEC_VERSION_1_0_3)
                        ? US915_LinkAdrReq_POW_MAX_1_0_2
                        : US915_LinkAdrReq_POW_MAX_1_0_3))
                return -128;

It appears that UplinkDwellTime is set to 1, regardless of the version selected for AU915. See lorabase_au915.h:

enum {
        // initial value of UplinkDwellTime before TxParamSetupReq received.
        AU915_INITIAL_TxParam_UplinkDwellTime = 1,
        AU915_UPLINK_DWELL_TIME_osticks = sec2osticks(20),
};

Can you please confirm if my understanding is correct, and if not, what I am missing?

Justification
For LoRaWAN Regional Parameters Version 1.0.3 (and the associated LoRaWAN Specification 1.0.3) and above, devices which could operate successfully on SF11 or SF12 but not on SF10 are not able to join the network. This restriction exists to comply with international airtime legislation, however in Australia, dwell time restrictions do not exist, therefore I seek to use Regional Parameters Version 1.0.2 (and the associated LoRaWAN Specification 1.0.2).

I discussed this further on The Things Network Forum.

Additional Information
I came to discover this difference by reading the following comment in au915.rs of the Chripstack network server repository:

// LoRaWAN < 1.0.3 + < LoRaWAN 1.1.0B does not have dwell-time

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions