################################################################## Hal sends me the following still non-introspectable onMount Event: ################################################################## signal sender=:1.0 -> dest=(null destination) path=/org/freedesktop/Hal/devices/volume_uuid_A070_C4A5; interface=org.freedesktop.Hal.Device; member=PropertyModified int32 2 array [ struct { string "volume.mount_point" boolean false boolean false } struct { string "volume.is_mounted" boolean false boolean false } ] ####################################### I used this to hand-craft the following ####################################### ######################################## and CreateInterface transformed it into: (well, struct1 changed to Entry by me) ######################################## public interface Device extends DBusInterface { public static class PropertyModified extends DBusSignal { public final int len; public final List properties; public PropertyModified(String path, int len, List properties) throws DBusException { super(path, len, properties); this.len = len; this.properties = properties; } } } public final class Entry extends Struct { @Position(0) public final String a; @Position(1) public final boolean b; @Position(2) public final boolean c; public Entry(String a, boolean b, boolean c) { this.a = a; this.b = b; this.c = c; } } ############################################################ with this in place, I successfully register a SignalHandler: ############################################################ // ... getting system bus first ... conn.addSigHandler(Device.PropertyModified.class, StupidSigHandler ); ############################################ and now, on every mount/umount event I get: ############################################ <= ERROR: (=> :1.0) org.freedesktop.dbus.DBusExecutionException {5,195} => ERROR: (org.freedesktop.DBus => :1.10) org.freedesktop.DBus.Error.AccessDenied {5,5} (My Signal Handler is never called)