I purchased a Hologram Nova and activated the SIM with the free pilot plan. The website shows the SIM as active. If I plug the modem into a Raspberry Pi (2.5 amp PS) the power light is solid blue but the red connectivity light is off. I changed physical device locations but the connectivity light is always off. I ran the modem diagnostics detailed at https://help.hologram.io/hologram-iot-sim-card/advanced-troubleshooting/modem-sim-annotated-diagnostic-test. The results are listed at the end of this message. I am located in San Diego CA, and I am in both AT&T and Verizon coverage areas. If I do ifconfig I see the modem is recognized as wwan0, but with an unroutable IP (169.254.36.130).
I have a separate AT&T SIM that works with another USB device. If I plug that SIM into the Nova the connectivity light comes on as solid red, but ifconfig shows an unroutable IP (same as above). at+csq gives me 27,99, and at+cops=? shows AT&T in the resulting output.
How can I get the device to connect through the Hologram SIM?
How can I get the device to connect through the AT&T SIM?
Here are the diagnostics from the Hologram SIM:
at
OK
ati
Manufacturer: u-blox
Model: SARA-R410M-02B
Revision: L0.0.00.00.05.06 [Feb 03 2018 13:00:41]
SVN: 02
IMEI: 352753090808005
OK
at+cgmi
u-blox
OK
at+cgmm
SARA-R410M-02B
OK
at+gmm
SARA-R410M-02B
OK
at+cpin?
+CPIN: READY
OK
at+ccid
+CCID: 8944502905186391763
OK
at+crsm=176,28539,0,0,12
+CRSM: 144,0,âFFFFFFFFFFFFFFFFFFFFFFFFâ
I found the modem reset command (at+cfun=15) and after executing the command the connectivity light is solid red. I re-ran the the signal and network diagnostics tests, shown below. Executing ifconfig still shows an unroutable IP, as shown at the very end of this message.
at+csq
+csq: 16,99
OK
At+cops?
+cops: 0,0,âAT&T Hologramâ,8
OK
at+cops=?
+cops: (1,â313 100â,â313 100â,â313100â,8),(2,âAT&Tâ,âAT&Tâ,â310410â,8),(1,â310 260â,â310 260â,â310260â,9),(0,1,2,3,4),(0,1,2)
Ignore the wwan0 interface. Itâs not used. Once that other LED is up then you should be good.
You can send a single message to our cloud with hologram send test or you can connect the whole system to the internet via cellular with hologram network connect
That last command will make a new ppp0 interface that will actually get used for internet. For more info check out some of the docs here: https://hologram.io/docs/reference/cloud/hologram-cli/
Iâm also having difficulty with the modem connect and network connect commands
the weird thing is that if i leave the usb modem plugged in overnight they work. but if i unplug and plug them I get the error:
PPPError: Modem hangup âŚ
when I look at pppd syslog, I see that it is timing out on the IPCP negotiation.
modem send âtest textâ
always worksâŚ
dhoward@ubuntu:~/Documents$ sudo hologram network connect
Exception in thread Thread-1:
Traceback (most recent call last):
File â/usr/lib/python2.7/threading.pyâ, line 801, in __bootstrap_inner
self.run()
File â/usr/lib/python2.7/threading.pyâ, line 754, in run
self.__target(*self.__args, **self.__kwargs)
File â/usr/local/lib/python2.7/dist-packages/Hologram/Network/Modem/ModemMode/pppd.pyâ, line 109, in connectThreadedFunc
raise PPPError(âModem hangup - possibly due to an unregistered SIMâ) PPPError: Modem hangup - possibly due to an unregistered SIM
/var/log/syslog
Nov 2 15:19:19 ubuntu NetworkManager[803]: [1541197159.1078] device added (path: /sys/devices/virtual/net/ppp0, iface: ppp0): no ifupdown configuration found.
Nov 2 15:19:20 ubuntu pppd[11149]: PAP authentication succeeded Nov 2 15:19:50 ubuntu pppd[11149]: IPCP: timeout sending Config-Requests
Nov 2 15:19:56 ubuntu pppd[11149]: Connection terminated.
Iâm having a similar problem.
Iâm running on a Raspberry Pi in Stretch. With the Hologram SIM I was eventually able to connect to the network via PPP. I sent 4 or 5 short test messages. Iâm trying to connect directly to Amazons AWS IoT service, but I have no experience with PPP and havenât quite figured out how to automatically set it up yet. In the meantime my Pilot Plan at Hologram went over the data limit - not sure how that happened since I only intentionally sent a few bytes - so I switched to an AT&T SIM that has lots of ceiling. I changed the APN from âhologramâ to ânxtgenphoneâ using this command:
at+cgdcont=1,âIPâ,ânxtgenphoneâ,â0.0.0.0â,0,0.
Then I do a reset using at+cfun=15. The modem seems to connect to the AT&T network (red light is solid) but when I run âhologram modem connectâ I get the same error: PPPError: Modem hangup - possibly due to an unregistered SIM. The SIM works fine in another modem.
Another thing I notice is if I unplug the modem and plug it back in the APN seems to reset back to âhologramâ. Is there a way to save my APN change made using the at+cgdcont command to non-volatile memory?
The send command will only work with one of our SIMs.
It might just be flipping back from running one of the hologram commands. With Cat-M usually the network will suggest an APN to go with the Sim
Sorry I actually made a mistake above. You can use the send command but you have to specify your cloud key with the -d parameter. Key is on the dashboard when you click on one of your devices.
For anyone interested, here is how I got past this issue. My goal was to use the Nova modem in Raspberian Stretch to access Amazon IoT web services, preferably from a tier-1 carrier like AT&T or Verizon. My application code is written in Python 3.5, but Iâm not a Linux expert, and I have never dealt with AT modems, so be warned that there may well be better ways to do this!
I had an AT&T SIM, and after searching online I found the APN for AT&T is ânxtgenphoneâ.
With the modem plugged in, executing âifconfigâ shows an interface at wwan0, but it is set to an unroutable IP:
Using âls /dev/tty*â to list the tty devices shows:
In my case there are 2 USB interfaces associated with the modem, ttyUSB0 and ttyUSB1 with ttyUSB1 as the active modem port.
If I open a Screen to that interface, I can run a few diagnostics on the modem. I found the Hologram diagnostic-test listed at the links above to be pretty useful.
screen /dev/ttyUSB1
Check that the port is working by typing âatâ:
at
OK
Now check the current APN setting:
at+cgdcont?
+CGDCONT: 1,"IP","hologram","0.0.0.0",0,0,0,0
On a new modem this will display âhologramâ as the APN and in my case it needed to be changed to ânxtgenphoneâ.
Type:
at+cgdcont=1,"IP","nxtgenphone","0.0.0.0",0,0
Verify that the APN has changed by querying again:
at+cgdcont?
+CGDCONT: 1,"IP","nxtgenphone","0.0.0.0",0,0,0,0
Now, reset the modem:
at+cfun=15
At this point the blue and red lights should both be on and solid, assuming you are inside the network coverage area.
Type:
at+cops=?
This might take a few seconds to reply. When it does, you should see your chosen network in the list, similar to below:
Now we need to save the APN in non-volatile memory. To do that type:
at+cpwroff
The modem will switch off for a short period and then back on. Now you can unplug the modem and plug it back in and it will always come back up on the new APN.
Now we need to setup PPPD. Clone the scripts from the Hologram Git repo and copy them into correct folders under /etc/ as shown here:
In my case Iâm using the ânova-mâ scripts, and since I really wanted eth0 interface to be primary and the cell modem to be secondary, I edited /etc/ppp/peers/nova-m and commented out the section setting the interface to defaultroute:
Use this connection as the default route.
#defaultroute
I left /etc/chatscripts/nova-m untouched.
At this point, if I execute âifconfigâ I see the wwan0 interface, shown here:
When I execute âsudo pon nova-mâ, and then re-execute âifconfigâ, I see a new ppp0 interface:
In my case the ppp0 interface is connecting to the AT&T gateway at 10.64.64.64. If I ping a site using the interface, I can see that it works:
So, I know the interface works, but if I turn off eth0 and try to connect my Python app to Amazon AWS, it fails. I guess this is because my default gateway is on the 192 address, so traffic from my app always tries to go through 192.
If I inspect the routing table using âroute -nâ, I see this:
I can add a new route entry, and by setting the Metric value to a number just a bit higher than the eth0 metric, my ppp0 interface will take a lower priority. This allows the traffic to go out eth0 if eth0 is up, and ppp0 if it is down. Here is how I add the route:
Iâm weak on networking, so some sysadmin might point out a better way to set this up, but this accomplishes my goal, and now my python app can communicate with AWS via the cell network.
Adding the route in this manner does not live between resets, so it needs to be added each time the Pi powers up. In my case, thatâs okay because I really donât want the cell modem turned on unless my app is on. I can control this when my app initializes by sending the appropriate commands via Pythonâs âsubprocessâ API.