EVGA inDtube: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(Created page with 'thumb|250px|AMD ATI TV Wonder 600 USB A hybrid ATSC USB 2.0 device by Evga. ==Overview/Features== This device s...')
 
 
(32 intermediate revisions by 2 users not shown)
Line 1: Line 1:

[[Image:ATI_TV_Wonder_600_USB.jpg|thumb|250px|AMD ATI TV Wonder 600 USB]]


A hybrid [[ATSC]] [[ATSC USB Devices|USB 2.0 device]] by Evga.
A hybrid [[ATSC]] [[ATSC USB Devices|USB 2.0 device]] by Evga.
Line 6: Line 6:


==Overview/Features==
==Overview/Features==
This device supports [[ATSC]] (i.e. [[OTA]] [[Digital TV]]) and analog NTSC. The package includes a small dipole antenna and a short [[USB]] extension cable, a remote control, and a connector to svideo or composite video inputs.
This device supports [[ATSC]] (i.e. [[OTA]] [[Digital TV]]) and analog NTSC. The package includes a small telescoping monopole antenna and a short [[USB]] extension cable, a remote control, and a connector to svideo or composite video inputs.


==Components used:==
==Components used:==
* Samsung S5H1409 QAM/8VSB Frontend
* (tuner & analog demodulator)
Xceive XC3028L
* (digital demodulator)
* (digital demodulator)
* (video decoder)
* (video decoder)
Line 15: Line 16:


===Identification===
===Identification===
The device identifies itself as a "eMPIA Technology, Inc" and the subsystem information provided by lsusb -v is ebla:2883.
The device identifies itself as a "eMPIA Technology, Inc" and the subsystem information provided by lsusb -v is ebla:2883.



==Making it Work==
==Making it Work==


This tuner is very difficult to get to find channels when scanning OTA ATSC. There is a thread about getting it to work which isn't very helpful at http://www.digitalhome.ca/forum/showthread.php?t=134023
This tuner is very difficult to get to find channels when scanning OTA ATSC. There is a thread about getting it to work which assuming you are familiar with the concept of frequency lists, as defined in /usr/share/dvb/atsc is very helpful at http://www.digitalhome.ca/forum/showthread.php?t=134023


You will need to modify the standard ATSC frequency list which has the wrong center frequencies for this tuner.
Using vim or your favorite text editor modify the center frequencies in the intial-tuning-data contained in the text file /usr/share/dvb/us-ATSC-center-frequencies-8VSB and save it in /usr/share/dvb/atsc as my-ATSC. You need to subtract roughly 400 Khz from each center frequency.
I subtracted 403615 Hz from each frequency so it falls in the exact center of what the InDtube Tuner can lock. From then on be sure to specify this file when scanning for channels with scan:


Scanning for channels.
===Firmware===


scan -a 1 /usr/share/dvb/atsc/my-ATSC -o zap mychannels.conf

example initial-tuning-data modificaton

<pre>
from:
/usr/share/dvb/atsc$ head us-ATSC-center-frequencies-8VSB
# US ATSC center frequencies, use if in doubt
A 57028615 8VSB
A 63028615 8VSB
A 69028615 8VSB
A 79028615 8VSB
A 85028615 8VSB
A 177028615 8VSB
A 183028615 8VSB
A 189028615 8VSB

to:
/usr/share/dvb/atsc$ head my-ATSC
# MY ATSC center frequencies, use for inDtube ATSC Tuner
A 56625000 8VSB
A 62625000 8VSB
A 68625000 8VSB
A 78625000 8VSB
A 84625000 8VSB
A 176625000 8VSB
A 182625000 8VSB
A 188625000 8VSB
A 194625000 8VSB
</pre>



===Firmware===
type: xc2028 firmware, ver 3.6


[http://steventoth.net/linux/hvr1400/xc3028L-v36.fw xc3028L-v36.fw]


===Drivers===
===Drivers===
Line 34: Line 73:


===Sample kernel output===
===Sample kernel output===
After you plug-in the device on a USB port, you should see something like this on dmesg:
One example of dmesg after plugging in the USB.
<pre>

usb 1-3: new high speed USB device using ehci_hcd and address 3
<code>
em28xx: New device EVGA inDtube @ 480 Mbps (eb1a:2883, interface 0, class 0)
[245939.510039] usb 1-4: new high speed USB device using ehci_hcd and address 2<br>
em28xx #0: chip ID is em2882/em2883
[245939.668191] usb 1-4: configuration #1 chosen from 1 choice<br>
em28xx #0: i2c eeprom 00: 1a eb 67 95 1a eb 83 28 d0 12 65 03 6a 1c 86 10
[245940.026932] em28xx: New device ATI TV Wonder 600 USB 2.0 @ 480 Mbps (0438:b002, interface 0, class 0)<br>
em28xx #0: i2c eeprom 10: 00 00 24 57 4e 07 01 00 00 00 00 00 00 00 00 00
[245940.027327] em28xx #0: chip ID is em2882/em2883<br>
[245940.252134] em28xx #0: i2c eeprom 00: 1a eb 67 95 38 04 02 b0 d0 12 65 03 6a 36 a0 1c<br>
em28xx #0: i2c eeprom 20: 46 00 01 00 f0 10 01 00 b8 00 00 00 5b 32 00 00
[245940.252153] em28xx #0: i2c eeprom 10: 00 00 24 57 46 07 41 00 60 00 00 00 02 00 00 00<br>
em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 01 01 00 00 00 00 00 00
[245940.252169] em28xx #0: i2c eeprom 20: 56 00 01 00 f0 10 02 00 b8 00 00 00 5b 1c 00 00<br>
em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[245940.252184] em28xx #0: i2c eeprom 30: 00 00 20 40 20 6e 02 20 01 01 00 00 00 00 00 00<br>
em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[245940.252199] em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>
em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 1c 03 45 00 56 00
[245940.252213] em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>
em28xx #0: i2c eeprom 70: 47 00 41 00 20 00 69 00 6e 00 44 00 74 00 75 00
[245940.252228] em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 36 03 41 00 54 00<br>
em28xx #0: i2c eeprom 80: 62 00 65 00 00 00 10 03 44 00 54 00 30 00 30 00
[245940.252242] em28xx #0: i2c eeprom 70: 49 00 20 00 54 00 56 00 20 00 57 00 6f 00 6e 00<br>
em28xx #0: i2c eeprom 90: 30 00 31 00 00 00 00 00 00 00 00 00 38 00 39 00
[245940.252257] em28xx #0: i2c eeprom 80: 64 00 65 00 72 00 20 00 36 00 30 00 30 00 20 00<br>
em28xx #0: i2c eeprom a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[245940.252271] em28xx #0: i2c eeprom 90: 55 00 53 00 42 00 20 00 32 00 2e 00 30 00 00 00<br>
em28xx #0: i2c eeprom b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[245940.252286] em28xx #0: i2c eeprom a0: 1c 03 36 00 36 00 30 00 38 00 30 00 34 00 30 00<br>
em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[245940.252301] em28xx #0: i2c eeprom b0: 30 00 35 00 32 00 37 00 34 00 00 00 00 00 01 00<br>
em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[245940.252315] em28xx #0: i2c eeprom c0: 00 f0 74 02 01 00 01 79 85 00 00 00 00 00 00 00<br>
em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[245940.252330] em28xx #0: i2c eeprom d0: 84 12 00 00 05 50 1a 7f d4 78 23 b1 fe d0 18 85<br>
em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: EEPROM ID= 0x9567eb1a, EEPROM hash = 0xcee44a99
[245940.252345] em28xx #0: i2c eeprom e0: 1f 00 00 00 04 84 0a 00 01 01 20 77 00 40 01 00<br>
em28xx #0: EEPROM info:
[245940.252360] em28xx #0: i2c eeprom f0: 00 f0 74 02 01 00 01 79 85 00 00 00 00 00 00 00<br>
em28xx #0: AC97 audio (5 sample rates)
[245940.252377] em28xx #0: EEPROM ID= 0x9567eb1a, EEPROM hash = 0xa23fce32<br>
[245940.252381] em28xx #0: EEPROM info:<br>
em28xx #0: 500mA max power
em28xx #0: Table at 0x24, strings=0x1c6a, 0x1086, 0x0000
[245940.252384] em28xx #0: AC97 audio (5 sample rates)<br>
em28xx #0: Identified as Unknown EM2750/28xx video grabber (card=1)
[245940.252387] em28xx #0: 500mA max power<br>
em28xx #0: Your board has no unique USB ID.
[245940.252392] em28xx #0: Table at 0x24, strings=0x366a, 0x1ca0, 0x0000<br>
em28xx #0: A hint were successfully done, based on eeprom hash.
[245940.253504] em28xx #0: Identified as AMD ATI TV Wonder HD 600 (card=20)<br>
em28xx #0: This method is not 100% failproof.
[245940.278601] tvp5150 9-005c: chip found @ 0xb8 (em28xx #0)<br>
em28xx #0: If the board were missdetected, please email this log to:
[245940.323710] tuner 9-0061: chip found @ 0xc2 (em28xx #0)<br>
em28xx #0: V4L Mailing List <linux-media@vger.kernel.org>
[245940.323925] xc2028 9-0061: creating new instance<br>
em28xx #0: Board detected as Evga inDtube
[245940.323930] xc2028 9-0061: type set to XCeive xc2028/xc3028 tuner<br>
tvp5150 0-005c: chip found @ 0xb8 (em28xx #0)
[245940.323943] usb 1-4: firmware: requesting xc3028L-v36.fw<br>
tuner 0-0061: chip found @ 0xc2 (em28xx #0)
[245940.408516] xc2028 9-0061: Loading 81 firmware images from xc3028L-v36.fw, type: xc2028 firmware, ver 3.6<br>
xc2028 0-0061: creating new instance
[245940.470450] xc2028 9-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000.<br>
xc2028 0-0061: type set to XCeive xc2028/xc3028 tuner
[245941.491720] xc2028 9-0061: Loading firmware for type=MTS (4), id 000000000000b700.<br>
[245941.508717] xc2028 9-0061: Loading SCODE for type=MTS LCD NOGD MONO IF SCODE HAS_IF_4500 (6002b004), id 000000000000b700.<br>
xc2028 0-0061: Loading 81 firmware images from xc3028L-v36.fw, type: xc2028 firmware, ver 3.6
xc2028 0-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000.
[245941.640460] input: em28xx IR (em28xx #0) as /devices/pci0000:00/0000:00:02.1/usb1/1-4/input/input6<br>
xc2028 0-0061: Loading firmware for type=MTS (4), id 000000000000b700.
[245941.640569] Creating IR device irrcv0<br>
xc2028 0-0061: Loading SCODE for type=MTS LCD NOGD MONO IF SCODE HAS_IF_4500 (6002b004), id 000000000000b700.
[245941.640795] em28xx #0: Config register raw data: 0xd0<br>
Registered IR keymap rc-evga-indtube
[245941.643331] em28xx #0: AC97 vendor ID = 0xffffffff<br>
input: em28xx IR (em28xx #0) as /devices/pci0000:00/0000:00:1a.7/usb1/1-3/rc/rc0/input9
[245941.643701] em28xx #0: AC97 features = 0x6a90<br>
rc0: em28xx IR (em28xx #0) as /devices/pci0000:00/0000:00:1a.7/usb1/1-3/rc/rc0
[245941.643705] em28xx #0: Empia 202 AC97 audio processor detected<br>
em28xx #0: Config register raw data: 0xd0
[245941.803331] tvp5150 9-005c: tvp5150am1 detected.<br>
[245941.911198] em28xx #0: v4l2 driver version 0.1.2<br>
em28xx #0: AC97 vendor ID = 0xffffffff
[245942.020588] em28xx #0: V4L2 video device registered as video0<br>
em28xx #0: AC97 features = 0x6a90
[245942.020594] em28xx #0: V4L2 VBI device registered as vbi0<br>
em28xx #0: Empia 202 AC97 audio processor detected
tvp5150 0-005c: tvp5150am1 detected.
[245942.021231] usbcore: registered new interface driver em28xx<br>
[245942.021237] em28xx driver loaded<br>
em28xx #0: v4l2 driver version 0.1.2
em28xx #0: V4L2 video device registered as video0
[245942.236047] em28xx-audio.c: probing for em28x1 non standard usbaudio<br>
em28xx #0: V4L2 VBI device registered as vbi0
[245942.236055] em28xx-audio.c: Copyright (C) 2006 Markus Rechberger<br>
em28xx-audio.c: probing for em28x1 non standard usbaudio
[245942.236616] Em28xx: Initialized (Em28xx Audio Extension) extension<br>
em28xx-audio.c: Copyright (C) 2006 Markus Rechberger
[245942.345610] tvp5150 9-005c: i2c i/o error: rc == -19 (should be 1)<br>
</pre>
[245942.361676] tvp5150 9-005c: i2c i/o error: rc == -19 (should be 1)<br>
[245942.380677] tvp5150 9-005c: i2c i/o error: rc == -19 (should be 1)<br>
[245942.400677] tvp5150 9-005c: i2c i/o error: rc == -19 (should be 1)<br>
[245942.400685] tvp5150 9-005c: *** unknown tvp0c81 chip detected.<br>
[245942.400690] tvp5150 9-005c: *** Rom ver is 130.131<br>
[245942.548238] tvp5150 9-005c: i2c i/o error: rc == -19 (should be 1)<br>
[245942.614955] tvp5150 9-005c: i2c i/o error: rc == -19 (should be 1)<br>
[245942.659208] xc2028 9-0061: attaching existing instance<br>
[245942.659213] xc2028 9-0061: type set to XCeive xc2028/xc3028 tuner<br>
[245942.659215] em28xx #0: em28xx #0/2: xc3028 attached<br>
[245942.659218] DVB: registering new adapter (em28xx #0)<br>
[245942.659222] DVB: registering adapter 1 frontend 0 (LG Electronics LGDT3303 VSB/QAM Frontend)...<br>
[245942.659638] em28xx #0: Successfully loaded em28xx-dvb<br>
[245942.659641] Em28xx: Initialized (Em28xx dvb Extension) extension<br>
</code>


===Remote Control Support===
===Remote Control Support===

Managed to create this lirc.conf for the indtube. http://pastebin.com/PUC5H1PM


===MythTV Recognition===
===MythTV Recognition===
No issues noted in MythTV so far recognising the device, however you may wish to apply the below modifications to MythTV source prior to compiling in order to
use the built in channel scanning function within MythTV, and to printout the correct values for the signal quality or SNR in the OSD.


<pre>
//modification to frequencytables.cpp to allow the InDtube tuner to lock during channel scan

#else // if !DEBUG_DVB_OFFSETS
// USA Terrestrial (center frequency, subtract 1.75 MHz for visual carrier)
// VHF 2-4
fmap["atsc_vsb8_us0"] = new FrequencyTable(
// "ATSC Channel %1", 2, 57000000, 69000000, 6000000,
"ATSC Channel %1", 2, 56625000, 68625000, 6000000,
DTVModulation::kModulation8VSB);
// VHF 5-6
fmap["atsc_vsb8_us1"] = new FrequencyTable(
// "ATSC Channel %1", 5, 79000000, 85000000, 6000000,
"ATSC Channel %1", 5, 78625000, 84625000, 6000000,
DTVModulation::kModulation8VSB);
// VHF 7-13
fmap["atsc_vsb8_us2"] = new FrequencyTable(
// "ATSC Channel %1", 7, 177000000, 213000000, 6000000,
"ATSC Channel %1", 7, 176625000, 212625000, 6000000,
DTVModulation::kModulation8VSB);
// UHF 14-69
fmap["atsc_vsb8_us3"] = new FrequencyTable(
// "ATSC Channel %1", 14, 473000000, 803000000, 6000000,
"ATSC Channel %1", 14, 472625000, 802625000, 6000000,
DTVModulation::kModulation8VSB);
#endif // !DEBUG_DVB_OFFSETS
</pre>

<pre>
//modification to tvplay.cpp to printout the signal quality or SNR correctly

QString sigMsg = allGood ? tr("Lock") : lockMsg;

QString sigDesc = tr("Signal %1\%").arg(sig,2);
// Begin hack //
// if (snr > 0.0f)
// sigDesc += " | " + tr("S/N %1dB").arg(log10f(snr), 3, 'f', 1);
if (snr > 0.0f)
sigDesc += " | " + tr("S/N %1dB").arg((snr / 10 + .1), 3, 'f', 1);
// End Hack //
if (ber != 0xffffffff)
sigDesc += " | " + tr("BE %1", "Bit Errors").arg(ber, 2);
</pre>

Alternatively, in the xc2028 driver we can remove this if() and recompile the kernel modules.
This allows the inDtube tuner to use the correct offset so center frequencies are normalised the same as all
other ATSC devices. This is the best fix I could come up with, as now no user land apps require any modification
to get this device to tune/lock properly. I've been using this fix for a couple years now with no issues.

<pre>
diff --git a/drivers/media/tuners/tuner-xc2028.c b/drivers/media/tuners/tuner-xc2028.c
index 878d2c4..0f65b48 100644
--- a/drivers/media/tuners/tuner-xc2028.c
+++ b/drivers/media/tuners/tuner-xc2028.c
@@ -1074,7 +1074,6 @@ static int generic_set_freq(struct dvb_frontend *fe, u32 freq /* in HZ */,
* Robert Lowery <rglowery@exemail.com.au>
*/
-#if 0
/*
* Still need tests for XC3028L (firmware 3.2 or upper)
* So, for now, let's just comment the per-firmware
@@ -1091,7 +1090,6 @@ static int generic_set_freq(struct dvb_frontend *fe, u32 freq /* in HZ */,
else if (type != ATSC) /* DVB @6MHz, DTV 8 and DTV 7/8 */
offset += 200000;
}
-#endif
}
div = (freq - offset + DIV / 2) / DIV;
</pre>


==External Links==
==External Links==

Latest revision as of 00:42, 13 July 2014


A hybrid ATSC USB 2.0 device by Evga.


Overview/Features

This device supports ATSC (i.e. OTA Digital TV) and analog NTSC. The package includes a small telescoping monopole antenna and a short USB extension cable, a remote control, and a connector to svideo or composite video inputs.

Components used:

  • Samsung S5H1409 QAM/8VSB Frontend

Xceive XC3028L

  • (digital demodulator)
  • (video decoder)
  • Empiatech em2883 (USB bridge and analog audio)

Identification

The device identifies itself as a "eMPIA Technology, Inc" and the subsystem information provided by lsusb -v is ebla:2883.

Making it Work

This tuner is very difficult to get to find channels when scanning OTA ATSC. There is a thread about getting it to work which assuming you are familiar with the concept of frequency lists, as defined in /usr/share/dvb/atsc is very helpful at http://www.digitalhome.ca/forum/showthread.php?t=134023

You will need to modify the standard ATSC frequency list which has the wrong center frequencies for this tuner. Using vim or your favorite text editor modify the center frequencies in the intial-tuning-data contained in the text file /usr/share/dvb/us-ATSC-center-frequencies-8VSB and save it in /usr/share/dvb/atsc as my-ATSC. You need to subtract roughly 400 Khz from each center frequency. I subtracted 403615 Hz from each frequency so it falls in the exact center of what the InDtube Tuner can lock. From then on be sure to specify this file when scanning for channels with scan:

Scanning for channels.

scan -a 1 /usr/share/dvb/atsc/my-ATSC -o zap mychannels.conf

example initial-tuning-data modificaton

from:
/usr/share/dvb/atsc$ head us-ATSC-center-frequencies-8VSB
# US ATSC center frequencies, use if in doubt
A  57028615 8VSB
A  63028615 8VSB
A  69028615 8VSB
A  79028615 8VSB
A  85028615 8VSB
A 177028615 8VSB
A 183028615 8VSB
A 189028615 8VSB

to:
/usr/share/dvb/atsc$ head my-ATSC
# MY ATSC center frequencies, use for inDtube ATSC Tuner
A 56625000 8VSB
A 62625000 8VSB
A 68625000 8VSB
A 78625000 8VSB
A 84625000 8VSB
A 176625000 8VSB
A 182625000 8VSB
A 188625000 8VSB
A 194625000 8VSB


Firmware

type: xc2028 firmware, ver 3.6

xc3028L-v36.fw

Drivers

Analog Audio Issue

Sample kernel output

After you plug-in the device on a USB port, you should see something like this on dmesg:

usb 1-3: new high speed USB device using ehci_hcd and address 3
em28xx: New device EVGA inDtube @ 480 Mbps (eb1a:2883, interface 0, class 0)
em28xx #0: chip ID is em2882/em2883
em28xx #0: i2c eeprom 00: 1a eb 67 95 1a eb 83 28 d0 12 65 03 6a 1c 86 10
em28xx #0: i2c eeprom 10: 00 00 24 57 4e 07 01 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom 20: 46 00 01 00 f0 10 01 00 b8 00 00 00 5b 32 00 00
em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 01 01 00 00 00 00 00 00
em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 1c 03 45 00 56 00
em28xx #0: i2c eeprom 70: 47 00 41 00 20 00 69 00 6e 00 44 00 74 00 75 00
em28xx #0: i2c eeprom 80: 62 00 65 00 00 00 10 03 44 00 54 00 30 00 30 00
em28xx #0: i2c eeprom 90: 30 00 31 00 00 00 00 00 00 00 00 00 38 00 39 00
em28xx #0: i2c eeprom a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
em28xx #0: EEPROM ID= 0x9567eb1a, EEPROM hash = 0xcee44a99
em28xx #0: EEPROM info:
em28xx #0:       AC97 audio (5 sample rates)
em28xx #0:       500mA max power
em28xx #0:       Table at 0x24, strings=0x1c6a, 0x1086, 0x0000
em28xx #0: Identified as Unknown EM2750/28xx video grabber (card=1)
em28xx #0: Your board has no unique USB ID.
em28xx #0: A hint were successfully done, based on eeprom hash.
em28xx #0: This method is not 100% failproof.
em28xx #0: If the board were missdetected, please email this log to:
em28xx #0:       V4L Mailing List  <linux-media@vger.kernel.org>
em28xx #0: Board detected as Evga inDtube
tvp5150 0-005c: chip found @ 0xb8 (em28xx #0)
tuner 0-0061: chip found @ 0xc2 (em28xx #0)
xc2028 0-0061: creating new instance
xc2028 0-0061: type set to XCeive xc2028/xc3028 tuner
xc2028 0-0061: Loading 81 firmware images from xc3028L-v36.fw, type: xc2028 firmware, ver 3.6
xc2028 0-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000.
xc2028 0-0061: Loading firmware for type=MTS (4), id 000000000000b700.
xc2028 0-0061: Loading SCODE for type=MTS LCD NOGD MONO IF SCODE HAS_IF_4500 (6002b004), id 000000000000b700.
Registered IR keymap rc-evga-indtube
input: em28xx IR (em28xx #0) as /devices/pci0000:00/0000:00:1a.7/usb1/1-3/rc/rc0/input9
 rc0: em28xx IR (em28xx #0) as /devices/pci0000:00/0000:00:1a.7/usb1/1-3/rc/rc0
em28xx #0: Config register raw data: 0xd0
em28xx #0: AC97 vendor ID = 0xffffffff
em28xx #0: AC97 features = 0x6a90
em28xx #0: Empia 202 AC97 audio processor detected
tvp5150 0-005c: tvp5150am1 detected.
em28xx #0: v4l2 driver version 0.1.2
em28xx #0: V4L2 video device registered as video0
em28xx #0: V4L2 VBI device registered as vbi0
em28xx-audio.c: probing for em28x1 non standard usbaudio
em28xx-audio.c: Copyright (C) 2006 Markus Rechberger

Remote Control Support

Managed to create this lirc.conf for the indtube. http://pastebin.com/PUC5H1PM

MythTV Recognition

No issues noted in MythTV so far recognising the device, however you may wish to apply the below modifications to MythTV source prior to compiling in order to use the built in channel scanning function within MythTV, and to printout the correct values for the signal quality or SNR in the OSD.

//modification to frequencytables.cpp to allow the InDtube tuner to lock during channel scan

#else // if !DEBUG_DVB_OFFSETS
    // USA Terrestrial (center frequency, subtract 1.75 MHz for visual carrier)
    // VHF 2-4
    fmap["atsc_vsb8_us0"] = new FrequencyTable(
    //  "ATSC Channel %1",  2,  57000000,  69000000, 6000000,
        "ATSC Channel %1",  2,  56625000,  68625000, 6000000,
        DTVModulation::kModulation8VSB);
    // VHF 5-6
    fmap["atsc_vsb8_us1"] = new FrequencyTable(
    //  "ATSC Channel %1",  5,  79000000,  85000000, 6000000,
	"ATSC Channel %1",  5,  78625000,  84625000, 6000000,
        DTVModulation::kModulation8VSB);
    // VHF 7-13
    fmap["atsc_vsb8_us2"] = new FrequencyTable(
     // "ATSC Channel %1",  7, 177000000, 213000000, 6000000,
	"ATSC Channel %1",  7, 176625000, 212625000, 6000000,
        DTVModulation::kModulation8VSB);
    // UHF 14-69
    fmap["atsc_vsb8_us3"] = new FrequencyTable(
    //  "ATSC Channel %1", 14, 473000000, 803000000, 6000000,
        "ATSC Channel %1", 14, 472625000, 802625000, 6000000,	
        DTVModulation::kModulation8VSB);
#endif // !DEBUG_DVB_OFFSETS
//modification to tvplay.cpp to printout the signal quality or SNR correctly

QString sigMsg  = allGood ? tr("Lock") : lockMsg;

    QString sigDesc = tr("Signal %1\%").arg(sig,2);
    
// 		Begin hack 		//    
//    if (snr > 0.0f)
//        sigDesc += " | " + tr("S/N %1dB").arg(log10f(snr), 3, 'f', 1);
    if (snr > 0.0f)
        sigDesc += " | " + tr("S/N %1dB").arg((snr / 10 + .1), 3, 'f', 1);
// 		End Hack 		//
    if (ber != 0xffffffff)
        sigDesc += " | " + tr("BE %1", "Bit Errors").arg(ber, 2);

Alternatively, in the xc2028 driver we can remove this if() and recompile the kernel modules. This allows the inDtube tuner to use the correct offset so center frequencies are normalised the same as all other ATSC devices. This is the best fix I could come up with, as now no user land apps require any modification to get this device to tune/lock properly. I've been using this fix for a couple years now with no issues.

diff --git a/drivers/media/tuners/tuner-xc2028.c b/drivers/media/tuners/tuner-xc2028.c
index 878d2c4..0f65b48 100644
--- a/drivers/media/tuners/tuner-xc2028.c
+++ b/drivers/media/tuners/tuner-xc2028.c
@@ -1074,7 +1074,6 @@ static int generic_set_freq(struct dvb_frontend *fe, u32 freq /* in HZ */,
                 * Robert Lowery <rglowery@exemail.com.au>
                 */
 
-#if 0
                /*
                 * Still need tests for XC3028L (firmware 3.2 or upper)
                 * So, for now, let's just comment the per-firmware
@@ -1091,7 +1090,6 @@ static int generic_set_freq(struct dvb_frontend *fe, u32 freq /* in HZ */,
                        else if (type != ATSC) /* DVB @6MHz, DTV 8 and DTV 7/8 */
                                offset += 200000;
                }
-#endif
        }
 
        div = (freq - offset + DIV / 2) / DIV;

External Links

ATSC USB Devices