Skip to content

Board programmed with example 16 randomly stops sending GPS updates via Iridium #11

@adrian-bodenmann

Description

@adrian-bodenmann

We are using the SparkFun WRL-18712 board programmed with the code in example 16 and it sometimes stops transmitting GPS messages.

When monitoring the serial communication from the board, it eventually sends the following lines:
*** modem.clearBuffers failed with error 3 ***

followed by
*** modem.begin failed with error 5 ***, which is then sent repeatedly, and it never recovers until the board is restarted.

This happens randomly. Sometimes within 10s of minutes, sometimes within hours, sometimes it does not happen at all (tested for several days). We have now 3 SparkFun WRL-18712 boards and it happens on all of them. We originally had 1 that we noticed stopped transmitting GPS, so we initially thought there was an electrical issue, so bought 2 new ones, but the new ones have the same issue.

I did a lot of debugging, and it looks like the serial strings sent from the Iridium 9603 modem sometimes stop sending the line feed (LF), and sometimes the carriage return (CR) at the end of the terminator, i.e. "OK[CR]" or "OK" instead of "OK[CR][LF]".

waitForATResponse() in IridiumSBD.cpp then times out because it does not see the terminator it is expecting. That then causes an ISBD_PROTOCOL_ERROR (3) and afterwards an ISBD_NO_MODEM_DETECTED (5) error.

(Note: The missing "[LF]" or the "[CR][LF]" characters are sent at the start of the next transmission from the Iridium 9603 modem, but that does not happen until a new prompt (e.g. "AT") is sent to it).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions