diff --git a/channels/chan_oss.c b/channels/chan_oss.c
index ad87a9128b27ea7ec079d65842133ca4d448720f..4fc613c69605fe7b11bd5810490352bdba5fc7eb 100755
--- a/channels/chan_oss.c
+++ b/channels/chan_oss.c
@@ -877,11 +877,32 @@ static int console_hangup(int fd, int argc, char *argv[])
 	return RESULT_SUCCESS;
 }
 
+static int console_flash(int fd, int argc, char *argv[])
+{
+	struct ast_frame f = { AST_FRAME_CONTROL, AST_CONTROL_FLASH };
+	if (argc != 1)
+		return RESULT_SHOWUSAGE;
+	cursound = -1;
+	if (!oss.owner) {
+		ast_cli(fd, "No call to flash\n");
+		return RESULT_FAILURE;
+	}
+	hookstate = 0;
+	if (oss.owner) {
+		ast_queue_frame(oss.owner, &f);
+	}
+	return RESULT_SUCCESS;
+}
+
 static char hangup_usage[] =
 "Usage: hangup\n"
 "       Hangs up any call currently placed on the console.\n";
 
 
+static char flash_usage[] =
+"Usage: flash\n"
+"       Flashes the call currently placed on the console.\n";
+
 static int console_dial(int fd, int argc, char *argv[])
 {
 	char tmp[256], *tmp2;
@@ -965,6 +986,7 @@ static char transfer_usage[] =
 static struct ast_cli_entry myclis[] = {
 	{ { "answer", NULL }, console_answer, "Answer an incoming console call", answer_usage },
 	{ { "hangup", NULL }, console_hangup, "Hangup a call on the console", hangup_usage },
+	{ { "flash", NULL }, console_flash, "Flash a call on the console", flash_usage },
 	{ { "dial", NULL }, console_dial, "Dial an extension on the console", dial_usage },
 	{ { "transfer", NULL }, console_transfer, "Transfer a call to a different extension", transfer_usage },
 	{ { "send", "text", NULL }, console_sendtext, "Send text to the remote device", sendtext_usage },