C Python Other
Latest commit 763e207 Jan 9, 2013 Aleksander Morgado blacklist: ignore all devices from VID 0x0617
No modems from the Swiss Federal Institute of Technology.

Failed to load latest commit information.
build-aux build,build-aux: include missing `mm-errors-quarks-template.c' file i… Oct 4, 2012
cli cli: new actions to setup or gather CDMA BS location source Nov 2, 2012
data data: include ModemManager logo images Oct 4, 2012
decode decode: handle another UsbSnoop URB function Jul 17, 2012
docs cli: new actions to setup or gather CDMA BS location source Nov 2, 2012
include api: new source for the CDMA Base Station location Nov 2, 2012
introspection api: new source for the CDMA Base Station location Nov 2, 2012
libmm-glib libmm-glib: document mm_get_uint_from_str() Dec 5, 2012
libqcdm qcdm: handle more test failures for NW subsystem Nov 27, 2012
libwmc wmc: namespace stuff properly May 30, 2012
m4 build: warn about unused but set variables Aug 24, 2012
plugins iface-modem, novatel-lte: disable network scan in LTE mode Jan 4, 2013
po po: fix policy filename to translate Mar 16, 2012
src blacklist: ignore all devices from VID 0x0617 Jan 9, 2013
test test: new tester for the messaging capabilities of a modem, using `mm… Sep 14, 2012
uml290 uml290mode: fix log message Sep 27, 2012
vl600 vl600: add supported AT commands for V8 firmware Oct 6, 2012
.gitignore docs,ModemManager: include the missing manpage Oct 24, 2012
AUTHORS Initial commit. Jul 31, 2008
COPYING license: use GPLv2 as top level COPYING for now to reflect the licens… Aug 6, 2009
ChangeLog Initial commit. Jul 31, 2008
Makefile.am build: merge libmm-common into libmm-glib Oct 4, 2012
NEWS release: update NEWS Dec 7, 2012
README doc: update README (bgo #652910) Aug 2, 2011
TODO TODO: remove tasks which were already done Oct 15, 2012
autogen.sh build: look for src/main.c in autogen.sh Mar 16, 2012
configure.ac release: bump version to 0.7.990 Dec 7, 2012


The problem ModemManager tries to solve is to provide a unified high level API
for communicating with (mobile broadband) modems. While the basic commands are
standardized, the more advanced operations (like signal quality monitoring 
while connected) varies a lot.

ModemManager is a system daemon and is not meant to be used directly from
the command line. However, since it provides DBus API, it is possible to use
'dbus-send' command to control it from the terminal. There's an example
program (tests/mm-test.py) that demonstrates the basic API usage.

ModemManager is a DBus system bus activated service (meaning it's started 
automatically when a request arrives). It is written in C. The devices are
queried from udev and automatically updated based on hardware events. There's
a GInterface (MMModem) that defines the modem interface and any device specific
implementation must implement it. There are two generic MMModem implementations
to support the basic operations (one for GSM, one for CDMA,) which are common
for all cards.

Plugins are loaded on startup, and must implement the MMPlugin interface. It
consists of a couple of methods which tell the daemon whether the plugin
supports a port and to create custom MMModem implementations. It most likely
makes sense to derive custom modem implementations from one of the generic
classes and just add (or override) operations which are not standard. There's a
fully working plugin in the plugins/ directory for Huawei cards that can be
used as an example for writing new plugins. Writing new plugins is highly

The API is open for changes, so if you're writing a plugin and need to add or
change some public method, feel free to suggest it!