diff --git a/src/core/cntlr.c b/src/core/cntlr.c
index d33852d5b5b35a76d17505148636b7bba3b97454..4d5f3c71ee4c31605989f23fad1ba72c06d8bcb0 100644
--- a/src/core/cntlr.c
+++ b/src/core/cntlr.c
@@ -2151,9 +2151,15 @@ int start_controller(void)
 	as_init_table(&c->as_table);
 	ubus_add_uloop(ctx);
 
-	if (ubus_lookup_id(c->ubus_ctx, "ieee1905", &ieee1905_obj)) {
-		warn("Object 'ieee1905' not present!\n");
-		return -1;
+	for (;;) {
+		int ret;
+
+		ret = ubus_lookup_id(c->ubus_ctx, "ieee1905", &ieee1905_obj);
+		if (!ret)
+			break;
+
+		trace("ieee1905 not up yet, sleeping for 2s!\n");
+		sleep(2);
 	}
 
 	ubus_call_object(c, ieee1905_obj, "info", parse_almac, c);