Migrating from ModemManager 0.6 to ModemManager 1.0 ModemManager 1.0 is a new major version of ModemManager that breaks both API and ABI compared to previous versions. These changes allow better managing new types of devices (e.g. those with multiple capabilities), or those not based in AT commands for operation (e.g. QMI or MBIM modems). This section provides an introduction to the changes done in the DBus interface with respect to the main operations performed with modems through ModemManager.
Listing available modems The D-Bus name org.freedesktop.ModemManager1 on the system bus is the new name used by the ModemManager 1.0 daemon, and it implements several standard DBus interfaces, including the new org.freedesktop.DBus.ObjectManager interface, which allows to list available modem objects and get notifications where new ones are added or when existing ones are removed. There are therefore neither a custom method to enumerate devices as in the old 0.6 interface, nor custom signals to notify about added or removed modems. Modems which are found but are not usable will be flagged with a MM_MODEM_STATE_FAILED state in the State property, and a more detailed reason about the failure will be given in the StateFailedReason property. The most common case of failure is to have the SIM missing in a modem which requires one for operation.
PIN unlocking The process of PIN unlocking the modem is now performed with the SendPin() method in the org.freedesktop.ModemManager1.Sim interface. The path of the SIM object is specified in the Sim property of the org.freedesktop.ModemManager1.Modem interface. If the modem doesn't have a SIM, no object path will be given.
Connection and disconnection The process of requesting to connect or disconnect the modem is now split into two operations: creating a bearer with CreateBearer() in the org.freedesktop.ModemManager1.Modem interface and getting the bearer connected with Connect() in the org.freedesktop.ModemManager1.Bearer interface. These two steps are equivalent to the old Connect() method in the previous org.freedesktop.ModemManager.Modem interface. The old Disconnect() method in the previous org.freedesktop.ModemManager.Modem interface is therefore also applied in a per-bearer basis through the new Disconnect() in the org.freedesktop.ModemManager1.Bearer interface. This logic of splitting the connection logic allows ModemManager to create multiple bearers that may be connected to e.g. different access points (if the modem allows it).
Simple connection In order to simplify the whole sequence to get the modem connected, ModemManager still exposes a Simple interface, renamed as: org.freedesktop.ModemManager1.Modem.Simple . The Connect() method will create a single bearer with the parameters specified in the call and get it connected, while the Disconnect() method will disconnect all available bearers. One of the main differences with respect to the 0.6 interface, is that Connect() doesn't support to change allowed modes or bands. Instead, these operations should be done through the methods in the org.freedesktop.ModemManager1.Modem interface.