diff --git a/src/Makefile.am b/src/Makefile.am
index 1791343..b410ff3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,6 +3,7 @@
 	$(LIBOSMOCORE_CFLAGS) \
 	$(LIBOSMOGSM_CFLAGS) \
 	$(LIBOSMOVTY_CFLAGS) \
+	$(LIBOSMOCTRL_CFLAGS) \
 	$(LIBOSMOABIS_CFLAGS) \
 	$(SQLITE3_CFLAGS) \
 	$(NULL)
@@ -20,6 +21,7 @@
 	gsup_server.h \
 	logging.h \
 	rand.h \
+	ctrl.h \
 	hlr_vty.h \
 	$(NULL)
 
@@ -33,6 +35,7 @@
 
 osmo_hlr_SOURCES = \
 	auc.c \
+	ctrl.c \
 	db.c \
 	luop.c \
 	db_auc.c \
@@ -49,6 +52,7 @@
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOGSM_LIBS) \
 	$(LIBOSMOVTY_LIBS) \
+	$(LIBOSMOCTRL_LIBS) \
 	$(LIBOSMOABIS_LIBS) \
 	$(SQLITE3_LIBS) \
 	$(NULL)
diff --git a/src/ctrl.c b/src/ctrl.c
new file mode 100644
index 0000000..a167171
--- /dev/null
+++ b/src/ctrl.c
@@ -0,0 +1,81 @@
+/* OsmoHLR Control Interface implementation */
+
+/* (C) 2017 sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Max Suraev <msuraev@sysmocom.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdbool.h>
+
+#include <osmocom/ctrl/control_cmd.h>
+#include <osmocom/ctrl/control_if.h>
+#include <osmocom/ctrl/ports.h>
+
+#include "gsup_server.h"
+#include "logging.h"
+#include "db.h"
+#include "hlr.h"
+#include "luop.h"
+#include "ctrl.h"
+
+CTRL_CMD_DEFINE_WO_NOVRF(status_ps, "status-ps");
+static int set_status_ps(struct ctrl_cmd *cmd, void *data)
+{
+	struct hlr *ctx = data;
+	struct lu_operation *luop = lu_op_alloc(ctx->gs);
+	if (!luop) {
+		cmd->reply = "Internal HLR error";
+		return CTRL_CMD_ERROR;
+	}
+
+	if (!lu_op_fill_subscr(luop, ctx->dbc, cmd->value)) {
+		cmd->reply = "Subscriber Unknown in HLR";
+		return CTRL_CMD_ERROR;
+	}
+
+	cmd->reply = luop->subscr.nam_ps ? "1" : "0";
+
+	return CTRL_CMD_REPLY;
+}
+
+int hlr_ctrl_cmds_install()
+{
+	int rc = 0;
+
+	rc |= ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_status_ps);
+
+	return rc;
+}
+
+struct ctrl_handle *hlr_controlif_setup(struct hlr *ctx,
+					struct osmo_gsup_server *gs)
+{
+	int rc;
+	struct ctrl_handle *hdl = ctrl_interface_setup_dynip(ctx,
+							     ctx->ctrl_bind_addr,
+							     OSMO_CTRL_PORT_HLR,
+							     NULL);
+	if (!hdl)
+		return NULL;
+
+	rc = hlr_ctrl_cmds_install();
+	if (rc) /* FIXME: close control interface? */
+		return NULL;
+
+	return hdl;
+}
diff --git a/src/ctrl.h b/src/ctrl.h
new file mode 100644
index 0000000..663de30
--- /dev/null
+++ b/src/ctrl.h
@@ -0,0 +1,31 @@
+/* OsmoHLR Control Interface implementation */
+
+/* (C) 2017 sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Max Suraev <msuraev@sysmocom.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#include <osmocom/ctrl/control_if.h>
+
+#include "gsup_server.h"
+
+int hlr_ctrl_cmds_install();
+struct ctrl_handle *hlr_controlif_setup(struct hlr *ctx,
+					struct osmo_gsup_server *gs);
diff --git a/src/hlr.c b/src/hlr.c
index bb6f05a..95a565e 100644
--- a/src/hlr.c
+++ b/src/hlr.c
@@ -32,9 +32,11 @@
 #include <osmocom/vty/command.h>
 #include <osmocom/vty/telnet_interface.h>
 #include <osmocom/vty/ports.h>
+#include <osmocom/ctrl/control_vty.h>
 
 #include "db.h"
 #include "hlr.h"
+#include "ctrl.h"
 #include "logging.h"
 #include "gsup_server.h"
 #include "gsup_router.h"
@@ -393,9 +395,16 @@
 	}
 }
 
+static const char vlr_copyright[] =
+	"Copyright (C) 2016, 2017 by Harald Welte, sysmocom s.f.m.c. GmbH\r\n"
+	"License AGPLv3+: GNU AGPL version 3 or later <http://gnu.org/licenses/agpl-3.0.html>\r\n"
+	"This is free software: you are free to change and redistribute it.\r\n"
+	 "There is NO WARRANTY, to the extent permitted by law.\r\n";
+
 static struct vty_app_info vty_info = {
 	.name 		= "OsmoHLR",
 	.version	= PACKAGE_VERSION,
+	.copyright	= vlr_copyright,
 	.is_config_node	= hlr_vty_is_config_node,
 };
 
@@ -415,6 +424,7 @@
 	}
 
 	vty_init(&vty_info);
+	ctrl_vty_init(hlr_ctx);
 	handle_options(argc, argv);
 	hlr_vty_init(&hlr_log_info);
 
@@ -452,6 +462,9 @@
 		exit(1);
 	}
 
+	g_hlr->ctrl_bind_addr = ctrl_vty_get_bind_addr();
+	g_hlr->ctrl = hlr_controlif_setup(g_hlr, g_hlr->gs);
+
 	osmo_init_ignore_signals();
 	signal(SIGINT, &signal_hdlr);
 	signal(SIGUSR1, &signal_hdlr);
diff --git a/src/hlr.h b/src/hlr.h
index 77751dd..1e8eff8 100644
--- a/src/hlr.h
+++ b/src/hlr.h
@@ -30,4 +30,8 @@
 
 	/* DB context */
 	struct db_context *dbc;
+
+	/* Control Interface */
+	struct ctrl_handle *ctrl;
+	const char *ctrl_bind_addr;
 };
