Skip to contentSkip to conversation

Hauppauge Nova-S-Plus DVB-S works for one channel, but cannot tune in others

PATCH New Hans-Peter Jansen 3 participants 13 messages Apr 5, 2013 – Apr 8, 2013

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

[Sorry for sending non wrapped lines here from system output, but that's the
only way I know to present this kind of information in a sensible way]

Hi,

I'm suffering from a strange problem here. In one of my systems, I've used a Hauppauge Nova-S-Plus DVB-S card successfully, but after a system upgrade to openSUSE 12.2, it cannot tune in all but one channel. While I like this one left very much (arte), it would be really nice to be able to tune in others as well.

The drivers load fine:

Apr  4 23:44:35 xrated kernel: [    5.829780] cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.9 loaded
Apr  4 23:44:35 xrated kernel: [    5.834257] cx88/0: cx2388x v4l2 driver version 0.0.9 loaded
Apr  4 23:44:35 xrated kernel: [    5.845217] cx2388x alsa driver version 0.0.9 loaded
Apr  4 23:44:35 xrated kernel: [    5.883115] cx88[0]: subsystem: 0070:9202, board: Hauppauge Nova-S-Plus DVB-S [card=37,autodetected], frontend(s): 1
Apr  4 23:44:35 xrated kernel: [    5.883118] cx88[0]: TV tuner type 4, Radio tuner type -1
Apr  4 23:44:35 xrated kernel: [    6.037313] tveeprom 1-0050: Hauppauge model 92001, rev C1B1, serial# 1594431
Apr  4 23:44:35 xrated kernel: [    6.037316] tveeprom 1-0050: MAC address is 00:0d:fe:18:54:3f
Apr  4 23:44:35 xrated kernel: [    6.037321] tveeprom 1-0050: tuner model is Conexant_CX24109 (idx 111, type 4)
Apr  4 23:44:35 xrated kernel: [    6.037322] tveeprom 1-0050: TV standards ATSC/DVB Digital (eeprom 0x80)
Apr  4 23:44:35 xrated kernel: [    6.037324] tveeprom 1-0050: audio processor is CX883 (idx 32)
Apr  4 23:44:35 xrated kernel: [    6.037325] tveeprom 1-0050: decoder processor is CX883 (idx 22)
Apr  4 23:44:35 xrated kernel: [    6.037326] tveeprom 1-0050: has no radio, has IR receiver, has no IR transmitter
Apr  4 23:44:35 xrated kernel: [    6.037328] cx88[0]: hauppauge eeprom: model=92001
Apr  4 23:44:35 xrated kernel: [    6.063366] Registered IR keymap rc-hauppauge
Apr  4 23:44:35 xrated kernel: [    6.063515] input: cx88 IR (Hauppauge Nova-S-Plus  as /devices/pci0000:00/0000:00:1e.0/0000:0b:01.2/rc/rc0/input14
Apr  4 23:44:35 xrated kernel: [    6.063624] rc0: cx88 IR (Hauppauge Nova-S-Plus  as /devices/pci0000:00/0000:00:1e.0/0000:0b:01.2/rc/rc0
Apr  4 23:44:35 xrated kernel: [    6.063724] cx88[0]/2: cx2388x 8802 Driver Manager
Apr  4 23:44:35 xrated kernel: [    6.063747] cx88[0]/2: found at 0000:0b:01.2, rev: 5, irq: 16, latency: 64, mmio: 0xf6000000
Apr  4 23:44:35 xrated kernel: [    6.063870] cx88[0]/0: found at 0000:0b:01.0, rev: 5, irq: 16, latency: 64, mmio: 0xf4000000
Apr  4 23:44:35 xrated kernel: [    6.065681] IR NEC protocol handler initialized
Apr  4 23:44:35 xrated kernel: [    6.066826] wm8775 1-001b: chip found @ 0x36 (cx88[0])
Apr  4 23:44:35 xrated kernel: [    6.067485] cx88/2: cx2388x dvb driver version 0.0.9 loaded
Apr  4 23:44:35 xrated kernel: [    6.067487] cx88/2: registering cx8802 driver, type: dvb access: shared
Apr  4 23:44:35 xrated kernel: [    6.067489] cx88[0]/2: subsystem: 0070:9202, board: Hauppauge Nova-S-Plus DVB-S [card=37]
Apr  4 23:44:35 xrated kernel: [    6.067491] cx88[0]/2: cx2388x based DVB/ATSC card
Apr  4 23:44:35 xrated kernel: [    6.067492] cx8802_alloc_frontends() allocating 1 frontend(s)
Apr  4 23:44:35 xrated kernel: [    6.068105] IR RC5(x) protocol handler initialized
Apr  4 23:44:35 xrated kernel: [    6.069260] IR RC6 protocol handler initialized
Apr  4 23:44:35 xrated kernel: [    6.069562] CX24123: detected CX24123
Apr  4 23:44:35 xrated kernel: [    6.070247] IR JVC protocol handler initialized
Apr  4 23:44:35 xrated kernel: [    6.071217] IR Sony protocol handler initialized
Apr  4 23:44:35 xrated kernel: [    6.071955] DVB: registering new adapter (cx88[0])
Apr  4 23:44:35 xrated kernel: [    6.071957] DVB: registering adapter 0 frontend 0 (Conexant CX24123/CX24109)...
Apr  4 23:44:35 xrated kernel: [    6.072347] IR SANYO protocol handler initialized
Apr  4 23:44:35 xrated kernel: [    6.073548] input: MCE IR Keyboard/Mouse (cx88xx) as /devices/virtual/input/input15
Apr  4 23:44:35 xrated kernel: [    6.074476] IR MCE Keyboard/mouse protocol handler initialized
Apr  4 23:44:35 xrated kernel: [    6.075778] lirc_dev: IR Remote Control driver registered, major 250 
Apr  4 23:44:35 xrated kernel: [    6.076026] rc rc0: lirc_dev: driver ir-lirc-codec (cx88xx) registered at minor = 0
Apr  4 23:44:35 xrated kernel: [    6.076028] IR LIRC bridge handler initialized
Apr  4 23:44:35 xrated kernel: [    6.081790] cx88[0]/0: registered device video0 [v4l2]
Apr  4 23:44:35 xrated kernel: [    6.081880] cx88[0]/0: registered device vbi0
Apr  4 23:44:35 xrated kernel: [    6.081986] cx88[0]/1: CX88x/0: ALSA support for cx2388x boards

but a channel scan fails:

$ scan /usr/share/dvb/dvb-s/Astra-19.2E > channels.conf
scanning /usr/share/dvb/dvb-s/Astra-19.2E
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder 12551500 V 22000000 5
Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000 (tuning failed)

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!
ERROR: initial tuning failed
dumping lists (0 services)
Done.

$ dvbsnoop -s feinfo -pd 9
dvbsnoop V1.4.50 -- http://dvbsnoop.sourceforge.net/ 
   DEMUX : /dev/dvb/adapter0/demux0
   DVR   : /dev/dvb/adapter0/dvr0
   FRONTEND: /dev/dvb/adapter0/frontend0

---------------------------------------------------------
FrontEnd Info...
---------------------------------------------------------

Device: /dev/dvb/adapter0/frontend0

Basic capabilities:

    Name: "Conexant CX24123/CX24109"
    Frontend-type:       QPSK (DVB-S)
    Frequency (min):     950.000 MHz
    Frequency (max):     2150.000 MHz
    Frequency stepsiz:   1.011 MHz
    Frequency tolerance: 5.000 MHz
    Symbol rate (min):     1.000000 MSym/s
    Symbol rate (max):     45.000000 MSym/s
    Symbol rate tolerance: 0 ppm
    Notifier delay: 0 ms
    Frontend capabilities:
        auto inversion
        FEC 1/2
        FEC 2/3
        FEC 3/4
        FEC 4/5
        FEC 5/6
        FEC 6/7
        FEC 7/8
        FEC AUTO
        QPSK

Current parameters:

    Frequency:  1951.500 MHz
    Inversion:  OFF
    Symbol rate:  22.000000 MSym/s
    FEC:  FEC 7/8
$ dvb-fe-tool 
Device Conexant CX24123/CX24109 (/dev/dvb/adapter0/frontend0) capabilities:
        CAN_FEC_1_2 CAN_FEC_2_3 CAN_FEC_3_4 CAN_FEC_4_5 CAN_FEC_5_6 CAN_FEC_6_7 CAN_FEC_7_8 CAN_FEC_AUTO CAN_INVERSION_AUTO CAN_QPSK CAN_RECOVER 
DVB API Version 5.5, Current v5 delivery system: DVBS
Supported delivery system: [DVBS] 

I can watch arte with kaffeine, with vdr/vdr-sxfe just fine, but cannot change the channel.

vdr (1.6.0) doesn't detect any errors:

Apr  5 13:23:29 xrated vdr: [9177] switching to channel 9
Apr  5 13:23:29 xrated vdr: [9177] buffer stats: 0 (0%) used
Apr  5 13:23:29 xrated vdr: [9590] transfer thread started (pid=9177, tid=9590)
Apr  5 13:23:29 xrated vdr: [9588] TS buffer on device 1 thread ended (pid=9177, tid=9588)
Apr  5 13:23:29 xrated vdr: [9587] buffer stats: 0 (0%) used
Apr  5 13:23:29 xrated vdr: [9587] receiver on device 1 thread ended (pid=9177, tid=9587)
Apr  5 13:23:29 xrated vdr: [9591] receiver on device 1 thread started (pid=9177, tid=9591)
Apr  5 13:23:29 xrated vdr: [9592] TS buffer on device 1 thread started (pid=9177, tid=9592)
Apr  5 13:23:32 xrated vdr: [9590] transfer thread ended (pid=9177, tid=9590)
Apr  5 13:23:33 xrated vdr: [9177] switching to channel 8
Apr  5 13:23:33 xrated vdr: [9177] buffer stats: 0 (0%) used
Apr  5 13:23:33 xrated vdr: [9601] transfer thread started (pid=9177, tid=9601)
Apr  5 13:23:33 xrated vdr: [9592] TS buffer on device 1 thread ended (pid=9177, tid=9592)
Apr  5 13:23:33 xrated vdr: [9591] buffer stats: 0 (0%) used
Apr  5 13:23:33 xrated vdr: [9591] receiver on device 1 thread ended (pid=9177, tid=9591)
Apr  5 13:23:33 xrated vdr: [9602] receiver on device 1 thread started (pid=9177, tid=9602)
Apr  5 13:23:33 xrated vdr: [9603] TS buffer on device 1 thread started (pid=9177, tid=9603)
Apr  5 13:23:34 xrated vdr: [9601] [xine..put] Detected video size 720x576

but only on channel 8 it produces a video stream. EPG data seems to arrive properly.

On other systems, I'm using a slightly different card: a Hauppauge WinTV-HVR4000(Lite) DVB-S/S2, and the most obvious difference is, that this card loads a firmware, while this NOVA-S-Plus does not:

Mar  1 16:40:13 tyrex kernel: [   46.493929] cx24116_firmware_ondemand: Waiting for firmware upload (dvb-fe-cx24116.fw)...
Mar  1 16:40:13 tyrex kernel: [   46.503070] cx24116_firmware_ondemand: Waiting for firmware upload(2)...
Mar  1 16:40:18 tyrex kernel: [   51.708520] cx24116_load_firmware: FW version 1.26.90.0
Mar  1 16:40:18 tyrex kernel: [   51.708541] cx24116_firmware_ondemand: Firmware upload complete

The Nova-S-Plus also uses a different driver, the cx24123:

$ lsmod | grep cx
cx24123                23212  1 
cx88_dvb               34350  0 
cx88_vp3054_i2c        12961  1 cx88_dvb
videobuf_dvb           14093  1 cx88_dvb
dvb_core              114209  2 cx88_dvb,videobuf_dvb
cx88_alsa              18300  2 
snd_pcm               109370  4 snd_hda_intel,cx88_alsa,snd_hda_codec,snd_pcm_oss
cx8800                 38588  0 
cx8802                 23058  1 cx88_dvb
cx88xx                 88514  4 cx88_dvb,cx88_alsa,cx8800,cx8802
rc_core                31881  12 ir_kbd_i2c,ir_lirc_codec,ir_mce_kbd_decoder,ir_sanyo_decoder,ir_sony_decoder,ir_jvc_decoder,ir_rc6_decoder,ir_rc5_decoder,ir_nec_decoder,rc_hauppauge,cx88xx
i2c_algo_bit           13414  2 cx88_vp3054_i2c,cx88xx
tveeprom               21250  1 cx88xx
v4l2_common            16421  3 wm8775,cx8800,cx88xx
videodev              111307  5 uvcvideo,wm8775,cx8800,cx88xx,v4l2_common
videobuf_dma_sg        19306  5 cx88_dvb,cx88_alsa,cx8800,cx8802,cx88xx
snd                    91489  19 snd_hda_codec_realtek,snd_hda_intel,cx88_alsa,snd_pcm_oss,snd_hda_codec,snd_hwdep,snd_pcm,snd_seq,snd_seq_device,snd_timer,snd_mixer_oss
videobuf_core          30119  5 videobuf_dvb,cx8800,cx8802,cx88xx,videobuf_dma_sg
btcx_risc              13641  4 cx88_alsa,cx8800,cx8802,cx88xx

Does this behavior rings a bell for somebody here?

$ uname -a
Linux xrated 3.4.33-2.24-desktop #1 SMP PREEMPT Tue Feb 26 03:34:33 UTC 2013 (5f00a32) x86_64 x86_64 x86_64 GNU/Linux

Any idea, how to debug this any further?

Thanks in advance,
Pete

#1 lore raw
Quoted 3 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 4 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

The bug title is misleading -- the problem is actually that the card doesn't get configured properly to send the 22kHz tone for high-band transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent kernels:
https://bugzilla.kernel.org/attachment.cgi?id=21905&action=edit

Thanks,

Signature · 1 line
Adam Sampson <[email protected]>                         <http://offog.org/>
Tested-by your name
#2 lore raw

Em Fri, 05 Apr 2013 13:25:01 +0100
Adam Sampson <[email protected]> escreveu:

Quoted 14 lines
Quoted 3 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 4 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

Quoted 6 lines

The bug title is misleading -- the problem is actually that the card doesn't get configured properly to send the 22kHz tone for high-band transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent kernels:
https://bugzilla.kernel.org/attachment.cgi?id=21905&action=edit

Applying that patch would break support for all other devices with isl6421.

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not. The code only changes it for Hauppauge model 92001.

If it works, please answer this email with a:

For me to add it when merging the patch upstream.

Regards,
Mauro.

-

[PATCH] [media] cx88: kernel bz#9476: Fix tone setting for Nova-S+ model 92001

Hauppauge Nova-S-Plus DVB-S model 92001 does not lock on horizontal polarisation. According with the info provided at the BZ, model 92002 does.

The difference is that, on model 92001, the tone select is done via isl6421, while, on other devices, this is done via cx24123 code.

This patch adds a way to override the demod's set_tone at isl6421 driver. In order to avoid regressions, the override is enabled only for cx88 Nova S plus model 92001. For all other models and devices, the set_tone is provided by the demod driver.

Patch originally proposed at bz@9476[1] by Michel Meyers and John Donoghue but applying the original patch would break support for all other devices based on isl6421.

[1] https://bugzilla.kernel.org/show_bug.cgi?id=9476

drivers/media/common/b2c2/flexcop-fe-tuner.c +2 -2
index 850a6c6..7e14e90 100644
@@ -325,7 +325,7 @@ static int skystar2_rev27_attach(struct flexcop_device *fc,
 	/* enable no_base_addr - no repeated start when reading */
 	fc->fc_i2c_adap[2].no_base_addr = 1;
 	if (!dvb_attach(isl6421_attach, fc->fe, &fc->fc_i2c_adap[2].i2c_adap,
-			0x08, 1, 1)) {
+			0x08, 1, 1, false)) {
 		err("ISL6421 could NOT be attached");
 		goto fail_isl;
 	}
@@ -391,7 +391,7 @@ static int skystar2_rev28_attach(struct flexcop_device *fc,
 
 	fc->fc_i2c_adap[2].no_base_addr = 1;
 	if (!dvb_attach(isl6421_attach, fc->fe, &fc->fc_i2c_adap[2].i2c_adap,
-			0x08, 0, 0)) {
+			0x08, 0, 0, false)) {
 		err("ISL6421 could NOT be attached");
 		fc->fc_i2c_adap[2].no_base_addr = 0;
 		return 0;
drivers/media/dvb-frontends/isl6421.c +27 -1
index 0cb3f0f..c77002f 100644
@@ -89,6 +89,30 @@ static int isl6421_enable_high_lnb_voltage(struct dvb_frontend *fe, long arg)
 	return (i2c_transfer(isl6421->i2c, &msg, 1) == 1) ? 0 : -EIO;
 }
 
+static int isl6421_set_tone(struct dvb_frontend* fe, fe_sec_tone_mode_t tone)
+{
+	struct isl6421 *isl6421 = (struct isl6421 *) fe->sec_priv;
+	struct i2c_msg msg = { .addr = isl6421->i2c_addr, .flags = 0,
+			       .buf = &isl6421->config,
+			       .len = sizeof(isl6421->config) };
+
+	switch (tone) {
+	case SEC_TONE_ON:
+		isl6421->config |= ISL6421_ENT1;
+		break;
+	case SEC_TONE_OFF:
+		isl6421->config &= ~ISL6421_ENT1;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	isl6421->config |= isl6421->override_or;
+	isl6421->config &= isl6421->override_and;
+
+	return (i2c_transfer(isl6421->i2c, &msg, 1) == 1) ? 0 : -EIO;
+}
+
 static void isl6421_release(struct dvb_frontend *fe)
 {
 	/* power off */
@@ -100,7 +124,7 @@ static void isl6421_release(struct dvb_frontend *fe)
 }
 
 struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
-		   u8 override_set, u8 override_clear)
+		   u8 override_set, u8 override_clear, bool override_tone)
 {
 	struct isl6421 *isl6421 = kmalloc(sizeof(struct isl6421), GFP_KERNEL);
 	if (!isl6421)
@@ -131,6 +155,8 @@ struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter
 	/* override frontend ops */
 	fe->ops.set_voltage = isl6421_set_voltage;
 	fe->ops.enable_high_lnb_voltage = isl6421_enable_high_lnb_voltage;
+	if (override_tone)
+		fe->ops.set_tone = isl6421_set_tone;
 
 	return fe;
 }
drivers/media/dvb-frontends/isl6421.h +2 -2
index e7ca7d1..630e7f8 100644
@@ -42,10 +42,10 @@
 #if IS_ENABLED(CONFIG_DVB_ISL6421)
 /* override_set and override_clear control which system register bits (above) to always set & clear */
 extern struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
-			  u8 override_set, u8 override_clear);
+			  u8 override_set, u8 override_clear, bool override_tone);
 #else
 static inline struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
-						  u8 override_set, u8 override_clear)
+						  u8 override_set, u8 override_clear, bool override_tone)
 {
 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
 	return NULL;
drivers/media/pci/cx88/cx88-cards.c +1 -0
index e2e0b8f..07b700a 100644
@@ -2855,6 +2855,7 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data)
 	core->board.tuner_type = tv.tuner_type;
 	core->tuner_formats = tv.tuner_formats;
 	core->board.radio.type = tv.has_radio ? CX88_RADIO : 0;
+	core->model = tv.model;
 
 	/* Make sure we support the board model */
 	switch (tv.model)
drivers/media/pci/cx88/cx88-dvb.c +12 -4
index 672b267..053ed1b 100644
@@ -1042,7 +1042,7 @@ static int dvb_register(struct cx8802_dev *dev)
 			if (!dvb_attach(isl6421_attach,
 					fe0->dvb.frontend,
 					&dev->core->i2c_adap,
-					0x08, ISL6421_DCL, 0x00))
+					0x08, ISL6421_DCL, 0x00, false))
 				goto frontend_detach;
 		}
 		/* MFE frontend 2 */
@@ -1279,8 +1279,16 @@ static int dvb_register(struct cx8802_dev *dev)
 					       &hauppauge_novas_config,
 					       &core->i2c_adap);
 		if (fe0->dvb.frontend) {
+			bool override_tone;
+
+			if (core->model == 92001)
+				override_tone = true;
+			else
+				override_tone = false;
+
 			if (!dvb_attach(isl6421_attach, fe0->dvb.frontend,
-					&core->i2c_adap, 0x08, ISL6421_DCL, 0x00))
+					&core->i2c_adap, 0x08, ISL6421_DCL, 0x00,
+					override_tone))
 				goto frontend_detach;
 		}
 		break;
@@ -1403,7 +1411,7 @@ static int dvb_register(struct cx8802_dev *dev)
 			if (!dvb_attach(isl6421_attach,
 					fe0->dvb.frontend,
 					&dev->core->i2c_adap,
-					0x08, ISL6421_DCL, 0x00))
+					0x08, ISL6421_DCL, 0x00, false))
 				goto frontend_detach;
 		}
 		/* MFE frontend 2 */
@@ -1431,7 +1439,7 @@ static int dvb_register(struct cx8802_dev *dev)
 			if (!dvb_attach(isl6421_attach,
 					fe0->dvb.frontend,
 					&dev->core->i2c_adap,
-					0x08, ISL6421_DCL, 0x00))
+					0x08, ISL6421_DCL, 0x00, false))
 				goto frontend_detach;
 		}
 		break;
drivers/media/pci/cx88/cx88.h +1 -0
index eca02c2..4e29c9d 100644
@@ -334,6 +334,7 @@ struct cx88_core {
 	/* board name */
 	int                        nr;
 	char                       name[32];
+	u32			   model;
 
 	/* pci stuff */
 	int                        pci_bus;
drivers/media/pci/saa7134/saa7134-dvb.c +5 -3
index 27915e5..4527139 100644
@@ -1391,8 +1391,9 @@ static int dvb_init(struct saa7134_dev *dev)
 					wprintk("%s: Lifeview Trio, No tda826x found!\n", __func__);
 					goto detach_frontend;
 				}
-				if (dvb_attach(isl6421_attach, fe0->dvb.frontend, &dev->i2c_adap,
-										0x08, 0, 0) == NULL) {
+				if (dvb_attach(isl6421_attach, fe0->dvb.frontend,
+					       &dev->i2c_adap,
+					       0x08, 0, 0, false) == NULL) {
 					wprintk("%s: Lifeview Trio, No ISL6421 found!\n", __func__);
 					goto detach_frontend;
 				}
@@ -1509,7 +1510,8 @@ static int dvb_init(struct saa7134_dev *dev)
 				goto detach_frontend;
 			}
 			if (dvb_attach(isl6421_attach, fe0->dvb.frontend,
-				       &dev->i2c_adap, 0x08, 0, 0) == NULL) {
+				       &dev->i2c_adap,
+				       0x08, 0, 0, false) == NULL) {
 				wprintk("%s: No ISL6421 found!\n", __func__);
 				goto detach_frontend;
 			}
author Tested-by
#3 lore raw

Dear Mauro,

first of all, thank you for providing a proper fix that quickly.

Quoted 27 lines · On Freitag, 5. April 2013 13:18:54 Mauro Carvalho Chehab wrote:

Em Fri, 05 Apr 2013 13:25:01 +0100

Adam Sampson <[email protected]> escreveu:

Quoted 17 lines
Quoted 3 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 6 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

Quoted 6 lines

The bug title is misleading -- the problem is actually that the card doesn't get configured properly to send the 22kHz tone for high-band transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent kernels:
https://bugzilla.kernel.org/attachment.cgi?id=21905&action=edit

Quoted 6 lines

Applying that patch would break support for all other devices with isl6421.

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not. The code only changes it for Hauppauge model 92001.

Unfortunately, it appears to be more problematic. While the fix allows to scan the channel list, it is not complete (in another setup at the same dish (via multiswitch), vdrs channel list has about 1600 channels, while scan does collect 1138 only.

More importantly, a single channel (arte) is received with 0 BER and a S/N ratio of 99%, while all other channels produce more BER, eg. "Das Erste" with about 320 BER (SNR 99%, a few artifacts/distortions occasionally), "ZDF" about 6400 BER, (SNR drops down to 75%, constant distortions, and many channels doesn't produce anything beyond distortions with a video stream below 0.3 MBit/s and about 160000 BER. (measured using vdr femon plugin v. 1.6.7)

So, still no cigar, sorry.

I've tested both patches, just to be sure, with the same result. I had to relocate and refresh yours in order to apply it to 3.4, since the paths changed, result attached.

Quoted 7 lines

If it works, please answer this email with a:

For me to add it when merging the patch upstream.

Regards,
Mauro.

It looks like the idea is sound, but the logic is still missing something that prevents it from tuning most channels properly.

Cheers,
Pete

From: Mauro Carvalho Chehab <[email protected]>
Subject: [PATCH] [media] cx88: kernel bz#9476: Fix tone setting for Nova-S+ model 92001
References: https://bugzilla.kernel.org/show_bug.cgi?id=9476
Patch-mainline: pending

Hauppauge Nova-S-Plus DVB-S model 92001 does not lock on horizontal polarisation. According with the info provided at the BZ, model 92002 does.

The difference is that, on model 92001, the tone select is done via isl6421, while, on other devices, this is done via cx24123 code.

This patch adds a way to override the demod's set_tone at isl6421 driver. In order to avoid regressions, the override is enabled only for cx88 Nova S plus model 92001. For all other models and devices, the set_tone is provided by the demod driver.

Patch originally proposed at bz@9476[1] by Michel Meyers and John Donoghue but applying the original patch would break support for all other devices based on isl6421.

[1] https://bugzilla.kernel.org/show_bug.cgi?id=9476

---
 drivers/media/dvb/b2c2/flexcop-fe-tuner.c |    4 ++--
 drivers/media/dvb/frontends/isl6421.c     |   28 +++++++++++++++++++++++++++-
 drivers/media/dvb/frontends/isl6421.h     |    4 ++--
 drivers/media/video/cx88/cx88-cards.c     |    1 +
 drivers/media/video/cx88/cx88-dvb.c       |   16 ++++++++++++----
 drivers/media/video/cx88/cx88.h           |    1 +
 drivers/media/video/saa7134/saa7134-dvb.c |    8 +++++---
 7 files changed, 50 insertions(+), 12 deletions(-)
drivers/media/dvb/b2c2/flexcop-fe-tuner.c +2 -2
@@ -325,7 +325,7 @@ static int skystar2_rev27_attach(struct
 	/* enable no_base_addr - no repeated start when reading */
 	fc->fc_i2c_adap[2].no_base_addr = 1;
 	if (!dvb_attach(isl6421_attach, fc->fe, &fc->fc_i2c_adap[2].i2c_adap,
-			0x08, 1, 1)) {
+			0x08, 1, 1, false)) {
 		err("ISL6421 could NOT be attached");
 		goto fail_isl;
 	}
@@ -391,7 +391,7 @@ static int skystar2_rev28_attach(struct
 
 	fc->fc_i2c_adap[2].no_base_addr = 1;
 	if (!dvb_attach(isl6421_attach, fc->fe, &fc->fc_i2c_adap[2].i2c_adap,
-			0x08, 0, 0)) {
+			0x08, 0, 0, false)) {
 		err("ISL6421 could NOT be attached");
 		fc->fc_i2c_adap[2].no_base_addr = 0;
 		return 0;
drivers/media/dvb/frontends/isl6421.c +27 -1
@@ -89,6 +89,30 @@ static int isl6421_enable_high_lnb_volta
 	return (i2c_transfer(isl6421->i2c, &msg, 1) == 1) ? 0 : -EIO;
 }
 
+static int isl6421_set_tone(struct dvb_frontend* fe, fe_sec_tone_mode_t tone)
+{
+	struct isl6421 *isl6421 = (struct isl6421 *) fe->sec_priv;
+	struct i2c_msg msg = { .addr = isl6421->i2c_addr, .flags = 0,
+			       .buf = &isl6421->config,
+			       .len = sizeof(isl6421->config) };
+
+	switch (tone) {
+	case SEC_TONE_ON:
+		isl6421->config |= ISL6421_ENT1;
+		break;
+	case SEC_TONE_OFF:
+		isl6421->config &= ~ISL6421_ENT1;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	isl6421->config |= isl6421->override_or;
+	isl6421->config &= isl6421->override_and;
+
+	return (i2c_transfer(isl6421->i2c, &msg, 1) == 1) ? 0 : -EIO;
+}
+
 static void isl6421_release(struct dvb_frontend *fe)
 {
 	/* power off */
@@ -100,7 +124,7 @@ static void isl6421_release(struct dvb_f
 }
 
 struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
-		   u8 override_set, u8 override_clear)
+		   u8 override_set, u8 override_clear, bool override_tone)
 {
 	struct isl6421 *isl6421 = kmalloc(sizeof(struct isl6421), GFP_KERNEL);
 	if (!isl6421)
@@ -131,6 +155,8 @@ struct dvb_frontend *isl6421_attach(stru
 	/* override frontend ops */
 	fe->ops.set_voltage = isl6421_set_voltage;
 	fe->ops.enable_high_lnb_voltage = isl6421_enable_high_lnb_voltage;
+	if (override_tone)
+		fe->ops.set_tone = isl6421_set_tone;
 
 	return fe;
 }
drivers/media/dvb/frontends/isl6421.h +2 -2
@@ -42,10 +42,10 @@
 #if defined(CONFIG_DVB_ISL6421) || (defined(CONFIG_DVB_ISL6421_MODULE) && defined(MODULE))
 /* override_set and override_clear control which system register bits (above) to always set & clear */
 extern struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
-			  u8 override_set, u8 override_clear);
+			  u8 override_set, u8 override_clear, bool override_tone);
 #else
 static inline struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
-						  u8 override_set, u8 override_clear)
+						  u8 override_set, u8 override_clear, bool override_tone)
 {
 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
 	return NULL;
drivers/media/video/cx88/cx88-cards.c +1 -0
@@ -2855,6 +2855,7 @@ static void hauppauge_eeprom(struct cx88
 	core->board.tuner_type = tv.tuner_type;
 	core->tuner_formats = tv.tuner_formats;
 	core->board.radio.type = tv.has_radio ? CX88_RADIO : 0;
+	core->model = tv.model;
 
 	/* Make sure we support the board model */
 	switch (tv.model)
drivers/media/video/cx88/cx88-dvb.c +12 -4
@@ -1036,7 +1036,7 @@ static int dvb_register(struct cx8802_de
 			if (!dvb_attach(isl6421_attach,
 					fe0->dvb.frontend,
 					&dev->core->i2c_adap,
-					0x08, ISL6421_DCL, 0x00))
+					0x08, ISL6421_DCL, 0x00, false))
 				goto frontend_detach;
 		}
 		/* MFE frontend 2 */
@@ -1273,8 +1273,16 @@ static int dvb_register(struct cx8802_de
 					       &hauppauge_novas_config,
 					       &core->i2c_adap);
 		if (fe0->dvb.frontend) {
+			bool override_tone;
+
+			if (core->model == 92001)
+				override_tone = true;
+			else
+				override_tone = false;
+
 			if (!dvb_attach(isl6421_attach, fe0->dvb.frontend,
-					&core->i2c_adap, 0x08, ISL6421_DCL, 0x00))
+					&core->i2c_adap, 0x08, ISL6421_DCL, 0x00,
+					override_tone))
 				goto frontend_detach;
 		}
 		break;
@@ -1397,7 +1405,7 @@ static int dvb_register(struct cx8802_de
 			if (!dvb_attach(isl6421_attach,
 					fe0->dvb.frontend,
 					&dev->core->i2c_adap,
-					0x08, ISL6421_DCL, 0x00))
+					0x08, ISL6421_DCL, 0x00, false))
 				goto frontend_detach;
 		}
 		/* MFE frontend 2 */
@@ -1425,7 +1433,7 @@ static int dvb_register(struct cx8802_de
 			if (!dvb_attach(isl6421_attach,
 					fe0->dvb.frontend,
 					&dev->core->i2c_adap,
-					0x08, ISL6421_DCL, 0x00))
+					0x08, ISL6421_DCL, 0x00, false))
 				goto frontend_detach;
 		}
 		break;
drivers/media/video/cx88/cx88.h +1 -0
@@ -342,6 +342,7 @@ struct cx88_core {
 	/* board name */
 	int                        nr;
 	char                       name[32];
+	u32			   model;
 
 	/* pci stuff */
 	int                        pci_bus;
drivers/media/video/saa7134/saa7134-dvb.c +5 -3
@@ -1374,8 +1374,9 @@ static int dvb_init(struct saa7134_dev *
 					wprintk("%s: Lifeview Trio, No tda826x found!\n", __func__);
 					goto dettach_frontend;
 				}
-				if (dvb_attach(isl6421_attach, fe0->dvb.frontend, &dev->i2c_adap,
-										0x08, 0, 0) == NULL) {
+				if (dvb_attach(isl6421_attach, fe0->dvb.frontend,
+					       &dev->i2c_adap,
+					       0x08, 0, 0, false) == NULL) {
 					wprintk("%s: Lifeview Trio, No ISL6421 found!\n", __func__);
 					goto dettach_frontend;
 				}
@@ -1492,7 +1493,8 @@ static int dvb_init(struct saa7134_dev *
 				goto dettach_frontend;
 			}
 			if (dvb_attach(isl6421_attach, fe0->dvb.frontend,
-				       &dev->i2c_adap, 0x08, 0, 0) == NULL) {
+				       &dev->i2c_adap,
+				       0x08, 0, 0, false) == NULL) {
 				wprintk("%s: No ISL6421 found!\n", __func__);
 				goto dettach_frontend;
 			}
#4 lore raw

Em Sat, 06 Apr 2013 12:20:41 +0200
Hans-Peter Jansen <[email protected]> escreveu:

Quoted 61 lines

Dear Mauro,

first of all, thank you for providing a proper fix that quickly.

Quoted 27 lines · On Freitag, 5. April 2013 13:18:54 Mauro Carvalho Chehab wrote:

Em Fri, 05 Apr 2013 13:25:01 +0100

Adam Sampson <[email protected]> escreveu:

Quoted 17 lines
Quoted 3 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 6 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

Quoted 6 lines

The bug title is misleading -- the problem is actually that the card doesn't get configured properly to send the 22kHz tone for high-band transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent kernels:
https://bugzilla.kernel.org/attachment.cgi?id=21905&action=edit

Quoted 6 lines

Applying that patch would break support for all other devices with isl6421.

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not. The code only changes it for Hauppauge model 92001.

Unfortunately, it appears to be more problematic. While the fix allows to scan the channel list, it is not complete (in another setup at the same dish (via multiswitch), vdrs channel list has about 1600 channels, while scan does collect 1138 only.

More importantly, a single channel (arte) is received with 0 BER and a S/N ratio of 99%, while all other channels produce more BER, eg. "Das Erste" with about 320 BER (SNR 99%, a few artifacts/distortions occasionally), "ZDF" about 6400 BER, (SNR drops down to 75%, constant distortions, and many channels doesn't produce anything beyond distortions with a video stream below 0.3 MBit/s and about 160000 BER. (measured using vdr femon plugin v. 1.6.7)

So, still no cigar, sorry.

I've tested both patches, just to be sure, with the same result. I had to relocate and refresh yours in order to apply it to 3.4, since the paths changed, result attached.

Quoted 3 lines

If it works, please answer this email with a:

Quoted 7 lines
Quoted 4 lines

For me to add it when merging the patch upstream.

Regards,
Mauro.

It looks like the idea is sound, but the logic is still missing something that prevents it from tuning most channels properly.

Well, what it is expected from this patch is to be able of seeing channels with H and V polarization. Nothing more, nothing less.

Quoted 1 line

From what I understood, you're now seeing more than just one channel,

so, it is likely part of the fix, right?

If are there any other issues, then it it would require other fixes, likely at cx24123 frontend. My guess is that it could be due to some precision loss maybe at cx24123_set_symbolrate(). It helps if you could check if the channels that are more problematic have a higher or a lower bit rate. It probably makes sense to change the code there to use u64 and asm/div64.h, in order to allow the calculus to have more precision. I'll try to write such patch.

With regards to this fix, could you please confirm that you can now get channels with both polarizations?

Thanks,
Mauro

author Tested-by
#5 lore raw
Quoted 66 lines · On Samstag, 6. April 2013 10:37:52 you wrote:

Em Sat, 06 Apr 2013 12:20:41 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 63 lines

Dear Mauro,

first of all, thank you for providing a proper fix that quickly.

Quoted 27 lines · On Freitag, 5. April 2013 13:18:54 Mauro Carvalho Chehab wrote:

Em Fri, 05 Apr 2013 13:25:01 +0100

Adam Sampson <[email protected]> escreveu:

Quoted 17 lines
Quoted 3 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 6 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

Quoted 6 lines

The bug title is misleading -- the problem is actually that the card doesn't get configured properly to send the 22kHz tone for high-band transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent kernels:
https://bugzilla.kernel.org/attachment.cgi?id=21905&action=edit

Quoted 6 lines

Applying that patch would break support for all other devices with isl6421.

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not. The code only changes it for Hauppauge model 92001.

Unfortunately, it appears to be more problematic. While the fix allows to scan the channel list, it is not complete (in another setup at the same dish (via multiswitch), vdrs channel list has about 1600 channels, while scan does collect 1138 only.

More importantly, a single channel (arte) is received with 0 BER and a S/N ratio of 99%, while all other channels produce more BER, eg. "Das Erste" with about 320 BER (SNR 99%, a few artifacts/distortions occasionally), "ZDF" about 6400 BER, (SNR drops down to 75%, constant distortions, and many channels doesn't produce anything beyond distortions with a video stream below 0.3 MBit/s and about 160000 BER. (measured using vdr femon plugin v. 1.6.7)

So, still no cigar, sorry.

I've tested both patches, just to be sure, with the same result. I had to relocate and refresh yours in order to apply it to 3.4, since the paths changed, result attached.

Quoted 5 lines

If it works, please answer this email with a:

For me to add it when merging the patch upstream.

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

Regards,
Mauro.

It looks like the idea is sound, but the logic is still missing something that prevents it from tuning most channels properly.

Well, what it is expected from this patch is to be able of seeing channels with H and V polarization. Nothing more, nothing less.

Okay. Yes, I do.

Quoted 2 lines

From what I understood, you're now seeing more than just one channel, so, it is likely part of the fix, right?

Yes.

Quoted 7 lines

If are there any other issues, then it it would require other fixes, likely at cx24123 frontend. My guess is that it could be due to some precision loss maybe at cx24123_set_symbolrate(). It helps if you could check if the channels that are more problematic have a higher or a lower bit rate. It probably makes sense to change the code there to use u64 and asm/div64.h, in order to allow the calculus to have more precision. I'll try to write such patch.

..that I'm testing right now. Build is on the way.

You wrote and published the fix in less then 8 minutes. Wow, unbelievable.

Since I use a rpm build of an otherwise unchanged distribution kernel, the build will take slightly longer, unfortunately..

Quoted 2 lines

With regards to this fix, could you please confirm that you can now get channels with both polarizations?

Yes, confirmed.

Thanks Mauro for the great support.

Cheers,
Pete

#6 lore raw

Em Sat, 06 Apr 2013 19:26:23 +0200
Hans-Peter Jansen <[email protected]> escreveu:

Quoted 76 lines · On Samstag, 6. April 2013 10:37:52 you wrote:
Quoted 66 lines

Em Sat, 06 Apr 2013 12:20:41 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 63 lines

Dear Mauro,

first of all, thank you for providing a proper fix that quickly.

Quoted 27 lines · On Freitag, 5. April 2013 13:18:54 Mauro Carvalho Chehab wrote:

Em Fri, 05 Apr 2013 13:25:01 +0100

Adam Sampson <[email protected]> escreveu:

Quoted 17 lines
Quoted 3 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 6 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

Quoted 6 lines

The bug title is misleading -- the problem is actually that the card doesn't get configured properly to send the 22kHz tone for high-band transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent kernels:
https://bugzilla.kernel.org/attachment.cgi?id=21905&action=edit

Quoted 6 lines

Applying that patch would break support for all other devices with isl6421.

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not. The code only changes it for Hauppauge model 92001.

Unfortunately, it appears to be more problematic. While the fix allows to scan the channel list, it is not complete (in another setup at the same dish (via multiswitch), vdrs channel list has about 1600 channels, while scan does collect 1138 only.

More importantly, a single channel (arte) is received with 0 BER and a S/N ratio of 99%, while all other channels produce more BER, eg. "Das Erste" with about 320 BER (SNR 99%, a few artifacts/distortions occasionally), "ZDF" about 6400 BER, (SNR drops down to 75%, constant distortions, and many channels doesn't produce anything beyond distortions with a video stream below 0.3 MBit/s and about 160000 BER. (measured using vdr femon plugin v. 1.6.7)

So, still no cigar, sorry.

I've tested both patches, just to be sure, with the same result. I had to relocate and refresh yours in order to apply it to 3.4, since the paths changed, result attached.

Quoted 5 lines

If it works, please answer this email with a:

For me to add it when merging the patch upstream.

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

Regards,
Mauro.

It looks like the idea is sound, but the logic is still missing something that prevents it from tuning most channels properly.

Well, what it is expected from this patch is to be able of seeing channels with H and V polarization. Nothing more, nothing less.

Quoted 6 lines

Okay. Yes, I do.

Quoted 2 lines

From what I understood, you're now seeing more than just one channel, so, it is likely part of the fix, right?

Yes.

Ok, I'll likely be merging it by Monday.

Quoted 9 lines
Quoted 8 lines

If are there any other issues, then it it would require other fixes, likely at cx24123 frontend. My guess is that it could be due to some precision loss maybe at cx24123_set_symbolrate(). It helps if you could check if the channels that are more problematic have a higher or a lower bit rate. It probably makes sense to change the code there to use u64 and asm/div64.h, in order to allow the calculus to have more precision. I'll try to write such patch.

Quoted 3 lines

..that I'm testing right now. Build is on the way.

You wrote and published the fix in less then 8 minutes. Wow, unbelievable.

Well, the patch is really trivial. If it works or not, only the tests can tell ;) I have one Nova-S model here, but unfortunately I don't have a satellite dish anymore, so I can't test.

Quoted 2 lines

Since I use a rpm build of an otherwise unchanged distribution kernel, the build will take slightly longer, unfortunately..

Yeah, rebuilding the entire kernel with rpm takes some time ;)

Quoted 8 lines
Quoted 2 lines

With regards to this fix, could you please confirm that you can now get channels with both polarizations?

Yes, confirmed.

Thanks Mauro for the great support.

Thanks for testing it!

Regards,
Mauro

#7 lore raw
Quoted 93 lines · On Samstag, 6. April 2013 16:26:32 Mauro Carvalho Chehab wrote:

Em Sat, 06 Apr 2013 19:26:23 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 90 lines · On Samstag, 6. April 2013 10:37:52 you wrote:
Quoted 88 lines

Em Sat, 06 Apr 2013 12:20:41 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 74 lines

Dear Mauro,

first of all, thank you for providing a proper fix that quickly.

Quoted 30 lines · On Freitag, 5. April 2013 13:18:54 Mauro Carvalho Chehab wrote:

Em Fri, 05 Apr 2013 13:25:01 +0100

Adam Sampson <[email protected]> escreveu:

Quoted 18 lines
Quoted 4 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system
upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 6 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

Quoted 8 lines

The bug title is misleading -- the problem is actually that the card
doesn't get configured properly to send the 22kHz tone for high-band
transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent kernels:
https://bugzilla.kernel.org/attachment.cgi?id=21905&action=edit

Quoted 6 lines

Applying that patch would break support for all other devices with isl6421.

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not. The code only changes it for Hauppauge model 92001.

Unfortunately, it appears to be more problematic. While the fix allows to
scan the channel list, it is not complete (in another setup at the same
dish (via multiswitch), vdrs channel list has about 1600 channels, while
scan does collect 1138 only.

More importantly, a single channel (arte) is received with 0 BER and a S/N
ratio of 99%, while all other channels produce more BER, eg. "Das Erste"
with about 320 BER (SNR 99%, a few artifacts/distortions occasionally),
"ZDF" about 6400 BER, (SNR drops down to 75%, constant distortions, and
many channels doesn't produce anything beyond distortions with a video stream below 0.3 MBit/s and about 160000 BER. (measured using vdr femon
plugin v. 1.6.7)

So, still no cigar, sorry.

I've tested both patches, just to be sure, with the same result. I had to
relocate and refresh yours in order to apply it to 3.4, since the paths
changed, result attached.

Quoted 3 lines

If it works, please answer this email with a:

Quoted 8 lines
Quoted 4 lines

For me to add it when merging the patch upstream.

Regards,
Mauro.

It looks like the idea is sound, but the logic is still missing something
that prevents it from tuning most channels properly.

Well, what it is expected from this patch is to be able of seeing channels with H and V polarization. Nothing more, nothing less.

Quoted 8 lines
Quoted 6 lines

Okay. Yes, I do.

Quoted 2 lines

From what I understood, you're now seeing more than just one channel, so, it is likely part of the fix, right?

Yes.

Ok, I'll likely be merging it by Monday.

Since it fixes the Nova-S-Plus 92001 model for some users, that's great.

Quoted 8 lines
Quoted 8 lines
Quoted 7 lines

If are there any other issues, then it it would require other fixes, likely at cx24123 frontend. My guess is that it could be due to some precision loss maybe at cx24123_set_symbolrate(). It helps if you could check if the channels that are more problematic have a higher or a lower bit rate. It probably makes sense to change the code there to use u64 and asm/div64.h, in order to allow the calculus to have more precision. I'll try to write such patch.

Quoted 7 lines
Quoted 3 lines

..that I'm testing right now. Build is on the way.

You wrote and published the fix in less then 8 minutes. Wow, unbelievable.

Well, the patch is really trivial. If it works or not, only the tests can tell ;) I have one Nova-S model here, but unfortunately I don't have a satellite dish anymore, so I can't test.

That's a pity. Bad news: no changes. I double checked, that the new cx24123 patch was applied. Unfortunately it doesn't help. The behavior is unchanged from what I can see.

Here's the debugging output of the cx24123 module with comments:

# tune in the good channel (arte):
Apr  6 22:04:48 xrated kernel: [ 5385.768351] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:04:48 xrated kernel: [ 5385.768410] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:04:48 xrated kernel: [ 5385.784365] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:04:48 xrated kernel: [ 5385.923227] CX24123: cx24123_initfe: init frontend
Apr  6 22:04:48 xrated kernel: [ 5385.947033] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:04:48 xrated kernel: [ 5386.054894] CX24123: cx24123_set_frontend: 
Apr  6 22:04:48 xrated kernel: [ 5386.056399] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:04:48 xrated kernel: [ 5386.058834] CX24123: cx24123_set_fec: set FEC to 5/6
Apr  6 22:04:48 xrated kernel: [ 5386.063176] CX24123: cx24123_set_symbolrate: srate=22000000, ratio=0x0037b3a3, sample_rate=50555000 sample_gain=1
Apr  6 22:04:48 xrated kernel: [ 5386.063179] CX24123: cx24123_pll_tune: frequency=993750
Apr  6 22:04:48 xrated kernel: [ 5386.063181] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:04:48 xrated kernel: [ 5386.070035] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:04:48 xrated kernel: [ 5386.081737] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000040
Apr  6 22:04:48 xrated kernel: [ 5386.088353] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f47ad
Apr  6 22:04:48 xrated kernel: [ 5386.096649] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=64, pll=2049965
Apr  6 22:04:48 xrated kernel: [ 5386.201464] CX24123: cx24123_get_frontend: 
Apr  6 22:04:48 xrated kernel: [ 5386.202165] CX24123: cx24123_get_inversion: read inversion on
# everything is fine, show a perfect stream for 17 sec, now switch to "Das Erste"
# the second best channel:
Apr  6 22:05:05 xrated kernel: [ 5402.838345] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:05:05 xrated kernel: [ 5402.838364] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:05:05 xrated kernel: [ 5402.844995] CX24123: cx24123_initfe: init frontend
Apr  6 22:05:05 xrated kernel: [ 5402.868926] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:05:05 xrated kernel: [ 5403.022665] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:05:05 xrated kernel: [ 5403.130032] CX24123: cx24123_set_frontend: 
Apr  6 22:05:05 xrated kernel: [ 5403.131587] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:05:05 xrated kernel: [ 5403.134147] CX24123: cx24123_set_fec: set FEC to 3/4
Apr  6 22:05:05 xrated kernel: [ 5403.138527] CX24123: cx24123_set_symbolrate: srate=27500000, ratio=0x003a05ca, sample_rate=60666000 sample_gain=1
Apr  6 22:05:05 xrated kernel: [ 5403.138587] CX24123: cx24123_pll_tune: frequency=1236500
Apr  6 22:05:05 xrated kernel: [ 5403.138639] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:05:05 xrated kernel: [ 5403.145421] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:05:05 xrated kernel: [ 5403.152203] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000201
Apr  6 22:05:05 xrated kernel: [ 5403.158857] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f44c6
Apr  6 22:05:05 xrated kernel: [ 5403.167529] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=513, pll=2049222
Apr  6 22:05:05 xrated kernel: [ 5403.274309] CX24123: cx24123_get_frontend: 
Apr  6 22:05:05 xrated kernel: [ 5403.275020] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:08 xrated kernel: [ 5406.606664] CX24123: cx24123_get_frontend: 
Apr  6 22:05:08 xrated kernel: [ 5406.607375] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:12 xrated kernel: [ 5409.935414] CX24123: cx24123_get_frontend: 
Apr  6 22:05:12 xrated kernel: [ 5409.936213] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:13 xrated kernel: [ 5411.148546] CX24123: cx24123_get_frontend: 
Apr  6 22:05:13 xrated kernel: [ 5411.149258] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:14 xrated kernel: [ 5412.059054] CX24123: cx24123_get_frontend: 
Apr  6 22:05:14 xrated kernel: [ 5412.059817] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:14 xrated kernel: [ 5412.463575] CX24123: cx24123_get_frontend: 
Apr  6 22:05:14 xrated kernel: [ 5412.464279] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:17 xrated kernel: [ 5414.885746] CX24123: cx24123_get_frontend: 
Apr  6 22:05:17 xrated kernel: [ 5414.886509] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:18 xrated kernel: [ 5415.997814] CX24123: cx24123_get_frontend: 
Apr  6 22:05:18 xrated kernel: [ 5415.998610] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:18 xrated kernel: [ 5416.604004] CX24123: cx24123_get_frontend: 
Apr  6 22:05:18 xrated kernel: [ 5416.604773] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:19 xrated kernel: [ 5417.513528] CX24123: cx24123_get_frontend: 
Apr  6 22:05:19 xrated kernel: [ 5417.514234] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:21 xrated kernel: [ 5418.825570] CX24123: cx24123_get_frontend: 
Apr  6 22:05:21 xrated kernel: [ 5418.826270] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:21 xrated kernel: [ 5419.533488] CX24123: cx24123_get_frontend: 
Apr  6 22:05:21 xrated kernel: [ 5419.534201] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:23 xrated kernel: [ 5420.846369] CX24123: cx24123_get_frontend: 
Apr  6 22:05:23 xrated kernel: [ 5420.847081] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:23 xrated kernel: [ 5421.050152] CX24123: cx24123_get_frontend: 
Apr  6 22:05:23 xrated kernel: [ 5421.050888] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:23 xrated kernel: [ 5421.354549] CX24123: cx24123_get_frontend: 
Apr  6 22:05:23 xrated kernel: [ 5421.355253] CX24123: cx24123_get_inversion: read inversion on
# the distortion is visible here by the repeated cx24123_get_frontend/cx24123_get_inversion
# invocations, some visible distortions, switch to a damaged one (ZDF):
Apr  6 22:05:23 xrated kernel: [ 5421.454611] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:05:23 xrated kernel: [ 5421.454639] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:05:23 xrated kernel: [ 5421.455336] CX24123: cx24123_initfe: init frontend
Apr  6 22:05:23 xrated kernel: [ 5421.492320] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:05:23 xrated kernel: [ 5421.647452] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:05:24 xrated kernel: [ 5421.754847] CX24123: cx24123_set_frontend: 
Apr  6 22:05:24 xrated kernel: [ 5421.756322] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:05:24 xrated kernel: [ 5421.758759] CX24123: cx24123_set_fec: set FEC to 3/4
Apr  6 22:05:24 xrated kernel: [ 5421.763023] CX24123: cx24123_set_symbolrate: srate=27500000, ratio=0x003a05ca, sample_rate=60666000 sample_gain=1
Apr  6 22:05:24 xrated kernel: [ 5421.763026] CX24123: cx24123_pll_tune: frequency=1353500
Apr  6 22:05:24 xrated kernel: [ 5421.763027] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:05:24 xrated kernel: [ 5421.769560] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:05:24 xrated kernel: [ 5421.775971] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000202
Apr  6 22:05:24 xrated kernel: [ 5421.782794] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f453a
Apr  6 22:05:24 xrated kernel: [ 5421.791368] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=514, pll=2049338
Apr  6 22:05:24 xrated kernel: [ 5421.895674] CX24123: cx24123_get_frontend: 
Apr  6 22:05:24 xrated kernel: [ 5421.896426] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:24 xrated kernel: [ 5422.099346] CX24123: cx24123_get_frontend: 
Apr  6 22:05:24 xrated kernel: [ 5422.100121] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:24 xrated kernel: [ 5422.504649] CX24123: cx24123_get_frontend: 
Apr  6 22:05:24 xrated kernel: [ 5422.505463] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:25 xrated kernel: [ 5423.211648] CX24123: cx24123_get_frontend: 
Apr  6 22:05:25 xrated kernel: [ 5423.212380] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:25 xrated kernel: [ 5423.415355] CX24123: cx24123_get_frontend: 
Apr  6 22:05:25 xrated kernel: [ 5423.416159] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:25 xrated kernel: [ 5423.619044] CX24123: cx24123_get_frontend: 
Apr  6 22:05:25 xrated kernel: [ 5423.619807] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:26 xrated kernel: [ 5424.326841] CX24123: cx24123_get_frontend: 
Apr  6 22:05:26 xrated kernel: [ 5424.327649] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:27 xrated kernel: [ 5425.338309] CX24123: cx24123_get_frontend: 
Apr  6 22:05:27 xrated kernel: [ 5425.339021] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:28 xrated kernel: [ 5425.742663] CX24123: cx24123_get_frontend: 
Apr  6 22:05:28 xrated kernel: [ 5425.743429] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:28 xrated kernel: [ 5426.148028] CX24123: cx24123_get_frontend: 
Apr  6 22:05:28 xrated kernel: [ 5426.148735] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:28 xrated kernel: [ 5426.653281] CX24123: cx24123_get_frontend: 
Apr  6 22:05:28 xrated kernel: [ 5426.653996] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:29 xrated kernel: [ 5426.857045] CX24123: cx24123_get_frontend: 
Apr  6 22:05:29 xrated kernel: [ 5426.858245] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:29 xrated kernel: [ 5427.061556] CX24123: cx24123_get_frontend: 
Apr  6 22:05:29 xrated kernel: [ 5427.062310] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:29 xrated kernel: [ 5427.365074] CX24123: cx24123_get_frontend: 
Apr  6 22:05:29 xrated kernel: [ 5427.365795] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:30 xrated kernel: [ 5427.870355] CX24123: cx24123_get_frontend: 
Apr  6 22:05:30 xrated kernel: [ 5427.871059] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:31 xrated kernel: [ 5428.678088] CX24123: cx24123_get_frontend: 
Apr  6 22:05:31 xrated kernel: [ 5428.678827] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:31 xrated kernel: [ 5428.982453] CX24123: cx24123_get_frontend: 
Apr  6 22:05:31 xrated kernel: [ 5428.983162] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:31 xrated kernel: [ 5429.387082] CX24123: cx24123_get_frontend: 
Apr  6 22:05:31 xrated kernel: [ 5429.387844] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:32 xrated kernel: [ 5429.792367] CX24123: cx24123_get_frontend: 
Apr  6 22:05:32 xrated kernel: [ 5429.793081] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:32 xrated kernel: [ 5430.097632] CX24123: cx24123_get_frontend: 
Apr  6 22:05:32 xrated kernel: [ 5430.098404] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:33 xrated kernel: [ 5430.804750] CX24123: cx24123_get_frontend: 
Apr  6 22:05:33 xrated kernel: [ 5430.805466] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:33 xrated kernel: [ 5431.210089] CX24123: cx24123_get_frontend: 
Apr  6 22:05:33 xrated kernel: [ 5431.210855] CX24123: cx24123_get_inversion: read inversion on
# the about 2-3 cx24123_get_frontend/cx24123_get_inversion invocations per 
# second document the heavy distortions here, now 3sat, a little less 
# distortion, compared to above
Apr  6 22:06:04 xrated kernel: [ 5462.126946] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:06:04 xrated kernel: [ 5462.126975] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:06:04 xrated kernel: [ 5462.142941] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:06:04 xrated kernel: [ 5462.282574] CX24123: cx24123_initfe: init frontend
Apr  6 22:06:04 xrated kernel: [ 5462.306488] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:06:04 xrated kernel: [ 5462.413161] CX24123: cx24123_set_frontend: 
Apr  6 22:06:04 xrated kernel: [ 5462.414665] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:06:04 xrated kernel: [ 5462.417157] CX24123: cx24123_set_fec: set FEC to 5/6
Apr  6 22:06:04 xrated kernel: [ 5462.421438] CX24123: cx24123_set_symbolrate: srate=22000000, ratio=0x0037b3a3, sample_rate=50555000 sample_gain=1
Apr  6 22:06:04 xrated kernel: [ 5462.421445] CX24123: cx24123_pll_tune: frequency=1944750
Apr  6 22:06:04 xrated kernel: [ 5462.421449] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:06:04 xrated kernel: [ 5462.427984] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:06:04 xrated kernel: [ 5462.434758] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000220
Apr  6 22:06:04 xrated kernel: [ 5462.441438] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f4783
Apr  6 22:06:04 xrated kernel: [ 5462.450134] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=544, pll=2049923
Apr  6 22:06:05 xrated kernel: [ 5462.655630] CX24123: cx24123_get_frontend: 
Apr  6 22:06:05 xrated kernel: [ 5462.656353] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:06 xrated kernel: [ 5464.572700] CX24123: cx24123_get_frontend: 
Apr  6 22:06:06 xrated kernel: [ 5464.573454] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:07 xrated kernel: [ 5465.482194] CX24123: cx24123_get_frontend: 
Apr  6 22:06:07 xrated kernel: [ 5465.482915] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:09 xrated kernel: [ 5466.894964] CX24123: cx24123_get_frontend: 
Apr  6 22:06:09 xrated kernel: [ 5466.895661] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:09 xrated kernel: [ 5467.602031] CX24123: cx24123_get_frontend: 
Apr  6 22:06:09 xrated kernel: [ 5467.602777] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:12 xrated kernel: [ 5470.427373] CX24123: cx24123_get_frontend: 
Apr  6 22:06:12 xrated kernel: [ 5470.428140] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:13 xrated kernel: [ 5470.831789] CX24123: cx24123_get_frontend: 
Apr  6 22:06:13 xrated kernel: [ 5470.832564] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:14 xrated kernel: [ 5471.740377] CX24123: cx24123_get_frontend: 
Apr  6 22:06:14 xrated kernel: [ 5471.741140] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:14 xrated kernel: [ 5472.245570] CX24123: cx24123_get_frontend: 
Apr  6 22:06:14 xrated kernel: [ 5472.246308] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:15 xrated kernel: [ 5472.952418] CX24123: cx24123_get_frontend: 
Apr  6 22:06:15 xrated kernel: [ 5472.953120] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:16 xrated kernel: [ 5474.566970] CX24123: cx24123_get_frontend: 
Apr  6 22:06:16 xrated kernel: [ 5474.567703] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:17 xrated kernel: [ 5475.174042] CX24123: cx24123_get_frontend: 
Apr  6 22:06:17 xrated kernel: [ 5475.174853] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:19 xrated kernel: [ 5477.495375] CX24123: cx24123_get_frontend: 
Apr  6 22:06:19 xrated kernel: [ 5477.496075] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:21 xrated kernel: [ 5478.605643] CX24123: cx24123_get_frontend: 
Apr  6 22:06:21 xrated kernel: [ 5478.606343] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:21 xrated kernel: [ 5479.010892] CX24123: cx24123_get_frontend: 
Apr  6 22:06:21 xrated kernel: [ 5479.011598] CX24123: cx24123_get_inversion: read inversion on
# now pro7, even without a stable "picture"
Apr  6 22:06:55 xrated kernel: [ 5513.057158] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:06:55 xrated kernel: [ 5513.057189] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:06:55 xrated kernel: [ 5513.073138] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:06:55 xrated kernel: [ 5513.211377] CX24123: cx24123_initfe: init frontend
Apr  6 22:06:55 xrated kernel: [ 5513.235097] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:06:55 xrated kernel: [ 5513.342913] CX24123: cx24123_set_frontend: 
Apr  6 22:06:55 xrated kernel: [ 5513.344382] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:06:55 xrated kernel: [ 5513.346830] CX24123: cx24123_set_fec: set FEC to 5/6
Apr  6 22:06:55 xrated kernel: [ 5513.351155] CX24123: cx24123_set_symbolrate: srate=22000000, ratio=0x0037b3a3, sample_rate=50555000 sample_gain=1
Apr  6 22:06:55 xrated kernel: [ 5513.351162] CX24123: cx24123_pll_tune: frequency=1944750
Apr  6 22:06:55 xrated kernel: [ 5513.351166] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:06:55 xrated kernel: [ 5513.359274] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:06:55 xrated kernel: [ 5513.369254] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000220
Apr  6 22:06:55 xrated kernel: [ 5513.375809] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f4783
Apr  6 22:06:55 xrated kernel: [ 5513.384081] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=544, pll=2049923
Apr  6 22:06:56 xrated kernel: [ 5513.589444] CX24123: cx24123_get_frontend: 
Apr  6 22:06:56 xrated kernel: [ 5513.590141] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:58 xrated kernel: [ 5515.607237] CX24123: cx24123_get_frontend: 
Apr  6 22:06:58 xrated kernel: [ 5515.607998] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:59 xrated kernel: [ 5516.717685] CX24123: cx24123_get_frontend: 
Apr  6 22:06:59 xrated kernel: [ 5516.718438] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:59 xrated kernel: [ 5517.425431] CX24123: cx24123_get_frontend: 
Apr  6 22:06:59 xrated kernel: [ 5517.426190] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:01 xrated kernel: [ 5519.343437] CX24123: cx24123_get_frontend: 
Apr  6 22:07:01 xrated kernel: [ 5519.344197] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:04 xrated kernel: [ 5522.068048] CX24123: cx24123_get_frontend: 
Apr  6 22:07:04 xrated kernel: [ 5522.068760] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:04 xrated kernel: [ 5522.270712] CX24123: cx24123_get_frontend: 
Apr  6 22:07:04 xrated kernel: [ 5522.271420] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:04 xrated kernel: [ 5522.473496] CX24123: cx24123_get_frontend: 
Apr  6 22:07:04 xrated kernel: [ 5522.474195] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:06 xrated kernel: [ 5523.887241] CX24123: cx24123_get_frontend: 
Apr  6 22:07:06 xrated kernel: [ 5523.888018] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:06 xrated kernel: [ 5524.292603] CX24123: cx24123_get_frontend: 
Apr  6 22:07:06 xrated kernel: [ 5524.293306] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:07 xrated kernel: [ 5524.899625] CX24123: cx24123_get_frontend: 
Apr  6 22:07:07 xrated kernel: [ 5524.900335] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:07 xrated kernel: [ 5525.102312] CX24123: cx24123_get_frontend: 
Apr  6 22:07:07 xrated kernel: [ 5525.103013] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:09 xrated kernel: [ 5527.422783] CX24123: cx24123_get_frontend: 
Apr  6 22:07:09 xrated kernel: [ 5527.423543] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:10 xrated kernel: [ 5528.332169] CX24123: cx24123_get_frontend: 
Apr  6 22:07:10 xrated kernel: [ 5528.332878] CX24123: cx24123_get_inversion: read inversion on

Does this help you in some way?

Thanks,
Pete

#8 lore raw

Em Sat, 06 Apr 2013 22:20:19 +0200
Hans-Peter Jansen <[email protected]> escreveu:

Quoted 117 lines · On Samstag, 6. April 2013 16:26:32 Mauro Carvalho Chehab wrote:
Quoted 93 lines

Em Sat, 06 Apr 2013 19:26:23 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 90 lines · On Samstag, 6. April 2013 10:37:52 you wrote:
Quoted 88 lines

Em Sat, 06 Apr 2013 12:20:41 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 74 lines

Dear Mauro,

first of all, thank you for providing a proper fix that quickly.

Quoted 30 lines · On Freitag, 5. April 2013 13:18:54 Mauro Carvalho Chehab wrote:

Em Fri, 05 Apr 2013 13:25:01 +0100

Adam Sampson <[email protected]> escreveu:

Quoted 18 lines
Quoted 4 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system
upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 6 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

Quoted 8 lines

The bug title is misleading -- the problem is actually that the card
doesn't get configured properly to send the 22kHz tone for high-band
transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent kernels:
https://bugzilla.kernel.org/attachment.cgi?id=21905&action=edit

Quoted 6 lines

Applying that patch would break support for all other devices with isl6421.

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not. The code only changes it for Hauppauge model 92001.

Unfortunately, it appears to be more problematic. While the fix allows to
scan the channel list, it is not complete (in another setup at the same
dish (via multiswitch), vdrs channel list has about 1600 channels, while
scan does collect 1138 only.

More importantly, a single channel (arte) is received with 0 BER and a S/N
ratio of 99%, while all other channels produce more BER, eg. "Das Erste"
with about 320 BER (SNR 99%, a few artifacts/distortions occasionally),
"ZDF" about 6400 BER, (SNR drops down to 75%, constant distortions, and
many channels doesn't produce anything beyond distortions with a video stream below 0.3 MBit/s and about 160000 BER. (measured using vdr femon
plugin v. 1.6.7)

So, still no cigar, sorry.

I've tested both patches, just to be sure, with the same result. I had to
relocate and refresh yours in order to apply it to 3.4, since the paths
changed, result attached.

Quoted 3 lines

If it works, please answer this email with a:

Quoted 8 lines
Quoted 4 lines

For me to add it when merging the patch upstream.

Regards,
Mauro.

It looks like the idea is sound, but the logic is still missing something
that prevents it from tuning most channels properly.

Well, what it is expected from this patch is to be able of seeing channels with H and V polarization. Nothing more, nothing less.

Quoted 8 lines
Quoted 6 lines

Okay. Yes, I do.

Quoted 2 lines

From what I understood, you're now seeing more than just one channel, so, it is likely part of the fix, right?

Yes.

Ok, I'll likely be merging it by Monday.

Since it fixes the Nova-S-Plus 92001 model for some users, that's great.

Quoted 12 lines
Quoted 11 lines
Quoted 7 lines

If are there any other issues, then it it would require other fixes, likely at cx24123 frontend. My guess is that it could be due to some precision loss maybe at cx24123_set_symbolrate(). It helps if you could check if the channels that are more problematic have a higher or a lower bit rate. It probably makes sense to change the code there to use u64 and asm/div64.h, in order to allow the calculus to have more precision. I'll try to write such patch.

..that I'm testing right now. Build is on the way.

You wrote and published the fix in less then 8 minutes. Wow, unbelievable.

Quoted 7 lines
Quoted 3 lines

Well, the patch is really trivial. If it works or not, only the tests can tell ;) I have one Nova-S model here, but unfortunately I don't have a satellite dish anymore, so I can't test.

That's a pity. Bad news: no changes. I double checked, that the new cx24123 patch was applied. Unfortunately it doesn't help. The behavior is unchanged from what I can see.

Ok. As you're getting signals with high symbol rate, it were less likely to have troubles there.

That also means that the patch didn't introduce any bugs, so I'll likely apply it, as this way is better than before.

As you said that you weren't experiencing any issue with a previous kernel, I suggest you to do a diff between cx24123 on the version where everything is OK with the current one, and post here. We can then try to detect where the issue was introduced.

Regards,
Mauro.

Quoted 235 lines

Here's the debugging output of the cx24123 module with comments:

# tune in the good channel (arte):
Apr  6 22:04:48 xrated kernel: [ 5385.768351] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:04:48 xrated kernel: [ 5385.768410] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:04:48 xrated kernel: [ 5385.784365] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:04:48 xrated kernel: [ 5385.923227] CX24123: cx24123_initfe: init frontend
Apr  6 22:04:48 xrated kernel: [ 5385.947033] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:04:48 xrated kernel: [ 5386.054894] CX24123: cx24123_set_frontend: 
Apr  6 22:04:48 xrated kernel: [ 5386.056399] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:04:48 xrated kernel: [ 5386.058834] CX24123: cx24123_set_fec: set FEC to 5/6
Apr  6 22:04:48 xrated kernel: [ 5386.063176] CX24123: cx24123_set_symbolrate: srate=22000000, ratio=0x0037b3a3, sample_rate=50555000 sample_gain=1
Apr  6 22:04:48 xrated kernel: [ 5386.063179] CX24123: cx24123_pll_tune: frequency=993750
Apr  6 22:04:48 xrated kernel: [ 5386.063181] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:04:48 xrated kernel: [ 5386.070035] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:04:48 xrated kernel: [ 5386.081737] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000040
Apr  6 22:04:48 xrated kernel: [ 5386.088353] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f47ad
Apr  6 22:04:48 xrated kernel: [ 5386.096649] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=64, pll=2049965
Apr  6 22:04:48 xrated kernel: [ 5386.201464] CX24123: cx24123_get_frontend: 
Apr  6 22:04:48 xrated kernel: [ 5386.202165] CX24123: cx24123_get_inversion: read inversion on
# everything is fine, show a perfect stream for 17 sec, now switch to "Das Erste"
# the second best channel:
Apr  6 22:05:05 xrated kernel: [ 5402.838345] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:05:05 xrated kernel: [ 5402.838364] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:05:05 xrated kernel: [ 5402.844995] CX24123: cx24123_initfe: init frontend
Apr  6 22:05:05 xrated kernel: [ 5402.868926] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:05:05 xrated kernel: [ 5403.022665] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:05:05 xrated kernel: [ 5403.130032] CX24123: cx24123_set_frontend: 
Apr  6 22:05:05 xrated kernel: [ 5403.131587] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:05:05 xrated kernel: [ 5403.134147] CX24123: cx24123_set_fec: set FEC to 3/4
Apr  6 22:05:05 xrated kernel: [ 5403.138527] CX24123: cx24123_set_symbolrate: srate=27500000, ratio=0x003a05ca, sample_rate=60666000 sample_gain=1
Apr  6 22:05:05 xrated kernel: [ 5403.138587] CX24123: cx24123_pll_tune: frequency=1236500
Apr  6 22:05:05 xrated kernel: [ 5403.138639] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:05:05 xrated kernel: [ 5403.145421] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:05:05 xrated kernel: [ 5403.152203] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000201
Apr  6 22:05:05 xrated kernel: [ 5403.158857] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f44c6
Apr  6 22:05:05 xrated kernel: [ 5403.167529] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=513, pll=2049222
Apr  6 22:05:05 xrated kernel: [ 5403.274309] CX24123: cx24123_get_frontend: 
Apr  6 22:05:05 xrated kernel: [ 5403.275020] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:08 xrated kernel: [ 5406.606664] CX24123: cx24123_get_frontend: 
Apr  6 22:05:08 xrated kernel: [ 5406.607375] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:12 xrated kernel: [ 5409.935414] CX24123: cx24123_get_frontend: 
Apr  6 22:05:12 xrated kernel: [ 5409.936213] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:13 xrated kernel: [ 5411.148546] CX24123: cx24123_get_frontend: 
Apr  6 22:05:13 xrated kernel: [ 5411.149258] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:14 xrated kernel: [ 5412.059054] CX24123: cx24123_get_frontend: 
Apr  6 22:05:14 xrated kernel: [ 5412.059817] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:14 xrated kernel: [ 5412.463575] CX24123: cx24123_get_frontend: 
Apr  6 22:05:14 xrated kernel: [ 5412.464279] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:17 xrated kernel: [ 5414.885746] CX24123: cx24123_get_frontend: 
Apr  6 22:05:17 xrated kernel: [ 5414.886509] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:18 xrated kernel: [ 5415.997814] CX24123: cx24123_get_frontend: 
Apr  6 22:05:18 xrated kernel: [ 5415.998610] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:18 xrated kernel: [ 5416.604004] CX24123: cx24123_get_frontend: 
Apr  6 22:05:18 xrated kernel: [ 5416.604773] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:19 xrated kernel: [ 5417.513528] CX24123: cx24123_get_frontend: 
Apr  6 22:05:19 xrated kernel: [ 5417.514234] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:21 xrated kernel: [ 5418.825570] CX24123: cx24123_get_frontend: 
Apr  6 22:05:21 xrated kernel: [ 5418.826270] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:21 xrated kernel: [ 5419.533488] CX24123: cx24123_get_frontend: 
Apr  6 22:05:21 xrated kernel: [ 5419.534201] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:23 xrated kernel: [ 5420.846369] CX24123: cx24123_get_frontend: 
Apr  6 22:05:23 xrated kernel: [ 5420.847081] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:23 xrated kernel: [ 5421.050152] CX24123: cx24123_get_frontend: 
Apr  6 22:05:23 xrated kernel: [ 5421.050888] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:23 xrated kernel: [ 5421.354549] CX24123: cx24123_get_frontend: 
Apr  6 22:05:23 xrated kernel: [ 5421.355253] CX24123: cx24123_get_inversion: read inversion on
# the distortion is visible here by the repeated cx24123_get_frontend/cx24123_get_inversion
# invocations, some visible distortions, switch to a damaged one (ZDF):
Apr  6 22:05:23 xrated kernel: [ 5421.454611] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:05:23 xrated kernel: [ 5421.454639] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:05:23 xrated kernel: [ 5421.455336] CX24123: cx24123_initfe: init frontend
Apr  6 22:05:23 xrated kernel: [ 5421.492320] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:05:23 xrated kernel: [ 5421.647452] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:05:24 xrated kernel: [ 5421.754847] CX24123: cx24123_set_frontend: 
Apr  6 22:05:24 xrated kernel: [ 5421.756322] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:05:24 xrated kernel: [ 5421.758759] CX24123: cx24123_set_fec: set FEC to 3/4
Apr  6 22:05:24 xrated kernel: [ 5421.763023] CX24123: cx24123_set_symbolrate: srate=27500000, ratio=0x003a05ca, sample_rate=60666000 sample_gain=1
Apr  6 22:05:24 xrated kernel: [ 5421.763026] CX24123: cx24123_pll_tune: frequency=1353500
Apr  6 22:05:24 xrated kernel: [ 5421.763027] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:05:24 xrated kernel: [ 5421.769560] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:05:24 xrated kernel: [ 5421.775971] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000202
Apr  6 22:05:24 xrated kernel: [ 5421.782794] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f453a
Apr  6 22:05:24 xrated kernel: [ 5421.791368] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=514, pll=2049338
Apr  6 22:05:24 xrated kernel: [ 5421.895674] CX24123: cx24123_get_frontend: 
Apr  6 22:05:24 xrated kernel: [ 5421.896426] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:24 xrated kernel: [ 5422.099346] CX24123: cx24123_get_frontend: 
Apr  6 22:05:24 xrated kernel: [ 5422.100121] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:24 xrated kernel: [ 5422.504649] CX24123: cx24123_get_frontend: 
Apr  6 22:05:24 xrated kernel: [ 5422.505463] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:25 xrated kernel: [ 5423.211648] CX24123: cx24123_get_frontend: 
Apr  6 22:05:25 xrated kernel: [ 5423.212380] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:25 xrated kernel: [ 5423.415355] CX24123: cx24123_get_frontend: 
Apr  6 22:05:25 xrated kernel: [ 5423.416159] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:25 xrated kernel: [ 5423.619044] CX24123: cx24123_get_frontend: 
Apr  6 22:05:25 xrated kernel: [ 5423.619807] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:26 xrated kernel: [ 5424.326841] CX24123: cx24123_get_frontend: 
Apr  6 22:05:26 xrated kernel: [ 5424.327649] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:27 xrated kernel: [ 5425.338309] CX24123: cx24123_get_frontend: 
Apr  6 22:05:27 xrated kernel: [ 5425.339021] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:28 xrated kernel: [ 5425.742663] CX24123: cx24123_get_frontend: 
Apr  6 22:05:28 xrated kernel: [ 5425.743429] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:28 xrated kernel: [ 5426.148028] CX24123: cx24123_get_frontend: 
Apr  6 22:05:28 xrated kernel: [ 5426.148735] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:28 xrated kernel: [ 5426.653281] CX24123: cx24123_get_frontend: 
Apr  6 22:05:28 xrated kernel: [ 5426.653996] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:29 xrated kernel: [ 5426.857045] CX24123: cx24123_get_frontend: 
Apr  6 22:05:29 xrated kernel: [ 5426.858245] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:29 xrated kernel: [ 5427.061556] CX24123: cx24123_get_frontend: 
Apr  6 22:05:29 xrated kernel: [ 5427.062310] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:29 xrated kernel: [ 5427.365074] CX24123: cx24123_get_frontend: 
Apr  6 22:05:29 xrated kernel: [ 5427.365795] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:30 xrated kernel: [ 5427.870355] CX24123: cx24123_get_frontend: 
Apr  6 22:05:30 xrated kernel: [ 5427.871059] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:31 xrated kernel: [ 5428.678088] CX24123: cx24123_get_frontend: 
Apr  6 22:05:31 xrated kernel: [ 5428.678827] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:31 xrated kernel: [ 5428.982453] CX24123: cx24123_get_frontend: 
Apr  6 22:05:31 xrated kernel: [ 5428.983162] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:31 xrated kernel: [ 5429.387082] CX24123: cx24123_get_frontend: 
Apr  6 22:05:31 xrated kernel: [ 5429.387844] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:32 xrated kernel: [ 5429.792367] CX24123: cx24123_get_frontend: 
Apr  6 22:05:32 xrated kernel: [ 5429.793081] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:32 xrated kernel: [ 5430.097632] CX24123: cx24123_get_frontend: 
Apr  6 22:05:32 xrated kernel: [ 5430.098404] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:33 xrated kernel: [ 5430.804750] CX24123: cx24123_get_frontend: 
Apr  6 22:05:33 xrated kernel: [ 5430.805466] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:05:33 xrated kernel: [ 5431.210089] CX24123: cx24123_get_frontend: 
Apr  6 22:05:33 xrated kernel: [ 5431.210855] CX24123: cx24123_get_inversion: read inversion on
# the about 2-3 cx24123_get_frontend/cx24123_get_inversion invocations per 
# second document the heavy distortions here, now 3sat, a little less 
# distortion, compared to above
Apr  6 22:06:04 xrated kernel: [ 5462.126946] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:06:04 xrated kernel: [ 5462.126975] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:06:04 xrated kernel: [ 5462.142941] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:06:04 xrated kernel: [ 5462.282574] CX24123: cx24123_initfe: init frontend
Apr  6 22:06:04 xrated kernel: [ 5462.306488] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:06:04 xrated kernel: [ 5462.413161] CX24123: cx24123_set_frontend: 
Apr  6 22:06:04 xrated kernel: [ 5462.414665] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:06:04 xrated kernel: [ 5462.417157] CX24123: cx24123_set_fec: set FEC to 5/6
Apr  6 22:06:04 xrated kernel: [ 5462.421438] CX24123: cx24123_set_symbolrate: srate=22000000, ratio=0x0037b3a3, sample_rate=50555000 sample_gain=1
Apr  6 22:06:04 xrated kernel: [ 5462.421445] CX24123: cx24123_pll_tune: frequency=1944750
Apr  6 22:06:04 xrated kernel: [ 5462.421449] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:06:04 xrated kernel: [ 5462.427984] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:06:04 xrated kernel: [ 5462.434758] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000220
Apr  6 22:06:04 xrated kernel: [ 5462.441438] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f4783
Apr  6 22:06:04 xrated kernel: [ 5462.450134] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=544, pll=2049923
Apr  6 22:06:05 xrated kernel: [ 5462.655630] CX24123: cx24123_get_frontend: 
Apr  6 22:06:05 xrated kernel: [ 5462.656353] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:06 xrated kernel: [ 5464.572700] CX24123: cx24123_get_frontend: 
Apr  6 22:06:06 xrated kernel: [ 5464.573454] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:07 xrated kernel: [ 5465.482194] CX24123: cx24123_get_frontend: 
Apr  6 22:06:07 xrated kernel: [ 5465.482915] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:09 xrated kernel: [ 5466.894964] CX24123: cx24123_get_frontend: 
Apr  6 22:06:09 xrated kernel: [ 5466.895661] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:09 xrated kernel: [ 5467.602031] CX24123: cx24123_get_frontend: 
Apr  6 22:06:09 xrated kernel: [ 5467.602777] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:12 xrated kernel: [ 5470.427373] CX24123: cx24123_get_frontend: 
Apr  6 22:06:12 xrated kernel: [ 5470.428140] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:13 xrated kernel: [ 5470.831789] CX24123: cx24123_get_frontend: 
Apr  6 22:06:13 xrated kernel: [ 5470.832564] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:14 xrated kernel: [ 5471.740377] CX24123: cx24123_get_frontend: 
Apr  6 22:06:14 xrated kernel: [ 5471.741140] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:14 xrated kernel: [ 5472.245570] CX24123: cx24123_get_frontend: 
Apr  6 22:06:14 xrated kernel: [ 5472.246308] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:15 xrated kernel: [ 5472.952418] CX24123: cx24123_get_frontend: 
Apr  6 22:06:15 xrated kernel: [ 5472.953120] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:16 xrated kernel: [ 5474.566970] CX24123: cx24123_get_frontend: 
Apr  6 22:06:16 xrated kernel: [ 5474.567703] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:17 xrated kernel: [ 5475.174042] CX24123: cx24123_get_frontend: 
Apr  6 22:06:17 xrated kernel: [ 5475.174853] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:19 xrated kernel: [ 5477.495375] CX24123: cx24123_get_frontend: 
Apr  6 22:06:19 xrated kernel: [ 5477.496075] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:21 xrated kernel: [ 5478.605643] CX24123: cx24123_get_frontend: 
Apr  6 22:06:21 xrated kernel: [ 5478.606343] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:21 xrated kernel: [ 5479.010892] CX24123: cx24123_get_frontend: 
Apr  6 22:06:21 xrated kernel: [ 5479.011598] CX24123: cx24123_get_inversion: read inversion on
# now pro7, even without a stable "picture"
Apr  6 22:06:55 xrated kernel: [ 5513.057158] cx88[0]/2-dvb: cx8802_dvb_advise_release
Apr  6 22:06:55 xrated kernel: [ 5513.057189] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
Apr  6 22:06:55 xrated kernel: [ 5513.073138] CX24123: cx24123_send_diseqc_msg: 
Apr  6 22:06:55 xrated kernel: [ 5513.211377] CX24123: cx24123_initfe: init frontend
Apr  6 22:06:55 xrated kernel: [ 5513.235097] CX24123: cx24123_diseqc_send_burst: 
Apr  6 22:06:55 xrated kernel: [ 5513.342913] CX24123: cx24123_set_frontend: 
Apr  6 22:06:55 xrated kernel: [ 5513.344382] CX24123: cx24123_set_inversion: inversion auto
Apr  6 22:06:55 xrated kernel: [ 5513.346830] CX24123: cx24123_set_fec: set FEC to 5/6
Apr  6 22:06:55 xrated kernel: [ 5513.351155] CX24123: cx24123_set_symbolrate: srate=22000000, ratio=0x0037b3a3, sample_rate=50555000 sample_gain=1
Apr  6 22:06:55 xrated kernel: [ 5513.351162] CX24123: cx24123_pll_tune: frequency=1944750
Apr  6 22:06:55 xrated kernel: [ 5513.351166] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00100e3f
Apr  6 22:06:55 xrated kernel: [ 5513.359274] CX24123: cx24123_pll_writereg: pll writereg called, data=0x000a0180
Apr  6 22:06:55 xrated kernel: [ 5513.369254] CX24123: cx24123_pll_writereg: pll writereg called, data=0x00000220
Apr  6 22:06:55 xrated kernel: [ 5513.375809] CX24123: cx24123_pll_writereg: pll writereg called, data=0x001f4783
Apr  6 22:06:55 xrated kernel: [ 5513.384081] CX24123: cx24123_pll_tune: pll tune VCA=1052223, band=544, pll=2049923
Apr  6 22:06:56 xrated kernel: [ 5513.589444] CX24123: cx24123_get_frontend: 
Apr  6 22:06:56 xrated kernel: [ 5513.590141] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:58 xrated kernel: [ 5515.607237] CX24123: cx24123_get_frontend: 
Apr  6 22:06:58 xrated kernel: [ 5515.607998] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:59 xrated kernel: [ 5516.717685] CX24123: cx24123_get_frontend: 
Apr  6 22:06:59 xrated kernel: [ 5516.718438] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:06:59 xrated kernel: [ 5517.425431] CX24123: cx24123_get_frontend: 
Apr  6 22:06:59 xrated kernel: [ 5517.426190] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:01 xrated kernel: [ 5519.343437] CX24123: cx24123_get_frontend: 
Apr  6 22:07:01 xrated kernel: [ 5519.344197] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:04 xrated kernel: [ 5522.068048] CX24123: cx24123_get_frontend: 
Apr  6 22:07:04 xrated kernel: [ 5522.068760] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:04 xrated kernel: [ 5522.270712] CX24123: cx24123_get_frontend: 
Apr  6 22:07:04 xrated kernel: [ 5522.271420] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:04 xrated kernel: [ 5522.473496] CX24123: cx24123_get_frontend: 
Apr  6 22:07:04 xrated kernel: [ 5522.474195] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:06 xrated kernel: [ 5523.887241] CX24123: cx24123_get_frontend: 
Apr  6 22:07:06 xrated kernel: [ 5523.888018] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:06 xrated kernel: [ 5524.292603] CX24123: cx24123_get_frontend: 
Apr  6 22:07:06 xrated kernel: [ 5524.293306] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:07 xrated kernel: [ 5524.899625] CX24123: cx24123_get_frontend: 
Apr  6 22:07:07 xrated kernel: [ 5524.900335] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:07 xrated kernel: [ 5525.102312] CX24123: cx24123_get_frontend: 
Apr  6 22:07:07 xrated kernel: [ 5525.103013] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:09 xrated kernel: [ 5527.422783] CX24123: cx24123_get_frontend: 
Apr  6 22:07:09 xrated kernel: [ 5527.423543] CX24123: cx24123_get_inversion: read inversion on
Apr  6 22:07:10 xrated kernel: [ 5528.332169] CX24123: cx24123_get_frontend: 
Apr  6 22:07:10 xrated kernel: [ 5528.332878] CX24123: cx24123_get_inversion: read inversion on

Does this help you in some way?

Thanks,
Pete

Signature · 2 lines
Cheers,
Mauro
#9 lore raw
Quoted 46 lines · On Sonntag, 7. April 2013 14:03:29 Mauro Carvalho Chehab wrote:

Em Sat, 06 Apr 2013 22:20:19 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 43 lines · On Samstag, 6. April 2013 16:26:32 Mauro Carvalho Chehab wrote:
Quoted 42 lines

Em Sat, 06 Apr 2013 19:26:23 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 39 lines · On Samstag, 6. April 2013 10:37:52 you wrote:
Quoted 38 lines

Em Sat, 06 Apr 2013 12:20:41 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 35 lines

Dear Mauro,

first of all, thank you for providing a proper fix that quickly.

Quoted 30 lines · On Freitag, 5. April 2013 13:18:54 Mauro Carvalho Chehab wrote:

Em Fri, 05 Apr 2013 13:25:01 +0100

Adam Sampson <[email protected]> escreveu:

Quoted 27 lines
Quoted 5 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system
upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 6 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

The bug title is misleading -- the problem is actually that the
card
doesn't get configured properly to send the 22kHz tone for high-band
transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent

kernels:

Quoted 100 lines
Quoted 91 lines
Quoted 62 lines
Quoted 62 lines
Quoted 53 lines
Quoted 53 lines
Quoted 10 lines
Quoted 2 lines

https://bugzilla.kernel.org/attachment.cgi?id=21905&action=e
dit

Applying that patch would break support for all other devices with
isl6421.

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not. The code only changes it for Hauppauge model 92001.

Unfortunately, it appears to be more problematic. While the fix allows
to
scan the channel list, it is not complete (in another setup at the same
dish (via multiswitch), vdrs channel list has about 1600 channels, while
scan does collect 1138 only.

More importantly, a single channel (arte) is received with 0 BER and a
S/N
ratio of 99%, while all other channels produce more BER, eg. "Das Erste"
with about 320 BER (SNR 99%, a few artifacts/distortions occasionally),
"ZDF" about 6400 BER, (SNR drops down to 75%, constant distortions,
and
many channels doesn't produce anything beyond distortions with a video
stream below 0.3 MBit/s and about 160000 BER. (measured using vdr femon
plugin v. 1.6.7)

So, still no cigar, sorry.

I've tested both patches, just to be sure, with the same result. I had
to
relocate and refresh yours in order to apply it to 3.4, since the paths
changed, result attached.

Quoted 7 lines

If it works, please answer this email with a:

For me to add it when merging the patch upstream.

Regards,
Mauro.

Quoted 6 lines
Quoted 3 lines

It looks like the idea is sound, but the logic is still missing something
that prevents it from tuning most channels properly.

Well, what it is expected from this patch is to be able of seeing channels with H and V polarization. Nothing more, nothing less.

Okay. Yes, I do.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

From what I understood, you're now seeing more than just one channel,
so, it is likely part of the fix, right?

Yes.

Ok, I'll likely be merging it by Monday.

Since it fixes the Nova-S-Plus 92001 model for some users, that's great.

Quoted 11 lines
Quoted 11 lines
Quoted 8 lines

If are there any other issues, then it it would require other fixes, likely at cx24123 frontend. My guess is that it could be due to some precision loss maybe at cx24123_set_symbolrate(). It helps if you could
check if the channels that are more problematic have a higher or a lower bit rate. It probably makes sense to change the code there to use u64 and asm/div64.h, in order to allow the calculus to have more precision. I'll try to write such patch.

..that I'm testing right now. Build is on the way.

Quoted 7 lines
Quoted 2 lines

You wrote and published the fix in less then 8 minutes. Wow, unbelievable.

Well, the patch is really trivial. If it works or not, only the tests can
tell ;) I have one Nova-S model here, but unfortunately I don't have a satellite dish anymore, so I can't test.

Quoted 5 lines

That's a pity. Bad news: no changes. I double checked, that the new cx24123
patch was applied. Unfortunately it doesn't help. The behavior is unchanged
from what I can see.

Ok. As you're getting signals with high symbol rate, it were less likely to have troubles there.

Quoted 7 lines

That also means that the patch didn't introduce any bugs, so I'll likely apply it, as this way is better than before.

As you said that you weren't experiencing any issue with a previous kernel, I suggest you to do a diff between cx24123 on the version where everything is OK with the current one, and post here. We can then try to detect where the issue was introduced.

Hmm, that was an 2.6.2* kernel, IIRC. Only a bisection would make sense. Unfortunately, I cannot spend the time for a bisection today, and tomorrow I get an eagerly awaited Hauppauge WinTV-HVR400 in order to evaluate vdr 2.0 with HD eventually, hence after finishing day work, I'm not sure, if I'm able to bridle myself until after the boring bisection. Most likely not.. ;-)

Thanks again for your GREAT support, Mauro. Using Linux and Open Source for about 18 years, your engagement is exemplary. Given, that the sub system, you maintain is such an unforgiving mine field¹ just scales up that impression.

Cheers,
Pete

¹) I just follow this group every now and then..

#10 lore raw

Em Sun, 07 Apr 2013 21:10:21 +0200
Hans-Peter Jansen <[email protected]> escreveu:

Quoted 156 lines · On Sonntag, 7. April 2013 14:03:29 Mauro Carvalho Chehab wrote:
Quoted 46 lines

Em Sat, 06 Apr 2013 22:20:19 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 43 lines · On Samstag, 6. April 2013 16:26:32 Mauro Carvalho Chehab wrote:
Quoted 42 lines

Em Sat, 06 Apr 2013 19:26:23 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 39 lines · On Samstag, 6. April 2013 10:37:52 you wrote:
Quoted 38 lines

Em Sat, 06 Apr 2013 12:20:41 +0200

Hans-Peter Jansen <[email protected]> escreveu:

Quoted 35 lines

Dear Mauro,

first of all, thank you for providing a proper fix that quickly.

Quoted 30 lines · On Freitag, 5. April 2013 13:18:54 Mauro Carvalho Chehab wrote:

Em Fri, 05 Apr 2013 13:25:01 +0100

Adam Sampson <[email protected]> escreveu:

Quoted 27 lines
Quoted 5 lines · Hans-Peter Jansen

In one of my systems, I've used a
Hauppauge Nova-S-Plus DVB-S card successfully, but after a system
upgrade to openSUSE 12.2, it cannot tune in all but one channel.

[...]

Quoted 6 lines

initial transponder 12551500 V 22000000 5

Quoted 1 line
Quoted 1 line
Quoted 1 line

tune to: 12551:v:0:22000

DVB-S IF freq is 1951500
WARNING: >>> tuning failed!!!

I suspect you might be running into this problem:
https://bugzilla.kernel.org/show_bug.cgi?id=9476

The bug title is misleading -- the problem is actually that the
card
doesn't get configured properly to send the 22kHz tone for high-band
transponders, like the one in your error above.

Applying this patch makes my Nova-S-Plus work with recent

kernels:

Quoted 100 lines
Quoted 91 lines
Quoted 62 lines
Quoted 62 lines
Quoted 53 lines
Quoted 53 lines
Quoted 10 lines
Quoted 2 lines

https://bugzilla.kernel.org/attachment.cgi?id=21905&action=e
dit

Applying that patch would break support for all other devices with
isl6421.

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not. The code only changes it for Hauppauge model 92001.

Unfortunately, it appears to be more problematic. While the fix allows
to
scan the channel list, it is not complete (in another setup at the same
dish (via multiswitch), vdrs channel list has about 1600 channels, while
scan does collect 1138 only.

More importantly, a single channel (arte) is received with 0 BER and a
S/N
ratio of 99%, while all other channels produce more BER, eg. "Das Erste"
with about 320 BER (SNR 99%, a few artifacts/distortions occasionally),
"ZDF" about 6400 BER, (SNR drops down to 75%, constant distortions,
and
many channels doesn't produce anything beyond distortions with a video
stream below 0.3 MBit/s and about 160000 BER. (measured using vdr femon
plugin v. 1.6.7)

So, still no cigar, sorry.

I've tested both patches, just to be sure, with the same result. I had
to
relocate and refresh yours in order to apply it to 3.4, since the paths
changed, result attached.

Quoted 7 lines

If it works, please answer this email with a:

For me to add it when merging the patch upstream.

Regards,
Mauro.

Quoted 6 lines
Quoted 3 lines

It looks like the idea is sound, but the logic is still missing something
that prevents it from tuning most channels properly.

Well, what it is expected from this patch is to be able of seeing channels with H and V polarization. Nothing more, nothing less.

Okay. Yes, I do.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

From what I understood, you're now seeing more than just one channel,
so, it is likely part of the fix, right?

Yes.

Ok, I'll likely be merging it by Monday.

Since it fixes the Nova-S-Plus 92001 model for some users, that's great.

Quoted 11 lines
Quoted 11 lines
Quoted 8 lines

If are there any other issues, then it it would require other fixes, likely at cx24123 frontend. My guess is that it could be due to some precision loss maybe at cx24123_set_symbolrate(). It helps if you could
check if the channels that are more problematic have a higher or a lower bit rate. It probably makes sense to change the code there to use u64 and asm/div64.h, in order to allow the calculus to have more precision. I'll try to write such patch.

..that I'm testing right now. Build is on the way.

Quoted 7 lines
Quoted 2 lines

You wrote and published the fix in less then 8 minutes. Wow, unbelievable.

Well, the patch is really trivial. If it works or not, only the tests can
tell ;) I have one Nova-S model here, but unfortunately I don't have a satellite dish anymore, so I can't test.

Quoted 5 lines

That's a pity. Bad news: no changes. I double checked, that the new cx24123
patch was applied. Unfortunately it doesn't help. The behavior is unchanged
from what I can see.

Ok. As you're getting signals with high symbol rate, it were less likely to have troubles there.

Quoted 7 lines

That also means that the patch didn't introduce any bugs, so I'll likely apply it, as this way is better than before.

As you said that you weren't experiencing any issue with a previous kernel, I suggest you to do a diff between cx24123 on the version where everything is OK with the current one, and post here. We can then try to detect where the issue was introduced.

Quoted 5 lines

Hmm, that was an 2.6.2* kernel, IIRC. Only a bisection would make sense. Unfortunately, I cannot spend the time for a bisection today, and tomorrow I get an eagerly awaited Hauppauge WinTV-HVR400 in order to evaluate vdr 2.0 with HD eventually, hence after finishing day work, I'm not sure, if I'm able to bridle myself until after the boring bisection. Most likely not.. ;-)

Yeah, bisecting from 2.6.2* could be really boring. As this driver didn't change that much, perhaps you could speed it up by manually bisecting on the changes that happened on cx24123 on that time.

Anyway, since kernel 2.6.12, there weren't many changes there:

830e4b5 [media] dvb-frontends: get rid of some "always false" warnings
9a0bf52 [media] move the dvb/frontends to drivers/media/dvb-frontends
7581e61 [media] dvb: Remove ops->info.type from frontends
7c61d80 [media] dvb: don't require a parameter for get_frontend
7e07222 [media] dvb-core: Don't pass DVBv3 parameters on tune() fops
a73efc0 [media] cx23123: convert set_fontend to use DVBv5 parameters
31b4f32 [media] cx23123: remove an unused argument from cx24123_pll_writereg()
a689e36 [media] dvb-core: add support for a DVBv5 get_frontend() callback
bc9cd27 [media] Rename set_frontend fops to set_frontend_legacy
14d24d1 [media] tuners: remove dvb_frontend_parameters from set_params()
25985ed Fix common misspellings
a90f933 [media] i2c: Stop using I2C_CLASS_TV_DIGITAL
1ebcad7 V4L/DVB (12197): Remove unnecessary semicolons
8420fa7 V4L/DVB (10662): remove redundant memset after kzalloc
93504ab V4L/DVB (9260): cx24123: Checkpatch compliance
1d43401 V4L/DVB (8837): dvb: fix I2C adapters name size
6d89761 V4L/DVB (8805): Steven Toth email address change
ca06fa7 V4L/DVB (7470): CX24123: preparing support for CX24113 tuner
9c12224 V4L/DVB (6079): Cleanup: remove linux/moduleparam.h from drivers/media files
3ea9661 V4L/DVB (5840): fix dst and cx24123: tune() callback changed signess for delay
0496daa V4L/DVB (5202): DVB: Use ARRAY_SIZE macro when appropriate
9b5a4a6 V4L/DVB (4699): CX24109 patch to eliminate the weird mis-tunings
ef76856 V4L/DVB (4479): LNB voltage control was inverted for the benefit of geniatech cards on Kworld d93f886 V4L/DVB (4477): Improve hardware algorithm by setting the appropriate registers
174ff21 V4L/DVB (4435): HW algo
18c053b V4L/DVB (4434): Change BER config
d12a9b9 V4L/DVB (4433): Soft decision threshold
ccd214b V4L/DVB (4284): Cx24123: fix set_voltage function according to the specs
dea7486 V4L/DVB (4028): Change dvb_frontend_ops to be a real field instead of a pointer field inside dvb_frontend cd20ca9 V4L/DVB (4012): Fix cx24123 diseqc
20b1456 V4L/DVB (3869): Convert cx24123 to refactored tuner code
70047f9 V4L/DVB (3804): Tweak bandselect setup fox cx24123
0e4558a V4L/DVB (3803): Various correctness fixes to tuning.
dce1dfc V4L/DVB (3797): Always wait for diseqc queue to become ready before transmitting a diseqc message caf970e V4L/DVB (3796): Add several debug messages to cx24123 code
a74b51f V4L/DVB (3795): Fix for CX24123 & low symbol rates
0144f314 V4L/DVB (3130): cx24123: cleanup timout handling
1c956a3 DVB (2451): Add support for KWorld DVB-S 100, based on the same chips as Hauppauge e3b152b DVB (2446): Minor cleanups.
b79cb65 DVB (2445): Added demodulator driver for Nova-S-Plus and Nova-SE2 DVB-S support.

If it used to work with kernel 2.6.18, and broke at 2.6.2x, my educated guess is that the regression happened between those patches (including them):

$ git describe ca06fa7
v2.6.25-3788-gca06fa7
$ git describe 20b1456
v2.6.17-2503-g20b1456
Quoted 3 lines

Thanks again for your GREAT support, Mauro. Using Linux and Open Source for about 18 years, your engagement is exemplary. Given, that the sub system, you maintain is such an unforgiving mine field¹ just scales up that impression.

Thanks!

Quoted 5 lines

Cheers,
Pete

¹) I just follow this group every now and then..

Signature · 2 lines
Cheers,
Mauro
#11 lore raw

PATCH 1/1 cx24123: improve precision when calculating symbol rate ratio

In reply to Hans-Peter Jansen

Symbol rate ratio were using a rough calculus, as the code was limited to 32 bits arithmetic. Change it to 64 bits, in order to better estimate the bandwidth low-pass filter on the demod.

This should reduce the noise and improve reception.

---
 drivers/media/dvb-frontends/cx24123.c | 28 +++++++---------------------
 1 file changed, 7 insertions(+), 21 deletions(-)
drivers/media/dvb-frontends/cx24123.c +7 -21
index 68c88ab..a771da3 100644
@@ -26,6 +26,7 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
+#include <asm/div64.h>
 
 #include "dvb_frontend.h"
 #include "cx24123.h"
@@ -452,7 +453,8 @@ static u32 cx24123_int_log2(u32 a, u32 b)
 
 static int cx24123_set_symbolrate(struct cx24123_state *state, u32 srate)
 {
-	u32 tmp, sample_rate, ratio, sample_gain;
+	u64 tmp;
+	u32 sample_rate, ratio, sample_gain;
 	u8 pll_mult;
 
 	/*  check if symbol rate is within limits */
@@ -482,27 +484,11 @@ static int cx24123_set_symbolrate(struct cx24123_state *state, u32 srate)
 
 	sample_rate = pll_mult * XTAL;
 
-	/*
-	    SYSSymbolRate[21:0] = (srate << 23) / sample_rate
-
-	    We have to use 32 bit unsigned arithmetic without precision loss.
-	    The maximum srate is 45000000 or 0x02AEA540. This number has
-	    only 6 clear bits on top, hence we can shift it left only 6 bits
-	    at a time. Borrowed from cx24110.c
-	*/
-
-	tmp = srate << 6;
-	ratio = tmp / sample_rate;
-
-	tmp = (tmp % sample_rate) << 6;
-	ratio = (ratio << 6) + (tmp / sample_rate);
-
-	tmp = (tmp % sample_rate) << 6;
-	ratio = (ratio << 6) + (tmp / sample_rate);
-
-	tmp = (tmp % sample_rate) << 5;
-	ratio = (ratio << 5) + (tmp / sample_rate);
+	/* SYSSymbolRate[21:0] = (srate << 23) / sample_rate */
 
+	tmp = ((u64)srate) << 23;
+	do_div(tmp, sample_rate);
+	ratio = (u32) tmp;
 
 	cx24123_writereg(state, 0x01, pll_mult * 6);
 
Signature · 1 line
1.8.1.4
Tested-by
#12 lore raw
In reply to Mauro Carvalho Chehab
Quoted 3 lines · Mauro Carvalho Chehab

Could you please test the enclosed patch? It allows the bridge driver to tell if the set_tone should be overrided by isl6421 or not.

Yes, your patch works fine for me, backported to 3.4, which was just a case of changing the paths:
http://offog.org/stuff/bug9476v2.diff

I've tested it on my "Hauppauge model 92001, rev C1B1, serial# 1888307" board with lowband V, lowband H, highband V and highband H transponders, so both tone and voltage switching are working. I've not tested it on any other boards.

drivers/media/dvb-frontends/isl6421.h line 45

Quoted 8 lines
drivers/media/dvb-frontends/isl6421.h +1 -1
@@ -42,10 +42,10 @@
 #if IS_ENABLED(CONFIG_DVB_ISL6421)
 /* override_set and override_clear control which system register bits (above) to always set & clear */
 extern struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
-			  u8 override_set, u8 override_clear);
+			  u8 override_set, u8 override_clear, bool override_tone);

It might be worth adding a comment there saying what override_tone is actually doing?

Thanks very much,

Signature · 1 line
Adam Sampson <[email protected]>                         <http://offog.org/>