diff --git a/console-dbus.c b/console-dbus.c
index 0672e5b..3b24061 100644
--- a/console-dbus.c
+++ b/console-dbus.c
@@ -22,10 +22,11 @@
 /* size of the dbus object path length */
 const size_t dbus_obj_path_len = 1024;
 
-#define DBUS_ERR  "org.openbmc.error"
-#define INTF_NAME "xyz.openbmc_project.Console"
-#define DBUS_NAME "xyz.openbmc_project.Console.%s"
-#define OBJ_NAME  "/xyz/openbmc_project/console/%s"
+#define DBUS_ERR    "org.openbmc.error"
+#define DBUS_NAME   "xyz.openbmc_project.Console.%s"
+#define OBJ_NAME    "/xyz/openbmc_project/console/%s"
+#define TTY_INTF    "xyz.openbmc_project.console"
+#define ACCESS_INTF "xyz.openbmc_project.Console.Access"
 
 static void tty_change_baudrate(struct console *console)
 {
@@ -101,7 +102,23 @@
 	return r;
 }
 
-static const sd_bus_vtable console_vtable[] = {
+static int get_socket_name(sd_bus *bus __attribute__((unused)),
+			   const char *path __attribute__((unused)),
+			   const char *interface __attribute__((unused)),
+			   const char *property __attribute__((unused)),
+			   sd_bus_message *reply, void *userdata,
+			   sd_bus_error *error __attribute__((unused)))
+{
+	struct console *console = userdata;
+
+	/* The abstract socket name starts with null character hence we need to
+	 * send it as a byte stream instead of regular string.
+	 */
+	return sd_bus_message_append_array(reply, 'y', console->socket_name,
+					   console->socket_name_len);
+}
+
+static const sd_bus_vtable console_tty_vtable[] = {
 	SD_BUS_VTABLE_START(0),
 	SD_BUS_METHOD("setBaudRate", "u", "x", method_set_baud_rate,
 		      SD_BUS_VTABLE_UNPRIVILEGED),
@@ -109,6 +126,12 @@
 	SD_BUS_VTABLE_END,
 };
 
+static const sd_bus_vtable console_access_vtable[] = {
+	SD_BUS_VTABLE_START(0),
+	SD_BUS_PROPERTY("SocketName", "ay", get_socket_name, 0, 0),
+	SD_BUS_VTABLE_END,
+};
+
 void dbus_init(struct console *console,
 	       struct config *config __attribute__((unused)))
 {
@@ -139,8 +162,17 @@
 		return;
 	}
 
-	r = sd_bus_add_object_vtable(console->bus, NULL, obj_name, INTF_NAME,
-				     console_vtable, console);
+	/* Register tty interface */
+	r = sd_bus_add_object_vtable(console->bus, NULL, obj_name, TTY_INTF,
+				     console_tty_vtable, console);
+	if (r < 0) {
+		warnx("Failed to issue method call: %s", strerror(-r));
+		return;
+	}
+
+	/* Register access interface */
+	r = sd_bus_add_object_vtable(console->bus, NULL, obj_name, ACCESS_INTF,
+				     console_access_vtable, console);
 	if (r < 0) {
 		warnx("Failed to issue method call: %s", strerror(-r));
 		return;
@@ -154,6 +186,7 @@
 		return;
 	}
 
+	/* Finally register the bus name */
 	r = sd_bus_request_name(console->bus, dbus_name,
 				SD_BUS_NAME_ALLOW_REPLACEMENT |
 					SD_BUS_NAME_REPLACE_EXISTING);
