R410 connectivity problem


#1

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.

  1. How can I get the device to connect through the Hologram SIM?
  2. 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”

OK
at+cfun?
+CFUN: 1

OK
at+csq
+csq: 99,99

OK
at+creg?
+CREG: 0,2

OK

at+cgreg?
+CGREG: 0,4

at+cgdcont?
+CGDCONT: 1,“IP”,“hologram”,“0.0.0.0”,0,0,0,0

OK
at+cgact?
+CGACT: 1,0

OK
at+cops?
+COPS: 0

OK
at+cops=?
+cops: (3,“313 100”,“313 100”,“313100”,8),(1,“310 410”,“310 410”,“310410”,8),(3,“310 260”,“310 260”,“310260”,9),(0,1,2,3,4),(0,1,2)

OK


#2

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)

ifconfig
wwan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 169.254.150.150 netmask 255.255.0.0 broadcast 169.254.255.255
inet6 fe80::756b:20d7:6b08:6a2 prefixlen 64 scopeid 0x20
ether 36:5e:27:1f:26:c6 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


#3

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/


#4

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.


#5

Hmm are you on the latest SDK version?
There was an issue in 0.8.0 that was similar to what you’re seeing but it was fixed in 0.8.1


#6

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.


#7

Here is my API version:
pi@aqmref:~ $ hologram version
0.8.1


#8

I need to double check but the connect command may be trying to set the APN back to ours which would cause that


#9

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?


#10

Just to add - if I use ‘hologram send’ instead of ‘connect’ on the AT&T SIM i get this error:
ERROR: Failed to connect socket


#11

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


#12

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.


#13

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!

First, here are some sites that helped:

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:
image

Using ‘ls /dev/tty*’ to list the tty devices shows:
image

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:

+cops: (1,"AT&T","AT&T","310410",8),(3,"313 100","313 100","313100",8),(1,"310 260","310 260","310260",9),(0,1,2,3,4),(0,1,2)

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:

git clone https://github.com/hologram-io/hologram-tools.git

cd hologram-tools

sudo cp ppp/chatscripts/* /etc/chatscripts/

sudo cp ppp/peers/* /etc/ppp/peers/

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:
image

When I execute ‘sudo pon nova-m’, and then re-execute ‘ifconfig’, I see a new ppp0 interface:
image

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:
image

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:
image

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:

sudo route add default gw 10.64.64.64 metric 203 ppp0

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.