[linux-dvb] [PATCH] Future of DVB-S2

Hans Werner HWerner4 at gmx.de
Fri Aug 29 17:43:42 CEST 2008

> ... and yes, many people understand you.

:) Thanks to everyone who replied so far. I am glad people care about this.

> > We know all about the "coding in your free time" and we can only have 
> > the highest respect for that, but the drivers are completely abandonded,
> > and that's how we feel, too.
> No, and that's my HVR4000 code you're talking about (and the good work 
> of Darron Broad, which was then picked up by Igor). The driver is 
> marginalized, it's not abandoned.

I hope your and Darron's drivers (http://dev.kewl.org/hauppauge) are not seen as
marginalized. The multifrontend (MFE) patch by you and Darron is the driver that I
actually *use* for watching TV. It works nicely with Kaffeine without modification. And I,
for one, appreciate your sane approach and the simplicity of the techniques you used to
add DVB-S2 support (using sysctls for the SFE driver, and wrapping two ioctls to pull in
extra parameters for the MFE driver). If the kernel API is changed sensibly it should be
easy and quick to adapt your drivers to fit in.
> The HVR4000 situation is under review, the wheels are slowly turning.... 
If you are able to say anything about that I would be very interested.

Now, to show how simple I think all this could be, here is a PATCH implementing what
I think is the *minimal* API required to support DVB-S2.


* same API structure, I just added some new enums and variables, nothing removed
* no changes required to any existing drivers (v4l-dvb still compiles)
* no changes required to existing applications (just need to be recompiled)
* no drivers, but I think the HVR4000 MFE patch could be easily adapted

I added the fe_caps2 enum because we're running out of bits in the capabilities bitfield.
More elegant would be to have separate bitfields for FEC capabilities and modulation
capabilities but that would require (easy) changes to (a lot of) drivers and applications.

Why should we not merge something simple like this immediately? This could have been done
years ago. If it takes several rounds of API upgrades to reach all the feature people want then
so be it, but a long journey begins with one step.


diff -r a4843e1304e6 linux/include/linux/dvb/frontend.h
--- a/linux/include/linux/dvb/frontend.h	Sun Aug 24 12:28:11 2008 -0300
+++ b/linux/include/linux/dvb/frontend.h	Fri Aug 29 16:22:47 2008 +0100
@@ -36,6 +36,15 @@
 } fe_type_t;
+typedef enum fe_standard {
+	DVBS2,
+	DSS,
+} fe_standard_t;
 typedef enum fe_caps {
 	FE_IS_STUPID			= 0,
@@ -67,6 +76,16 @@
 	FE_CAN_MUTE_TS			= 0x80000000  // frontend can stop spurious TS data output
 } fe_caps_t;
+typedef enum fe_caps2 {
+	FE_CAN_FEC_1_3			= 0x0,
+	FE_CAN_FEC_1_4			= 0x1,
+	FE_CAN_FEC_2_5			= 0x2,
+	FE_CAN_FEC_3_5			= 0x4,
+	FE_CAN_FEC_9_10			= 0x8,
+	FE_CAN_8PSK			= 0x10,
+	FE_CAN_16APSK			= 0x20,
+	FE_CAN_32APSK			= 0x40
+} fe_caps2_t;
 struct dvb_frontend_info {
 	char       name[128];
@@ -80,6 +99,7 @@
 	__u32      symbol_rate_tolerance;	/* ppm */
 	__u32      notifier_delay;		/* DEPRECATED */
 	fe_caps_t  caps;
+	fe_caps2_t caps2;
@@ -140,19 +160,27 @@
 typedef enum fe_code_rate {
 	FEC_NONE = 0,
+	FEC_1_3,
+	FEC_1_4,
+	FEC_2_5,
+	FEC_3_5,
+	FEC_9_10,
 } fe_code_rate_t;
 typedef enum fe_modulation {
+	PSK_8,
+	APSK_16,
+	APSK_32,
@@ -194,10 +222,25 @@
 } fe_hierarchy_t;
+typedef enum fe_rolloff {
+	ROLLOFF_035,
+	ROLLOFF_025,
+	ROLLOFF_020,
+} fe_rolloff_t;
+typedef enum fe_pilot {
+} fe_pilot_t;
 struct dvb_qpsk_parameters {
 	__u32		symbol_rate;  /* symbol rate in Symbols per second */
 	fe_code_rate_t	fec_inner;    /* forward error correction (see above) */
+	fe_modulation_t	modulation;   /* DVB-S2 allows modulations QPSK plus 8PSK,16APSK,32APSK */
+	fe_rolloff_t 	rolloff;      /* for DVB-S2*/
+	fe_pilot_t	pilot;        /* for DVB-S2*/
 struct dvb_qam_parameters {
@@ -225,6 +268,7 @@
 	__u32 frequency;     /* (absolute) frequency in Hz for QAM/OFDM/ATSC */
 			     /* intermediate frequency in kHz for QPSK */
 	fe_spectral_inversion_t inversion;
+	fe_standard_t           standard;   /* use to set DVBS/DVBS2/DVBT etc */
 	union {
 		struct dvb_qpsk_parameters qpsk;
 		struct dvb_qam_parameters  qam;

Release early, release often. Really, you should.

GMX Kostenlose Spiele: Einfach online spielen und Spaß haben mit Pastry Passion!

More information about the linux-dvb mailing list