Index: uspace/srv/console/console.c
===================================================================
--- uspace/srv/console/console.c	(revision 8a81a73a5ba2937888cb304174241858a0f901de)
+++ uspace/srv/console/console.c	(revision bf5443db843772effe3c9550c0c52abe77c2ff0e)
@@ -70,4 +70,5 @@
 	ipcarg_t cols;  /**< Framebuffer columns */
 	ipcarg_t rows;  /**< Framebuffer rows */
+	int color_cap;	/**< Color capabilities (FB_CCAP_xxx) */
 } fb_info;
 
@@ -171,4 +172,17 @@
 		break;
 	}
+}
+
+int ccap_fb_to_con(int ccap_fb, int *ccap_con)
+{
+	switch (ccap_fb) {
+	case FB_CCAP_NONE: *ccap_con = CONSOLE_CCAP_NONE; break;
+	case FB_CCAP_STYLE: *ccap_con = CONSOLE_CCAP_STYLE; break;
+	case FB_CCAP_INDEXED: *ccap_con = CONSOLE_CCAP_INDEXED; break;
+	case FB_CCAP_RGB: *ccap_con = CONSOLE_CCAP_RGB; break;
+	default: return EINVAL;
+	}
+
+	return EOK;
 }
 
@@ -527,4 +541,7 @@
 	ipcarg_t arg2;
 	ipcarg_t arg3;
+
+	int cons_ccap;
+	int rc;
 	
 	async_serialize_start();
@@ -589,4 +606,12 @@
 			arg2 = fb_info.rows;
 			break;
+		case CONSOLE_GET_COLOR_CAP:
+			rc = ccap_fb_to_con(fb_info.color_cap, &cons_ccap);
+			if (rc != EOK) {
+				ipc_answer_0(callid, rc);
+				continue;
+			}
+			arg1 = cons_ccap;
+			break;
 		case CONSOLE_SET_STYLE:
 			fb_pending_flush();
@@ -640,4 +665,6 @@
 static bool console_init(void)
 {
+	ipcarg_t color_cap;
+
 	/* Connect to keyboard driver */
 	kbd_phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_KEYBOARD, 0, 0);
@@ -675,4 +702,6 @@
 	async_req_0_0(fb_info.phone, FB_FLUSH);
 	async_req_0_2(fb_info.phone, FB_GET_CSIZE, &fb_info.cols, &fb_info.rows);
+	async_req_0_1(fb_info.phone, FB_GET_COLOR_CAP, &color_cap);
+	fb_info.color_cap = color_cap;
 	
 	/* Set up shared memory buffer. */
Index: uspace/srv/fb/ega.c
===================================================================
--- uspace/srv/fb/ega.c	(revision 8a81a73a5ba2937888cb304174241858a0f901de)
+++ uspace/srv/fb/ega.c	(revision bf5443db843772effe3c9550c0c52abe77c2ff0e)
@@ -320,4 +320,7 @@
 			ipc_answer_2(callid, EOK, scr_width, scr_height);
 			continue;
+		case FB_GET_COLOR_CAP:
+			ipc_answer_1(callid, EOK, FB_CCAP_INDEXED);
+			continue;
 		case FB_CLEAR:
 			clrscr();
Index: uspace/srv/fb/fb.c
===================================================================
--- uspace/srv/fb/fb.c	(revision 8a81a73a5ba2937888cb304174241858a0f901de)
+++ uspace/srv/fb/fb.c	(revision bf5443db843772effe3c9550c0c52abe77c2ff0e)
@@ -1648,4 +1648,7 @@
 			ipc_answer_2(callid, EOK, vport->cols, vport->rows);
 			continue;
+		case FB_GET_COLOR_CAP:
+			ipc_answer_1(callid, EOK, FB_CCAP_RGB);
+			continue;
 		case FB_SCROLL:
 			scroll = IPC_GET_ARG1(call);
Index: uspace/srv/fb/serial_console.c
===================================================================
--- uspace/srv/fb/serial_console.c	(revision 8a81a73a5ba2937888cb304174241858a0f901de)
+++ uspace/srv/fb/serial_console.c	(revision bf5443db843772effe3c9550c0c52abe77c2ff0e)
@@ -389,4 +389,8 @@
 			ipc_answer_2(callid, EOK, scr_width, scr_height);
 			continue;
+		case FB_GET_COLOR_CAP:
+			ipc_answer_1(callid, EOK, color ? FB_CCAP_INDEXED :
+			    FB_CCAP_STYLE);
+			continue;
 		case FB_CLEAR:
 			serial_clrscr();
