Package: libdvbv5-0
Version: 1.20.0-1.1
Severity: important
Tags: patch upstream

Dear Maintainer,

It is not possible to tune a DVB-S channel after a DVB-S2 channel was tuned. 
Modulation, rolloff and pilot are kept from the previous DVB-S2 channel and 
can't work with DVB-S. This makes watching DVB-S channels with e.g. kaffeine 
impossible once a DVB-S2 channel was watched before. This also makes frequency 
scanning with kaffeine impossible, if a DVB-S2 channel was tuned before.

Issue happens with Hauppauge WinTV NOVA HD-S2 (HVR-4000 based PCI card).

It's not the first time this issue appears, see
https://bugs.launchpad.net/ubuntu/+source/kaffeine/+bug/1241842 bug report and 
comment 1 to 4 (the description there is however not completely correct as 
it's not directly related to API switching). The patch there worked for years 
until kaffeine switched to libdvbv5.

Please find attached a patch that solves this issue. With this patch it is 
again possible to watch channels with kaffeine in random order and also 
scanning works again.

The bug affects libdvbv5 version 1.16.3-3 as provided with Buster and also
1.20.0-1.1 compiled for Buster. System information was collected from a system 
where the patch is applied.

Unfortunately I cannot test with dvbv5-zap, as dvbv5-scan is unable to produce 
a proper channels file and dvbv5-zap seems not compatible with any channels 
file that w_scan can generate.

My DVB-S/S2 setup is in a working condition as the old szap-s2 (not in Debian) 
is able to tune to any channel in any order.

Thanks

Andreas



-- System Information:
Debian Release: 10.5
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.19.0-10-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), 
LANGUAGE=de:en_GB (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages libdvbv5-0 depends on:
ii  libc6     2.28-10
ii  libudev1  241-7~deb10u4

libdvbv5-0 recommends no packages.

libdvbv5-0 suggests no packages.

-- no debconf information
Bugfix to allow tuning from a DVB-S2 channel to a DVB-S channel.

--- a/lib/libdvbv5/dvb-v5-std.c
+++ b/lib/libdvbv5/dvb-v5-std.c
@@ -125,6 +125,9 @@
 	DTV_INVERSION,
 	DTV_SYMBOL_RATE,
 	DTV_INNER_FEC,
+	DTV_MODULATION,
+	DTV_PILOT,
+	DTV_ROLLOFF,
 	DTV_POLARIZATION,
 	0
 };
--- a/lib/libdvbv5/dvb-fe.c
+++ b/lib/libdvbv5/dvb-fe.c
@@ -513,6 +513,14 @@
 			dvb_perror(_("Set delivery system"));
 			return -errno;
 		}
+
+		// This is REQUIRED to tune from a DVB-S2 channel back to a DVB-S channel,
+		// at least with Hauppauge WinTV NOVA HD-S2 (HVR-4000 based PCI card)
+		if (sys == SYS_DVBS) {
+			dvb_fe_store_parm(&parms->p, DTV_MODULATION, QPSK);
+			dvb_fe_store_parm(&parms->p, DTV_PILOT, PILOT_AUTO);
+			dvb_fe_store_parm(&parms->p, DTV_ROLLOFF, ROLLOFF_35);
+		}
 	}
 
 	/*

Reply via email to