The AT protocol comes from the Hayes command set used in early Internet modems.

It has been standardized by various standard bodies like the ITU, which then handed it over to the 3GPP. It's now the 27.007 standard at the 3GPP.

In practice device manufacturers often don't respect the standard, and instead do custom changes.

However as their implementation is still based on the standard it's still relatively easy to adapt the userspace modem stack to various modem from various manufacturers.


In the Replicant contributors meetings of July 2019, the "Replicant and modems: introduction" presentation that talks about the AT protocol.

It can be found in the Presentations section of the Replicant contributors meetings of July 2019 page.

It explains the code architecture of the reference RIL which uses AT commands, simply by following what happen in the actual code.

So it's a good idea to look at it if you intend in supporting devices that uses AT commands, if this is the only usable protocol.

As the AT command set has many limitation (which are explained in the conference as well), if the modem supports more than one protocol, it's often better to implement another protocol instead.