diff --git a/mythtv/libs/libmythtv/recorders/ExternalStreamHandler.cpp b/mythtv/libs/libmythtv/recorders/ExternalStreamHandler.cpp
index 07596571d0..907f105cce 100644
--- a/mythtv/libs/libmythtv/recorders/ExternalStreamHandler.cpp
+++ b/mythtv/libs/libmythtv/recorders/ExternalStreamHandler.cpp
@@ -33,7 +33,9 @@ ExternIO::ExternIO(const QString & app,
                    const QStringList & args)
     : m_appin(-1), m_appout(-1), m_apperr(-1),
       m_pid(-1), m_bufsize(0), m_buffer(NULL),
-      m_status(&m_status_buf, QIODevice::ReadWrite)
+      m_status(&m_status_buf, QIODevice::ReadWrite),
+      m_errcnt(0)
+
 {
     m_app  = (app);
 
@@ -130,10 +132,28 @@ int ExternIO::Read(QByteArray & buffer, int maxlen, int timeout)
 
     if (len < 0)
     {
-        m_error = "Failed to read from External Recorder: " + ENO;
-        LOG(VB_RECORD, LOG_ERR, m_error);
-        return 0;
+        if (errno == EAGAIN)
+        {
+            if (++m_errcnt > kMaxErrorCnt)
+            {
+                m_error = "Failed to read from External Recorder: " + ENO;
+                LOG(VB_RECORD, LOG_WARNING,
+                    "External Recorder not ready. Giving up.");
+            }
+            else
+                LOG(VB_RECORD, LOG_WARNING,
+                    QString("External Recorder not ready. Will retry (%1/%2).")
+                    .arg(m_errcnt).arg(kMaxErrorCnt));
+        }
+        else
+        {
+            m_error = "Failed to read from External Recorder: " + ENO;
+            LOG(VB_RECORD, LOG_ERR, m_error);
+        }
     }
+    else
+        m_errcnt = 0;
+
     if (len == 0)
         return 0;
 
diff --git a/mythtv/libs/libmythtv/recorders/ExternalStreamHandler.h b/mythtv/libs/libmythtv/recorders/ExternalStreamHandler.h
index 286d59a281..635e35fb24 100644
--- a/mythtv/libs/libmythtv/recorders/ExternalStreamHandler.h
+++ b/mythtv/libs/libmythtv/recorders/ExternalStreamHandler.h
@@ -19,6 +19,8 @@ class ExternalChannel;
 
 class ExternIO
 {
+    enum constants { kMaxErrorCnt = 5 };
+
   public:
     ExternIO(const QString & app, const QStringList & args);
     ~ExternIO(void);
@@ -50,6 +52,7 @@ class ExternIO
 
     QString     m_status_buf;
     QTextStream m_status;
+    int         m_errcnt;
 };
 
 // Note : This class always uses a TS reader.
