This use of AT commands in 4g modems was really something that made me laugh out loud when I started dabbling with those devices. The muscle memory still worked. The lack of dialing and modem sound was a bit of let-down, though.
It is astounding that the 3g/4g modem industry did not come up with a better way to talk to their devices. Even ISDN had a widely implemented proper API.
LOL. Just to add on to the comment, it doesn't even have to be 3g/4g. If you're doing Wifi on an ESP8266, you're probably also using AT commands as well. Although it's really nothing like the Hayes command set.
In any case, it fills me with equal parts nostalgia, awe, and fear. :)
After using AT - compatible command set on a wifi iot module, AT commands in iridium don't surprise me, it's almost counting as legacy now. It started development in 1993 (30 years ago).
Most 3G/4G modems these days are USB connected and have QMI (for quectel chipsets) and / or MBIM both of which are easier to use from software than AT.
They still have a virtual comm port that talks AT though and that may still be required for a few diagnostic things.
Setting up a data connection over QMI / MBIM however is much easier and more efficient than messing around with AT + PPP
The one that made me laugh (or cry, I don't remember) was when I issued an AT command to do an HTTPS download of a binary file over a cell modem. I get wanting to keep using a command set that was familiar, but they stretched it beyond all recognition.
I understand that there were good reasons why it was done. But out-of-band control is so much nicer to work with. One channel for control, one for data.
No parsing of text. No escaping of '+++' to avoid that a '+++ATH' in the data stream closes the connection (I wonder how the download time of a file containing only '+' differs from a file with other characters).
And with increasing mobile network speeds, you really want something like DMA instead of reading individual bytes from a serial interface.
Modern modems have "buffer access mode" for this. When you need to receive data, modem notifies you with a message '+QIURC: "recv",<connection>,<len>', then you send 'AT+QIRD=<conn>,<len>' and you know next <len> bytes are data, without any parsing.
> Thus, even if the file being transmitted [...] includes occurrences of the escape command string of bits, it is extremely unlikely that any random occurrence of the escape command would occur unintentionally in the environment of the entire escape sequence, that is, the escape command string surrounded by a second of no data on either side.
I don't know what the modern commands look like, but I hope that at least they abolished the in-band signalling so you don't have to do <wait 1 second> +++ <wait 1 second> .
For newest Quectel BG95 LTE Cat M1 you can either use buffer access mode (AT+QIRD for receiving data) or still use that in-band signalling (direct push mode) with +++. You could also use external pin for exiting from that direct mode, but +++ is still available and useable when you don't have any more free pins on your MCU.
It is astounding that the 3g/4g modem industry did not come up with a better way to talk to their devices. Even ISDN had a widely implemented proper API.