Alright, 6 hours later. The conclusion is the following:
The firmware, by default, does not set the APN credentials. The best way to do it without making changes to the baseline firmware itself is to run the following after a Cellular.on()
(make sure Cellular is off before this)
Cellular.on();
Cellular.command("AT+CGDCONT=2,\"IP\",\"%s\"","soracom.io");
Cellular.command("AT+UAUTHREQ=2,%d,\"%s\",\"%s\"",2,"sora","sora");
I put it in printf format so other folks can insert their own APN information. 2 is the authentication type (in this case CHAP). For UAUTHREQ
the password is before the username. (doesn’t matter for SORACOM in this case)
Also, as you can tell I set up a separate context for the SORACOM APN. Despite this, the device then defaults to CID 1 (for whatever reason). But it connects and authenticates and that’s all that matters!
Also… be sure to clear your credentials. That will muck things up!
Cellular.setActiveSim(EXTERNAL_SIM);
Cellular.clearCredentials();
(The above technically only needs to be done once)
Also, (one more thing!) make sure your device is in MANUAL or SEMI_AUTOMATIC mode. AUTOMATIC will not work.
SYSTEM_MODE(SEMI_AUTOMATIC);