diff --git a/nx/include/switch/services/btm.h b/nx/include/switch/services/btm.h
index bdb1c563..f8fc4757 100644
--- a/nx/include/switch/services/btm.h
+++ b/nx/include/switch/services/btm.h
@@ -515,3 +515,25 @@ Result btmRegisterBleGattDataPath(const BtmBleDataPath *path);
  */
 Result btmUnregisterBleGattDataPath(const BtmBleDataPath *path);
 
+/**
+ * @brief RegisterAppletResourceUserId
+ * @note Only available on [5.0.0+].
+ * @param[in] AppletResourceUserId AppletResourceUserId
+ * @param[in] unk Unknown
+ */
+Result btmRegisterAppletResourceUserId(u64 AppletResourceUserId, u32 unk);
+
+/**
+ * @brief UnregisterAppletResourceUserId
+ * @note Only available on [5.0.0+].
+ * @param[in] AppletResourceUserId AppletResourceUserId
+ */
+Result btmUnregisterAppletResourceUserId(u64 AppletResourceUserId);
+
+/**
+ * @brief SetAppletResourceUserId
+ * @note Only available on [5.0.0+].
+ * @param[in] AppletResourceUserId AppletResourceUserId
+ */
+Result btmSetAppletResourceUserId(u64 AppletResourceUserId);
+
diff --git a/nx/source/services/btm.c b/nx/source/services/btm.c
index db609593..0430eb96 100644
--- a/nx/source/services/btm.c
+++ b/nx/source/services/btm.c
@@ -58,6 +58,10 @@ static Result _btmCmdInU32NoOut(u32 inval, u32 cmd_id) {
     return serviceDispatchIn(&g_btmSrv, cmd_id, inval);
 }
 
+static Result _btmCmdInU64NoOut(u64 inval, u32 cmd_id) {
+    return serviceDispatchIn(&g_btmSrv, cmd_id, inval);
+}
+
 static Result _btmCmdNoInOutU8(u8 *out, u32 cmd_id) {
     return serviceDispatchOut(&g_btmSrv, cmd_id, *out);
 }
@@ -559,3 +563,32 @@ Result btmUnregisterBleGattDataPath(const BtmBleDataPath *path) {
     return _btmRegisterBleGattDataPath(path, cmd_id);
 }
 
+Result btmRegisterAppletResourceUserId(u64 AppletResourceUserId, u32 unk) {
+    if (hosversionBefore(5,0,0))
+        return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
+    u32 cmd_id = hosversionBefore(5,1,0) ? 40 : 57;
+
+    const struct {
+        u32 unk;
+        u64 AppletResourceUserId;
+    } in = { unk, AppletResourceUserId };
+
+    return serviceDispatchIn(&g_btmSrv, cmd_id, in);
+}
+
+Result btmUnregisterAppletResourceUserId(u64 AppletResourceUserId) {
+    if (hosversionBefore(5,0,0))
+        return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
+    u32 cmd_id = hosversionBefore(5,1,0) ? 41 : 58;
+
+    return _btmCmdInU64NoOut(AppletResourceUserId, cmd_id);
+}
+
+Result btmSetAppletResourceUserId(u64 AppletResourceUserId) {
+    if (hosversionBefore(5,0,0))
+        return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
+    u32 cmd_id = hosversionBefore(5,1,0) ? 42 : 59;
+
+    return _btmCmdInU64NoOut(AppletResourceUserId, cmd_id);
+}
+