diff --git a/docs/html/config_tvadapters.html b/docs/html/config_tvadapters.html
index 2508c33b..52826a35 100644
--- a/docs/html/config_tvadapters.html
+++ b/docs/html/config_tvadapters.html
@@ -89,6 +89,11 @@ The rows have the following functions
In this case, increase the default value. For fast hardware, this value
might be descreased to make the decision of the re-tune algorithm
based on the signal status faster.
+
+
Force old status
+ Always use the old ioctls to read the linuxdvb status (signal strenght,
+ SNR, error counters). Some drivers are not matured enough to provide
+ the correct values using the new v5 linuxdvb API.
diff --git a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c
index b58d617c..59fc77d9 100644
--- a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c
+++ b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c
@@ -120,6 +120,13 @@ const idclass_t linuxdvb_frontend_class =
.opts = PO_ADVANCED,
.off = offsetof(linuxdvb_frontend_t, lfe_status_period),
},
+ {
+ .type = PT_BOOL,
+ .id = "old_status",
+ .name = "Force old status",
+ .opts = PO_ADVANCED,
+ .off = offsetof(linuxdvb_frontend_t, lfe_old_status),
+ },
{}
}
};
@@ -649,7 +656,8 @@ linuxdvb_frontend_monitor ( void *aux )
logit = tvhlog_limit(&lfe->lfe_status_log, 3600);
- if(ioctl_check(lfe, 0) && !ioctl(lfe->lfe_fe_fd, FE_GET_PROPERTY, &dtv_prop)) {
+ if(ioctl_check(lfe, 0) && !lfe->lfe_old_status &&
+ !ioctl(lfe->lfe_fe_fd, FE_GET_PROPERTY, &dtv_prop)) {
/* Signal strength */
gotprop = 0;
if(ioctl_check(lfe, 1) && fe_properties[0].u.st.len > 0) {
diff --git a/src/input/mpegts/linuxdvb/linuxdvb_private.h b/src/input/mpegts/linuxdvb/linuxdvb_private.h
index d829a336..116e79a5 100644
--- a/src/input/mpegts/linuxdvb/linuxdvb_private.h
+++ b/src/input/mpegts/linuxdvb/linuxdvb_private.h
@@ -118,6 +118,7 @@ struct linuxdvb_frontend
uint32_t lfe_skip_bytes;
uint32_t lfe_ibuf_size;
uint32_t lfe_status_period;
+ int lfe_old_status;
/*
* Satconf (DVB-S only)