---
name: "mdbus2"
section: "1"
platform: "linux"
package: "mdbus2"
version: "2.3.3-2"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/mdbus2"
---

# mdbus2(1)

Interactive DBus introspection, interaction, and monitoring

## NAME

mdbus2 - Interactive DBus introspection, interaction, and monitoring

## SYNOPSIS

`mdbus2` \[`OPTIONS...`\] \[ `servicename` \[ `objectpath` \[ `method` \[ `params...` \] \] \] \]

`mdbus2 -si`

`mdbus2 -sl`

## DESCRIPTION

The `mdbus2` command is used to explore and interact with DBus services on your *system bus* and *session bus*. The system-wide message bus exists only once and is installed on many systems as the "messagebus" service. The session message bus is per-user-login (started each time a user logs in) and usually tied to your X11 session.

In the simplest form, mdbus2 shows the available services on the selected bus. Given a *service name*, it will show the available *objects* exported by the service. Given a service name and an *object path*, it will show the exposed *methods*, *signals*, and *properties* of that object.

Supplying a *method name* (and *parameters*), you can call methods on the object and get the return  **value**(s).

In the *listening mode*, you can observe signals sent on the selected bus.

Also included is an *interactive shell* with tab-completion and command history.

## OPTIONS

- `--show-anonymous`, `-a`

  Also show *unique* (anonymous) services on the bus.

- `--system`, `-s`

  Use the system bus instead of the (default) session bus.

- `-show-pids`, `-p`

  Show UNIX process IDs.

- `--listen`, `-l`

  Start the listener mode, in which you can observe signals on the bus.

- `--interactive`, `-i`

  Start an interactive shell.

- `--annotate-types`, `-t`

  Annotate DBus types.

## USAGE

To invoke a method on an object implemented by a service, you need to specify the following values:

- 1

  `service name`, e.g. `org.freesmartphone.ogsmd` – The service name identifies the process serving a number of objects. Every process that attaches to the bus gets at least a non-unique (anonymous) service name assigned, such as `:1.0`. Unique names, such as `org.freesmartphone.ogsmd`, are usually given in all-lowercase reverse domain name notation.

- 2

  `object path`, e.g. `/org/freesmartphone/GSM/Device` – The object path identifies one concrete object served by the process. Object paths usually look like file system paths.

- 3

  `method`, e.g. `org.freesmartphone.GSM.Call.Initiate` – The method name identifies an operation that is part of the interface (methods and signals) of an object. Method names are using *CamelCase* with dot notation.

- 4

  `parameters`, e.g. `+49123456` voice\`. **(To be described further).**

## EXAMPLES

Find out which bus names are currently registered on the system bus:

```
root@om-gta02:~# mdbus -s
:1.0
:1.1
:1.2
:1.42
:1.47
:1.60
:1.61
org.bluez
org.freedesktop.Avahi
org.freedesktop.DBus
org.freesmartphone.frameworkd
org.freesmartphone.ogsmd
org.pyneo.muxer
```

Find out which objects are served by a certain service:

```
root@om-gta02:~# mdbus -s org.freesmartphone.frameworkd
/
/org
/org/freesmartphone
/org/freesmartphone/Framework
/org/freesmartphone/GSM
/org/freesmartphone/GSM/Device
/org/freesmartphone/GSM/Server
```

Find out the interface of a certain object:

```
root@om-gta02:~# mdbus -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device
[METHOD]    org.freesmartphone.GSM.Call.Activate( i:index )
[METHOD]    org.freesmartphone.GSM.Call.ActivateConference( i:index )
[METHOD]    org.freesmartphone.GSM.Call.HoldActive()
[METHOD]    org.freesmartphone.GSM.Call.Initiate( s:number, s:type_ )
[METHOD]    org.freesmartphone.GSM.Call.Release( i:index )
[METHOD]    org.freesmartphone.GSM.Call.ReleaseAll()
[METHOD]    org.freesmartphone.GSM.Call.ReleaseHeld()
[SIGNAL]    org.freesmartphone.GSM.Call.CallStatus( i:index, s:status, a{sv}:properties )
[METHOD]    org.freedesktop.DBus.Introspectable.Introspect()
[METHOD]    org.freesmartphone.GSM.Device.CancelCommand()
[METHOD]    org.freesmartphone.GSM.Device.GetAntennaPower()
[METHOD]    org.freesmartphone.GSM.Device.GetFeatures()
[METHOD]    org.freesmartphone.GSM.Device.GetInfo()
[METHOD]    org.freesmartphone.GSM.Device.PrepareForSuspend()
[METHOD]    org.freesmartphone.GSM.Device.RecoverFromSuspend()
[METHOD]    org.freesmartphone.GSM.Device.SetAntennaPower( b:power )
[METHOD]    org.freesmartphone.GSM.SIM.ChangeAuthCode( s:old_pin, s:new_pin )
[METHOD]    org.freesmartphone.GSM.SIM.DeleteEntry( i:index )
[METHOD]    org.freesmartphone.GSM.SIM.DeleteMessage( i:index )
[METHOD]    org.freesmartphone.GSM.SIM.GetAuthStatus()
[METHOD]    org.freesmartphone.GSM.SIM.GetImsi()
[METHOD]    org.freesmartphone.GSM.SIM.GetMessagebookInfo()
[METHOD]    org.freesmartphone.GSM.SIM.GetPhonebookInfo()
[METHOD]    org.freesmartphone.GSM.SIM.GetServiceCenterNumber()
[METHOD]    org.freesmartphone.GSM.SIM.GetSimCountryCode()
[METHOD]    org.freesmartphone.GSM.SIM.GetSubscriberNumbers()
[METHOD]    org.freesmartphone.GSM.SIM.RetrieveEntry( i:index )
[METHOD]    org.freesmartphone.GSM.SIM.RetrieveMessage( i:index )
[METHOD]    org.freesmartphone.GSM.SIM.RetrieveMessagebook( s:category )
[METHOD]    org.freesmartphone.GSM.SIM.RetrievePhonebook()
[METHOD]    org.freesmartphone.GSM.SIM.SendAuthCode( s:code )
[METHOD]    org.freesmartphone.GSM.SIM.SetServiceCenterNumber( s:number )
[METHOD]    org.freesmartphone.GSM.SIM.StoreEntry( i:index, s:name, s:number )
[METHOD]    org.freesmartphone.GSM.SIM.StoreMessage( s:number, s:contents )
[METHOD]    org.freesmartphone.GSM.SIM.Unlock( s:puk, s:new_pin )
[SIGNAL]    org.freesmartphone.GSM.SIM.AuthStatus( s:status )
[SIGNAL]    org.freesmartphone.GSM.SIM.NewMessage( i:index )
[METHOD]    org.freesmartphone.GSM.Network.DisableCallForwarding( s:reason, s:class_ )
[METHOD]    org.freesmartphone.GSM.Network.EnableCallForwarding( s:reason, s:class_, s:number, i:timeout )
[METHOD]    org.freesmartphone.GSM.Network.GetCallForwarding( s:reason )
[METHOD]    org.freesmartphone.GSM.Network.GetCallingIdentification()
[METHOD]    org.freesmartphone.GSM.Network.GetNetworkCountryCode()
[METHOD]    org.freesmartphone.GSM.Network.GetSignalStrength()
[METHOD]    org.freesmartphone.GSM.Network.GetStatus()
[METHOD]    org.freesmartphone.GSM.Network.ListProviders()
[METHOD]    org.freesmartphone.GSM.Network.Register()
[METHOD]    org.freesmartphone.GSM.Network.RegisterWithProvider( i:operator_code )
[METHOD]    org.freesmartphone.GSM.Network.SetCallingIdentification( s:status )
[METHOD]    org.freesmartphone.GSM.Network.Unregister()
[SIGNAL]    org.freesmartphone.GSM.Network.SignalStrength( i:strength )
[SIGNAL]    org.freesmartphone.GSM.Network.Status( a{sv}:status )
[METHOD]    org.freesmartphone.GSM.PDP.ActivateContext( s:apn, s:user, s:password )
[METHOD]    org.freesmartphone.GSM.PDP.DeactivateContext()
[METHOD]    org.freesmartphone.GSM.PDP.GetCurrentGprsClass()
[METHOD]    org.freesmartphone.GSM.PDP.ListAvailableGprsClasses()
[METHOD]    org.freesmartphone.GSM.PDP.SetCurrentGprsClass( s:class_ )
[SIGNAL]    org.freesmartphone.GSM.PDP.ContextStatus( i:index, s:status, a{sv}:properties )
[METHOD]    org.freesmartphone.GSM.Test.Command( s:command )
[METHOD]    org.freesmartphone.GSM.Test.Echo( s:echo )
```

Call a method on an interface:

```
root@om-gta02 ~ $ mdbus -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Device.GetInfo
{   'imei': '354651011234567',
    'manufacturer': 'FIC/OpenMoko',
    'model': '"Neo1973 GTA02 Embedded GSM Modem"',
    'revision': '"HW: GTA02BV5, GSM: gsm_ac_gp_fd_pu_em_cph_ds_vc_cal35_ri_36_amd8_ts0-Moko8"'}
```

Use it in listening mode:

```
root@om-gta02:/local/pkg/fso/framework/framework# mdbus -s -l
listening for signals on SystemBus from service 'all', object 'all'...
 [SIGNAL]    org.freedesktop.DBus.NameOwnerChanged    from org.freedesktop.DBus /org/freedesktop/DBus
(dbus.String(u'org.pyneo.muxer'), dbus.String(u':1.6'), dbus.String(u''))
 [SIGNAL]    org.freedesktop.DBus.NameOwnerChanged    from org.freedesktop.DBus /org/freedesktop/DBus
(dbus.String(u':1.6'), dbus.String(u':1.6'), dbus.String(u''))
 [SIGNAL]    org.freedesktop.DBus.NameOwnerChanged    from org.freedesktop.DBus /org/freedesktop/DBus
(dbus.String(u':1.28'), dbus.String(u''), dbus.String(u':1.28'))
 [SIGNAL]    org.freedesktop.DBus.NameOwnerChanged    from org.freedesktop.DBus /org/freedesktop/DBus
(dbus.String(u'org.freesmartphone.frameworkd'), dbus.String(u''), dbus.String(u':1.28'))
 [SIGNAL]    org.freedesktop.DBus.NameOwnerChanged    from org.freedesktop.DBus /org/freedesktop/DBus
(dbus.String(u'org.freesmartphone.ogsmd'), dbus.String(u''), dbus.String(u':1.28'))
 [SIGNAL]    org.freedesktop.DBus.NameOwnerChanged    from org.freedesktop.DBus /org/freedesktop/DBus
(dbus.String(u':1.29'), dbus.String(u''), dbus.String(u':1.29'))
 [SIGNAL]    org.freedesktop.DBus.NameOwnerChanged    from org.freedesktop.DBus /org/freedesktop/DBus
(dbus.String(u'org.pyneo.muxer'), dbus.String(u''), dbus.String(u':1.29'))
 [SIGNAL]    org.freedesktop.DBus.NameOwnerChanged    from org.freedesktop.DBus /org/freedesktop/DBus
(dbus.String(u':1.30'), dbus.String(u''), dbus.String(u':1.30'))
 [SIGNAL]    org.freesmartphone.GSM.SIM.ReadyStatus    from :1.28 /org/freesmartphone/GSM/Device
(dbus.Boolean(False),)
 [SIGNAL]    org.freesmartphone.GSM.SIM.AuthStatus    from :1.28 /org/freesmartphone/GSM/Device
(dbus.String(u'SIM PIN'),)
 [SIGNAL]    org.freesmartphone.GSM.SIM.AuthStatus    from :1.28 /org/freesmartphone/GSM/Device
(dbus.String(u'READY'),)
 [SIGNAL]    org.freesmartphone.GSM.SIM.ReadyStatus    from :1.28 /org/freesmartphone/GSM/Device
(dbus.Boolean(True),)
```

## BUGS

Please send bug reports to  ⟨fso@openphoenux.org⟩ or use our issue tracker at the project page ⟨https://github.com/freesmartphone/mdbus/issues⟩.

## NOTES

- •

  mdbus2 requires *well-behaved DBus services*, this means, services that adhere to the DBus introspection protocol.

- •

  Your message bus configuration may keep mdbus2 from seeing all messages, especially if you run it as a non-root user.

## AUTHOR

Michael 'Mickey' Lauer  ⟨mickey@vanille.de⟩

## SEE ALSO

[**dbus-send**(1)](/dbus-send/1.md), [**dbus-monitor**(1)](/dbus-monitor/1.md), [**gdbus**(1)](/gdbus/1.md), [**qdbus**(1)](/qdbus/1.md), DBus Homepage ⟨http://www.freedesktop.org/dbus⟩
