--- a/src/dsl_cpe_control.c
+++ b/src/dsl_cpe_control.c
@@ -139,6 +139,9 @@ extern DSL_Error_t DSL_CPE_Pipe_StaticRe
 #endif /* INCLUDE_DSL_RESOURCE_STATISTICS*/
 #endif
 
+extern void ubus_init();
+extern void ubus_deinit();
+
 DSL_char_t *g_sFirmwareName1 = DSL_NULL;
 DSL_char_t *g_sFirmwareName2 = DSL_NULL;
 #ifdef INCLUDE_SCRIPT_NOTIFICATION
@@ -5343,6 +5346,8 @@ DSL_int_t dsl_cpe_daemon (
    signal (SIGINT, DSL_CPE_TerminationHandler);
 #endif /* RTEMS*/
 
+   ubus_init();
+
    /* Open DSL_CPE_MAX_DEVICE_NUMBER devices*/
    for (nDevice = 0; nDevice < DSL_CPE_MAX_DEVICE_NUMBER; nDevice++)
    {
@@ -5738,6 +5743,7 @@ DSL_int_t dsl_cpe_daemon (
 #endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */
 
 DSL_CPE_CONTROL_EXIT:
+   ubus_deinit();
 
 #ifdef INCLUDE_DSL_BONDING
    DSL_CPE_BND_Stop((DSL_CPE_BND_Context_t*)pCtrlCtx->pBnd);
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -11,7 +11,7 @@ else
 dsl_cpe_control_common_ldflags =
 endif
 
-dsl_cpe_control_LDADD = -lpthread
+dsl_cpe_control_LDADD = -lpthread -lubox -lubus
 
 if INCLUDE_DSL_CPE_SOAP_SUPPORT
     dsl_cpe_control_LDADD += -lm
@@ -70,7 +70,8 @@ dsl_cpe_control_SOURCES = \
 	dsl_cpe_control.c \
 	dsl_cpe_init_cfg.c \
 	dsl_cpe_linux.c \
-	dsl_cpe_debug.c
+	dsl_cpe_debug.c \
+	dsl_cpe_ubus.c
 
 dsl_cpe_control_SOURCES += \
 	$(dsl_cpe_control_dti_sources)
