Many cable providers are transitioning away from analog to digital service. For those customers not upgrading to digital TV's, they are providing free digital to analog converters (DTA's). Traditionally, their full featured set top boxes (STB's) received all sorts of information such as encryption keys, guide data, etc via an out of band (OOB) POD interface. This is a special receiver that tunes frequencies outside of the normal TV frequencies. One of the pieces of information that's transmitted is a table that maps station callsigns and virtual channels (the integer channels that the STB's present to the user and are used by TV Guide, Schedules Direct, zap2it, etc) to RFchannel.program number that clearQAM TV's use. For example, Schedules Direct and Comcast may say FOODTV is channel 35 but a clearQAM capable TV plugged directly into the line will report it as 78.4. This would also traditionally require one to use the MythTV channel editor and manually input the frequency and program number for each channel and associate the xmltvid. Since Comcast is handing out DTA's for free, they are severely cost reduced and don't have a POD interface. Instead, they are transmitting the virtual channel table in-band (i.e. tuneable with a conventional clearQAM tuner) to allow the DTA's to do the virtual channel mapping.
Myth Setup Ordering
- Within mythtv-setup create the tuner cards and grabbers but don't do the "connections" yet
- run scte65scan as described below
- fill the database with the results
- Go back to mythtv-setup and create the connections and set the starting channel to a valid channel
The scte65scan tool
scte65scan is a utility that will read the in-band virtual channel tables and automate the mapping of frequencies and program numbers to virtual channels and xmltvids.
$ tar xzf scte65scan-0.2.1.tgz $ cd scte65scan-0.2.1 $ tar xzf libhdhomerun_VERSION.tgz
HDHomeRun Specific Steps
Then modify the Makefile.hdhr file to fix a few things. First, add the following line near the top:
LIBOBJS += $(HDHR_DIR)/hdhomerun_sock_posix.o $(HDHR_DIR)/hdhomerun_os_posix.o
And then add the -lrt library to the LDFLAGS line so it reads:
LDFLAGS += -lpthread -lrt
Build the Executable
And finally build it:
Or for the HDHomeRun:
$ make -f Makefile.hdhr
IRC and HRC cable systems
scte65scan bundles the us-Cable-Standard-center-frequencies-QAM256 frequency table. Some cable systems use channel frequencies that are slightly offset from standard, and this requires a different frequency table known as either IRC or HRC.
You can determine which, if any offset, by experimenting with the HDHR GUI. On the Tuner tab in the selection box before channel number try scans with 'us-cable' (standard), 'us-hrc', or 'us-irc'. Whichever option leads to finding channels is the right option for your system.
You can obtain the other frequency tables from the dvb-apps package, which can be installed on an Ubuntu system like:
$ sudo aptitude install dvb-utils
You then find the other frequency tables at /usr/share/doc/dvb-utils/examples/scan/atsc.
A quick overview of the process is as follows:
- Find the VCT_ID for your lineup. This can be done by obtaining a DTA or STB and reading it from the diagnostic page. Alternatively, it can also sometimes be found by inspection through an examination of the text-mode output of scte65scan. For example, run:
$ ./scte65scan -H FFFFFFFF,0 us-Cable-Standard-center-frequencies-QAM256
and look in the output for the VCT_ID for your channels (-H is used for the HDHomeRun)
- Generate SQL for importing into MythTV:
$ scte65scan -f3 -V your_VCT_ID itfile > vct.sql
- If you seem to be missing channels (e.g. your local broadcast HD), try the -p option to scan the full channel table:
$ scte65scan -H FFFFFFFF -p -f3,9 -V 3092 us-Cable-Standard-center-frequencies-QAM256 > vct.sql
- Import the SQL into MythTV:
$ mysql mythconverg < vct.sql
The next time it is run, mythfilldatabase will detect the virtual channel number in the 'freqid' and/or 'channum' field of the imported SQL and fill in the xmltvid for you if you are using Schedules Direct. Be sure to enable the channels at Schedules Direct prior to running mythfilldatabase. Alternatively, you can use the following SQL, which will also help by setting the callsigns to the same so that they don't double up in the UI:
SET @scte_source = <<scte source id>>; SET @sd_source = <<SD source id>>; UPDATE channel SET callsign=REPLACE(REPLACE(REPLACE(callsign, ' HD', 'DT'), '-HD', 'DT'), '-DT', 'DT') WHERE sourceid=@scte_source; UPDATE channel AS c1, channel AS c2 SET c1.channum = c2.channum, c1.xmltvid = c2.xmltvid, c1.name = c2.name, c1.icon = c2.icon WHERE c1.sourceid = @scte_source AND c2.sourceid = @sd_source AND c1.callsign = c2.callsign; UPDATE channel AS c1, channel AS c2 SET c1.callsign = c2.callsign, c1.xmltvid = c2.xmltvid, c1.name = c2.name, c1.icon = c2.icon WHERE c1.sourceid = @scte_source AND c2.sourceid = @sd_source AND c1.channum = c2.channum;
There are several things that are tricky about this.
- The SQL that scte65scan generates assumes that it can start the mplexids for the transports can start at 1, which only works if this is the only DVB source in the database. The latest unstable/development version (which version?) deals with this by multiplying the sourceid by 1000 and adding it to the RF channel number to generate mplexid's much like mythtv generates channel ID's by multiplying the sourceid by 1000 and adding it to the cable channel number. Otherwise you'll get conflicts, so you'll have to manually adjust the mplexid values to an unused range.
Here is an example that worked for an hdhomerun tuner in Santa Clara CA:
./scte65scan -H FFFFFFFF -f3 -V 3058 us-Cable-Standard-center-frequencies-QAM256 > vct.sql
mysql -u mythtv -p mythconverg < vct.sql
And one that worked for a pcHD-5500 tuner in Seattle WA:
./scte65scan -p -V 3025 -f3 us-Cable-Standard-center-frequencies-QAM256 > vct.sql
mysql -u mythtv -p mythconverg < vct.sql
For more information, visit the scte65scan project page
Fixing channel usage results
It's a good idea to use the channel editor either in mythtv-setup or in mythweb to edit the various channels to make them work properly. In particular, if your device has found both analog and digital channels Myth will pick the first channel available which is likely to be the SD version. If you delete the SD versions and leave only the HD versions for the appropriate sourceid then you'll ensure you actually get HD recordings.
scte65scan-0.2.1 may not generate a complete frequency table if any of your channels are broadcast on the same frequency as your VCT data. If you use the -p option to scan for ATSC PSIP data and find that certain channels will not tune, check the PSIP section of your vct.sql file for those channels. If the frequency referenced in the WHERE clauses for those channels doesn't exist in the frequency table section (dtv_multiplex table) you will have to add a record manually by duplicating the last INSERT statement in that section, incrementing the mplexid value for this new record and changing the frequency to match the frequency of your missing channel(s). You will need to re-import your vct.sql file after making this change.
How to determine the VCT_ID using scte65scan
This is probably the easiest way to obtain the VCT_ID using the same tool you'll use later for scanning. Simply run it using something like this:
./scte65scan -H FFFFFFFF,0 us-Cable-Standard-center-frequencies-QAM256 > tables.txt
And then the VCT_ID will likely be right above the channels in the output.
The output (with the VCT_ID in green) will look something like:
VCT_ID 3042 (0x0be2) at 243012500hz, version 11 VC CD.PROG M# NAME ==================== 2 28.9 4 HSN 3 27.1 4 KCRA (Econo Basic link) ...
Note that there may be multiple tables that are very similar, with the tables for multiple towns. In some cases, the most obvious differences will be in the local town channels. In some cases, using the wrong table will result in receiving the public access channels for the wrong town; apparently Comcast will send the same signal to multiple towns and configure the cable boxes to use a different table depending on where it is installed.
How to determine VCT_ID using a Full Set Top Box
For those without DTAs, it is still possible to determine the VCT_ID using most set top boxes. This method is tested on Motorola DCH-3200s and DCH-6200s, but should work for other Motorola models as well.
- Power on your box.
- Press "Power" on the remote to turn off the box. IMMEDIATELY press "OK" on the remote. You should see a long list of menus numbered d01-d18.
- Select option d6, "Current Channel Status."
- You should see VCT ID listed on this page. It may only be one or two digits, which should correspond to the last one or two digits in the VCT_ID. You can run the scte65scan tool with no options to see the available tables. If the VCT_ID on your set top box is "10" and the scte65scan program shows that one of the VCTs is 3010, then this is your VCT_ID. Take note of both the decimal and hex VCT_ID and enter them in the table below.
How to determine VCT_ID using the Pace DC50X
- Make sure the unit is on.
- Hold down the INFO button until you see the diagnostics screen.
- Press +/- until you see the VCT_ID. This should be the 2nd screen
Here are screenshots and unboxing:
Here is the mythtv-user post about scte65scan:
Update 10/31/09: Pace DC50X box you get from comcast may no longer have the screens listed in the screen shots above. Step 3 above will be different. Use the channel up or down button to go to the Virtual Channel Map and press enter on the remote, it will give you the channel list, complete with frequencies. (along the top of the screen will give the VCT ID)
VCT_ID by Location
Please post your Zip code, city, and VCT_ID in the table below to allow others without DTAs to determine a probable/possible VCT_ID choice.
Important! All locales will see multiple VCT_IDs, only one of them applies to your locale. That is the point of this table. See the instructions above and only post one VCT_ID: the one for your exact location. Please do not post all the VCT_IDs you see! Rarely, the same ZIP code can overlap locales and have different VCT_IDs. This is why it is essential that you provide all information to distinguish one from the next.
Note: Please put each ZIP code in a new entry. Adding extra ZIP codes to an existing entry breaks sorting of the table. Please do not leave any fields blank. Figuring out the decimal and hex values are explained above.
Note: As requested (long ago), the table now includes a provider column since this article originally mentioned only Comcast and it applies to other providers. It's probably safe to assume all entries are for Comcast unless otherwise posted. Please go back and add the provider for your area.
|State||City||Zip Code||VCT_ID (decimal)||VCT_ID (hex)||Provider|