diff --git a/src/common/logging/log.h b/src/common/logging/log.h
index 8011534b8..96d0dfb8c 100644
--- a/src/common/logging/log.h
+++ b/src/common/logging/log.h
@@ -60,7 +60,7 @@ enum class Class : ClassType {
     Service_AM,        ///< The AM (Application manager) service
     Service_PTM,       ///< The PTM (Power status & misc.) service
     Service_LDR,       ///< The LDR (3ds dll loader) service
-    Service_MIC,       ///< The MIC (microphone) service
+    Service_MIC,       ///< The MIC (Microphone) service
     Service_NDM,       ///< The NDM (Network daemon manager) service
     Service_NIM,       ///< The NIM (Network interface manager) service
     Service_NWM,       ///< The NWM (Network wlan manager) service
@@ -85,8 +85,7 @@ enum class Class : ClassType {
     Audio_DSP,         ///< The HLE implementation of the DSP
     Audio_Sink,        ///< Emulator audio output backend
     Loader,            ///< ROM loader
-
-    Count ///< Total number of logging classes
+    Count              ///< Total number of logging classes
 };
 
 /// Logs a message to the global logger.
diff --git a/src/core/hle/service/ac_u.cpp b/src/core/hle/service/ac_u.cpp
index 18026975f..fe367aca5 100644
--- a/src/core/hle/service/ac_u.cpp
+++ b/src/core/hle/service/ac_u.cpp
@@ -230,6 +230,24 @@ static void IsConnected(Service::Interface* self) {
     LOG_WARNING(Service_AC, "(STUBBED) called");
 }
 
+/**
+ * AC_U::SetClientVersion service function
+ *  Inputs:
+ *      1 : Used SDK Version
+ *  Outputs:
+ *      1 : Result of function, 0 on success, otherwise error code
+ */
+static void SetClientVersion(Service::Interface* self) {
+    u32* cmd_buff = Kernel::GetCommandBuffer();
+
+    const u32 version = cmd_buff[1];
+    self->SetVersion(version);
+
+    LOG_WARNING(Service_AC, "(STUBBED) called, version: 0x%08X", version);
+
+    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
+}
+
 const Interface::FunctionInfo FunctionTable[] = {
     {0x00010000, CreateDefaultConfig, "CreateDefaultConfig"},
     {0x00040006, ConnectAsync, "ConnectAsync"},
@@ -250,7 +268,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x00300004, RegisterDisconnectEvent, "RegisterDisconnectEvent"},
     {0x003C0042, nullptr, "GetAPSSIDList"},
     {0x003E0042, IsConnected, "IsConnected"},
-    {0x00400042, nullptr, "SetClientVersion"},
+    {0x00400042, SetClientVersion, "SetClientVersion"},
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/hle/service/frd/frd.cpp b/src/core/hle/service/frd/frd.cpp
index 1d16f8732..34fdf7f53 100644
--- a/src/core/hle/service/frd/frd.cpp
+++ b/src/core/hle/service/frd/frd.cpp
@@ -100,6 +100,18 @@ void GetMyScreenName(Service::Interface* self) {
     LOG_WARNING(Service_FRD, "(STUBBED) called");
 }
 
+void SetClientSdkVersion(Service::Interface* self) {
+    u32* cmd_buff = Kernel::GetCommandBuffer();
+
+    const u32 version = cmd_buff[1];
+
+    self->SetVersion(version);
+
+    LOG_WARNING(Service_FRD, "(STUBBED) called, version: 0x%08X", version);
+
+    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
+}
+
 void Init() {
     using namespace Kernel;
 
diff --git a/src/core/hle/service/frd/frd.h b/src/core/hle/service/frd/frd.h
index c8283a7f3..e61940ea0 100644
--- a/src/core/hle/service/frd/frd.h
+++ b/src/core/hle/service/frd/frd.h
@@ -95,6 +95,15 @@ void GetMyFriendKey(Service::Interface* self);
  */
 void GetMyScreenName(Service::Interface* self);
 
+/**
+ * FRD::SetClientSdkVersion service function
+ *  Inputs:
+ *      1 : Used SDK Version
+ *  Outputs:
+ *      1 : Result of function, 0 on success, otherwise error code
+ */
+void SetClientSdkVersion(Service::Interface* self);
+
 /// Initialize FRD service(s)
 void Init();
 
diff --git a/src/core/hle/service/frd/frd_u.cpp b/src/core/hle/service/frd/frd_u.cpp
index bd1c9c16b..496f29ca9 100644
--- a/src/core/hle/service/frd/frd_u.cpp
+++ b/src/core/hle/service/frd/frd_u.cpp
@@ -58,7 +58,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x002F0040, nullptr, "AllowHalfAwake"},
     {0x00300000, nullptr, "GetServerTypes"},
     {0x00310082, nullptr, "GetFriendComment"},
-    {0x00320042, nullptr, "SetClientSdkVersion"},
+    {0x00320042, SetClientSdkVersion, "SetClientSdkVersion"},
     {0x00330000, nullptr, "GetMyApproachContext"},
     {0x00340046, nullptr, "AddFriendWithApproach"},
     {0x00350082, nullptr, "DecryptApproachContext"},
diff --git a/src/core/hle/service/fs/fs_user.cpp b/src/core/hle/service/fs/fs_user.cpp
index 00edc7622..9ec17b395 100644
--- a/src/core/hle/service/fs/fs_user.cpp
+++ b/src/core/hle/service/fs/fs_user.cpp
@@ -763,23 +763,27 @@ static void CreateLegacySystemSaveData(Service::Interface* self) {
  * FS_User::InitializeWithSdkVersion service function.
  *  Inputs:
  *      0 : 0x08610042
- *      1 : Unknown
- *      2 : Unknown
- *      3 : Unknown
+ *      1 : Used SDK Version
+ *      2 : ProcessId Header
+ *      3 : placeholder for ProcessId
  *  Outputs:
  *      1 : Result of function, 0 on success, otherwise error code
  */
 static void InitializeWithSdkVersion(Service::Interface* self) {
     u32* cmd_buff = Kernel::GetCommandBuffer();
 
-    u32 unk1 = cmd_buff[1];
-    u32 unk2 = cmd_buff[2];
-    u32 unk3 = cmd_buff[3];
+    const u32 version = cmd_buff[1];
+    self->SetVersion(version);
 
-    cmd_buff[1] = RESULT_SUCCESS.raw;
-
-    LOG_WARNING(Service_FS, "(STUBBED) called unk1=0x%08X, unk2=0x%08X, unk3=0x%08X", unk1, unk2,
-                unk3);
+    if (cmd_buff[2] == IPC::CallingPidDesc()) {
+        LOG_WARNING(Service_FS, "(STUBBED) called, version: 0x%08X", version);
+        cmd_buff[1] = RESULT_SUCCESS.raw;
+    } else {
+        LOG_ERROR(Service_FS, "ProcessId Header must be 0x20");
+        cmd_buff[1] = ResultCode(ErrorDescription::OS_InvalidBufferDescriptor, ErrorModule::OS,
+                                 ErrorSummary::WrongArgument, ErrorLevel::Permanent)
+                          .raw;
+    }
 }
 
 /**
diff --git a/src/core/hle/service/mic_u.cpp b/src/core/hle/service/mic_u.cpp
index 563341504..1f851d328 100644
--- a/src/core/hle/service/mic_u.cpp
+++ b/src/core/hle/service/mic_u.cpp
@@ -287,6 +287,24 @@ static void SetAllowShellClosed(Service::Interface* self) {
     LOG_WARNING(Service_MIC, "(STUBBED) called, allow_shell_closed=%u", allow_shell_closed);
 }
 
+/**
+ * MIC_U::SetClientVersion service function
+ *  Inputs:
+ *      1 : Used SDK Version
+ *  Outputs:
+ *      1 : Result of function, 0 on success, otherwise error code
+ */
+static void SetClientVersion(Service::Interface* self) {
+    u32* cmd_buff = Kernel::GetCommandBuffer();
+
+    const u32 version = cmd_buff[1];
+    self->SetVersion(version);
+
+    LOG_WARNING(Service_MIC, "(STUBBED) called, version: 0x%08X", version);
+
+    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
+}
+
 const Interface::FunctionInfo FunctionTable[] = {
     {0x00010042, MapSharedMem, "MapSharedMem"},
     {0x00020000, UnmapSharedMem, "UnmapSharedMem"},
@@ -303,7 +321,7 @@ const Interface::FunctionInfo FunctionTable[] = {
     {0x000D0040, SetClamp, "SetClamp"},
     {0x000E0000, GetClamp, "GetClamp"},
     {0x000F0040, SetAllowShellClosed, "SetAllowShellClosed"},
-    {0x00100040, nullptr, "SetClientSDKVersion"},
+    {0x00100040, SetClientVersion, "SetClientVersion"},
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h
index 39b5ffaae..29daacfc4 100644
--- a/src/core/hle/service/service.h
+++ b/src/core/hle/service/service.h
@@ -29,6 +29,10 @@ public:
         return GetPortName();
     }
 
+    virtual void SetVersion(u32 raw_version) {
+        version.raw = raw_version;
+    }
+
     typedef void (*Function)(Interface*);
 
     struct FunctionInfo {
@@ -58,6 +62,14 @@ protected:
 
     void Register(const FunctionInfo* functions, size_t n);
 
+    union {
+        u32 raw;
+        BitField<0, 8, u32> major;
+        BitField<8, 8, u32> minor;
+        BitField<16, 8, u32> build;
+        BitField<24, 8, u32> revision;
+    } version = {};
+
 private:
     boost::container::flat_map<u32, FunctionInfo> m_functions;
 };