diff --git a/src/remsim_client.c b/src/remsim_client.c
index ccf1d22..50919f9 100644
--- a/src/remsim_client.c
+++ b/src/remsim_client.c
@@ -2,6 +2,9 @@
 #include <errno.h>
 #include <string.h>
 
+#define _GNU_SOURCE
+#include <getopt.h>
+
 #include <talloc.h>
 
 #include <osmocom/core/msgb.h>
@@ -126,6 +129,62 @@
 	return 0;
 }
 
+static void printf_help()
+{
+	printf(
+		"  -h --help                  Print this help message\n"
+		"  -i --server-ip A.B.C.D     remsim-server IP address\n"
+		"  -p --server-port 13245     remsim-server TCP port\n"
+		"  -i --client-id <0-65535>   RSPRO ClientId of this client\n"
+		"  -s --client-slot <0-65535> RSPRO SlotNr of this client\n"
+	      );
+}
+
+static void handle_options(int argc, char **argv)
+{
+	while (1) {
+		int option_index = 0, c;
+		static const struct option long_options[] = {
+			{ "help", 0, 0, 'h' },
+			{ "server-ip", 1, 0, 'i' },
+			{ "server-port", 1, 0, 'p' },
+			{ "client-id", 1, 0, 'c' },
+			{ "client-slot", 1, 0, 's' },
+			{ 0, 0, 0, 0 }
+		};
+
+		c = getopt_long(argc, argv, "hi:p:c:s:",
+				long_options, &option_index);
+		if (c == -1)
+			break;
+
+		switch (c) {
+		case 'h':
+			printf_help();
+			exit(0);
+			break;
+		case 'i':
+			g_client->srv_conn.server_host = optarg;
+			break;
+		case 'p':
+			g_client->srv_conn.server_port = atoi(optarg);
+			break;
+		case 'c':
+			if (!g_client->srv_conn.clslot)
+				g_client->srv_conn.clslot = talloc_zero(g_client, ClientSlot_t);
+			g_client->srv_conn.clslot->clientId = atoi(optarg);
+			break;
+		case 's':
+			if (!g_client->srv_conn.clslot)
+				g_client->srv_conn.clslot = talloc_zero(g_client, ClientSlot_t);
+			g_client->srv_conn.clslot->slotNr = atoi(optarg);
+			break;
+		default:
+			break;
+		}
+	}
+}
+
 int main(int argc, char **argv)
 {
 	struct rspro_server_conn *srvc;
@@ -145,6 +204,9 @@
 	OSMO_STRLCPY_ARRAY(srvc->own_comp_id.name, "fixme-name");
 	OSMO_STRLCPY_ARRAY(srvc->own_comp_id.software, "remsim-client");
 	OSMO_STRLCPY_ARRAY(srvc->own_comp_id.sw_version, PACKAGE_VERSION);
+
+	handle_options(argc, argv);
+
 	rc = server_conn_fsm_alloc(g_client, srvc);
 	if (rc < 0) {
 		fprintf(stderr, "Unable to create Server conn FSM: %s\n", strerror(errno));
