Index: uspace/app/pcapctl/main.c
===================================================================
--- uspace/app/pcapctl/main.c	(revision e4cc2660086726ebabd608e31dc30bc295305e1a)
+++ uspace/app/pcapctl/main.c	(revision 78edb5e7bafe392fff14634b826f857ea1745cb1)
@@ -41,12 +41,14 @@
 #define NAME "pcapctl"
 
-pcapctl_sess_t* sess;
+//pcapctl_sess_t* sess = NULL;
 
 static errno_t start_dumping(const char *svc_name, const char *name)
 {
+	pcapctl_sess_t* sess = NULL;
 	errno_t rc = pcapctl_dump_open(svc_name, &sess);
 	if (rc != EOK) {
 		return 1;
 	}
+
 	pcapctl_dump_start(name, sess);
 	pcapctl_dump_close(sess);
@@ -57,9 +59,9 @@
 static errno_t stop_dumping(const char *svc_name)
 {
+	pcapctl_sess_t* sess = NULL;
 	errno_t rc = pcapctl_dump_open(svc_name, &sess);
 	if (rc != EOK) {
 		return 1;
 	}
-
 	pcapctl_dump_stop(sess);
 	pcapctl_dump_close(sess);
@@ -71,10 +73,17 @@
 }
 
-static void usage(const char *progname)
+static void usage(void)
 {
-	fprintf(stderr, "Usage:\n");
-	fprintf(stderr, "  %s list: List of devices\n", progname);
-	fprintf(stderr, "  %s start <device> <outfile>: Packets dumped from <device> will be written to <outfile>\n", progname);
-	fprintf(stderr, "  %s stop <device>: Dumping from <device> stops\n", progname);
+	printf("Usage:\n"
+		NAME " list \n"
+		"\tList of devices\n"
+		NAME " start --device= | -d <device number from list> <outfile>\n"
+		"\tPackets dumped from device will be written to <outfile>\n"
+		NAME " stop --device= | -d <device>\n"
+		"\tDumping from <device> stops\n"
+		NAME " start <outfile>\n"
+		"\tPackets dumped from the 1st device from the list will be written to <outfile>\n"
+		NAME " --help | -h\n"
+		"\tShow this application help.\n");
 }
 
@@ -82,29 +91,45 @@
 {
 	if (argc < 2) {
-		usage(argv[0]);
+		usage();
 		return 1;
 	} else {
+		/** help*/
 		if (str_cmp(argv[1], "--help") == 0 || str_cmp(argv[1], "-h") == 0) {
-			usage(argv[0]);
+			usage();
 			return 0;
+		/** list*/
 		} else if (str_cmp(argv[1], "list") == 0) {
 			list_devs();
 			return 0;
+		/** start with/out devnum */
 		} else if (str_cmp(argv[1], "start") == 0) {
-			if (argc != 4) {
-				usage(argv[0]);
+			if (argc == 3) {
+				start_dumping((char *)"0", argv[2]);
+				return 0;
+			}
+			else if (argc == 4) {
+				start_dumping(argv[2], argv[3]);
+				return 0;
+			} else {
+				usage();
 				return 1;
 			}
-			start_dumping(argv[2], argv[3]);
+		/** Stop with/out devnum */
 		} else if (str_cmp(argv[1], "stop") == 0) {
-			if (argc != 3) {
-				usage(argv[0]);
+			if (argc == 2) {
+				stop_dumping((char *)"0");
+				fprintf(stdout, "Dumping was stopped\n");
+				return 0;
+			}
+			else if (argc == 3) {
+
+				stop_dumping(argv[2]);
+				fprintf(stdout, "Dumping was stopped\n");
+			} else {
+				usage();
 				return 1;
 			}
-			stop_dumping(argv[2]);
-			fprintf(stdout, "Dumping was stopped\n");
-			return EOK;
 		} else {
-			usage(argv[0]);
+			usage();
 			return 1;
 		}
Index: uspace/lib/pcap/src/pcapctl_dump.c
===================================================================
--- uspace/lib/pcap/src/pcapctl_dump.c	(revision e4cc2660086726ebabd608e31dc30bc295305e1a)
+++ uspace/lib/pcap/src/pcapctl_dump.c	(revision 78edb5e7bafe392fff14634b826f857ea1745cb1)
@@ -38,8 +38,25 @@
 #include <str.h>
 #include <stdlib.h>
-
+#include <stdio.h>
+#include <ctype.h>
 #include "pcapctl_dump.h"
 #include "pcapdump_iface.h"
 
+//static service_id_t *pcap_svcs = NULL; ??
+
+static errno_t str2num(const char* str, size_t* number) {
+	size_t num = 0;
+	if (*str == 0)
+		return ELIMIT;
+	if (!isdigit(*str))
+		return EINVAL;
+	while (isdigit(*str)) {
+		num = num * 10 + ((*str) - '0');
+		str++;
+	}
+
+	*number = num;
+	return EOK;
+}
 /** Finish an async exchange on the pcapctl session
  *
@@ -105,5 +122,5 @@
 		char *name = NULL;
 		loc_service_get_name(pcap_svcs[i], &name);
-		fprintf(stdout, "service: %s\n", name);
+		fprintf(stdout, "%d. %s\n", i, name);
 	}
 	free(pcap_svcs);
@@ -112,5 +129,51 @@
 
 
-errno_t pcapctl_dump_open(const char *svcname, pcapctl_sess_t **rsess)
+static errno_t pcapctl_get_name_from_number(const char* svcnum, const char** svcname) {
+
+	errno_t rc;
+	category_id_t pcap_cat;
+	size_t count;
+	service_id_t *pcap_svcs = NULL;
+
+	rc = loc_category_get_id("pcap", &pcap_cat, 0);
+	if (rc != EOK) {
+		printf("Error resolving category pcap.\n");
+		return rc;
+	}
+	size_t num;
+	rc = str2num(svcnum, &num);
+	if (rc != EOK) {
+		printf("Error converting char* to size_t.\n");
+		free(pcap_svcs);
+		return rc;
+	}
+
+	rc = loc_category_get_svcs(pcap_cat, &pcap_svcs, &count);
+	if (rc != EOK) {
+		printf("Error resolving list of pcap services.\n");
+		free(pcap_svcs);
+		return rc;
+	}
+
+	if (num >= count) {
+		printf("Error finding device: no device with such number\n");
+		free(pcap_svcs);
+		return EINVAL;
+	}
+	char *name = NULL;
+	rc = loc_service_get_name(pcap_svcs[num], &name);
+	if (rc != EOK) {
+		printf("Error resolving name");
+	}
+
+	*svcname = name;
+	printf("%s\n", *svcname);
+	return EOK;
+}
+
+/**
+ *
+ */
+errno_t pcapctl_dump_open(const char *svcnum, pcapctl_sess_t **rsess)
 {
 	errno_t rc;
@@ -119,4 +182,12 @@
 	if (sess == NULL)
 		return ENOMEM;
+
+
+	const char* svcname;
+
+	rc = pcapctl_get_name_from_number(svcnum, &svcname);
+	if (rc != EOK) {
+		return rc;
+	}
 
 	rc  = pcapctl_cat_get_svc(svcname, &svc);
@@ -130,5 +201,4 @@
 		goto error;
 	}
-
 	sess->sess = new_session;
 	*rsess = sess;
@@ -139,4 +209,7 @@
 }
 
+/**
+ *
+ */
 errno_t pcapctl_dump_close(pcapctl_sess_t *sess)
 {
