How to send with and without ACK

Hi!

Libelium (IoT provider) explains in their webpages about using the MKRFOX module to send either with or without ACK, technically it seems that sending without ACK is much shorter (just 6-10 seconds) and takes less battery compared to sending with ACK (almost 1 minute), but in the Arduino documentation I can't find anything about it. Libelium use their own customized library.

I don't really need to know whether my packet has reached the server or not, if it didn't, next one will do. But I do need to save battery.

Does anyone know how they do this?

Thanks

edugimeno:
Hi!

Libelium (IoT provider) explains in their webpages about using the MKRFOX module to send either with or without ACK, technically it seems that sending without ACK is much shorter (just 6-10 seconds) and takes less battery compared to sending with ACK (almost 1 minute), but in the Arduino documentation I can't find anything about it. Libelium use their own customized library.

I don't really need to know whether my packet has reached the server or not, if it didn't, next one will do. But I do need to save battery.

Does anyone know how they do this?

Thanks

Could you post the link to the Libelium web page so that we may read the article in context?
What is it you are attempting to accomplish exactly?

Sure.

This webpage: https://www.cooking-hacks.com/documentation/tutorials/sigfox-connectivity-arduino-raspberry-pi-868mhz-europe-900mhz-us/

It's a very long page. Chapter 2.3 specifies those time I mentioned before
And then chapter 3.3 has some examples on how to send (without) and send with ACK.

What I'm trying to do is (hopefully) save on battery power as I guess if the radio is ON for 60 seconds every 15 minutes it will be wasting way more power than if it powers on for 6 seconds.

Thanks

edugimeno:
Sure.

This webpage: https://www.cooking-hacks.com/documentation/tutorials/sigfox-connectivity-arduino-raspberry-pi-868mhz-europe-900mhz-us/

It's a very long page. Chapter 2.3 specifies those time I mentioned before
And then chapter 3.3 has some examples on how to send (without) and send with ACK.

What I'm trying to do is (hopefully) save on battery power as I guess if the radio is ON for 60 seconds every 15 minutes it will be wasting way more power than if it powers on for 6 seconds.

Thanks

Okay, I have read this page before when I was doing XBee work.

Basically, this is like TCP and UDP. UDP has less overhead and tends to be faster than TCP. The Con is that you are not sure that the information was delivered to the destination. UDP packets may be dropped and you would never know it. TCP would ask for retransmission of missing packets.

it comes down to which is more "valuable" to you:
battery Life or data integrity.

when working with the XBee and battery, we went with solar panel chargers for the LIPO Battery.
those sites which were considered too important had to have electric power lines run to them and use
power supply with the XBee.

Yes I totally understand the diffenrece and I've worked a lot with IP packets (both UDP and TCP) over Linux.
But in my case I don't need the reliability, at this time my current sketch doesn't look at the actual result of the last packet, so it doesn't even try to resend in case it failed, it just goes to sleep as usual and waits 15min for the next time
And so far I thing I haven't lost any packets in several weeks.
But I want to use th functionality that Cooking Hacks is talking about, being able to send with no ACK in 6-10 seconds, this would probably double the battery life in my device. But they use a specific Libelium library they made for their devices
I would like to know if there's a way to send with no ACK using the normal library.

Thanks

edugimeno:
Yes I totally understand the diffenrece and I've worked a lot with IP packets (both UDP and TCP) over Linux.
But in my case I don't need the reliability, at this time my current sketch doesn't look at the actual result of the last packet, so it doesn't even try to resend in case it failed, it just goes to sleep as usual and waits 15min for the next time
And so far I thing I haven't lost any packets in several weeks.
But I want to use th functionality that Cooking Hacks is talking about, being able to send with no ACK in 6-10 seconds, this would probably double the battery life in my device. But they use a specific Libelium library they made for their devices
I would like to know if there's a way to send with no ACK using the normal library.

Thanks

What software are you currently using?
You are not using Libelium's software. If you were you would not be asking this question.

You bet! :slight_smile: Im just writting my own software from scratch, I dont want to use their library as I dont know what else (that I dont need) it would add to my projects, I just need to find out whats the way to enable the sigfox chip to send with no ack

Ok Im going to reply to myself. This is something I should have checked before.
Libelium's module for Sigfox is a TD1207
MKRFOX1200's module for Sigfox is a ATA8520

I've read the datasheets for both. TD1207 mentions in each "send" command the ACK bit that can be set or clear so you await for a downlink "ack" after sending
ATA8520's datasheet doesn't mention this functionality at all in it's documentation, nor even contains the word "ack" in the whole document.

So now I KNOW that there's no way to send with NO ACK in a MKRFOX1200 board

Thanks

Hi there,

I don't agree with that.

For a Sigfox network point of view, an ACK is a downlink. And the downlink is strictly limited (actually, 4 by device and by day).

=> the MKR is sending each message 3 times, on a pseudorandom multihoping frequencies, exactly to ensure the data transmision without need of an ACK.

Méric.