Index: uspace/app/sysctl/main.c
===================================================================
--- uspace/app/sysctl/main.c	(revision 504d103bdf029cdde8b64942b85c729618bf98b7)
+++ uspace/app/sysctl/main.c	(revision 8fab3f68318fcd2f101d18b9546017854654302d)
@@ -97,4 +97,26 @@
 }
 
+static int start(int argc, char *argv[])
+{
+	unit_handle_t handle;
+	char *unit_name = argv[1];
+
+	int rc = sysman_unit_handle(unit_name, &handle);
+	if (rc != EOK) {
+		printf("Cannot obtain handle for unit '%s' (%s).\n",
+		    unit_name, str_error(rc));
+		return rc;
+	}
+
+	rc = sysman_unit_start(handle, IPC_FLAG_BLOCKING);
+	if (rc != EOK) {
+		printf("Error when starting unit '%s' error (%s).\n",
+		    unit_name, str_error(rc));
+		return rc;
+	}
+
+	return 0;
+}
+
 static int stop(int argc, char *argv[])
 {
@@ -111,5 +133,5 @@
 	rc = sysman_unit_stop(handle, IPC_FLAG_BLOCKING);
 	if (rc != EOK) {
-		printf("Error when stopping unit '%s' handle (%s).\n",
+		printf("Error when stopping unit '%s' error (%s).\n",
 		    unit_name, str_error(rc));
 		return rc;
@@ -121,4 +143,5 @@
 command_t commands[] = {
 	{ "list-units", 0, &list_units },
+	{ "start",      1, &start },
 	{ "stop",       1, &stop },
 	{ 0 }
@@ -127,7 +150,12 @@
 static void print_syntax(void)
 {
-	printf("syntax:\n");
-	printf("\t%s\n", NAME);
-	// TODO update as functionality grows
+	printf("%s commands:\n", NAME);
+	for (command_t *it = commands; it->name != NULL; ++it) {
+		printf("\t%s", it->name);
+		for (int i = 0; i < it->args; ++i) {
+			printf(" <arg%i>", i + 1);
+		}
+		printf("\n");
+	}
 }
 
Index: uspace/lib/c/include/ipc/sysman.h
===================================================================
--- uspace/lib/c/include/ipc/sysman.h	(revision 504d103bdf029cdde8b64942b85c729618bf98b7)
+++ uspace/lib/c/include/ipc/sysman.h	(revision 8fab3f68318fcd2f101d18b9546017854654302d)
@@ -46,4 +46,5 @@
 	SYSMAN_CTL_UNIT_HANDLE,
 	SYSMAN_CTL_UNIT_START_BY_NAME,
+	SYSMAN_CTL_UNIT_START,
 	SYSMAN_CTL_UNIT_STOP,
 	SYSMAN_CTL_GET_UNITS,
Index: uspace/lib/sysman/include/sysman/ctl.h
===================================================================
--- uspace/lib/sysman/include/sysman/ctl.h	(revision 504d103bdf029cdde8b64942b85c729618bf98b7)
+++ uspace/lib/sysman/include/sysman/ctl.h	(revision 8fab3f68318fcd2f101d18b9546017854654302d)
@@ -36,4 +36,5 @@
 
 int sysman_unit_start_by_name(const char *, int);
+int sysman_unit_start(unit_handle_t, int);
 int sysman_unit_stop(unit_handle_t, int);
 
Index: uspace/lib/sysman/src/ctl.c
===================================================================
--- uspace/lib/sysman/src/ctl.c	(revision 504d103bdf029cdde8b64942b85c729618bf98b7)
+++ uspace/lib/sysman/src/ctl.c	(revision 8fab3f68318fcd2f101d18b9546017854654302d)
@@ -78,4 +78,14 @@
 
 	async_wait_for(req, &rc);
+	return rc;
+}
+
+int sysman_unit_start(unit_handle_t handle, int flags)
+{
+	async_exch_t *exch = sysman_exchange_begin(SYSMAN_PORT_CTL);
+
+	int rc = async_req_2_0(exch, SYSMAN_CTL_UNIT_START, handle, flags);
+	sysman_exchange_end(exch);
+	
 	return rc;
 }
Index: uspace/srv/sysman/connection_ctl.c
===================================================================
--- uspace/srv/sysman/connection_ctl.c	(revision 504d103bdf029cdde8b64942b85c729618bf98b7)
+++ uspace/srv/sysman/connection_ctl.c	(revision 8fab3f68318fcd2f101d18b9546017854654302d)
@@ -138,5 +138,6 @@
 }
 
-static void sysman_unit_stop(ipc_callid_t iid, ipc_call_t *icall)
+static void sysman_unit_operation(ipc_callid_t iid, ipc_call_t *icall,
+    unit_state_t state)
 {
 	sysarg_t retval;
@@ -144,5 +145,5 @@
 	unit_handle_t handle = IPC_GET_ARG1(*icall);
 	int flags = IPC_GET_ARG2(*icall);
-	sysman_log(LVL_DEBUG2, "%s(%i, %x)", __func__, handle, flags);
+	sysman_log(LVL_DEBUG2, "%s(%i, %x, %i)", __func__, handle, flags, state);
 
 	unit_t *unit = repo_find_unit_by_handle(handle);
@@ -153,5 +154,5 @@
 
 	if (!(flags & IPC_FLAG_BLOCKING)) {
-		retval = sysman_run_job(unit, STATE_STOPPED, NULL, NULL);
+		retval = sysman_run_job(unit, state, NULL, NULL);
 		goto answer;
 	}
@@ -162,5 +163,5 @@
 		goto answer;
 	}
-	retval = sysman_run_job(unit, STATE_STOPPED, &answer_callback,
+	retval = sysman_run_job(unit, state, &answer_callback,
 	    iid_ptr);
 	if (retval != EOK) {
@@ -173,4 +174,14 @@
 answer:
 	async_answer_0(iid, retval);
+}
+
+static void sysman_unit_start(ipc_callid_t iid, ipc_call_t *icall)
+{
+	sysman_unit_operation(iid, icall, STATE_STARTED);
+}
+
+static void sysman_unit_stop(ipc_callid_t iid, ipc_call_t *icall)
+{
+	sysman_unit_operation(iid, icall, STATE_STOPPED);
 }
 
@@ -289,4 +300,7 @@
 			sysman_unit_start_by_name(callid, &call);
 			break;
+		case SYSMAN_CTL_UNIT_START:
+			sysman_unit_start(callid, &call);
+			break;
 		case SYSMAN_CTL_UNIT_STOP:
 			sysman_unit_stop(callid, &call);
