No ACKs from RFM12PI

Hi,

I purchased a RFM12PI to send data from my Arduino nodes to my Raspberry PI via RFM12B radios. I am using the RFM12PI with the pre-installed firmware without any modifications.

I wrote a scetch which sends the data and the RFM12PI does receive the data. My problem is that the nodes never receive any ACKs from the RFM12PI.

I use the following code for my Arduino nodes:

for (byte i = 0; i <= 5; ++i) {  // tx and wait for ack up to 5 times
      rf12_sleep(-1);              // Wake up RF module
      while (!rf12_canSend())
      rf12_recvDone();
      rf12_sendStart(RF12_HDR_ACK, &paylod, sizeof paylod);
      rf12_sendWait(2);           // Wait for RF to finish sending while in standby mode
      boolean acked = waitForAck();  // Wait for ACK
      rf12_sleep(0);              // Put RF module to sleep
      if (acked) {
          return;
      }      // Return if ACK received 
      Sleepy::loseSomeTime(5000);     // If no ack received wait 5s and try again
   }

static byte waitForAck() {
   MilliTimer ackTimer;
   while (!ackTimer.poll(5000)) { // try to receie an ACK for max. 5 seconds
        if (rf12_recvDone() && rf12_crc == 0 &&
          rf12_hdr == (RF12_HDR_DST | RF12_HDR_CTL | myNodeID)) {
            return 1;
          }
     }
   return 0;
}

 

I also tried a less strict check for the header - no success either:

static byte waitForAck() {
   MilliTimer ackTimer;
   while (!ackTimer.poll(5000)) { // try to receie an ACK for max. 5 seconds
        if (rf12_recvDone() && rf12_crc == 0) {
            return 1;
          }
     }
   return 0;
}

The function waitForAck always returns 0. Unfortunately I can not debug the code except by "LED debugging) which makes it quite hard to trace the problem.

Does Anybody have any ideas?

How can I check whether the RFM12PI is sending the ACKs as requested?

Thx,   chris