TS-Russell:
Do the example codes behave the same? (do they throw the same error after x messages?) Test it using the default sketches and circle back
Yes they do. The only change was the transmission delay (I was using 140 minutes). Same errors: first error code 3 and then error code 5. I tried resetting the rx before waking the modem, and still had the same issue. It is also not deterministic: sometimes it takes a while (more than 10 send attempts (either successful or unsuccessful)) to get to error 3, while other times it happens in the third attempt.
I tried clearing the and re defining the modem class, clearing the rx multiple times. I was using supercapacitors and had the same problem, removed them and the problem persists. If send more often I have not had the issue, but have not tested extensively (because it could be expensive). When I reset the controller everything works fine again, so maybe it is not a hardware problem… my current workaround is to perform a software reset and catch it during init so it will not repeat unwanted instructions… but it is not ideal.
Has this ever been addressed?
We encountered the same issue. We run the example 16 code.
I uncommented #define noTX and #define skipGNSS and just let it run, while monitoring the communication on the serial line. This should work indefinitely. However, most of the time (but not always) it stops working after 10s of minutes to hours.
I did a lot of digging, and narrowed down where and why this happens:
Sometimes the reply from the Iridium 9603 lacks the [LF] (and sometimes even [CR][LF]) at the end of the message. waitForATResponse() in IridiumSBD.cpp then times out because it does not see the terminator it is looking for. That then causes an ISBD_PROTOCOL_ERROR (3) and afterwards an ISBD_NO_MODEM_DETECTED (5) error.
Is this a known issue of the Iridium 9603N? If so, what exactly is the issue and is there a fix?
It sounds like the modem might be having trouble recovering after a failed transmission, possibly due to signal issues or internal state not resetting properly. You might want to try a full power cycle or check for any buffer handling problems.
I have used the 9603N a lot over the years, and I don’t think I’ve ever seen the [LF] or [CF][LF] being truncated. My vague guess is that the modem is being powered off while it is outputting its reply? Maybe because the code thinks the battery voltage is low? Did you have a LiPo battery attached during your tests? Maybe try reducing DEF_LOWBATT just to be sure?
Please make sure you are using version 2.1.0 of the SparkFun Apollo3 core / board package, and have selected the RedBoard Artemis ATP. I have seen some UART badness with 2.2.1.