diff --git a/power_manager/BUILD.gn b/power_manager/BUILD.gn
index 7c7816c..be7264b 100644
--- a/power_manager/BUILD.gn
+++ b/power_manager/BUILD.gn
@@ -51,7 +51,18 @@
     ]
   }
   if (use.trogdor_sar_hack) {
-    deps += [ ":set_cellular_transmit_power_trogdor" ]
+    deps += [
+      ":set_cellular_transmit_power_trogdor",
+      ":upstart_proxies",
+    ]
+  }
+}
+
+if (use.trogdor_sar_hack) {
+  generate_dbus_proxies("upstart_proxies") {
+    upstart_in_dir = "${sysroot}/usr/share/dbus-1/interfaces/"
+    proxy_output_file = "include/upstart/dbus-proxies.h"
+    sources = [ "${upstart_in_dir}/com.ubuntu.Upstart.xml" ]
   }
 }
 
@@ -210,6 +221,8 @@
   ]
   if (use.trogdor_sar_hack) {
     sources += [ "powerd/policy/cellular_controller_trogdor.cc" ]
+
+    deps = [ ":upstart_proxies" ]
   }
   libs = [ "m" ]
 }
diff --git a/power_manager/dbus/org.chromium.PowerManager.conf b/power_manager/dbus/org.chromium.PowerManager.conf
index d7ab603..29e4701 100644
--- a/power_manager/dbus/org.chromium.PowerManager.conf
+++ b/power_manager/dbus/org.chromium.PowerManager.conf
@@ -8,6 +8,9 @@
 
   <policy user="power">
     <allow own="org.chromium.PowerManager" />
+    <allow send_destination="com.ubuntu.Upstart"
+           send_interface="com.ubuntu.Upstart0_6"
+           send_type="method_call" send_member="EmitEvent" />
   </policy>
 
   <limit name="max_replies_per_connection">512</limit>
diff --git a/power_manager/powerd/policy/cellular_controller_trogdor.cc b/power_manager/powerd/policy/cellular_controller_trogdor.cc
index de8323f..044c445 100644
--- a/power_manager/powerd/policy/cellular_controller_trogdor.cc
+++ b/power_manager/powerd/policy/cellular_controller_trogdor.cc
@@ -16,6 +16,11 @@
 #define TROGDOR_MODEM_NODE_ID (0x0)
 #define TROGDOR_WDS_SERVICE_ID (0x1)
 
+namespace {
+const char kUpstartServiceName[] = "com.ubuntu.Upstart";
+const char kNodeAddedEvent[] = "qrtr-service-added";
+const char kNodeRemovedEvent[] = "qrtr-service-removed";
+}  // namespace
 namespace power_manager {
 namespace policy {
 
@@ -50,6 +55,14 @@
     CHECK(InitQrtrSocket());
 }
 
+void CellularControllerTrogdor::EmitEvent(const char* event) {
+  brillo::ErrorPtr error;
+  LOG(INFO) << "In EmitEvent sending = " << event;
+  if (!upstart_proxy_->EmitEvent(event, {}, false /* wait */, &error)) {
+    LOG(ERROR) << "Could not emit upstart event: " << error->GetMessage();
+  }
+}
+
 void CellularControllerTrogdor::ProximitySensorDetected(UserProximity value) {
   if (set_transmit_power_for_proximity_) {
     if (set_transmit_power_for_tablet_mode_) {
@@ -179,6 +192,7 @@
               << " port = " << pkt.port << " service = " << pkt.service;
       if (pkt.node == TROGDOR_MODEM_NODE_ID &&
           pkt.service == TROGDOR_WDS_SERVICE_ID) {
+        EmitEvent(kNodeAddedEvent);
         HandleModemStateChange(ModemState::ONLINE);
       }
       break;
@@ -187,6 +201,7 @@
               << " port = " << pkt.port << " service = " << pkt.service;
       if (pkt.node == TROGDOR_MODEM_NODE_ID &&
           pkt.service == TROGDOR_WDS_SERVICE_ID) {
+        EmitEvent(kNodeRemovedEvent);
         HandleModemStateChange(ModemState::OFFLINE);
       }
       break;
@@ -242,6 +257,13 @@
 
 bool CellularControllerTrogdor::InitQrtrSocket() {
   uint8_t kQrtrPort = 0;
+  dbus::Bus::Options options;
+  options.bus_type = dbus::Bus::SYSTEM;
+  scoped_refptr<dbus::Bus> bus(new dbus::Bus(options));
+  CHECK(bus->Connect());
+  upstart_proxy_ =
+      std::make_unique<com::ubuntu::Upstart0_6Proxy>(bus, kUpstartServiceName);
+
   socket_.reset(qrtr_open(kQrtrPort));
   if (!socket_.is_valid()) {
     LOG(ERROR) << "Failed to open QRTR socket with port " << kQrtrPort;
diff --git a/power_manager/powerd/policy/cellular_controller_trogdor.h b/power_manager/powerd/policy/cellular_controller_trogdor.h
index cfef9ce..d34ffe5 100644
--- a/power_manager/powerd/policy/cellular_controller_trogdor.h
+++ b/power_manager/powerd/policy/cellular_controller_trogdor.h
@@ -12,6 +12,8 @@
 #include <base/macros.h>
 #include <base/files/file_descriptor_watcher_posix.h>
 #include <base/files/scoped_file.h>
+#include <brillo/daemons/dbus_daemon.h>
+#include <upstart/dbus-proxies.h>
 
 #include "power_manager/common/power_constants.h"
 #include "power_manager/powerd/policy/user_proximity_handler.h"
@@ -54,6 +56,7 @@
   // Called when the tablet mode changes.
   void HandleTabletModeChange(TabletMode mode);
   void HandleModemStateChange(ModemState state);
+  void EmitEvent(const char* event);
   // UserProximityHandler::Delegate overrides:
   void ProximitySensorDetected(UserProximity proximity) override;
   void HandleProximityChange(UserProximity proximity) override;
@@ -92,6 +95,7 @@
   base::ScopedFD socket_;
   std::unique_ptr<base::FileDescriptorWatcher::Controller> watcher_;
   std::vector<uint8_t> buffer_;
+  std::unique_ptr<com::ubuntu::Upstart0_6Proxy> upstart_proxy_;
 
   DISALLOW_COPY_AND_ASSIGN(CellularControllerTrogdor);
 };
