Server ack unconfirmed data up

I wasn’t able to find documentation about what the difference between unconfirmed data up and confirmed data is? Obviously one is confirmed via an ack from the server, but how can I enable confirmed data up? Additionally with ADR off I’m only getting data up. This behaviour seems incomplete, and I don’t understand why I am not achieving confirmed data packets.

You make your node transmit with the appropriate flag bit set. But forcing the gateway to acknowledge is very expensive in terms of network capacity, because a gateway that is transmitting cannot receive on any channel while it is doing so.

Also the whole design of confirmed uplink is broken in concept, because the ACK is almost as likely to get lost as the uplink, and a given message frame counter value will only be acked once, and ignored thereafter. So if the gateway receives and the network acks, but the node misses the ack, none of the retries will ever get an ack either. Only when the application side of your firmware sends new data causing the node-side LoRa stack to increment the frame counter to a new previously unused value will the network start paying attention again.

It’s really best not to use this.

The downlinks you were getting were not ACK’s of the uplink messages, but only part of the ADR mechanism where the server adjusts the nodes power level. It’s fairly unrelated, except that ADR downlink messages also costs network capacity, though the intent is that ADR triggered downlinks are infrequent.

Thank you very much, that clears up some things. I will leave ADR off then since I don’t require it, and I guess the unconfirmed part of my uplink messages are fine for now, unless anything inefficient/incorrect in the uplink frame stands out to you.

How will you decide what spreading factor to use for given conditions?

If you use the slowest, you get the longest range capability but burn battery and to an extent, airtime capacity. While if you use a faster one, your range will be reduced compared to what it could be.

Yes exactly this is a problem. My nodes will be stationary, so maybe I can be fancy and have ADR on and then once a few transmissions are successful I can turn ADR off and lock the spreading factor with the LMIC access in the nodes firmware to the highest SF that was consistently successful for transmitting.

Or you could use ADR with the node set to have very long intervals between flagging an uplink for such action. That way it would eventually adjust if conditions change.