The following does not apply to all regions. It applies to, e.g., the EU region but regions such as Korea, do implement Listen Before Talk in LoRaWAN.
I see a lot of references to the ALOHA protocol, as in: nodes transmit whenever they feel like it, which is also why regulations require a maximum duty cycle. Like from the LoRaWAN specifications:
End-devices may transmit on any channel available at any time, using any available data rate, as long as the following rules are respected:
- The end-device changes channel in a pseudo-random fashion for every transmission. The resulting frequency diversity makes the system more robust to interferences.
- The end-device respects the maximum transmit duty cycle relative to the sub-band used and local regulations.
- The end-device respects the maximum transmit duration (or dwell time) relative to the sub-band used and local regulations.
[…]
Bi-directional end-devices (Class A): End-devices of Class A allow for bi-directional communications whereby each end-device’s uplink transmission is followed by two short downlink receive windows. The transmission slot scheduled by the end-device is based on its own communication needs with a small variation based on a random time basis (ALOHA-type of protocol).
To me, this reads like “fire and forget”. Even more, the LoRaWAN “Confirmed Data Messages” in the same specifications explain how a node may retransmit its data if an ACK is requested but not received (which could have been caused by collisions), but does not mention any collision detection.
Though “ALOHA-type of protocol” is not very specific, so-called “pure” ALOHA seems to check for collisions while transmitting; from Wikipedia:
The first version of the protocol (now called “Pure ALOHA”, and the one implemented in ALOHAnet) was quite simple:
- If you have data to send, send the data
- If, while you are transmitting data, you receive any data from another station, there has been a message collision. All transmitting stations will need to try resending “later”.
Note that the first step implies that Pure ALOHA does not check whether the channel is busy before transmitting.
And the Semtech LoRa FAQ explains that a node could detect LoRa(WAN) activity:
What is the process of the LoRa® CAD (Channel Activity Detector) mode?
Instead of using a RSSI (Received Signal Strength Indicator) method to identify if a signal is present the channel activity detector (CAD) is used to detect the presence of a LoRa signal. The CAD detection has the advantage of being much faster than a typical RSSI detection and the capability to differentiate between noise and a desired LoRa signal. The CAD process requires two symbols, and if the CAD is detected, the CAD_Detected interrupt will be asserted and the device will stay in RX mode to receive the data payload.
But even if “CAD” is used in LoRaWAN, then maybe such is only used for Class B and C end-devices, that want to preserve battery life but still need like to know if they can expect any data?
So: does (should) a LoRa(WAN) node check if channels are busy before starting to transmit, and/or perform any collision detection while sending?