############################# Guessed Interface description (works fine for StateChange): ############################# ############################# Java generated from the above ############################# package org.freedesktop; import org.freedesktop.dbus.DBusException; import org.freedesktop.dbus.DBusInterface; import org.freedesktop.dbus.DBusSignal; import org.freedesktop.dbus.UInt32; public interface NetworkManager extends DBusInterface { public static class DeviceCarrierOn extends DBusSignal { public final DBusInterface a; public DeviceCarrierOn(String path, DBusInterface a) throws DBusException { super(path, a); this.a = a; } } public static class StateChange extends DBusSignal { public final UInt32 a; public StateChange(String path, UInt32 a) throws DBusException { super(path, a); this.a = a; } } } ################## My Generic Handler ################## public class NetManSigHandler implements DBusSigHandler { public void handle(DBusSignal signal) { System.out.println( signal.toString() ); } } ################## registered in Main ################## ... // after getting system bus conn.addSigHandler( NetworkManager.StateChange.class, new NetManSigHandler()); conn.addSigHandler( NetworkManager.DeviceCarrierOn.class, new NetManSigHandler()); ##################### Output on StateChange ##################### => SIG: :1.30/path[org.freedesktop.NetworkManager.StateChange](u) {2} org.freedesktop.NetworkManager$StateChange(:1.30,org.freedesktop.NetworkManager,StateChange,2,0)(44,) ########################## Output on DeviceCarrierOff ########################## => SIG: :1.31/path[org.freedesktop.NetworkManager.DeviceCarrierOff](o) {2} <= ERROR: (=> :1.31) org.freedesktop.dbus.DBusExecutionException {15,2} <= CALL: :1.31/test/4[org.freedesktop.DBus.Introspectable.Introspect]() {16} => ERROR: (org.freedesktop.DBus => :1.29) org.freedesktop.DBus.Error.ServiceUnknown {15,15} => ERROR: (org.freedesktop.DBus => :1.29) org.freedesktop.DBus.Error.ServiceUnknown {16,16}