Index: uspace/app/tetris/input.c
===================================================================
--- uspace/app/tetris/input.c	(revision db90860fdc1d47aaec8d1e18be364a1835f99b85)
+++ uspace/app/tetris/input.c	(revision 416abec29a70691f46cc8099ebc859ce62131c38)
@@ -116,5 +116,5 @@
 again:
 		if (!getchar_inprog) {
-			cons_phone = console_phone_get();
+			cons_phone = console_phone_get(true);
 			getchar_inprog = async_send_2(cons_phone,
 			    CONSOLE_GETKEY, 0, 0, &charcall);
Index: uspace/lib/libc/generic/console.c
===================================================================
--- uspace/lib/libc/generic/console.c	(revision db90860fdc1d47aaec8d1e18be364a1835f99b85)
+++ uspace/lib/libc/generic/console.c	(revision 416abec29a70691f46cc8099ebc859ce62131c38)
@@ -43,8 +43,15 @@
 static int console_phone = -1;
 
-void console_open(void)
+void console_open(bool blocking)
 {
 	if (console_phone < 0) {
-		int phone = ipc_connect_me_to(PHONE_NS, SERVICE_CONSOLE, 0, 0);
+		int phone;
+		if (blocking) {
+			phone = ipc_connect_me_to_blocking(PHONE_NS,
+			    SERVICE_CONSOLE, 0, 0);
+		} else {
+			phone = ipc_connect_me_to(PHONE_NS, SERVICE_CONSOLE, 0,
+			    0);
+		}
 		if (phone >= 0)
 			console_phone = phone;
@@ -61,8 +68,8 @@
 }
 
-int console_phone_get(void)
+int console_phone_get(bool blocking)
 {
 	if (console_phone < 0)
-		console_open();
+		console_open(blocking);
 	
 	return console_phone;
@@ -72,10 +79,10 @@
 {
 	while (console_phone < 0)
-		console_open();
+		console_open(true);
 }
 
 void console_clear(void)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	async_msg_0(cons_phone, CONSOLE_CLEAR);
 }
@@ -83,5 +90,5 @@
 void console_goto(int row, int col)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	async_msg_2(cons_phone, CONSOLE_GOTO, row, col);
 }
@@ -89,5 +96,5 @@
 void console_putchar(int c)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	async_msg_1(cons_phone, CONSOLE_PUTCHAR, c);
 }
@@ -95,5 +102,5 @@
 void console_flush(void)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	async_msg_0(cons_phone, CONSOLE_FLUSH);
 }
@@ -101,5 +108,5 @@
 int console_get_size(int *rows, int *cols)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	ipcarg_t r, c;
 	int rc;
@@ -115,5 +122,5 @@
 void console_set_style(int style)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	async_msg_1(cons_phone, CONSOLE_SET_STYLE, style);
 }
@@ -121,5 +128,5 @@
 void console_set_color(int fg_color, int bg_color, int flags)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	async_msg_3(cons_phone, CONSOLE_SET_COLOR, fg_color, bg_color, flags);
 }
@@ -127,5 +134,5 @@
 void console_set_rgb_color(int fg_color, int bg_color)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	async_msg_2(cons_phone, CONSOLE_SET_RGB_COLOR, fg_color, bg_color);
 }
@@ -133,5 +140,5 @@
 void console_cursor_visibility(int show)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	async_msg_1(cons_phone, CONSOLE_CURSOR_VISIBILITY, show != 0);
 }
Index: uspace/lib/libc/generic/io/stream.c
===================================================================
--- uspace/lib/libc/generic/io/stream.c	(revision db90860fdc1d47aaec8d1e18be364a1835f99b85)
+++ uspace/lib/libc/generic/io/stream.c	(revision 416abec29a70691f46cc8099ebc859ce62131c38)
@@ -57,5 +57,5 @@
 ssize_t read_stdin(void *buf, size_t count)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(false);
 
 	if (cons_phone >= 0) {
@@ -80,5 +80,5 @@
 ssize_t write_stdout(const void *buf, size_t count)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(false);
 
 	if (cons_phone >= 0) {
Index: uspace/lib/libc/generic/kbd.c
===================================================================
--- uspace/lib/libc/generic/kbd.c	(revision db90860fdc1d47aaec8d1e18be364a1835f99b85)
+++ uspace/lib/libc/generic/kbd.c	(revision 416abec29a70691f46cc8099ebc859ce62131c38)
@@ -43,10 +43,7 @@
 int kbd_get_event(kbd_event_t *ev)
 {
-	int cons_phone = console_phone_get();
+	int cons_phone = console_phone_get(true);
 	ipcarg_t r0, r1, r2, r3;
 	int rc;
-
-	if (cons_phone < 0)
-		return -1;
 
 	rc = async_req_0_4(cons_phone, CONSOLE_GETKEY, &r0, &r1, &r2, &r3);
Index: uspace/lib/libc/include/console.h
===================================================================
--- uspace/lib/libc/include/console.h	(revision db90860fdc1d47aaec8d1e18be364a1835f99b85)
+++ uspace/lib/libc/include/console.h	(revision 416abec29a70691f46cc8099ebc859ce62131c38)
@@ -38,9 +38,10 @@
 #include <console/style.h>
 #include <console/color.h>
+#include <bool.h>
 
-extern void console_open(void);
+extern void console_open(bool);
 extern void console_close(void);
 
-extern int console_phone_get(void);
+extern int console_phone_get(bool);
 extern void console_wait(void);
 
