diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk
index a54c45a..e232e10 100644
--- a/wpa_supplicant/Android.mk
+++ b/wpa_supplicant/Android.mk
@@ -1657,9 +1657,11 @@
     binder/binder_constants.cpp \
     binder/parcelable_iface_params.cpp \
     binder/fi/w1/wpa_supplicant/IIface.aidl \
+    binder/fi/w1/wpa_supplicant/IIfaceCallback.aidl \
     binder/fi/w1/wpa_supplicant/INetwork.aidl \
+    binder/fi/w1/wpa_supplicant/INetworkCallback.aidl \
     binder/fi/w1/wpa_supplicant/ISupplicant.aidl \
-    binder/fi/w1/wpa_supplicant/ISupplicantCallbacks.aidl
+    binder/fi/w1/wpa_supplicant/ISupplicantCallback.aidl
 LOCAL_SHARED_LIBRARIES := libbinder
 LOCAL_EXPORT_C_INCLUDE_DIRS := \
     $(LOCAL_PATH)/binder/include
diff --git a/wpa_supplicant/binder/binder_manager.cpp b/wpa_supplicant/binder/binder_manager.cpp
index 5152ed9..bc6c556 100644
--- a/wpa_supplicant/binder/binder_manager.cpp
+++ b/wpa_supplicant/binder/binder_manager.cpp
@@ -201,6 +201,52 @@
 }
 
 /**
+ * Add a new |ISupplicantCallback| binder object reference to our
+ * global callback list.
+ *
+ * @param callback Binder reference of the |ISupplicantCallback| object.
+ *
+ * @return 0 on success, 1 on failure.
+ */
+int BinderManager::addSupplicantCallbackBinderObject(
+    const android::sp<fi::w1::wpa_supplicant::ISupplicantCallback> &callback)
+{
+	return 0;
+}
+/**
+ * Add a new |IIfaceCallback| binder object reference to our
+ * interface callback list.
+ *
+ * @param ifname Name of the corresponding interface.
+ * @param callback Binder reference of the |IIfaceCallback| object.
+ *
+ * @return 0 on success, 1 on failure.
+ */
+int BinderManager::addIfaceCallbackBinderObject(
+    const std::string &ifname,
+    const android::sp<fi::w1::wpa_supplicant::IIfaceCallback> &callback)
+{
+	return 0;
+}
+
+/**
+ * Add a new |INetworkCallback| binder object reference to our
+ * network callback list.
+ *
+ * @param ifname Name of the corresponding interface.
+ * @param network_id ID of the corresponding network.
+ * @param callback Binder reference of the |INetworkCallback| object.
+ *
+ * @return 0 on success, 1 on failure.
+ */
+int BinderManager::addNetworkCallbackBinderObject(
+    const std::string &ifname, int network_id,
+    const android::sp<fi::w1::wpa_supplicant::INetworkCallback> &callback)
+{
+	return 0;
+}
+
+/**
  * Creates a unique key for the network using the provided |ifname| and
  * |network_id| to be used
  * in the internal map of |INetwork| objects.
diff --git a/wpa_supplicant/binder/binder_manager.h b/wpa_supplicant/binder/binder_manager.h
index 377c94f..99fa510 100644
--- a/wpa_supplicant/binder/binder_manager.h
+++ b/wpa_supplicant/binder/binder_manager.h
@@ -13,6 +13,10 @@
 #include <map>
 #include <string>
 
+#include "fi/w1/wpa_supplicant/IIfaceCallback.h"
+#include "fi/w1/wpa_supplicant/INetworkCallback.h"
+#include "fi/w1/wpa_supplicant/ISupplicantCallback.h"
+
 #include "iface.h"
 #include "network.h"
 #include "supplicant.h"
@@ -34,6 +38,7 @@
 	static BinderManager *getInstance();
 	static void destroyInstance();
 
+	// Methods called from wpa_supplicant core.
 	int registerBinderService(struct wpa_global *global);
 	int registerInterface(struct wpa_supplicant *wpa_s);
 	int unregisterInterface(struct wpa_supplicant *wpa_s);
@@ -41,12 +46,25 @@
 	registerNetwork(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid);
 	int
 	unregisterNetwork(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid);
+
+	// Methods called from binder objects.
 	int getIfaceBinderObjectByIfname(
 	    const std::string &ifname,
 	    android::sp<fi::w1::wpa_supplicant::IIface> *iface_object);
 	int getNetworkBinderObjectByIfnameAndNetworkId(
 	    const std::string &ifname, int network_id,
 	    android::sp<fi::w1::wpa_supplicant::INetwork> *network_object);
+	int addSupplicantCallbackBinderObject(
+	    const android::sp<fi::w1::wpa_supplicant::ISupplicantCallback>
+		&callback);
+	int addIfaceCallbackBinderObject(
+	    const std::string &ifname,
+	    const android::sp<fi::w1::wpa_supplicant::IIfaceCallback>
+		&callback);
+	int addNetworkCallbackBinderObject(
+	    const std::string &ifname, int network_id,
+	    const android::sp<fi::w1::wpa_supplicant::INetworkCallback>
+		&callback);
 
 private:
 	BinderManager() = default;
diff --git a/wpa_supplicant/binder/fi/w1/wpa_supplicant/IIface.aidl b/wpa_supplicant/binder/fi/w1/wpa_supplicant/IIface.aidl
index 4e486ea..da8d130 100644
--- a/wpa_supplicant/binder/fi/w1/wpa_supplicant/IIface.aidl
+++ b/wpa_supplicant/binder/fi/w1/wpa_supplicant/IIface.aidl
@@ -9,6 +9,7 @@
 
 package fi.w1.wpa_supplicant;
 
+import fi.w1.wpa_supplicant.IIfaceCallback;
 import fi.w1.wpa_supplicant.INetwork;
 
 /**
@@ -58,4 +59,14 @@
 	 * @return Binder object representing the network.
 	 */
 	INetwork GetNetwork(in int id);
+
+	/**
+	 * Register for callbacks from this interface.
+	 *
+	 * These callbacks are invoked for events that are specific to this interface.
+	 *
+	 * @param callback Binder object reference to a |IIfaceCallback|
+	 *        instance.
+	 */
+	void RegisterCallback(in IIfaceCallback callback);
 }
diff --git a/wpa_supplicant/binder/fi/w1/wpa_supplicant/IIfaceCallback.aidl b/wpa_supplicant/binder/fi/w1/wpa_supplicant/IIfaceCallback.aidl
new file mode 100644
index 0000000..0e2e071
--- /dev/null
+++ b/wpa_supplicant/binder/fi/w1/wpa_supplicant/IIfaceCallback.aidl
@@ -0,0 +1,22 @@
+/*
+ * binder interface for wpa_supplicant daemon
+ * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2004-2016, Roshan Pius <rpius@google.com>
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+package fi.w1.wpa_supplicant;
+
+/**
+ * Callback Interface exposed by the wpa_supplicant service
+ * for each interface (IIface).
+ *
+ * Clients need to host an instance of this binder object and
+ * pass a reference of the object to wpa_supplicant via the
+ * corresponding |IIface.registerCallback| method.
+ */
+@utf8InCpp
+interface IIfaceCallback {
+}
diff --git a/wpa_supplicant/binder/fi/w1/wpa_supplicant/INetwork.aidl b/wpa_supplicant/binder/fi/w1/wpa_supplicant/INetwork.aidl
index 74aa9ad..08e5783 100644
--- a/wpa_supplicant/binder/fi/w1/wpa_supplicant/INetwork.aidl
+++ b/wpa_supplicant/binder/fi/w1/wpa_supplicant/INetwork.aidl
@@ -9,6 +9,8 @@
 
 package fi.w1.wpa_supplicant;
 
+import fi.w1.wpa_supplicant.INetworkCallback;
+
 /**
  * Interface exposed by wpa_supplicant for each network configuration it controls.
  * A network is wpa_supplicant's way of representing the configuration parameters of a Wifi
@@ -38,4 +40,14 @@
 	 * @return Name of the network interface, e.g., wlan0
 	 */
 	String GetInterfaceName();
+
+	/**
+	 * Register for callbacks from this network.
+	 *
+	 * These callbacks are invoked for events that are specific to this network.
+	 *
+	 * @param callback Binder object reference to a |INetworkCallback|
+	 *        instance.
+	 */
+	void RegisterCallback(in INetworkCallback callback);
 }
diff --git a/wpa_supplicant/binder/fi/w1/wpa_supplicant/INetworkCallback.aidl b/wpa_supplicant/binder/fi/w1/wpa_supplicant/INetworkCallback.aidl
new file mode 100644
index 0000000..147f0a6
--- /dev/null
+++ b/wpa_supplicant/binder/fi/w1/wpa_supplicant/INetworkCallback.aidl
@@ -0,0 +1,22 @@
+/*
+ * binder interface for wpa_supplicant daemon
+ * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2004-2016, Roshan Pius <rpius@google.com>
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+package fi.w1.wpa_supplicant;
+
+/**
+ * Callback Interface exposed by the wpa_supplicant service
+ * for each network (INetwork).
+ *
+ * Clients need to host an instance of this binder object and
+ * pass a reference of the object to wpa_supplicant via the
+ * corresponding |INetwork.registerCallback| method.
+ */
+@utf8InCpp
+interface INetworkCallback {
+}
diff --git a/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicant.aidl b/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicant.aidl
index 84edc0a..3445cda 100644
--- a/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicant.aidl
+++ b/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicant.aidl
@@ -10,11 +10,12 @@
 package fi.w1.wpa_supplicant;
 
 import fi.w1.wpa_supplicant.ParcelableIfaceParams;
+import fi.w1.wpa_supplicant.ISupplicantCallback;
 import fi.w1.wpa_supplicant.IIface;
 
 /**
  * Interface exposed by the wpa_supplicant binder service registered
- * with the service manager with name: fi.w1.wpa_supplicant.
+ * with the service manager with name: wpa_supplicant.
  */
 @utf8InCpp
 interface ISupplicant {
@@ -97,4 +98,15 @@
 	 * @return true if set, false otherwise.
 	 */
 	boolean GetDebugShowKeys();
+
+	/**
+	 * Register for callbacks from the wpa_supplicant service.
+	 *
+	 * These callbacks are invoked for global events that are not specific
+	 * to any interface or network.
+	 *
+	 * @param callback Binder object reference to a |ISupplicantCallback|
+	 *        instance.
+	 */
+	void RegisterCallback(in ISupplicantCallback callback);
 }
diff --git a/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicantCallback.aidl b/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicantCallback.aidl
new file mode 100644
index 0000000..99aca3d
--- /dev/null
+++ b/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicantCallback.aidl
@@ -0,0 +1,21 @@
+/*
+ * binder interface for wpa_supplicant daemon
+ * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2004-2016, Roshan Pius <rpius@google.com>
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+package fi.w1.wpa_supplicant;
+
+/**
+ * Callback Interface exposed by the wpa_supplicant service (ISupplicant).
+ *
+ * Clients need to host an instance of this binder object and
+ * pass a reference of the object to wpa_supplicant via the
+ * |ISupplicant.registerCallback| method.
+ */
+@utf8InCpp
+interface ISupplicantCallback {
+}
diff --git a/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicantCallbacks.aidl b/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicantCallbacks.aidl
deleted file mode 100644
index 02261c7..0000000
--- a/wpa_supplicant/binder/fi/w1/wpa_supplicant/ISupplicantCallbacks.aidl
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * binder interface for wpa_supplicant daemon
- * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
- * Copyright (c) 2004-2016, Roshan Pius <rpius@google.com>
- *
- * This software may be distributed under the terms of the BSD license.
- * See README for more details.
- */
-
-package fi.w1.wpa_supplicant;
-
-import android.os.PersistableBundle;
-
-/**
- * Callback Interface exposed by the wpa_supplicant service. Clients need
- * to host an instance of this binder object and pass a reference of the object
- * to wpa_supplicant via the registerCallbacksObject method.
- */
-@utf8InCpp
-interface ISupplicantCallbacks {
-}
diff --git a/wpa_supplicant/binder/iface.cpp b/wpa_supplicant/binder/iface.cpp
index 267b90b..5b5a68e 100644
--- a/wpa_supplicant/binder/iface.cpp
+++ b/wpa_supplicant/binder/iface.cpp
@@ -120,6 +120,25 @@
 	return android::binder::Status::ok();
 }
 
+android::binder::Status Iface::RegisterCallback(
+    const android::sp<fi::w1::wpa_supplicant::IIfaceCallback> &callback)
+{
+	struct wpa_supplicant *wpa_s = retrieveIfacePtr();
+	if (!wpa_s) {
+		return android::binder::Status::fromServiceSpecificError(
+		    ERROR_IFACE_INVALID,
+		    "wpa_supplicant does not control this interface.");
+	}
+	BinderManager *binder_manager = BinderManager::getInstance();
+	if (!binder_manager ||
+	    binder_manager->addIfaceCallbackBinderObject(ifname_, callback)) {
+		return android::binder::Status::fromServiceSpecificError(
+		    ERROR_GENERIC,
+		    "wpa_supplicant encountered a binder error.");
+	}
+	return android::binder::Status::ok();
+}
+
 /**
  * Retrieve the underlying |wpa_supplicant| struct pointer for
  * this iface.
diff --git a/wpa_supplicant/binder/iface.h b/wpa_supplicant/binder/iface.h
index 13dd4b0..6db4609 100644
--- a/wpa_supplicant/binder/iface.h
+++ b/wpa_supplicant/binder/iface.h
@@ -46,6 +46,9 @@
 	    int network_id,
 	    android::sp<fi::w1::wpa_supplicant::INetwork> *network_object_out)
 	    override;
+	android::binder::Status RegisterCallback(
+	    const android::sp<fi::w1::wpa_supplicant::IIfaceCallback> &callback)
+	    override;
 
 private:
 	struct wpa_supplicant *retrieveIfacePtr();
diff --git a/wpa_supplicant/binder/network.cpp b/wpa_supplicant/binder/network.cpp
index 5a87ca1..000204d 100644
--- a/wpa_supplicant/binder/network.cpp
+++ b/wpa_supplicant/binder/network.cpp
@@ -7,6 +7,7 @@
  * See README for more details.
  */
 
+#include "binder_manager.h"
 #include "network.h"
 
 namespace wpa_supplicant_binder {
@@ -43,6 +44,26 @@
 	return android::binder::Status::ok();
 }
 
+android::binder::Status Network::RegisterCallback(
+    const android::sp<fi::w1::wpa_supplicant::INetworkCallback> &callback)
+{
+	struct wpa_ssid *wpa_ssid = retrieveNetworkPtr();
+	if (!wpa_ssid) {
+		return android::binder::Status::fromServiceSpecificError(
+		    ERROR_NETWORK_INVALID,
+		    "wpa_supplicant does not control this network.");
+	}
+	BinderManager *binder_manager = BinderManager::getInstance();
+	if (!binder_manager ||
+	    binder_manager->addNetworkCallbackBinderObject(
+		ifname_, network_id_, callback)) {
+		return android::binder::Status::fromServiceSpecificError(
+		    ERROR_GENERIC,
+		    "wpa_supplicant encountered a binder error.");
+	}
+	return android::binder::Status::ok();
+}
+
 /**
  * Retrieve the underlying |wpa_ssid| struct pointer for
  * this network.
diff --git a/wpa_supplicant/binder/network.h b/wpa_supplicant/binder/network.h
index dfc1698..ae47639 100644
--- a/wpa_supplicant/binder/network.h
+++ b/wpa_supplicant/binder/network.h
@@ -39,6 +39,9 @@
 	android::binder::Status GetId(int *network_id_out) override;
 	android::binder::Status
 	GetInterfaceName(std::string *ifname_out) override;
+	android::binder::Status RegisterCallback(
+	    const android::sp<fi::w1::wpa_supplicant::INetworkCallback>
+		&callback) override;
 
 private:
 	struct wpa_ssid *retrieveNetworkPtr();
diff --git a/wpa_supplicant/binder/supplicant.cpp b/wpa_supplicant/binder/supplicant.cpp
index 38b7e44..9588f40 100644
--- a/wpa_supplicant/binder/supplicant.cpp
+++ b/wpa_supplicant/binder/supplicant.cpp
@@ -7,8 +7,8 @@
  * See README for more details.
  */
 
-#include "supplicant.h"
 #include "binder_manager.h"
+#include "supplicant.h"
 
 namespace wpa_supplicant_binder {
 
@@ -161,6 +161,19 @@
 	return android::binder::Status::ok();
 }
 
+android::binder::Status Supplicant::RegisterCallback(
+    const android::sp<fi::w1::wpa_supplicant::ISupplicantCallback> &callback)
+{
+	BinderManager *binder_manager = BinderManager::getInstance();
+	if (!binder_manager ||
+	    binder_manager->addSupplicantCallbackBinderObject(callback)) {
+		return android::binder::Status::fromServiceSpecificError(
+		    ERROR_GENERIC,
+		    "wpa_supplicant encountered a binder error.");
+	}
+	return android::binder::Status::ok();
+}
+
 /**
  * Helper function to convert the debug level parameter from the binder
  * interface values to internal values.
diff --git a/wpa_supplicant/binder/supplicant.h b/wpa_supplicant/binder/supplicant.h
index de85594..33ba3b0 100644
--- a/wpa_supplicant/binder/supplicant.h
+++ b/wpa_supplicant/binder/supplicant.h
@@ -14,7 +14,7 @@
 
 #include "fi/w1/wpa_supplicant/BnSupplicant.h"
 #include "fi/w1/wpa_supplicant/IIface.h"
-#include "fi/w1/wpa_supplicant/ISupplicantCallbacks.h"
+#include "fi/w1/wpa_supplicant/ISupplicantCallback.h"
 
 extern "C" {
 #include "utils/common.h"
@@ -52,6 +52,9 @@
 	android::binder::Status
 	GetDebugShowTimestamp(bool *show_timestamp_out) override;
 	android::binder::Status GetDebugShowKeys(bool *show_keys_out) override;
+	android::binder::Status RegisterCallback(
+	    const android::sp<fi::w1::wpa_supplicant::ISupplicantCallback>
+		&callback) override;
 
 private:
 	int convertDebugLevelToInternalLevel(
@@ -62,7 +65,7 @@
 	/* Raw pointer to the global structure maintained by the core. */
 	struct wpa_global *wpa_global_;
 	/* All the callback objects registered by the clients. */
-	std::vector<android::sp<fi::w1::wpa_supplicant::ISupplicantCallbacks>>
+	std::vector<android::sp<fi::w1::wpa_supplicant::ISupplicantCallback>>
 	    callbacks_;
 
 	DISALLOW_COPY_AND_ASSIGN(Supplicant);
