I'm using the AT&T IoT Starter Kit, I've been using it for a while, but it is causing me many problems.
The main problem right now is that the Avnet card occasionally just disappears. I can't pin down why it disappears, but it is ruining my device's ability to communicate. This is clearly a severe problem. I have been trying to solve this problem for months.
I will run the device for several hours (sometimes up to 20) and then the Avnet card will disappear, almost instantaneously reappearing again as eth0 (`ping -I eth0 18.104.22.168` would work and have the same routing characteristics as eth1 used to).
The things that I can narrow this down to are:
I'm running Raspbian Stretch, which may not be supported by the board. It's important that I use Stretch because I have tools I'm using that will stop supporting Jessie within the lifetime of the device (docker-like stuff). Could this cause the problem? I seem to remember making the upgrade decision based on the knowledge that "most peripherals will be unaffected by the upgrade".
I haven't upgraded to the newest firmware. This is an obvious thing to do, and I would have already done it had I been able to access the documentation. But it seems to be a broken link: https://starterkit.att.com/tutorials/cellular-shield-firmware-upgrade
Perhaps there is a power problem. This was my first hypothesis, but I'm not sure it's actually the problem. I'm not using anything unusual (camera and occasional hdmi cable), and my power provision is stable, but perhaps a brief power dip causes the communication to drop (or maybe another device steals some amperage that briefly kills the modem?). The power I'm using is 5V 2.5A in development, and will be 5V 3A in production. I do occasionally get under voltage warnings, but I've read that that might just happen sometimes for no reason...?
Other potential solutions:
Use predictable interface names. Since the problem is that occasionally the device disappears and then reappears with a different name, there may be a way to solve the problem just by using predictable interface names. The only thing that makes me concerned is that it the ethernet device has the suspiciously generic name of 'enx0011223343456' which seems like perhaps it is not actually getting a proper unique name.
Directly communicate over a serial port. I could write some sort of direct interface with the modem so that I just send AT commands, but then that seems to defeat the purpose of using it at all. It's nice to abstract the serial component by using the Avnet card in all its glitchy glory and handling routing with routing tables rather than needing to interface with the modem directly. Plus, I'm using the aws iot mqtt sdk, and while mqtt has a mqtt-sn (serial version), I don't know what it would take (or if it's even possible) to switch to the serial version with the aws sdk.
Any thoughts on what could be causing this problem? It is extremely time sensitive that this gets fixed, we are deploying this devices in 4 days, so I don't know how the mod team is here, but I would really love some help.