dcbw at redhat.com
Mon Aug 31 11:59:43 PDT 2015
On Mon, 2015-08-31 at 19:37 +0100, João M. S. Silva wrote:
> I am using ModemManager to control an HSDPA modem:
> $ lsusb
> Bus 001 Device 004: ID 12d1:1001 Huawei Technologies Co., Ltd.
> E169/E620/E800 HSDPA Modem
> But now we are testing this device: SIM800L from SIMCom.
> This modem understands AT commands that we send through a terminal
> program, like miniterm.py or so.
> My question is: how does ModemManager relate to AT commands? Is it a
> wrapper for AT commands, i.e. in an higher abstraction layer?
Yes, or for MBIM or QMI or whatever. ModemManager exposes a
higher-level D-Bus API and translates requests from that API into
commands sent to the modem, regardless of what kind of command interface
that modem has.
> We cannot use ModemManager for this SIM800L module since it uses a
> serial connection and not DBus, is this correct?
Not quite correct. ModemManager does not use D-Bus to talk to the
modem; it uses D-Bus to talk to client applications. To talk to the
modem, MM uses the protocol that the modem supports (eg AT-over-serial,
AT-over-WDM, MBIM, QMI, or QCDM-over-serial) to speak with the kernel
driver, which then formats the data correctly for the modem itself.
So your SIMCom device will have serial lines that a kernel driver knows
how to control, and the kernel exposes a device node (like ttyACM0 or
ttyUSB0 or cdc-wdm0), which is what ModemManager then uses to control
the device based on what requests client applications make via MM's
The only caveat here is that many modems use proprietary AT commands for
some of their functionality, and if there is no support in ModemManager
for those commands some functions may not be available. MM has a
SimTech/SimCom plugin already, but for other SimCom devices that appear
to support different commands than the 800L.
More information about the ModemManager-devel