This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Does it make sense that Tx messages with ack fail more than messages sent with no ack?

Can the link between two devices communicating with each other via NRF24L01+ be improved by using Tx messages with no ack (W_TX_PAYLOAD_NO_ACK) instead of messages with ack (W_TX_PAYLOAD)?

In my tests more errors have occurred when Device A communicates with Device B by sending Tx messages with ack than messages with no ack. I will willing to blame the ack sent from B to A, its retries and so on, but maybe the fact that within the ack comes a payload from device B is something to be considered.

*Is the transmission via Tx message with no ack more effective in any way? *Is it expected that more errors do occur in a link using payload on ack? *An ack message is in any way different from a message sent via Tx? Does the radio handle it differently?

##Revision:

Further Data:

  • In my application nine Slaves must sent data to one Master. The Master sends a message resquesting data for a slace each 100 ms, so the read the data of the nine Slaves it is necessary 900 ms.

  • Type 1 - All slaves only sends data via payload on Ack. Them load the data to be sent on Tx Fifo beforehand, and when message 1 is received the data goes to Master within the payload.

  • Type 2 - The slaves now send data via Tx messages without ack. The Master sends a message requesting data and then waits. Each Slave, on its turn, receives the request, prepares its data and then sends it to Master. Again, on Master point of view, it reads the Rx Fifo and processes the data.

image description

Results:

  • Type 1 - I have notice a lot of erros on message 2. A lot of times message 1 is received but message 2, the auto ack from message 1, fails and is not received by Master. So from the master point of view message 1 has failed.
  • Type 2 - As last resort, after a lot of tests, we tried to send messages only via Tx without Ack and the performance was greatly improved on varios tests. There have been errors, of course, but the overall result was much better.

Question:

Is there something different in an auto ack message compared to an Tx message, with or without ack ? We came to this conclusion based on the results of the tests. For the same distance, the same number of devices, basically the same code, the message that fails more is the one sent as auto ack using the Type 1.

  • There are people better at link layer/app layer comms than me, but if you are bundling the ack and tx payload if the ack isn't received it will force re-transmission of the original packet until the ack is received. Since data was riding along, then presumably that packet is lost as well forcing re-transmission of a second packet all for one bad transmission event.

  • I notice you made some edits to clarify your question. It looks like you are comparing ACK on payload vs. no ACK. I haven't done this on BLE or ESB but on WiFi I have done this extensively and the difference between UDP (no ACK or multicast) and TCP (ack) is massive. The downside of course is that UDP packets can be lost. Anytime you add ACK to the mix, overall throughput will be lower. In a poor connection scenario, I would assume that payload on ACK would be even worse. Payload on ACK would likely only work well in scenarios where there was a robust link with few errors.

  • Hi

    Are you saying you see more lost packets if you add payload to your ACK's, rather than just sending packets from the PTX to PRX (without any data in the ACK's) ?

    Unless you experience severe packet loss in general there is no reason why ACK payloads should significantly increase packet loss. The ACK payload will be lost of either the TX packet or the ACK payload packet is lost, so the chance is higher than for a single TX packet, but the re-transmission mechanism will normally take care of that.

    What is your RF bitrate, retransmit counter and retransmit delay?

    Best regards
    Torbjørn

  • I have edited my question. I think that the problem may be the use of auto ack. In my tests for a single transmission, considering the same distance and obstacles, I have noticed a significantly increase in packet loss when the auto ack was enable.

  • What kind of range are you testing at? Do you see noticeable packet loss also without ACK, or only when ACK is used?

    Could you send me an overview of the RF configuration you are using?

    Best regards

Related