diff --git a/opensc/src/libopensc/reader-pcsc.c b/opensc/src/libopensc/reader-pcsc.c
index f41735076..c65d2c2e4 100644
--- a/opensc/src/libopensc/reader-pcsc.c
+++ b/opensc/src/libopensc/reader-pcsc.c
@@ -298,8 +298,17 @@ static int refresh_attributes(sc_reader_t *reader)
                        reader->flags &= ~SC_READER_CARD_CHANGED;
                        SC_FUNC_RETURN(reader->ctx, SC_LOG_DEBUG_VERBOSE, SC_SUCCESS);
                }
-               PCSC_TRACE(reader, "SCardGetStatusChange failed", rv);
-               return pcsc_to_opensc_error(rv);
+               else if (rv == (LONG)SCARD_E_UNKNOWN_READER)
+               {
+                        /* No reader by requested name known to subsystem, lets consider the reader as detached */
+                        reader->flags &= ~(SC_READER_CARD_PRESENT);
+                       SC_FUNC_RETURN(reader->ctx, SC_LOG_DEBUG_VERBOSE, SC_SUCCESS);
+               }
+               else
+               {
+                 PCSC_TRACE(reader, "SCardGetStatusChange failed", rv);
+                 return pcsc_to_opensc_error(rv);
+               }
        }
        state = priv->reader_state.dwEventState;
        prev_state = priv->reader_state.dwCurrentState;