Boron LTE- support


#32

It looks about 90 seconds to connect to Verizon with the Hologram SIM on the Boron LTE:

  • External SIM selected
  • Carrier (AT+UMNOPROF) explicitly set to 3
  • APN set to “hologram”

I’m pretty sure AT&T never works with the Hologram SIM with LTE Cat M1. That appears to be the case with other hardware as well, not just the Boron, from searching their forums. That’s how I determined that you need to set the carrier.

Also make sure you do a Cellular.on() before issuing the three AT commands listed above. You should do it without enabling the system thread, otherwise the commands will silently fail because the modem is not fully initialized yet.


#33

Hi, Rikkas7,

Thanks for the tips. Here’s the “all-in-one” app I wrote to select the SIM, credentials, and network profile. I run this on top of boron 0.9.0 part 1, then load cloud debug to watch the action. This same app gets me back to normal operation / internal SIM by commenting / de-commenting the appropriate lines, and changing the MNO to 0.

No luck thus far with Verizon. I’m in southeast Michigan – the gang’s all here, MNO-wise, but you never know. I’ll take my Verizon-intending Boron on a ride today and see what happens.

I see from other Interweb users that Verizon is a good “go-to” network for Hologram users on a variety of platforms.

//Boron LTE SIM, Credendtial, and Network settings.

#include "Particle.h"

SYSTEM_MODE(SEMI_AUTOMATIC);

void setup() {

//For external Hologram (or other) SIM, uncomment the following and use the appropriate APN credentials:   
Cellular.setActiveSim(EXTERNAL_SIM);
Cellular.setCredentials("hologram");
    
//For internal (Particle) SIM, uncomment the following:
// Cellular.setActiveSim(INTERNAL_SIM);
// Cellular.clearCredentials();

//    Mobile Network Operator (MNO) configuration:
//* 0 (default value): SW default
//* 1: SIM ICCID select
//* 2: ATT
//* 3: Verizon
//* 4: Telstra
//* 5: TMO
//* 6: CT

int mnoProf = 3;    

Cellular.on();

Cellular.command("AT+COPS=2\r\n");  // De-register from network.
Cellular.command("AT+UMNOPROF=%d\r\n", mnoProf);  // Explicitly call MNO profile from list above.
Cellular.command("AT+CFUN=15\r\n");   // Reset the modem.


// This is just so you know the operation is complete (turns on onboard blue LED).
    pinMode(D7, OUTPUT);
    digitalWrite(D7, HIGH);
}


void loop() {
}

#34

That code looks correct. You could also try capturing a Boron cloud debug log after running the code above.


#35

Fresh debug output – just re-compiled, re-ran. Had this running overnight, as well.

THANK YOU for cloud debug.bin. Very interesting and helpful to see the gears turning.

Here’s the debug from minutes ago, from board power-on to modem reset.

particle flash --usb system-part1-0.9.0-boron.bin
particle flash --usb firmware.bin  (my app in the post above).
particle flash --usb boron-clouddebug.bin

Is there such a thing as a “stale” SIM? I’ve tried two different Hologram SIM’s. Both are active w/ Hologram, both work on 3G (ATT & TMO), but neither have ever connected to Verizon. Each SIM roughly 2 years old.

10:14:55.857 -> clouddebug: press letter corresponding to the command
10:14:55.857 -> a - enter APN for 3rd-party SIM card
10:14:55.857 -> k - set keep-alive value
10:14:55.857 -> c - show carriers at this location
10:14:55.857 -> t - run normal tests (occurs automatically after 10 seconds)
10:14:55.857 -> or tap the MODE button once to show carriers
10:15:05.852 -> starting tests...
10:15:05.852 -> turning cellular on...
10:15:05.852 -> 0000015004 [system.nm] INFO: State changed: DISABLED -> IFACE_DOWN
10:15:11.004 -> 0000020172 [hal] INFO: Using external Nano SIM card
10:15:11.074 -> 0000020221 [gsm0710muxer] INFO: Starting GSM07.10 muxer
10:15:11.074 -> 0000020222 [gsm0710muxer] INFO: Openning mux channel 0
10:15:11.074 -> 0000020223 [gsm0710muxer] INFO: GSM07.10 muxer thread started
10:15:11.074 -> deviceID=e00fce680f32a31afe83fc37
10:15:11.110 -> 0000020274 [gsm0710muxer] INFO: Resuming channel 0
10:15:11.110 -> 0000020275 [gsm0710muxer] INFO: Openning mux channel 1
10:15:11.220 -> 0000020376 [gsm0710muxer] INFO: Resuming channel 1
10:15:11.220 -> 0000020377 [gsm0710muxer] INFO: Resuming channel 1
10:15:11.331 -> manufacturer=u-blox
10:15:11.365 -> model=SARA-R410M-02B
10:15:11.439 -> firmware version=L0.0.00.00.05.06 [Feb 03 2018 13:00:41]
10:15:11.478 -> ordering code=SARA-R410M-02B
10:15:11.512 -> IMEI=3527530902XXXX... [redacted]
10:15:11.582 -> IMSI=u-blox
10:15:11.615 -> ICCID=894450180517XXXXX... [redacted]
10:15:11.615 -> 0000020780 [app] INFO: enabling trace logging
10:15:11.615 -> attempting to connect to the cellular network...
10:15:11.615 -> 0000020783 [system.nm] INFO: State changed: IFACE_DOWN -> IFACE_REQUEST_UP
10:15:11.615 -> 0000020783 [system.nm] INFO: State changed: IFACE_DOWN -> IFACE_REQUEST_UP
10:15:11.615 -> 0000020786 [hal] TRACE: PPP netif -> 8
10:15:11.615 -> 0000020786 [net.ifapi] INFO: Netif pp3 state UP
10:15:11.615 -> 0000020786 [net.ifapi] INFO: Netif pp3 state UP
10:15:11.615 -> 0000020789 [hal] TRACE: PPP thread event LOWER_DOWN
10:15:11.615 -> 0000020790 [hal] TRACE: PPP thread event ADM_DOWN
10:15:11.653 -> 0000020791 [hal] TRACE: PPP thread event ADM_UP
10:15:11.653 -> 0000020793 [hal] TRACE: State NONE -> READY
10:15:11.653 -> 0000020794 [ncp.at] TRACE: > AT+CGDCONT=1,"IP","hologram"
10:15:11.653 -> 0000020796 [system.nm] INFO: State changed: IFACE_REQUEST_UP -> IFACE_UP
10:15:11.653 -> 0000020796 [system.nm] INFO: State changed: IFACE_REQUEST_UP -> IFACE_UP
10:15:11.691 -> 0000020829 [ncp.at] TRACE: < OK
10:15:11.691 -> 0000020830 [ncp.at] TRACE: > AT+CEREG=2
10:15:11.728 -> 0000020879 [ncp.at] TRACE: < OK
10:15:11.728 -> 0000020880 [hal] TRACE: NCP connection state changed: 1
10:15:11.728 -> 0000020881 [net.pppncp] TRACE: NCP event 2
10:15:11.728 -> 0000020882 [net.pppncp] TRACE: State changed event: 1
10:15:11.728 -> 0000020883 [hal] TRACE: PPP thread event LOWER_DOWN
10:15:11.728 -> 0000020884 [ncp.at] TRACE: > AT+COPS=0
10:15:11.762 -> 0000020929 [ncp.at] TRACE: < OK
10:15:11.762 -> 0000020930 [ncp.at] TRACE: > AT+CEREG?
10:15:11.762 -> 0000020931 [ncp.at] TRACE: < +CEREG: 2
10:15:11.833 -> 0000020979 [ncp.at] TRACE: < +CEREG: 2,2
10:15:11.833 -> 0000020980 [ncp.at] TRACE: < OK
10:15:26.843 -> 0000035981 [ncp.at] TRACE: > AT+CEREG?
10:15:26.881 -> 0000036029 [ncp.at] TRACE: < +CEREG: 2,2
10:15:26.881 -> 0000036030 [ncp.at] TRACE: < OK
10:15:41.876 -> 0000051030 [ncp.at] TRACE: > AT+CEREG?
10:15:41.909 -> 0000051079 [ncp.at] TRACE: < +CEREG: 2,2
10:15:41.909 -> 0000051080 [ncp.at] TRACE: < OK
10:15:51.766 -> 0000060906 [sys.power] TRACE: re-enabling charging
10:15:51.800 -> 0000060948 [sys.power] TRACE: Battery state DISCONNECTED -> CHARGED
10:15:52.162 -> 0000061323 [sys.power] TRACE: Battery state CHARGED -> CHARGING
10:15:52.195 -> 0000061352 [sys.power] TRACE: Battery state CHARGING -> CHARGED
10:15:52.669 -> 0000061812 [sys.power] TRACE: Battery state CHARGED -> DISCONNECTED
10:15:56.913 -> 0000066081 [ncp.at] TRACE: > AT+CEREG?
10:15:56.984 -> 0000066132 [ncp.at] TRACE: < +CEREG: 2,2
10:15:56.984 -> 0000066133 [ncp.at] TRACE: < OK
10:16:12.083 -> 0000081233 [ncp.at] TRACE: > AT+CEREG?
10:16:12.116 -> 0000081282 [ncp.at] TRACE: < +CEREG: 2,2
10:16:12.116 -> 0000081283 [ncp.at] TRACE: < OK
10:16:27.132 -> 0000096283 [ncp.at] TRACE: > AT+CEREG?
10:16:27.165 -> 0000096332 [ncp.at] TRACE: < +CEREG: 2,2
10:16:27.165 -> 0000096333 [ncp.at] TRACE: < OK
10:16:42.170 -> 0000111333 [ncp.at] TRACE: > AT+CEREG?
10:16:42.240 -> 0000111382 [ncp.at] TRACE: < +CEREG: 2,2
10:16:42.240 -> 0000111383 [ncp.at] TRACE: < OK
10:16:52.670 -> 0000121813 [sys.power] TRACE: re-enabling charging
10:16:52.708 -> 0000121854 [sys.power] TRACE: Battery state DISCONNECTED -> CHARGED
10:16:53.640 -> 0000122786 [sys.power] TRACE: Battery state CHARGED -> DISCONNECTED
10:16:57.227 -> 0000126387 [ncp.at] TRACE: > AT+CEREG?
10:16:57.263 -> 0000126432 [ncp.at] TRACE: < +CEREG: 2,2
10:16:57.263 -> 0000126433 [ncp.at] TRACE: < OK
10:17:12.387 -> 0000141533 [ncp.at] TRACE: > AT+CEREG?
10:17:12.421 -> 0000141582 [ncp.at] TRACE: < +CEREG: 2,2
10:17:12.421 -> 0000141583 [ncp.at] TRACE: < OK
10:17:27.529 -> 0000156683 [ncp.at] TRACE: > AT+CEREG?
10:17:27.566 -> 0000156732 [ncp.at] TRACE: < +CEREG: 2,2
10:17:27.566 -> 0000156733 [ncp.at] TRACE: < OK
10:17:42.561 -> 0000171734 [ncp.at] TRACE: > AT+CEREG?
10:17:42.631 -> 0000171782 [ncp.at] TRACE: < +CEREG: 2,2
10:17:42.631 -> 0000171783 [ncp.at] TRACE: < OK
10:17:53.632 -> 0000182787 [sys.power] TRACE: re-enabling charging
10:17:53.665 -> 0000182827 [sys.power] TRACE: Battery state DISCONNECTED -> CHARGED
10:17:54.583 -> 0000183742 [sys.power] TRACE: Battery state CHARGED -> DISCONNECTED
10:17:57.611 -> 0000186783 [ncp.at] TRACE: > AT+CEREG?
10:17:57.681 -> 0000186832 [ncp.at] TRACE: < +CEREG: 2,2
10:17:57.681 -> 0000186833 [ncp.at] TRACE: < OK
10:18:12.679 -> 0000201834 [ncp.at] TRACE: > AT+CEREG?
10:18:12.713 -> 0000201882 [ncp.at] TRACE: < +CEREG: 2,2
10:18:12.713 -> 0000201883 [ncp.at] TRACE: < OK
10:18:27.726 -> 0000216883 [ncp.at] TRACE: > AT+CEREG?
10:18:27.764 -> 0000216932 [ncp.at] TRACE: < +CEREG: 2,2
10:18:27.764 -> 0000216933 [ncp.at] TRACE: < OK
10:18:42.788 -> 0000231933 [ncp.at] TRACE: > AT+CEREG?
10:18:42.824 -> 0000231982 [ncp.at] TRACE: < +CEREG: 2,2
10:18:42.824 -> 0000231983 [ncp.at] TRACE: < OK
10:18:54.593 -> 0000243743 [sys.power] TRACE: re-enabling charging
10:18:54.630 -> 0000243782 [sys.power] TRACE: Battery state DISCONNECTED -> CHARGED
10:18:55.565 -> 0000244715 [sys.power] TRACE: Battery state CHARGED -> DISCONNECTED
10:18:57.836 -> 0000246984 [ncp.at] TRACE: > AT+CEREG?
10:18:57.874 -> 0000247033 [ncp.at] TRACE: < +CEREG: 2,2
10:18:57.874 -> 0000247034 [ncp.at] TRACE: < OK
10:19:12.864 -> 0000262035 [ncp.at] TRACE: > AT+CEREG?
10:19:12.936 -> 0000262083 [ncp.at] TRACE: < +CEREG: 2,2
10:19:12.936 -> 0000262084 [ncp.at] TRACE: < OK
10:19:27.928 -> 0000277085 [ncp.at] TRACE: > AT+CEREG?
10:19:28.031 -> 0000277183 [ncp.at] TRACE: < +CEREG: 2,2
10:19:28.031 -> 0000277184 [ncp.at] TRACE: < OK
10:19:43.011 -> 0000292184 [ncp.at] TRACE: > AT+CEREG?
10:19:43.085 -> 0000292233 [ncp.at] TRACE: < +CEREG: 2,2
10:19:43.085 -> 0000292234 [ncp.at] TRACE: < OK
10:19:55.544 -> 0000304716 [sys.power] TRACE: re-enabling charging
10:19:55.582 -> 0000304756 [sys.power] TRACE: Battery state DISCONNECTED -> CHARGED
10:19:56.548 -> 0000305688 [sys.power] TRACE: Battery state CHARGED -> DISCONNECTED
10:19:58.158 -> 0000307334 [ncp.at] TRACE: > AT+CEREG?
10:19:58.230 -> 0000307385 [ncp.at] TRACE: < +CEREG: 2,2
10:19:58.230 -> 0000307386 [ncp.at] TRACE: < OK
10:20:13.219 -> 0000322386 [ncp.at] TRACE: > AT+CEREG?
10:20:13.291 -> 0000322435 [ncp.at] TRACE: < +CEREG: 2,2
10:20:13.291 -> 0000322436 [ncp.at] TRACE: < OK
10:20:13.291 -> 0000322436 [hal] WARN: Resetting the modem due to the network registration timeout
10:20:13.291 -> 0000322436 [hal] WARN: Resetting the modem due to the network registration timeout
10:20:13.291 -> 0000322439 [gsm0710muxer] INFO: Stopping GSM07.10 muxer
10:20:13.291 -> 0000322439 [gsm0710muxer] INFO: Stopping GSM07.10 muxer
10:20:13.291 -> 0000322441 [gsm0710muxer] INFO: Gracefully stopping GSM07.10 muxer
10:20:13.291 -> 0000322441 [gsm0710muxer] INFO: Gracefully stopping GSM07.10 muxer
10:20:13.291 -> 0000322443 [gsm0710muxer] INFO: Closing all muxed channels
10:20:13.291 -> 0000322443 [gsm0710muxer] INFO: Closing all muxed channels
10:20:13.291 -> 0000322444 [gsm0710muxer] INFO: Closing mux channel 1
10:20:13.291 -> 0000322444 [gsm0710muxer] INFO: Closing mux channel 1
10:20:13.291 -> 0000322446 [gsm0710muxer] INFO: Muxed channel 2 already closed
10:20:13.291 -> 0000322446 [gsm0710muxer] INFO: Muxed channel 2 already closed
10:20:13.291 -> 0000322448 [gsm0710muxer] INFO: Muxed channel 3 already closed
10:20:13.291 -> 0000322448 [gsm0710muxer] INFO: Muxed channel 3 already closed
10:20:13.291 -> 0000322450 [gsm0710muxer] INFO: Muxed channel 4 already closed
10:20:13.291 -> 0000322450 [gsm0710muxer] INFO: Muxed channel 4 already closed
10:20:13.399 -> 0000322552 [gsm0710muxer] INFO: Sending CLD (multiplexer close down)
10:20:13.399 -> 0000322552 [gsm0710muxer] INFO: Sending CLD (multiplexer close down)
10:20:13.433 -> 0000322604 [gsm0710muxer] INFO: Received response to CLD or timed out, exiting multiplexed mode
10:20:13.433 -> 0000322604 [gsm0710muxer] INFO: Received response to CLD or timed out, exiting multiplexed mode
10:20:13.433 -> 0000322606 [gsm0710muxer] INFO: GSM07.10 muxer thread exiting
10:20:13.433 -> 0000322606 [gsm0710muxer] INFO: GSM07.10 muxer thread exiting
10:20:13.433 -> 0000322609 [gsm0710muxer] INFO: GSM07.10 muxer stopped
10:20:13.433 -> 0000322609 [gsm0710muxer] INFO: GSM07.10 muxer stopped
10:20:13.433 -> 0000322610 [hal] TRACE: Hard resetting the modem

#36

Sweet Success

I guess there really IS such a thing as a “stale” SIM.

Solution: A new Hologram SIM, and activated 15 minutes prior to putting into Boron LTE in the past hour.

Result: Verizon connected in 122 sec. (happy, breathing cyan).

I will do some more futzing around with various parameters and report back. So for now, call it good. More to follow tonight.


#37

You should do it without enabling the system thread, otherwise the commands will silently fail because the modem is not fully initialized yet.

Is there any way to check and see if the modem is fully initialized if System_Thread is required? If I were to use Semi-Automatic mode, but only attempt the modem commands after some period of time, would that be a workable workaround?


#38

Supporting what Wayne said; looking at Telstra’s coverage map it appears as though they have better coverage for Cat M1 than regular 3G/4G or at least this is the case in my area of rural Australia.

https://www.telstra.com.au/business-enterprise/solutions/internet-of-things/iot-coverage


#39

Gizzard, You are right. Cat M1 and NB1 will have better range due to the lower bandwidth, so therefore much larger coverage. Each tower will have a larger range profile with Cat M1/NB1.


#40

UPDATE on Hologram SIM in Boron LTE:

Now functioning on AT&T and Verizon.

Used my little “all-in-one” app above, and a fresh new SIM from Hologram.

Old SIM works great on 3G and Arduino MKR NB 1500 (Cat-M1), but not on Particle.


#41

Re: Old hologram SIM, I was going to mention that if you see +CEREG: 2,3 repeatedly you are being rejected by the network and likely the SIM is not activated. It seems like your SIM is still active though (since you can use it on other devices), so possibly you are being rejected for too many connection attempts recently with that IMEI+ICCID combo (like a temp ban). Perhaps give it 24 hours to cool down and try again briefly to see if it has resolved itself.

I’d be interested to know what the AT+CGDCONT= command being used on the Arduino MKR NB 1500 is as well as there might be some subtle difference here that makes it work with that SIM specifically.


#42

Thanks, BDub! That really helps to know – and makes sense after watching endless debug output.

Reuben @Hologram has a compatible explanation – the SIM may have had data written to its blacklist at some point. https://community.hologram.io/t/hologram-sim-not-working-on-particle-boron/2507/8?u=michaelm

I’ll try to get you the AT+CGDCONT= value as soon as I can get the NB 1500 back online. Right now, none of my formerly fine-working Hologram SIM’s will connect with the Arduino NB1500. I let them “rest” all weekend, too – completely powered down.


#43

The Cat-M1 world is strange. Could not connect with my Hologram SIM’s last night at all, after days of being powered down. Tried again this morning, same thing. After 30 minutes powered down, connected with no issue.

There is no AT+CGDCONT= command explicitly called, unless there is something hidden in the SIM that I and the debug mode are not seeing.

Connected as:
AT+CEREG?
+CEREG: 0,5


#44

You can try issuing a AT+CGDCONT?\r\n to see what the current setting is. I’m not familiar with how the Arduino NB1500 makes it’s connection to the tower… but I imagine it’s similar to how we do it.


#45

Also you might want to take hologram’s own advice on how to clear the FPLMN list on their SIM: https://help.hologram.io/hologram-iot-sim-card/advanced-troubleshooting/how-do-i-clear-the-fplmn-list


#46

Hey, BDub,

Hugely useful information – thank you!

CGDCONT status below.

YES! There was indeed information written to the Forbidden Zone of Forbidden Providers. Cleared.

Connected just fine today, then checked:
AT+CGDCONT?
+CGDCONT: 1,“IP”,“hologram”,“10.155.172.215”,0,0,0,0

Check the Blacklist:
AT+CRSM=176,28539,0,0,12
+CRSM: 144,0,“130184FFFFFFFFFFFFFFFFFF”

Clear the Blacklist:
at+crsm=214,28539,0,0,12,“FFFFFFFFFFFFFFFFFFFFFFFF”
+CRSM: 144,0,""

Verify empty Blacklist:
AT+CRSM=176,28539,0,0,12
+CRSM: 144,0,“FFFFFFFFFFFFFFFFFFFFFFFF”

Definitely going to be reading up on SIM technology / settings. Thanks for pointing me in the right direction.

Also, put me down on this wishlist: “AT command passthrough mode” app for Electron and Boron. Really makes this type of work easy and fast after the Arduino “SARA pass-through” sketch is loaded. especially for those of us who grew up on “speaking Hayes” since way too long ago. :slight_smile:

UPDATE: Mar 7, AM: All SIM’s working well today. Lesson learned: Don’t willy-nilly switch SIM’s among devices; lest the Cellular Tower Gods grow angry.


#47

All working great here in New Zealand. Spark (our telco) has just rolled out the IoT comms and after following the 3rd party sim guide The Boron LTE connects and works great. Looking forward to a better coverage as the existing 3G network range was not great.


#48

Michael, this is fantastic!

Question, after getting the Boron on the network with the Hologram SIM, were you able to send/receive SMS messages? If so, can you share the code?


#49

I’m really curious if anyone in this thread knows what interactions the Boron is having with the Particle Cloud after it’s configured with the Hologram SIM?

It seems a little silly to pay BOTH Hologram AND Particle for cellular access. And Particle charges 3 per month per device when you go over 100 devices. Has any one in this thread disabled access to Particle Cloud so that fee wouldn’t be occurring?


#50

You can just deactivate the particle-SIM in the console if you don’t want to use it and use your third-party SIM instead, that works fine. Particle doesn’t charge you for deactivated SIMs.


#51

The link to this has changed. It’s now https://support.hologram.io/hc/en-us/articles/360035697373-How-do-I-clear-the-FPLMN-list-