diff --git a/mythtv/libs/libmythtv/recorders/dvbchannel.cpp b/mythtv/libs/libmythtv/recorders/dvbchannel.cpp
index a21d35df3f..480384d9ef 100644
--- a/mythtv/libs/libmythtv/recorders/dvbchannel.cpp
+++ b/mythtv/libs/libmythtv/recorders/dvbchannel.cpp
@@ -49,6 +49,11 @@
 #include "dvbcam.h"
 #include "tv_rec.h"
 
+// Returned by drivers on unsupported dvbv3 ioctl calls
+#ifndef ENOTSUPP
+#define ENOTSUPP 524
+#endif
+
 static void drain_dvb_events(int fd);
 static bool wait_for_backend(int fd, int timeout_ms);
 static struct dvb_frontend_parameters dtvmultiplex_to_dvbparams(
@@ -1167,7 +1172,7 @@ double DVBChannel::GetSignalStrength(bool *ok) const
     if (ret < 0)
     {
 #if DVB_API_VERSION >=5
-        if (errno == EOPNOTSUPP)
+        if (errno == EOPNOTSUPP || errno == ENOTSUPP)
         {
             return GetSignalStrengthDVBv5(ok);
         }
@@ -1255,7 +1260,7 @@ double DVBChannel::GetSNR(bool *ok) const
     if (ret < 0)
     {
 #if DVB_API_VERSION >=5
-        if (errno == EOPNOTSUPP)
+        if (errno == EOPNOTSUPP || errno == ENOTSUPP)
         {
             return GetSNRDVBv5(ok);
         }
@@ -1326,7 +1331,7 @@ double DVBChannel::GetBitErrorRate(bool *ok) const
     if (ret < 0)
     {
 #if DVB_API_VERSION >=5
-        if (errno == EOPNOTSUPP)
+        if (errno == EOPNOTSUPP || errno == ENOTSUPP)
         {
             return GetBitErrorRateDVBv5(ok);
         }
@@ -1390,7 +1395,7 @@ double DVBChannel::GetUncorrectedBlockCount(bool *ok) const
     if (ret < 0)
     {
 #if DVB_API_VERSION >=5
-        if (errno == EOPNOTSUPP)
+        if (errno == EOPNOTSUPP || errno == ENOTSUPP)
         {
             return GetUncorrectedBlockCountDVBv5(ok);
         }
@@ -1515,6 +1520,8 @@ static bool wait_for_backend(int fd, int timeout_ms)
 
     // This is supposed to work on all cards, post 2.6.12...
     fe_status_t status;
+    memset(&status, 0, sizeof(status));
+
     if (ioctl(fd, FE_READ_STATUS, &status) < 0)
     {
         LOG(VB_GENERAL, LOG_ERR,
