diff --git a/transport_dbus.c b/transport_dbus.c
index ad0ed0d..42fb018 100644
--- a/transport_dbus.c
+++ b/transport_dbus.c
@@ -46,90 +46,21 @@
 	return (rc < 0) ? rc : 0;
 }
 
-static int transport_dbus_signal_update(struct mbox_context *context,
-					uint8_t events)
-{
-	int rc;
-
-	/*
-	 * Handle signals - edge triggered, only necessary when they're
-	 * asserted
-	 */
-	if (events & BMC_EVENT_WINDOW_RESET) {
-		sd_bus_message *m = NULL;
-
-		rc = sd_bus_message_new_signal(context->bus, &m,
-					       MBOX_DBUS_OBJECT,
-					       /* FIXME: Hard-coding v2 */
-					       MBOX_DBUS_PROTOCOL_IFACE_V2,
-					       "WindowReset");
-		if (rc < 0) {
-			return rc;
-		}
-
-		rc = sd_bus_send(context->bus, m, NULL);
-		if (rc < 0) {
-			return rc;
-		}
-	}
-
-	if (events & BMC_EVENT_PROTOCOL_RESET) {
-		sd_bus_message *m = NULL;
-
-		rc = sd_bus_message_new_signal(context->bus, &m,
-					       MBOX_DBUS_OBJECT,
-					       /* FIXME: Hard-coding v2 */
-					       MBOX_DBUS_PROTOCOL_IFACE_V2,
-					       "ProtocolReset");
-		if (rc < 0) {
-			return rc;
-		}
-
-		rc = sd_bus_send(context->bus, m, NULL);
-		if (rc < 0) {
-			return rc;
-		}
-	}
-
-	return 0;
-}
 
 static int transport_dbus_put_events(struct mbox_context *context, uint8_t mask)
 {
-	int rc;
-
-	/* Always update all properties */
-	rc = transport_dbus_property_update(context, mask);
-	if (rc < 0) {
-		return rc;
-	}
-
-	/*
-	 * Still test signals against the values set as sending them indicates
-	 * the event has been asserted, so we must not send them if the bits
-	 * are not set.
-	 */
-	return transport_dbus_signal_update(context,
-					    context->bmc_events & mask);
+	return transport_dbus_property_update(context, mask);
 }
 
 static int transport_dbus_set_events(struct mbox_context *context,
 				     uint8_t events, uint8_t mask)
 {
-	int rc;
-
-	rc = transport_dbus_property_update(context, events & mask);
-	if (rc < 0) {
-		return rc;
-	}
-
-	return transport_dbus_signal_update(context, events & mask);
+	return transport_dbus_property_update(context, events & mask);
 }
 
 static int transport_dbus_clear_events(struct mbox_context *context,
 				       uint8_t events, uint8_t mask)
 {
-	/* No need to emit signals for ackable events on clear */
 	return transport_dbus_property_update(context, events & mask);
 }
 
@@ -544,8 +475,6 @@
 	SD_BUS_PROPERTY("DaemonReady", "b", transport_dbus_get_property,
 			0, /* Just a pointer to struct mbox_context */
 			SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
-	SD_BUS_SIGNAL("ProtocolReset", NULL, 0),
-	SD_BUS_SIGNAL("WindowReset", NULL, 0),
 	SD_BUS_PROPERTY("ProtocolReset",  "b",
 			transport_dbus_get_property,
 			0, /* Just a pointer to struct mbox_context */
