diff --git a/source/use_case/ad/src/MainLoop.cc b/source/use_case/ad/src/MainLoop.cc
index e9f7b4e..c9d763c 100644
--- a/source/use_case/ad/src/MainLoop.cc
+++ b/source/use_case/ad/src/MainLoop.cc
@@ -68,14 +68,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (model.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Instantiate application context. */
     arm::app::ApplicationContext caseContext;
 
diff --git a/source/use_case/asr/src/MainLoop.cc b/source/use_case/asr/src/MainLoop.cc
index 7acd319..354d1f7 100644
--- a/source/use_case/asr/src/MainLoop.cc
+++ b/source/use_case/asr/src/MainLoop.cc
@@ -75,14 +75,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (model.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Instantiate application context. */
     arm::app::ApplicationContext caseContext;
     std::vector <std::string> labels;
diff --git a/source/use_case/img_class/src/MainLoop.cc b/source/use_case/img_class/src/MainLoop.cc
index de3779f..86ea2ea 100644
--- a/source/use_case/img_class/src/MainLoop.cc
+++ b/source/use_case/img_class/src/MainLoop.cc
@@ -47,14 +47,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (model.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Instantiate application context. */
     arm::app::ApplicationContext caseContext;
 
diff --git a/source/use_case/inference_runner/src/MainLoop.cc b/source/use_case/inference_runner/src/MainLoop.cc
index 0991b7b..28b5c0a 100644
--- a/source/use_case/inference_runner/src/MainLoop.cc
+++ b/source/use_case/inference_runner/src/MainLoop.cc
@@ -69,14 +69,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (model.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Instantiate application context. */
     arm::app::ApplicationContext caseContext;
 
diff --git a/source/use_case/kws/src/MainLoop.cc b/source/use_case/kws/src/MainLoop.cc
index 3c35a7f..550e7a1 100644
--- a/source/use_case/kws/src/MainLoop.cc
+++ b/source/use_case/kws/src/MainLoop.cc
@@ -72,14 +72,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (model.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Instantiate application context. */
     arm::app::ApplicationContext caseContext;
 
diff --git a/source/use_case/kws_asr/src/MainLoop.cc b/source/use_case/kws_asr/src/MainLoop.cc
index 2365264..bba4480 100644
--- a/source/use_case/kws_asr/src/MainLoop.cc
+++ b/source/use_case/kws_asr/src/MainLoop.cc
@@ -85,14 +85,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (kwsModel.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the KWS model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Initialise the asr model using the same allocator from KWS
      * to re-use the tensor arena. */
     if (!asrModel.Init(arm::app::tensorArena,
@@ -107,14 +99,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (asrModel.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the ASR model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Instantiate application context. */
     arm::app::ApplicationContext caseContext;
 
diff --git a/source/use_case/noise_reduction/src/MainLoop.cc b/source/use_case/noise_reduction/src/MainLoop.cc
index 4c74a48..257f5cf 100644
--- a/source/use_case/noise_reduction/src/MainLoop.cc
+++ b/source/use_case/noise_reduction/src/MainLoop.cc
@@ -80,14 +80,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (model.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Instantiate application context. */
     arm::app::ApplicationContext caseContext;
 
diff --git a/source/use_case/object_detection/src/MainLoop.cc b/source/use_case/object_detection/src/MainLoop.cc
index d119501..4d70d2d 100644
--- a/source/use_case/object_detection/src/MainLoop.cc
+++ b/source/use_case/object_detection/src/MainLoop.cc
@@ -58,14 +58,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (model.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Instantiate application context. */
     arm::app::ApplicationContext caseContext;
 
diff --git a/source/use_case/vww/src/MainLoop.cc b/source/use_case/vww/src/MainLoop.cc
index 2161b0a..fae7530 100644
--- a/source/use_case/vww/src/MainLoop.cc
+++ b/source/use_case/vww/src/MainLoop.cc
@@ -48,14 +48,6 @@
         return;
     }
 
-#if !defined(ARM_NPU)
-    /* If it is not a NPU build check if the model contains a NPU operator */
-    if (model.ContainsEthosUOperator()) {
-        printf_err("No driver support for Ethos-U operator found in the model.\n");
-        return;
-    }
-#endif /* ARM_NPU */
-
     /* Instantiate application context. */
     arm::app::ApplicationContext caseContext;
 
