Index: uspace/srv/hid/remcons/remcons.c
===================================================================
--- uspace/srv/hid/remcons/remcons.c	(revision d3109ffbe9773fed7630d7d9dae993d02f8967ac)
+++ uspace/srv/hid/remcons/remcons.c	(revision 6a753a9c0e43387ce66206ccacb8c6067f49bb07)
@@ -59,4 +59,6 @@
 #define APP_SHELL "/app/bdsh"
 
+#define DEF_PORT 2223
+
 /** Telnet commands to force character mode
  * (redundant to be on the safe side).
@@ -122,4 +124,6 @@
 
 static loc_srv_t *remcons_srv;
+static bool no_ctl;
+static bool no_rgb;
 
 static telnet_user_t *srv_to_user(con_srv_t *srv)
@@ -432,5 +436,5 @@
 	assert(user);
 
-	remcons->enable_ctl = true;
+	remcons->enable_ctl = !no_ctl;
 	remcons->user = user;
 
@@ -444,5 +448,5 @@
 	    remcons_vt_putchar, remcons_vt_cputs, remcons_vt_flush);
 	assert(remcons->vt != NULL); // XXX
-	remcons->vt->enable_rgb = true;
+	remcons->vt->enable_rgb = !no_rgb;
 
 	if (remcons->enable_ctl) {
@@ -504,4 +508,13 @@
 }
 
+static void print_syntax(void)
+{
+	fprintf(stderr, "syntax: remcons [<options>]\n");
+	fprintf(stderr, "\t--no-ctl      Disable all terminal control sequences\n");
+	fprintf(stderr, "\t--no-rgb      Disable RGB colors\n");
+	fprintf(stderr, "\t--port <port> Listening port (default: %u)\n",
+	    DEF_PORT);
+}
+
 int main(int argc, char *argv[])
 {
@@ -510,4 +523,45 @@
 	tcp_t *tcp;
 	inet_ep_t ep;
+	uint16_t port;
+	int i;
+
+	port = DEF_PORT;
+
+	i = 1;
+	while (i < argc) {
+		if (argv[i][0] == '-') {
+			if (str_cmp(argv[i], "--no-ctl") == 0) {
+				no_ctl = true;
+			} else if (str_cmp(argv[i], "--no-rgb") == 0) {
+				no_rgb = true;
+			} else if (str_cmp(argv[i], "--port") == 0) {
+				++i;
+				if (i >= argc) {
+					fprintf(stderr, "Option argument "
+					    "missing.\n");
+					print_syntax();
+					return EINVAL;
+				}
+				rc = str_uint16_t(argv[i], NULL, 10, true, &port);
+				if (rc != EOK) {
+					fprintf(stderr, "Invalid port number "
+					    "'%s'.\n", argv[i]);
+					print_syntax();
+					return EINVAL;
+				}
+			} else {
+				fprintf(stderr, "Unknown option '%s'.\n",
+				    argv[i]);
+				print_syntax();
+				return EINVAL;
+			}
+		} else {
+			fprintf(stderr, "Unexpected argument.\n");
+			print_syntax();
+			return EINVAL;
+		}
+
+		++i;
+	}
 
 	async_set_fallback_port_handler(client_connection, NULL);
@@ -525,5 +579,5 @@
 
 	inet_ep_init(&ep);
-	ep.port = 2223;
+	ep.port = port;
 
 	rc = tcp_listener_create(tcp, &ep, &listen_cb, NULL, &conn_cb, NULL,
Index: uspace/srv/hid/remcons/user.c
===================================================================
--- uspace/srv/hid/remcons/user.c	(revision d3109ffbe9773fed7630d7d9dae993d02f8967ac)
+++ uspace/srv/hid/remcons/user.c	(revision 6a753a9c0e43387ce66206ccacb8c6067f49bb07)
@@ -73,5 +73,6 @@
 	user->id = ++telnet_user_id_counter;
 
-	int rc = asprintf(&user->service_name, "%s/telnet%d", NAMESPACE, user->id);
+	int rc = asprintf(&user->service_name, "%s/telnet%u.%d", NAMESPACE,
+	    (unsigned)task_get_id(), user->id);
 	if (rc < 0) {
 		free(user);
