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;
- 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.
- cd /usr/src/linux/drivers/media/dvb/frontends
- patch < whatever/you/saved/the/patch
- 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)