diff --git a/config.c b/config.c
index af8c7db4cbd2a7b7184c57381fc882a637872e9e..5892186b3d2a8e23a9eda73066f7e402329644eb 100644
--- a/config.c
+++ b/config.c
@@ -763,6 +763,15 @@ config_init_board(void)
 	board_netdevs = blob_memdup(cur);
 }
 
+static bool
+is_broadcom_board(void)
+{
+	if (access("/dev/brcmboard", F_OK) == 0)
+		return true;
+
+	return false;
+}
+
 int
 config_init_all(void)
 {
@@ -792,9 +801,17 @@ config_init_all(void)
 	device_lock();
 
 	device_reset_config();
-	config_init_devices(true);
-	config_init_vlans();
-	config_init_devices(false);
+
+	if (is_broadcom_board()) {
+		config_init_devices(false);
+		config_init_vlans();
+		config_init_devices(true);
+	} else {
+		config_init_devices(true);
+		config_init_vlans();
+		config_init_devices(false);
+	}
+
 	config_init_interfaces();
 	config_init_ip();
 	config_init_rules();