Channel Activity Detection (CAD) for downlink detection

Hi folks, looking for a bit of expertise regarding CAD.
I’m working on receiving a downlink using the CAD mode. In theory, it should be possible to detect a LoRa(WAN) preamble using a CAD scan and then switch to actual RX mode to profit from lower power consumption.
Now I do appear to have it somewhat working: on each downlink, the CAD function generates an interrupt and switches to receive mode. Actually retrieving a full downlink however is quite hit-and-miss: mostly the first one after join-accept is OK, but after a few uplinks it doesn’t manage to pick up an actual downlink anymore. It may be that it’s too slow to switch to RX mode but I’m not really sure.
Now it appears that some stacks don’t use CAD at all (LMIC) while others do at least have functions available although I couldn’t really tell if they’re in use (LoRaMac-node).
I’m wondering: does someone have a bit of experience with using CAD and can maybe shed some light on the situation?
@mluis1 could you maybe say how LoRaMac-node is using CAD?

Just wondering, are the received downlink and the missed ones sent at the same SF?

The behaviour that I’ve noticed multiple times:
Join-accept without CAD is OK
ADR request on next downlink with CAD is OK (manipulates SF)
ADR request on next downlink with CAD is OK as well (manipulates TX power)
After that I mostly do not catch anymore downlinks. But the second downlink is on the same SF as the other ones

With CAD you do loose some sensitivity.

So its possible ADR adjusts LoRa settings in such a way that CAD is no longer reliable.

Sounds reasonable and have seen that mentioned elsewhere. A bit sad, but won’t be using CAD.

Not sure if the performance of CAD has been improved in the later versions of LoRa devices, SX126x etc.

Not using CAD should not have a huge impact on battery life if you only receive at RX1 and RX2 windows for the minimal required time. If you start listening after transmit you’ll be using power for 5 seconds where nothing is supposed to happen anyway.

Currently doing that. It would be nice to use the tools that are available, but couldn’t really get it going. As you say, the difference for about 0.5 seconds combined isn’t too large.

1 Like

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.

Re-opened at @Ichthus_College_Info’s request

The CAD usage for LoRaWAN has a small amount of possible applications.
Up until now the LoRa-Alliance has specified 2 uses cases.

  1. TR013-1.0.0 Carrier Sense Multiple Access (CSMA)
  2. TS011-1.0.0 Relay

I would recommend to read those 2 documents to see if they answer your requirements.

From what I understood reading the description of the issue that you are trying to solve I am not sure it is included in one of the 2 previous documents.

An additional helpful document may be AN1200.48: LoRa Channel Activity Detection (CAD) with SX126x

The LoRaMac-node radio drivers do provide the API required to use the CAD feature. However, there is no example of usage.

As you may know Semtech provides a new LoRaWAN stack named LoRa Basics Modem. This new stack provides additional features that LoRaMac-node does not. These additional features include the CSMA and Relay features under following feature branch LoRa Basics Modem relay feature branch.

Please take a look at smtc_lora_cad_bt.c which implements CSMA specification and relay_service which implements the Relay specification.