diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index fa36879..c2a02b4 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -5719,6 +5719,13 @@
                       (devices != AUDIO_DEVICE_OUT_USB_ACCESSORY);
     bool direct_dev = is_hdmi || is_usb_dev;
 
+    if (is_usb_dev && (audio_extn_usb_connected(NULL))) {
+        is_usb_dev = false;
+        devices = AUDIO_DEVICE_OUT_SPEAKER;
+        ALOGW("%s: ignore set device to non existing USB card, use output device(%#x)",
+              __func__, devices);
+    }
+
     *stream_out = NULL;
 
     out = (struct stream_out *)calloc(1, sizeof(struct stream_out));
@@ -5771,14 +5778,6 @@
            ALOGV("AUDIO_DEVICE_OUT_AUX_DIGITAL and DIRECT|OFFLOAD, check hdmi caps");
            ret = read_hdmi_sink_caps(out);
        } else if (is_usb_dev) {
-            /* Check against usb headset connection state */
-            if (!audio_extn_usb_connected(NULL)) {
-                ALOGD("%s: usb headset unplugged", __func__);
-                ret = -EINVAL;
-                pthread_mutex_unlock(&adev->lock);
-                goto error_open;
-            }
-
             ret = read_usb_sup_params_and_compare(true /*is_playback*/,
                                                   &config->format,
                                                   &out->supported_formats[0],
@@ -6850,6 +6849,13 @@
                                                             flags,
                                                             source);
 
+    if (is_usb_dev && (audio_extn_usb_connected(NULL))) {
+        is_usb_dev = false;
+        devices = AUDIO_DEVICE_IN_BUILTIN_MIC;
+        ALOGW("%s: ignore set device to non existing USB card, use input device(%#x)",
+              __func__, devices);
+    }
+
     *stream_in = NULL;
 
     if (!(is_usb_dev && may_use_hifi_record)) {
@@ -6913,16 +6919,6 @@
     }
 
     if (is_usb_dev && may_use_hifi_record) {
-        /* Check against usb headset connection state */
-        pthread_mutex_lock(&adev->lock);
-        if (!audio_extn_usb_connected(NULL)) {
-            ALOGD("%s: usb headset unplugged", __func__);
-            ret = -EINVAL;
-            pthread_mutex_unlock(&adev->lock);
-            goto err_open;
-        }
-        pthread_mutex_unlock(&adev->lock);
-
         /* HiFi record selects an appropriate format, channel, rate combo
            depending on sink capabilities*/
         ret = read_usb_sup_params_and_compare(false /*is_playback*/,
