diff --git a/src/jtag/ft2232.c b/src/jtag/ft2232.c
index 9bcd1660168d136dd7bbbd778ec125316160a26f..a985465347e8529861b3b22577360cea3ec33382 100644
--- a/src/jtag/ft2232.c
+++ b/src/jtag/ft2232.c
@@ -1589,6 +1589,13 @@ static int ft2232_execute_queue()
 	{
 		if (ft2232_execute_command(cmd) != ERROR_OK)
 			retval = ERROR_JTAG_QUEUE_FAILED;
+		/* Start reading input before FT2232 TX buffer fills up */
+		if (ft2232_expect_read > 280)
+		{
+			if (ft2232_send_and_recv(first_unsent, cmd) != ERROR_OK)
+				retval = ERROR_JTAG_QUEUE_FAILED;
+			first_unsent = cmd;
+		}
 		cmd = cmd->next;
 	}