diff --git a/monitor/control.c b/monitor/control.c
index f9a0b53..67cfdfd 100644
--- a/monitor/control.c
+++ b/monitor/control.c
@@ -1253,22 +1253,24 @@
 	return 0;
 }
 
-void control_tty(const char *path, unsigned int speed)
+int control_tty(const char *path, unsigned int speed)
 {
 	struct control_data *data;
 	struct termios ti;
-	int fd;
+	int fd, err;
 
 	fd = open(path, O_RDWR | O_NOCTTY | O_NONBLOCK);
 	if (fd < 0) {
+		err = -errno;
 		perror("Failed to open serial port");
-		return;
+		return err;
 	}
 
 	if (tcflush(fd, TCIOFLUSH) < 0) {
+		err = -errno;
 		perror("Failed to flush serial port");
 		close(fd);
-		return;
+		return err;
 	}
 
 	memset(&ti, 0, sizeof(ti));
@@ -1281,9 +1283,10 @@
 	cfsetspeed(&ti, get_speed(speed));
 
 	if (tcsetattr(fd, TCSANOW, &ti) < 0) {
+		err = -errno;
 		perror("Failed to set serial port settings");
 		close(fd);
-		return;
+		return err;
 	}
 
 	printf("--- %s opened ---\n", path);
@@ -1291,7 +1294,7 @@
 	data = malloc(sizeof(*data));
 	if (!data) {
 		close(fd);
-		return;
+		return -ENOMEM;
 	}
 
 	memset(data, 0, sizeof(*data));
@@ -1299,6 +1302,8 @@
 	data->fd = fd;
 
 	mainloop_add_fd(data->fd, EPOLLIN, tty_callback, data, free_data);
+
+	return 0;
 }
 
 bool control_writer(const char *path)
diff --git a/monitor/control.h b/monitor/control.h
index 601a45f..55384db 100644
--- a/monitor/control.h
+++ b/monitor/control.h
@@ -27,7 +27,7 @@
 bool control_writer(const char *path);
 void control_reader(const char *path);
 void control_server(const char *path);
-void control_tty(const char *path, unsigned int speed);
+int control_tty(const char *path, unsigned int speed);
 int control_tracing(void);
 
 void control_message(uint16_t opcode, const void *data, uint16_t size);
