--
You received this message because you are subscribed to the Google Groups "NuttX" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nuttx+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
The Quectel EC21 LTE modem (for example), with a Qualcomm chip under the hood, provides an AT command interface as well as QMI (Qualcomm binary interface). I'm more familiar with the AT command interface at the moment, but the QMI interface looks interesting.
Quectel provides an AT command set for several of the common protocols -- TCP/IP (including ping support, DNS support, and socket support), HTTP(S), MQTT, PPP, FTP, and so on. These command sets so far seem pretty effective at basic use cases for each protocol, including SSL authentication in many cases.
But I'm struggling with figuring out how to properly integrate a modem like this into the NuttX network driver stack. I've searched around the net, and the NuttX wiki, and the Google group here, and took a look at the code in 'nuttx/drivers/net', and I just can't seem to get a foothold on a good place to start. The best examples I've found in the NuttX codebase that seem to "talk" AT commands are pppd and chat, which are well outside my experience, but from what I can tell don't really help if you want to talk TCP/IP and HTTP(S).
So at the moment, as much as I hate to do it, I'm planning on just creating a tight integration between apps and the Quectel modems, instead of tightly integrating it into the NuttX TCP/IP network stack. I hate it to do this because of the obvious benefits of being able to support practically any network app that can talk TCP/IP, instead of having to port every app to use a Quectel API.
One path forward I'm considering is porting `libqmi` from Linux to NuttX, but that would be my first foray into porting a library, and I don't really know where to begin there, or how big of a can of worms that is.
/dev/cdc-wdm
device
which can talk QMI, along with a wwan
interface
associated to each QMI port."
https://sigquit.wordpress.com/2012/08/20/an-introduction-to-libqmi/Can you have raw TCP/IP ? in this case you could consider TUN/TAP
Can you have raw TCP/IP ? in this case you could consider TUN/TAP
<service_type>“TCP” - Start a TCP connection as a client“UDP” - Start a UDP connection as a client“TCP LISTENER” - Start a TCP server to listen to TCP connection“UDP SERVICE” - Start a UDP service
Can you have raw TCP/IP ? in this case you could consider TUN/TAP
This is via serial, right? So that is application layer stuff.
You can look at apps/netuitisl/esp82866. There is another networking devices that interacts through serial. Your code might go in apps/netutils too???
The AT interface is part of the application and does not belong in the networking layer. I think are going in the right direction if AT is what you plan to use for the interface.
So you also have to write those drivers. Still libqmi is a user application. the cdc-wdm and qmi-wwan would reside in the OS. I assume that these are character drivers and would still not involve the networking layer. In stead of using the ASCII AT commands through a serial driver, you would use these binary protocols through a custom character drivers. Not much difference architecturally.
--
--
If you just want to use NuttX BSD sockets you could also consider the USRSOCK implementation that provides network socket interface to an external TCP/IP stack th is managed by userspace applications. There is a "proxy" fo the user space sockets in the OS (see nutt/net/usrsock), but the actual hardware interface via a character driver in in application space. See for example, apps/examples/usrsocktest.
Ramtin is suggesting that you use the NuttX TCP/IP stack. Is that possible? My understanding from the trivial amount that I have learned from you is that the TCP/IP stack SSL, etc. reside in the part and you interface to it via AT commands or via a custom binary interface. If the former is the case, then TUN/TAP network devices are an option. Otherwise, you need to consider either (a) a custom application interface, or (b) usrsocks.
Just reporting back. The `ubmodemd` and related libraries so far port very well to Quectel, with just some changes to AT command names and command flows. I've got it up and running to the point where it registers the Quectel to the Verizon network and gets an IP. I'm now busy turning on the network bits needed to get USRSOCK up and running, and updating the AT commands for that part.Anyway, so far, so good. Thanks for the tips, everyone!
--
You received this message because you are subscribed to the Google Groups "NuttX" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nuttx+unsubscribe@googlegroups.com.