diff --git a/src/core/hle/service/fs_user.cpp b/src/core/hle/service/fs_user.cpp
index 012174321..845c94103 100644
--- a/src/core/hle/service/fs_user.cpp
+++ b/src/core/hle/service/fs_user.cpp
@@ -5,6 +5,7 @@
 #include "common/common.h"
 
 #include "fs_user.h"
+#include "core/settings.h"
 #include "core/hle/kernel/archive.h"
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -200,6 +201,21 @@ void OpenArchive(Service::Interface* self) {
     DEBUG_LOG(KERNEL, "called");
 }
 
+/*
+* FS_User::IsSdmcDetected service function
+*  Outputs:
+*      1 : Result of function, 0 on success, otherwise error code
+*      2 : Whether the Sdmc could be detected
+*/
+void IsSdmcDetected(Service::Interface* self) {
+    u32* cmd_buff = Service::GetCommandBuffer();
+
+    cmd_buff[1] = 0;
+    cmd_buff[2] = Settings::values.use_virtual_sd ? 1 : 0;
+    
+    DEBUG_LOG(KERNEL, "called");
+}
+
 const Interface::FunctionInfo FunctionTable[] = {
     {0x000100C6, nullptr,               "Dummy1"},
     {0x040100C4, nullptr,               "Control"},
@@ -225,7 +241,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x08140000, nullptr,               "GetSdmcArchiveResource"},
     {0x08150000, nullptr,               "GetNandArchiveResource"},
     {0x08160000, nullptr,               "GetSdmcFatfsErro"},
-    {0x08170000, nullptr,               "IsSdmcDetected"},
+    {0x08170000, IsSdmcDetected,        "IsSdmcDetected"},
     {0x08180000, nullptr,               "IsSdmcWritable"},
     {0x08190042, nullptr,               "GetSdmcCid"},
     {0x081A0042, nullptr,               "GetNandCid"},