# D-Bus Reference

## The `org.freedesktop.ModemManager1` bus name

The D-Bus name `org.freedesktop.ModemManager1` on the system bus is used by the ModemManager daemon.

If this daemon isn't running, it will be started if D-Bus messages are sent to the name.

## Standard interfaces

Please refer to the DBus specification at `freedesktop.org` for more information on how to use these standard interfaces.

### org.freedesktop.DBus.Properties

All objects (Manager, Modems, Bearers, SIMs, SMSs) exported at the `org.freedesktop.ModemManager1` bus name implement the standard `org.freedesktop.DBus.Properties` interface. Objects implementing this interface provide a common way to query for property values and also a generic signal to get notified about changes in those properties.

### org.freedesktop.DBus.Introspectable

All objects (Manager, Modems, Bearers, SIMs, SMSs) exported at the `org.freedesktop.ModemManager1` bus name implement the standard `org.freedesktop.DBus.Introspectable` interface. Objects implementing this interface will provide an XML-based description of the object and its interfaces.

### org.freedesktop.DBus.ObjectManager

The Manager object exported at the `org.freedesktop.ModemManager1` bus name implements the standard `org.freedesktop.DBus.ObjectManager` interface. This interface, included in rev. 0.17 of the DBus specification, allows a generic way to control the addition and removal of Modem objects, as well as the addition and removal of interfaces in the given objects.

## The `/org/freedesktop/ModemManager1` object

The ModemManager process will export an object at the well-known path `/org/freedesktop/ModemManager1`.

This object, which implements the standard `org.freedesktop.DBus.ObjectManager`, is responsible for managing the list of Modem objects.

This object also controls any process-wide operation, such as the log level being used by the daemon.

## The `/org/freedesktop/ModemManager/Modems` objects

Modem objects are exported in DBus with the following path base: `/org/freedesktop/ModemManager1/Modems/#`, where `#` indicates a unique unsigned integer which identifies the object.

The Modem objects will export a generic Modem interface which includes common features and actions applicable to most modem types. This interface, among other actions, allows the management (creation, listing, deletion) of Bearer objects which can then be used to request the modem to get in connected state.

Modem objects will also export the generic Simple interface. This interface provides an easy access to the most simple and common operations that may be performed with the modem, including connection and disconnection. Users of the Simple interface do not need to take care of getting the modem registered, and they also don't need to manage the creation of bearers themselves. All the logic required to get the modem connected or disconnected is handled by the Simple interface.

Modems with specific 3GPP and/or CDMA capabilities will export modem type specific interfaces, like the 3GPP interface or the CDMA interface.

## The `/org/freedesktop/ModemManager/Bearers` objects

Bearer objects are owned and managed by specific Modem objects. A single Modem may expose one or more Bearer objects, which can then be used to get the modem into connected state.

## The `/org/freedesktop/ModemManager/SIMs` objects

Broadband modems usually need a SIM card to operate. Each Modem object will therefore expose up to one SIM object, which allows SIM-specific actions such as PIN unlocking.

## The `/org/freedesktop/ModemManager/SMSs` objects

Modems implementing the Messaging interface will export one SMS object for each SMS stored in the device.

## The `/org/freedesktop/ModemManager/Calls` objects

Modems implementing the Voice interface will export one Call object for each Call managed in the device.