Hauppauge Nova-S-Plus and the 22KHz tone

Yes, this works:

http://www.whizzy.org/2010/08/hauppauge-wintv-nova-s-plus-on-linux/

I downloaded the patch from https://bugzilla.kernel.org/show_bug.cgi?id=9476 where it's included as the attachment at the top of the page.  For the record, the patch is this:

--- isl6421.c	2009-06-12 11:25:45.000000000 +0200
+++ isl6421.c	2009-06-12 14:16:52.000000000 +0200
@@ -89,6 +89,30 @@
 	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 */
@@ -130,6 +154,7 @@
 
 	/* override frontend ops */
 	fe->ops.set_voltage = isl6421_set_voltage;
+	fe->ops.set_tone = isl6421_set_tone;
 	fe->ops.enable_high_lnb_voltage = isl6421_enable_high_lnb_voltage;
 
 	return fe;
  1. Get set up for compiling a kernel (there's documentation on the net about how to do that for your system).  Compile and install a 'vanilla' kernel to prove that it will work before applying the patch.
  2. cd /usr/src/linux/drivers/media/dvb/frontends
  3. patch < whatever/you/saved/the/patch
  4. recompile the kernel, reboot to use it, and then try to scan the extra transports using 'scan' or mythtv-setup or whatever.

(This post isn't finished yet)

Leave a Reply

Your email address will not be published. Required fields are marked *