We really need a way to double check that the modem is OFF or ON
Until then, sparingly try to access the cellular hal directly which does offer a return value.
#include "cellular_hal.h"
cellular_result_t result = -1;
result = cellular_off(NULL);
if (result) Serial.println("ERROR!\r\nFailure powering off the modem!");
else Serial.println("OFF!");
result = cellular_on(NULL);
if (result) Serial.println("ERROR!\r\nFailure powering on the modem!");
else Serial.println("ON!");
Also if that does not fix your issue, try a modem reset. This is also only something you should only escalate to, and not use every boot.
// call this as a last resort
void resetModem(void)
{
pinMode(RESET_UC, OUTPUT);
digitalWrite(RESET_UC, LOW);
delay(100);
digitalWrite(RESET_UC, HIGH);
}
While I would love for you to try the pre-release 0.7.0-rc.2 (out now), I would not recommend it for your trial customer testing. This is something you should only test in-house, or have the ability to go on-site and downgrade if necessary. The fix @ScruffR mentioned should really only be helpful to you if you were running multi-threaded mode, and it doesn’t sound like you are.
Also, it might be worth checking to see if you hit any data limits on your SIM cards.