diff --git a/threadnetwork/aidl/default/main.cpp b/threadnetwork/aidl/default/main.cpp
index 6514184..1df455e 100644
--- a/threadnetwork/aidl/default/main.cpp
+++ b/threadnetwork/aidl/default/main.cpp
@@ -18,11 +18,11 @@
 #include <android-base/logging.h>
 #include <android/binder_manager.h>
 #include <android/binder_process.h>
-#include <netinet/in.h>
-#include <net/if.h>
-#include <utils/Log.h>
 #include <cutils/properties.h>
+#include <net/if.h>
+#include <netinet/in.h>
 #include <sys/stat.h>
+#include <utils/Log.h>
 
 #include "service.hpp"
 #include "thread_chip.hpp"
@@ -30,13 +30,19 @@
 using aidl::android::hardware::threadnetwork::IThreadChip;
 using aidl::android::hardware::threadnetwork::ThreadChip;
 
-#define THREADNETWORK_COPROCESSOR_SIMULATION_PATH "/apex/com.android.hardware.threadnetwork/bin/ot-rcp"
+#define THREADNETWORK_COPROCESSOR_SIMULATION_PATH \
+    "/apex/com.android.hardware.threadnetwork/bin/ot-rcp"
 
 namespace {
+
+bool isInterfaceExists(const char* interfaceName) {
+    return if_nametoindex(interfaceName) != 0;
+}
+
 void addThreadChip(int id, const char* url) {
     binder_status_t status;
     const std::string serviceName(std::string() + IThreadChip::descriptor + "/chip" +
-            std::to_string(id));
+                                  std::to_string(id));
 
     ALOGI("ServiceName: %s, Url: %s", serviceName.c_str(), url);
 
@@ -50,19 +56,24 @@
 
 void addSimulatedThreadChip() {
     char local_interface[PROP_VALUE_MAX];
-
-    CHECK_GT(property_get("persist.vendor.otsim.local_interface",
-                local_interface, "eth1"), 0);
-
     int node_id = property_get_int32("ro.boot.openthread_node_id", 0);
-    CHECK_GT(node_id,0);
 
-    std::string url = std::string("spinel+hdlc+forkpty://" \
-            THREADNETWORK_COPROCESSOR_SIMULATION_PATH "?forkpty-arg=-L") \
-                      + local_interface + "&forkpty-arg=" + std::to_string(node_id);
+    CHECK_GT(node_id, 0);
+
+    std::string url = std::string("spinel+hdlc+forkpty://" THREADNETWORK_COPROCESSOR_SIMULATION_PATH
+                                  "?forkpty-arg=") +
+                      std::to_string(node_id);
+
+    CHECK_GT(property_get("persist.vendor.otsim.local_interface", local_interface, "eth1"), 0);
+    if (isInterfaceExists(local_interface)) {
+        url += std::string("&forkpty-arg=-L") + local_interface;
+    } else {
+        ALOGI("Interface %s doesn't exist!", local_interface);
+    }
+
     addThreadChip(0, url.c_str());
 }
-}
+}  // namespace
 
 int main(int argc, char* argv[]) {
     aidl::android::hardware::threadnetwork::Service service;
