diff --git a/epicardium/modules/stream.c b/epicardium/modules/stream.c
index 63e63070e6c8c6aaf06386506edb9f6acd13582b..4b36cce787146d227bf9ee068fd2d506c09ea793 100644
--- a/epicardium/modules/stream.c
+++ b/epicardium/modules/stream.c
@@ -52,20 +52,22 @@ int epic_stream_read(int sd, void *buf, size_t count)
 		return -ENODEV;
 	}
 
-	/* Poll the stream */
-	int ret = stream->poll_stream();
-	if (ret < 0) {
-		return ret;
+	/* Poll the stream, if a poll_stream function exists */
+	if (stream->poll_stream != NULL) {
+		int ret = stream->poll_stream();
+		if (ret < 0) {
+			return ret;
+		}
 	}
 
-	/* Check buffer sizing */
+	/* Check buffer size is a multiple of the data packet size */
 	if (count % stream->item_size != 0) {
 		return -EINVAL;
 	}
 
 	size_t i;
 	for (i = 0; i < count; i += stream->item_size) {
-		if (!xQueueReceive(stream->queue, buf + i, 10)) {
+		if (!xQueueReceive(stream->queue, buf + i, STREAM_QUEUE_WAIT)) {
 			break;
 		}
 	}
diff --git a/epicardium/modules/stream.h b/epicardium/modules/stream.h
index 5cf0dcc068ceac251c1609ba768c8fbbabe76bcf..5bbb327da47af046d1cbdba662fe7a6622078ef1 100644
--- a/epicardium/modules/stream.h
+++ b/epicardium/modules/stream.h
@@ -7,6 +7,8 @@
 #include "FreeRTOS.h"
 #include "queue.h"
 
+#define STREAM_QUEUE_WAIT pdMS_TO_TICKS(10)
+
 /**
  * **Stream Descriptors**:
  *