For The Things Network’s public community network the Fair Access Policy limits the data each end-device can send, by allowing:
- An average of 30 seconds uplink time on air, per 24 hours, per device.
- At most 10 downlink messages per 24 hours, including the ACKs for confirmed uplinks.
A good goal is to keep the application payload under 12 bytes, and the interval between messages at least several minutes. An online airtime calculator can give you some insight.
The following regulations apply as well:
LoRaWAN data rate, spreading factor, and application packet sizes
The data rate DR (defined by spreading factor SF and bandwidth BW) and maximum packet size roughly depend on the distance to the nearest gateway, and are also defined in the specification for each region. Like for the European 863-870MHz band, the maximum application packet size varies:
- 51 bytes for the slowest data rates, SF10, SF11 and SF12 on 125kHz
- 115 bytes for SF9 on 125kHz
- 222 bytes for faster rates, SF7 and SF8 on 125kHz (and SF7 on 250kHz)
Note that the LoRaWAN protocol adds at least 13 bytes to the application payload. And beware:
- Some libraries, such as LMiC, only support 51 bytes for all data rates.
- Some providers, such as the Dutch KPN, only support 51 bytes for all data rates.
- Some regions define a maximum dwell time, reducing the maximum payload size for slow data rates (high SF).
Devices with fixed hardcoded spreading factors of SF12 or SF11 are not allowed to join the network.
LoRaWAN transmit duty cycles and dwell times
To avoid network congestion, LoRaWAN defines some maximum transmit duty cycles and maximum transmit times (dwell times). These depend on many factors including the region and the type of operation (like sending data, or broadcasting a request to join a network).
For the European EU 863-870MHz ISM Band the specification limits the duty cycle to 1% for data:
The LoRaWAN enforces a per sub-band duty-cycle limitation. Each time a frame is transmitted in a given sub-band, the time of emission and the on-air duration of the frame are recorded for this sub-band. The same sub-band cannot be used again during the next Toff seconds where:
Toffsubband = (TimeOnAir / DutyCyclesubband) - TimeOnAir
During the unavailable time of a given sub-band, the device may still be able to transmit on another sub-band. If all sub-bands are unavailable, the device has to wait before any further transmission. The device adapts its channel hopping sequence according to the sub-band availability.
Example: A device just transmitted a 0.5 s long frame on one default channel. This channel is in a sub-band allowing 1% duty-cycle. Therefore this whole sub-band (868 – 868.6) will be unavailable for 49.5 s.
For other regions, quite similar limitations apply. Like for US915, no legal maximum duty cycles between transmissions are defined, but a 400 ms dwell time applies that limits the length of each transmission itself. Also, LoRaWAN may still define additional maximum duty cycles for, e.g., join requests. And for AU915, a recent Regional Parameters document states:
If the field
UplinkDwellTimeis set to 1 by the network server in the TxParamSetupReq command, AU915-928 end-devices SHALL adjust the time between two consecutive uplink transmissions to meet the local regulation. Twenty seconds (20s) are recommended between 2 uplink transmissions when UplinkDwellTime = 1 but this value MAY be adjusted depending on local regulation.
In an open network with many different end-devices (nodes), which are not connected but just start sending when they need to (ALOHA-like protocol), and all have a different data need and connection quality, there are many limiting factors to keep things working. Like when an end-device is far away from a gateway, it needs to use a low data rate to ensure at least one gateway receives its data. But a lower data rate implies a longer air time for each byte. This limits the maximum packet size, to ensure other end-devices get time to use the network as well. And when transmitting takes longer, a device cannot send as often as it might want to.
The uplink limit of the TTN Fair Access Policy is based on the following:
- 8 frequencies
- 5% receive duty cycle on the gateway
- 86,400 seconds in a day
- 1,000 nodes
Or: (8 × 86,400 × 0.05) / 1,000 yields approximately 30 seconds per node per day.
From The Things Network 2016 Update:
Fair Access Policy: Practice
- Golden rule: 30 seconds air-time per device per day
- For 10 bytes of payload, this translates in (approx.):
- 20 messages per day at SF12
- 500 messages per day at SF7
- more for SF7BW250 and FSK (local-area)
- If your application requires more bandwidth, think of another solution
- This allows for >1000 nodes per gateway
- Downlink bandwidth is even more restricted
- you can’t send all messages as ‘confirmed uplink’
As for the downlink (including confirmed uplinks), during the February 29th Tech Update (at 32’12"), TTN tech lead @johan explained:
This would mean that for each uplink message there would be a downlink message. But since the gateway also has a duty cycle, there is a limit on how much downlink we can support. So, this is also a restriction: confirmed uplink will not be possible for all devices. This means that people, application developers, should be careful when using this feature. […] By the way, the Fair Access Policy is more based on the gateway limitations than on the limitations of an individual node.
And TTN developer @htdvisser wrote:
All devices have to comply with these regulations, so that includes gateways. As a result, downlink capacity of the network is even smaller than uplink capacity. This means that you should use unconfirmed messages unless you really need confirmed messages and send as little downlink data messages as possible.
Also note that current LoRaWAN gateways are all half-duplex, implying they cannot listen to incoming uplinks while transmitting a downlink packet to a node. Even more: while sending it can only transmit on one channel, while for listening it can use 8 channels simultaneously.
For the 10 downlink messages per day, @telkamp wrote on Slack:
It’s not in seconds because the node/app don’t have influence on the data rate (RX1 vs RX2). It does include ACK’s, but maybe we should exclude ADR. The main problem is to manage the TX time of the gateway(s), because at TX interrupts any ongoing RX, so it might affect network performance quite a bit. 10 messages of 10 byte payload (on average?) at SF9 (RX2) are about 2 seconds of airtime.
Finally, see LoRaWAN Limitations on the Wiki.
Close to an European gateway, an application payload of 55 bytes will take 123.14 milliseconds when using EU868’s highest data rate DR5, SF7 on 125kHz. This implies the end-device needs to wait just 12,314 milliseconds (12.3 seconds) before it may try to use the same sub-band again, when limited by the 1% LoRaWAN duty cycle rule. (Other sub-bands might be available.) But given the TTN Fair Access Policy of 30 seconds, the device is also limited to sending only 243 packets of 123.14 milliseconds per 24 hours. So while for a 1% maximum duty cycle it may send another packet after waiting 12.3 seconds, when sending all day long then on average it may only send this packet on this data rate once every 354.6 seconds, or 5.9 minutes.
Much further away from a gateway, sending the same application payload of 55 bytes using the lowest EU868 data rate DR0 of SF12/125kHz may take 24 times longer, 2,957.31 milliseconds. Then the device needs to wait 295.7 seconds, or 4.9 minutes, before it may try to send another packet (in the same sub-band). But it can also only send 10 such packets per day, on average less than once every 2 hours. Even more: the LoRaWAN specifications define a maximum total size of 64 bytes for SF10, SF11 and SF12 in EU868, so one could send at most 51 bytes of application payload in that case anyway.
Limiting the application payload to only 8 bytes (which will still need at least an extra 13 bytes for the LoRaWAN protocol) decreases the above air times to 56.58 and 1,482.75 milliseconds. That allows for twice as many packets per day when complying to the TTN Fair Access Policy.
In US915, the lowest data rate DR0 is SF10 on 125kHz, which only allows for 11 bytes of application payload.