This is just brainstorming, but have you looked at Device::Modem::Log::File ? You can at least see if your AT commands are being logged, and if so, the docs mention: implement your own new(), write() and close() methods. . So it seems possible to intercept the log file write() and parse it.