Index: uspace/lib/device/include/hr.h
===================================================================
--- uspace/lib/device/include/hr.h	(revision de8110485425ef2ffd114ec22795252b57581d4c)
+++ uspace/lib/device/include/hr.h	(revision 56214383f0fb815ff5ebce810ca4c912eef5ca52)
@@ -118,4 +118,5 @@
 extern void		 hr_sess_destroy(hr_t *);
 extern errno_t		 hr_create(hr_t *, hr_config_t *, bool);
+extern errno_t		 hr_auto_assemble(size_t *);
 extern errno_t		 hr_stop(const char *, long);
 extern errno_t		 hr_add_hotspare(service_id_t, service_id_t);
Index: uspace/lib/device/include/ipc/hr.h
===================================================================
--- uspace/lib/device/include/ipc/hr.h	(revision de8110485425ef2ffd114ec22795252b57581d4c)
+++ uspace/lib/device/include/ipc/hr.h	(revision 56214383f0fb815ff5ebce810ca4c912eef5ca52)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2024 Miroslav Cimerman
+ * Copyright (c) 2025 Miroslav Cimerman
  * All rights reserved.
  *
@@ -41,4 +41,5 @@
 	HR_CREATE = IPC_FIRST_USER_METHOD,
 	HR_ASSEMBLE,
+	HR_AUTO_ASSEMBLE,
 	HR_STOP,
 	HR_ADD_HOTSPARE,
Index: uspace/lib/device/src/hr.c
===================================================================
--- uspace/lib/device/src/hr.c	(revision de8110485425ef2ffd114ec22795252b57581d4c)
+++ uspace/lib/device/src/hr.c	(revision 56214383f0fb815ff5ebce810ca4c912eef5ca52)
@@ -115,4 +115,39 @@
 }
 
+errno_t hr_auto_assemble(size_t *rassembled_cnt)
+{
+	hr_t *hr;
+	errno_t rc;
+	size_t assembled_cnt;
+
+	rc = hr_sess_init(&hr);
+	if (rc != EOK)
+		return rc;
+
+	async_exch_t *exch = async_exchange_begin(hr->sess);
+	if (exch == NULL) {
+		rc = EINVAL;
+		goto error;
+	}
+
+	aid_t req = async_send_0(exch, HR_AUTO_ASSEMBLE, NULL);
+
+	rc = async_data_read_start(exch, &assembled_cnt, sizeof(size_t));
+	if (rc != EOK) {
+		async_exchange_end(exch);
+		async_forget(req);
+		return rc;
+	}
+
+	async_exchange_end(exch);
+	async_wait_for(req, &rc);
+
+	if (rassembled_cnt != NULL)
+		*rassembled_cnt = assembled_cnt;
+error:
+	hr_sess_destroy(hr);
+	return rc;
+}
+
 static errno_t print_vol_info(size_t index, hr_vol_info_t *vol_info)
 {
@@ -218,7 +253,4 @@
 	rc = async_req_2_0(exch, HR_STOP, svc_id, extent);
 	async_exchange_end(exch);
-
-	if (rc != EOK)
-		goto error;
 error:
 	hr_sess_destroy(hr);
