Ceton InfiniTV-4

The Ceton InfiniTV-4 provides four CableCARD tuners on a single PCIe 1x card which can simultaneously tune up to four cable channels using a single M-type CableCARD, obtained from your cable company. Depending on which cable company and service you are subscribed to, the exact channels that Mythbuntu will receive can vary. However, the card is also capable of being used without a CableCARD to tune Clear QAM channels.

For the first part of the installation, install the InfiniTV-4 into your system but do not install the cable card yet. There is a bug (or is it a feature) in the card's code that prevents a clear QAM channel's program number from being selected unless the cable card is not installed, and we will be doing basic tests on clear QAM channels first, as part of the installation verification process.

To set up this card on Mythbuntu, you first need to make sure that your version of MythTV is version 0.25 or greater. If you have installed Mythbuntu 12.04 or greater, you will have the requisite version of MythTV.

Next, obtain the latest InfiniTV-4 Linux driver source from:

     http://cetoncorp.com/infinitv_support/linux_drivers/

We downloaded the following files:

     ceton_infinitv_fw_20120313_1_1_7_2.IMAGE   (latest firmware)
     ceton_infinitv_linux_driver_1_7.tar.gz     (device driver)
     infinitv_client_1_2.tar.gz                 (client program)
     reset_network.py                           (Python program to reset card)

To build the driver, make sure you have the driver build environment (this is not necessarily the full kernel build environment). To verify that you do have the driver build environment, try:

     ls -l /lib/modules/`uname -r`/build

If you have this directory installed, you're good to go (Ubuntu usually provides it in a typical installation). Otherwise, you'll need to first get the build environment, either using the Package Manager or by doing:

     sudo apt-get install build-essential

Then, you should make sure to install the latest headers for your kernel. When you enter the following command, be sure to use back-quotes:

     sudo apt-get install linux-headers-`uname -r`

Finally, if the link doesn't already exist, link the headers to the build folder in the proper place. This should get you compiling:

     sudo ln -s /usr/src/linux-headers-`uname -r` /lib/modules/`uname -r`/build

Extract the InfiniTV-4 source from the tar file, build then install it:

     make
     sudo make install

The install will do a depmod and install a udev config file so that the device driver will start up properly at the next boot up. If you don't want to reboot, you can load the driver manually like this:

     sudo modprobe ctn91xx

You should now see a pseudo network device with an address of ctn0, which can be observed by typing:

     /sbin/ifconfig

In all probability, the ctn0 device will have an IPV6 address but will not be given an IPV4 address. It will usually be given a MAC address that is of the form 00:22:2c:ff:ff:ff. You should make a note of this MAC address.

The interface to the InfiniTV-4 is via the network. The local network, on the machine where the InfiniTV-4 is installed, is kludged to connect to a device with an IP address of 192.168.200.1 which is actually the control interface of the card (if there are multiple InfiniTV-4 cards installed on the machine, the second card will be given an IP address of 192.168.200.3, the third 192.168.200.5, etc.). In order for the system to talk to the InfiniTV-4, there must be a network device configured on the machine itself which is on the same subnet as the InfiniTV-4 (i.e. 192.168.200.x). This is where the ctn0 device comes in.

The ctn0 device must be given an IPV4 address which is on the 192.168.200.x subnet. Usually, the address 192.168.200.2 is chosen. Note that, only a single address must be assigned to the ctn0 device even if there are multiple InfiniTV-4 cards installed. There is never a ctn1, ctn2, etc. device, since the ctn0 device will suffice to talk to all of the cards.

The InfiniTV-4 card runs a DHCP server on the 192.168.200.1 IP address. If you have an installation of Mythbuntu that doesn't use a static IP address (i.e. that uses DHCP), the DHCP client that runs on your system should obtain a 192.168.200.x IP address from the card at boot time and assign it to the ctn0 device. If you are using static IP addresses or DHCP is disabled for any other reason or you just wish to assign the same static address every time, you will have to add the ctn0 device to your network configuration by editing /etc/network/interfaces:

/etc/network/interfaces:

.

       .

auto ctn0
iface ctn0 inet static

      hwaddress ether 00:22:2c:ff:ff:ff
      address 192.168.200.2
      netmask 255.255.255.0
       .
       .
       .

At this point, you should reboot the system. After the reboot, the ctn91xx driver should come up and a 192.168.200.x IP address should be assigned to the ctn0 device. You can check this again with:

     /sbin/ifconfig

You can also check to see that all of the Ceton devices are created properly by listing them like this:

     ls -l /dev/ceton

You should see devices like:

     crw-rw-rw-  1  root root  231,  0  Aug 10  14:50  ctn91xx_ct10
     crw-rw-rw-  1  root root  231,  7  Aug 10  14:50  ctn91xx_filter0_0
     crw-rw-rw-  1  root root  231,  8  Aug 10  14:50  ctn91xx_filter0_1
     crw-rw-rw-  1  root root  231,  9  Aug 10  14:50  ctn91xx_filter0_2
     crw-rw-rw-  1  root root  231, 10  Aug 10  14:50  ctn91xx_filter0_3
     crw-rw-rw-  1  root root  231, 11  Aug 10  14:50  ctn91xx_filter0_4
     crw-rw-rw-  1  root root  231, 12  Aug 10  14:50  ctn91xx_filter0_5
     crw-rw-rw-  1  root root  231,  1  Aug 10  14:50  ctn91xx_mpeg0_0
     crw-rw-rw-  1  root root  231,  2  Aug 10  14:50  ctn91xx_mpeg0_1
     crw-rw-rw-  1  root root  231,  3  Aug 10  14:50  ctn91xx_mpeg0_2
     crw-rw-rw-  1  root root  231,  4  Aug 10  14:50  ctn91xx_mpeg0_3
     crw-rw-rw-  1  root root  231,  5  Aug 10  14:50  ctn91xx_mpeg0_4
     crw-rw-rw-  1  root root  231,  6  Aug 10  14:50  ctn91xx_mpeg0_5

Another good test is to try pinging the 192.168.200.1 device:

     ping 192.168.200.1

If you get a response, you are in business. Using the Web browser on the machine where the InfiniTV-4 is installed (you must be on the machine where the card is installed because the 192.168.200.x subnet is not visible anywhere else on your local network), you can view the device Web page at http://192.168.200.1. The best way to view this page is to exit out of MythTV and launch the browser from the desktop.

Note that, if you can't get a response or see the InfiniTV-4 at the 192.168.200.1 IP address (or 192.168.200.3, or 192.168.200.5, etc., if you have multiple cards installed), you may need to adjust your firewall settings. If you have a firewall that is local to the system where the device is installed (and only if it is local to that system), you need to permit all traffic on the 192.168.200.* subnet. Since this subnet exists only on the local machine, there is no harm in not firewalling this traffic. Otherwise, if you have a normal network where the firewall is external to the system where the InfiniTV-4 is installed, there's no need to do anything.

Also note that, if you still can't get a response or see the InfiniTV-4, you might want to try the "reset the IP address program", reset_network.py. Download this file and run the code using the Python interpreter. Hopefully, it will reset the card to the proper IP address but you may have to hack the code to get it to do the right thing when multiple cards are installed.

The latest firmware should be loaded into the InfiniTV-4 card before you proceed much further. One of the cards that we received in 2012 had two-year old firmware. Because newer is always better, we got the latest firmware revision from the Ceton Web site (noted above). Loading new firmware into the card is very easy. From the "System" tab of the device Web page, the new firmware file can be browsed for from the "Browse" button at the bottom of the page. Once you find the file, it is uploaded to the device by clicking the "Upload" button. The process takes about 5 minutes. When the upload is done, you should reboot the machine. That's all there is to upgrading the new firmware.

Once again, surf over to the device Web page at http://192.168.200.1. This time, pick the first tuner and then select the "Tuner" tab. You will see a spot where you can enter a frequency. If you know the frequency and program number of any of the clear QAM channels that your cable provider is "required" to broadcast, you can enter the frequency in the "Frequency" box and click the "Tune" button (leave the "Modulation" box set to QAM256). Note that the frequency is in KHz so don't enter something like 525000000. Instead, for example for channel 74, enter 525000. If you don't know what the clear QAM channel frequencies are for your cable provider, you may be able to find them here:

     http://www.silicondust.com/support/channels/

As an example, to use this Web page to find a test channel that one could tune to, one could look up KTLA-DT under Time Warner Cable for the zip code 90210 where one would find:

     89-543   (channel 89, program 543)

Channel 89 has a center frequency of 615000 KHz so one would enter that number before hitting the "Tune" button. At that point, you should see the number 543 listed among the programs carried on that channel, whereupon you can pick that program from the dropdown list and then click the "Set Program" button. Again, as we noted above, setting the program will not work if the cable card is installed so we hope you heeded our advice about leaving it out for now.

Another way to find out what programs are broadcast in the clear by your cable provider, if you have a regular HDTV encoder installed in your system, is to look at the list of channels that were scanned by MythTV when you set that encoder up. You can do a select from the database, like this:

     select callsign, channum, channel.mplexid, channel.serviceid,
         dtv_multiplex.frequency
       from channel join dtv_multiplex on channel.mplexid = dtv_multiplex.mplexid
       where callsign like 'KTLA%';

A third way is to look at the channel map that is created by your television set, if it provides such a map.

Once you have picked a channel frequency and program number for a clear QAM channel that is broadcast by your cable provider, from the device Web page, you can check that the card has tuned to that channel correctly and that you can view the selected program. The device driver creates special devices for each of the four tuners on the card and one of them (named like ctn91xx_mpeg0_0, as shown in the listing above) carries the stream for the selected channel/program on the first tuner. You can view it with this command, entered into a command window that is open on the desktop:

     cat /dev/ceton/ctn91xx_mpeg0_0 | mplayer -cache 8192 -

If you see the correct TV program for the selected channel/program, you have installed the card correctly.

It is now time to proceed to pairing the cable card with the InfiniTV-4. Shut down the system and insert the cable card into the InfiniTV-4. Once that is done, start the system back up.

To pair the cable card with the InfiniTV-4, you will need to surf over to the device Web page again and pick the "CableCARD" tab. Under this tab, you will will see a link that says something like "CableCARD(tm) Pairing". When you click this link, a new page will appear that shows a phone number to call and the following information:

     CableCARD ID: nnn-nnn-nnn-nnn-n
     Host ID: nnn-nnn-nnn-nnn-n
     Data: nnn-nnn-nnn-nn
     UnitAddress: nnn-nnnnn-nnnnn-nn
     Card S/N: ccnnnnccnnnn
     eCM MAC: Unknown
     Host MAC: hh:hh:hh:hh:hh:hh
     Host Type: One-way

You'll need some or all of this information to pair the cable card with the InfiniTV-4.

If you are lucky enough to be a Verizon FIOS customer, you can pair them by surfing over to this link:

     http://www.verizon.com/fiostv/selfinstall

You will need the activation code that came on the Customer Receipt that was shipped with the cable card. Follow the instructions on the Web site to pair the cable card. For us, it took about two minutes after we completed entering the pairing information for Verizon to send the activation message to the cable card and activate it. After that, the channel map showed up in about 10 or 15 minutes.

Otherwise, you should call the phone number that was shown on the "CableCARD(tm) Pairing" page. Good luck with the cable company. You may find yourself, unable to speak to a human, in a IVR menu loop that doesn't do you any good. If that's the case, you can try saying the word "operator" to get to a real human. This works, for example, on the Verizon activation line.

Once the CableCARD is paired with the InfiniTV-4, you should be able to verify this fact by going to the "CableCARD" tab of the device's Web page. There you will see a message that says something like, "Activated, activation message received, authenticated ...". If you see that, there is a good chance that the pairing has been successful. If you don't see it, the pairing was unquestionably unsuccessful.

After the channel map arrives, you can view it from the same "CableCARD" tab of the device's Web page. Further down the page, you'll see the "Number of Channels" field. Intuitively, if you click on the "Number of Channels" field tag (i.e. click on the string "Number of Channels" itself), you will be shown the channel map. This will give you an idea of the channel numbers that you can use to tune the InfiniTV-4's tuners.

Pick a channel number that is obviously an encrypted channel (e.g. USA, TNT, A&E). Go to the "One" tab of the device's Web page and then click the "Tuner" therein. You will see a "Channel" where you can enter your chosen channel's number. Click the "Set Channel". This will cause the channel map to be used to look up the actual channel frequency and program number, for the virtual channel that you entered, and tune the first tuner to them. You should now be able to view the chosen channel with this command, entered into a command window that is open on the desktop:

     cat /dev/ceton/ctn91xx_mpeg0_0 | mplayer -cache 8192 -

If you see the correct TV program for the selected virtual channel, you have paired the CableCARD correctly and it is initialized with the correct rights, etc. If not, you've got some troubleshooting to do.

Go to the "Log" tab of the device's Web page and scroll down to bottom of the log. If you see something that looks like this:

     [0] Sending ca_pmt to CableCARD for program number 108 index 0
     WARNING: [0] Timed out waiting for CCI (recvd 0)

That is to say, the CableCARD timed out and didn't send a CCI. If you see such a log entry, your CableCARD has not been set up properly, regardless of whether it is paired properly and what it says on the CableCARD tab.

You need to get on the phone with your cable provider's Tech Support. If you can't get your point across to the Tier 1 support people and convince them to do what you ask (i.e. reset the CableCARD), try to get them to connect you to the Tier 2 support people.

What you need to do is convince Tech Support to send your CableCARD a master reset, which is sometimes called a grandslam hit, or a cold hit, or a DAC Init hit. This will cause it to be reinitialized with the correct rights (i.e. the ability to decrypt the content you've paid for). Despite the fact that the card is paired and authorized correctly, channel decryption may not work correctly until you do this.

On the other hand, if you see a log entry that says something like this:

     [0] CCI 01 arrived for program 108

You are never going to see this channel (or at least the current content on this channel) because DRM will not permit it. Choose another channel. If they all have the same problem, you are probably out of luck, but its a good bet that you will only experience this problem on the premium channels that your cable provider broadcasts (e.g. even if you are subscribed to HBO, you are probably not going to be able to see it).

Incidentally, just for reference sake, here's a list of the CCIs and what they mean:

     0x00 - Copy Freely.
     0x01 - Copy No More.
     0x02 - Copy Once (the content can be recorded).
     0x03 - Copy Never (the content can be recorded but only viewed in the
              next 90 minutes, whereupon it is deleted).

By the way, if you are still experiencing problems with encrypted channels, you may be tempted to try the Python client program that is provided by Ceton. Our advice is to eschew this turkey. We extracted it, fixed the bugs in it so that it would run, and then tried it out. It did let us set the channel number on a tuner but then it just sat there looking stupid. When we cancelled it, it left a process hanging around that locked the tuner. Even as root, we couldn't kill the process. Thus, after using it a few times, we had to reboot the sytem to get the tuners back. Swell behavior for a program that does essentially nothing (you can tune to any channel from the Web UI as many times as you like).

Anyway, until you can see at least one encrypted channel with mplayer, using the device's Web page to tune to the channel, there's no point in proceeding to set up MythTV (unless all you want is unencrypted channels -- in which case, why did you get the CableCARD in the first place).

When you are ready to set up your InfiniTV-4 under MythTV (remember you need Myth 0.25 or greater), you may find that some preparatory work is beneficial. Certainly, you can use a listings source such as Schedules Direct, along with mythfilldatabase, to get a channel lineup, and then select it when you connect the card to the input source.

To do this, you should create a video source normally, from the Backend Setup screens. If you are using a listings source (such as Schedules Direct), select it from the dropdown list. When you set up the four tuners on the InfiniTV-4, you will connect the video source to the input of each recorder. There is no need to do a channel scan if you are using a CableCARD. Simply click the "Fetch channels from listings source" button when making the the input connection. If, on the other hand, you aren't using a CableCARD with the InfiniTV-4, then you will need to click "Scan for channels" just as if it were a conventional Clear QAM card.

We, however, prefer to build our channel lineups ourselves, manually. To do this, we begin with the virtual channel map that is sent by the cable provider to the InfiniTV-4. If your cable provider is like ours, you'll see about 700 channels in the virtual channel map. Probably 40 or 50 of them are all that you really care about. If there are only a few of them, you can write them down by hand by proceeding to the "CableCARD" tab of the device's Web page. Near the bottom of the page, you'll see the "Number of Channels" field. As we said above, intuitively, if you click on the "Number of Channels" field tag (i.e. click on the string "Number of Channels" itself), you will be shown the channel map.

If there are a lot of channels that you are interested in, you can try to download the channel map to a file. Unfortunately, the channel map is displayed by a routine on the Web page that uses Ajax (i.e. there is nothing to save, if you save the page itself). To figure out where the channel map is being loaded from, you need to look at the page source. The last time we did this, the channel map's pages were being loaded from:

     http://192.168.200.1/view_channel_map.cgi?page=1

You can view subsequent channel map pages by using page numbers 2, 3, etc. The pages will be shipped to your Web browser as basic HTML pages, which can be saved, one at a time, to flat files. You can then combine and edit them to get a complete channel list. For us, the channel list looks something like this:

.

       .

550 USA Network HD
551 TNT HD
552 TBS HD
553 FX HD

       .
       .
       .

We prefer to manually check all of the channels in the channel map, that we want to include in our MythTV lineup, before we build the lineup. That way, we know what will work beforehand, without needing to account for any MythTV strangeness. However, this process is quite laborious and you may wish to skip it. It is certainly not required.

To create a lineup by hand, we construct an SQL file that cleans out any pre-existing lineup, from the channel table, and then builds a new lineup from the SQL statements that we supply.

The first step is to determine which source ID to use. This can be extrapolated from the existing source IDs, which can be listed from the database like this:

     select sourceid from channel group by sourceid;

Pick a source ID that isn't already in the channel table and start by adding it (you only need to do this once) to the database like this (here we're assuming a source ID of 5):

     insert into videosource values(5, 'Fiber-CC', '/bin/true', '', 'us-cable',
       NULL, NULL, 0, NULL, -1);

You can also add the new video source from the backend setup GUI but we find that this approach involves too much screwing around. A simple SQL insert command is so much easier. Your mileage may vary.

The next step is to begin constructing the SQL file that will create the lineup by starting with a line that deletes any preexisting lineup:

FIOS-Mytown_CCardLineup.sql:

     -- WARNING: The following line clears out the Fiber-CableCard channels in
     --          the channel table
     delete from channel where sourceid=5;
          .
          .
          .

Now, we add an entry for each channel that we care about, that is found in the virtual channel table sent by the cable provider. These entries should include the channel number and frequency to tune to (the same number), the chosen source ID, the call sign, the name and an XMLTV ID. You can also set the visible attribute to either show the channel in the channel list or not. All the rest of the fields can probably take the defaults. A typical entry will look like:

FIOS-Mytown_CCardLineup.sql:

.

       .

-- Add the HD virtual channels supported by the CableCARD insert into channel set chanid=5550, channum='550', freqid=550, sourceid=5, callsign='USA-CCFi', name='USA Network HD', icon='', finetune=NULL, videofilters='', xmltvid='5550', recpriority=0, contrast=32768, brightness=32768, colour=32768, hue=32768, tvformat='Default', visible=1, outputfilters='', useonairguide=0, mplexid=NULL, serviceid=NULL, tmoffset=0, atsc_major_chan=0, atsc_minor_chan=0, last_record='0000-00-00 00:00:00', default_authority='', commmethod=-1;

       .
       .
       .

Proceed through all of the virtual channels that you wish to see, from the channel table that was obtained by the InfiniTV-4.

Pay particular attention, if you will be loading your own guide data (see Making Up Guide Data) or using one of the XMLTV grabbers to obtain guide data. Ensure that you set the xmltvid field to the channel identifier that matches the second display-name that the XMLTV data uses for each channel. Typically, this is the channel number or call sign but you may want to inspect the XMLTV data first to determine what to use.

A complete set of updates should look something like this:

FIOS-Mytown_CCardLineup.sql:

     -- WARNING: The following line clears out the Fiber-CableCard channels in
     --          the channel table
     delete from channel where sourceid=5;
     -- Add the HD virtual channels supported by the CableCARD
     insert into channel set chanid=5550, channum='550', freqid=550, sourceid=5,
       callsign='USA-CCFi', name='USA Network HD',
       icon='', finetune=NULL, videofilters='', xmltvid='5550', recpriority=0,
       contrast=32768, brightness=32768, colour=32768, hue=32768,
       tvformat='Default', visible=1, outputfilters='', useonairguide=0,
       mplexid=NULL, serviceid=NULL, tmoffset=0,
       atsc_major_chan=0, atsc_minor_chan=0, last_record='0000-00-00 00:00:00',
       default_authority='', commmethod=-1;
     insert into channel set chanid=5551, channum='551', freqid=551, sourceid=5,
       callsign='TNT-CCFi', name='TNT HD',
       icon='', finetune=NULL, videofilters='', xmltvid='5551', recpriority=0,
       contrast=32768, brightness=32768, colour=32768, hue=32768,
       tvformat='Default', visible=1, outputfilters='', useonairguide=0,
       mplexid=NULL, serviceid=NULL, tmoffset=0,
       atsc_major_chan=0, atsc_minor_chan=0, last_record='0000-00-00 00:00:00',
       default_authority='', commmethod=-1;
          .
          .
          .

Be aware that you can have two channels with the same number (especially if one is analog and one is digital) but you probably won't be happy with the consequences. For example, despite the fact that you're viewing TV using a digitial encoder, and you've defined a digital channel 12, entering 12 on your remote, to change to that digital channel, may result in MythTV switching to an analog encoder and showing you analog channel 12 instead. Worse yet, recordings may end up on the wrong encoder (see How MythTV Chooses Which Input To Record).

Consequently, for virtual channels that mirror analog channels, it is much better to move them to a higher range (such as 5nn), thereby keeping them unique. The channel number given by "channum" is the displayed channel number. The virtual channel that is tuned by the InfiniTV-4 is the number given by "freqid". The two numbers are usually kept the same but they need not be. Note that you can use anything you like for "channum" but, if you don't use numerics and you don't use the proper separator character, MythTV will sort your channels in odd order.

Once you've built your channel definitions file, you can feed it in to MySQL with this command:

     source /path/to/file/FIOS-Mytown_CCardLineup.sql

Setting up the four tuners on the InfiniTV-4 is anticlimatic. Once you've completed all of the above steps, you know that the device is working and you have what should be a good lineup already built. All that is left is to run the MythTV Backend Setup program from the System menu on the desktop. Before it comes up, you'll be asked to shut down the backend, for which your password is required.

From the first menu, pick "Capture Cards". The screen that comes up lists all of the currently defined cards (if any) and has a selection for adding new cards. Pick "New capture card."

On the first capture card page, you need to pick "Ceton Cablecard Tuner" from the dropdown list under "Card type:". You will then fill in the IP address that you assigned to the first (or only) InfiniTV-4 under the "IP Address:" field. Despite the fact that the help text says the default is 192.168.200.1, you must actually fill this IP address in. If you have more than one InfiniTV-4, the next IP address will probably be 192.168.200.3, and so on.

For some reason, you must fill in the card number under the "Card Number:" field, although the IP address should be sufficient to actually identify the device. For the purposes of this field, the first card is numbered 0, the second is numbered 1, and so on.

The last field to be filled in is the "Tuner:" field, which identifies the tuner on the device that is being set up. Note that, in the case of the InfiniTV-4, the device has four tuners. You must define each one individually, repeating all of these steps as each is set up. The first tuner is numbered 0, the second is numbered 1, and so on up to 3.

When you have correctly entered all of the information, a device ID will be made up that looks like "192.168.200.1-0.0". This device ID will be used to refer to the tuner from henceforth. You can click the "Finish" button and the new capture card will be defined.

After you've set up all of the InfiniTV-4 tuners/capture cards, you should exit the "Capture Cards" screen and select "Input Connections" from the main menu. It is here that you will associate the new tuners/capture cards with your previously created lineup. Select each new tuner/capture card from the list and set it up on the ensuing two pages.

On the first page, pick a unique display name that can be used to reference the card and fill it in under the "Display Name:" field. Under the "Video Source:" field, pick your newly-created lineup. The "Use quick tuning:" field should be set to "Never".

As discussed above, there is no need to click either the "Scan for channels" or "Fetch channels from listings source" buttons. Hopefully, you have already built a channel lineup.

The "Starting Channel:" field's value should default to the first channel number defined in your lineup. If you'd rather start on a different channel, you can enter it here but this number is changed every time someone watches Live TV on this tuner so there's no need to stress out over it. It does need to be a valid channel number, though, or the tuner may hang when someone tries to watch Live TV.

When you click the "Next" button, you'll see the second capture card setup page. All of the default values there are acceptable so you just need to click "Finish" to set up the new tuner/capture card. Don't forget to set up all four tuners/capture cards.

When you've set up all four tuners, you can exit the Backend Setup program and restart the backend. You'll need to reenter your secret password for this. We never bother to run mythfilldatabase. You should now be able to record or watch Live TV on all four (or 8, or 12) tuners at once.