Adding Digital Cable Channels (For ATSC/QAM Tuner Cards -- USA/Canada)

From MythTV Official Wiki
Revision as of 23:40, 1 February 2006 by Steveadeff (talk | contribs)

Jump to: navigation, search
Clock-green.png
This article is being created or undergoing major editing at this time.
As a courtesy, please do not edit this article while this message is displayed. The person who added this notice will be listed in its edit history should you wish to contact him or her.

Jason Beck wrote this to the mythtv-users list. It's since been the defacto for getting QAM working for HDTV tuner cards. My hope is to update this for the soon to come 0.19 release and perhaps add more information to the process to make it even "easier".

MythTV Database

A little background first.

There are two tables in the MythTV that we are concerned with, the channels table and the dtv_multiplex table. dtv_multiplex stores the frequencies for the channels, channels stores the actual channel information, with a reference to the dtv_multiplex table.

The best method for adding HDTV channels to the db is to populate channels with the channel information from your guide source (Zap2It, etc), then modify the table to add the frequency, etc. information.

azap

First a list of the receivable channels must be created. I have found MythTV's scanner to not do an adequate job of finding the appropriate channels. In order to ensure that all channels you are able to receive are found it is suggested to use the dvb-apps scan utility.

Run atscscan with the default table as an arguement, for open signals on a cable line, one of these two should work. HRC and IRC are different frequency methods that can be used, its hard to tell which your cable company uses without trying both. You may also not receive any channels this way, and may have to manually run the next step using all frequencies. More on this later. First, lets at least try atscscan,

atscscan atsc/us-Cable-HRC-center-frequencies-QAM256

or

atscscan atsc/us-Cable-IRC-center-frequencies-QAM256

this will output a lot of information as atscscan tunes through the different frequencies and scans for channels. What we are interested in is the output at the end, which will look similar to:

dumping lists (26 services)
KNTV-HD :207000000:QAM_256:65:68:4
NBC Wea :207000000:QAM_256:81:84:5
KBWB-HD :503000000:QAM_256:49:52:3
KBWB-SD :503000000:QAM_256:65:68:4
KGO-DT :533000000:QAM_256:49:52:3
KGO-DT :533000000:QAM_256:65:68:4
KTSF-D2:551000000:QAM_256:49:68:4
KTSF-D1:551000000:QAM_256:49:52:3
KPIX DT:563000000:QAM_256:49:52:1
KQED-HD:569000000:QAM_256:49:52:3
ENCORE:569000000:QAM_256:65:68:4
KMTP Digital Television:587000000:QAM_256:49:52:3
Telefutira:593000000:QAM_256:49:52:3
KCNS-DT:623000000:QAM_256:49:52:3
KKPX Faith:635000000:QAM_256:97:100:6
KKPX Worship:635000000:QAM_256:81:84:5
KKPX Pax East:635000000:QAM_256:65:68:4
KKPX Digital Television:635000000:QAM_256:49:52:3
KCSM-TV:647000000:QAM_256:33:36:2
Jazz-TV:647000000:QAM_256:49:52:3
KBHK-DT:659000000:QAM_256:49:52:1
KTVUHD:725000000:QAM_256:49:52:3
KTVU-DT:725000000:QAM_256:65:68:4
KRON-SD:731000000:QAM_256:49:52:3
KRON-HD:731000000:QAM_256:65:68:4
KTNC DIGITAL TELEVISION:767000000:QAM_256:49:52:3
Done.

Your lucky if you see channel names, it makes life easy, you may not, but thats ok, they can be figured out later.

The format for each channel line in this list is as follows: ChannelName:Frequency:Modulation:VID:AID:PID

  • Modulation should be QAM_256
  • VID is the decimal equivalent of the hex Video ID
  • AID is the decimal equivalent of the hex Audio ID
  • PID is the decimal equivalent of the hex Program ID

Important for the MythTV database are the frequency and Program ID.

Now you need to copy the lines with channel data (ignore the "dumping" and "Done." lines) to a file at $HOME/.azap/channels.conf so we can verify channels, and if needed figure out what they are.

Once this is done we can use the dvb-apps's azap utility to tune the different channels.

Running

./dvb-apps/util/szap/azap -r KNTV-HD

replacing KNTV-HD with the first name in your list should output similar to,

using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
tuning to 207000000 Hz
video pid 0x0041, audio pid 0x0044
status 00 | signal 3999 | snr cd37 | ber 00000000 | unc 00000000 |
status 1f | signal cb84 | snr f8cf | ber 00000000 | unc 00000000 | FE_HAS_LOCK
status 1f | signal cb84 | snr f8b3 | ber 00000000 | unc 00000000 | FE_HAS_LOCK

Seeing FE_HAS_LOCK is what you are looking for, it means your card has succesfully tuned to the frequency.

Using another terminal we can watch the tuned channel using mplayer with

mplayer -nosound /dev/dvb/adapter0/dvr0

This will not play audio, its a safe way of testing, we won't have to worry about audio output, feel free to change this.

You can use this method to test all the channels in your list, make sure the names are correct, or figure out what channel it is if needed.

I suggest creating a second channels.conf file and filling it with verified channels.

Blank Frequencies

Just your luck! If your atscscan comes up with nothing, here are two channel.conf setups (for IRC and HRC).

(i'll add these later)

MythTV Database Modification

Now that we have a list of working channels, their frequency, and Program ID we are ready to begin entering the data into MythTV's database.

dtv_multiplex

You may have noticed that many of your channels are on the same frequency with different Program ID's (and thus different Video and Audio ID's as well). This is because each frequency has the ability to carry many different streams of data, each is given their own id, with a program id for each channel referencing these video and audio id's. MythTV only needs the frequency and Program ID to properly tune a channel. The dtv_multiplex table is how MythTV keeps track of the frequencies for channels.

You can try using mythtv-setup's channel scan to try and find channels. Many find this won't work properly though. If things work well it should find all, or nearly all the channels you have in your custom channels.conf file. This will also have the added benefit of populating your dtv_multiplex table. If it doesn't work it may populate with non-existant channels and non-useful frequencies.


The final option is to import your custom channels.conf file. This won't work 100% properly and you will still have to edit the channels table, but it should give you a proper dtv_multiplex table.

It is suggested to modify or verify the table manually using [phpMyAdmin], a web based MySQL management tool. The table has 3 fields which we will find important,

  • mplexid is the individual id number for the entry. Ideally they will be in numerical sequence, ie 1,2,3,4,5...
  • sourceid is the source for which the entry corresponds to, if your HD tuner is source 2 then this would be 2.
  • frequency is the frequency. Each frequency needs only be in the table once per source. So if you have 3 channels on the same frequency, it only needs to be in dtv_multiplex once for that source.
  • sistandard should be atsc, its default is dvb, so make sure its correct.


Jason's Original Email

http://www.gossamer-threads.com/lists/mythtv/users/150118?do=post_view_threaded#150118

If your provider is not kind enough to send the PSIP
info you will have to add the channels manually to the
database.

I'll try to explain how using you channels.conf as an
example. The database tables that need to be modified
are channel and dtv_multiplex. dtv_multiplex should
be populated by the channel scan and the channel table
you will need to modify yourself. Below is an example
of how you would setup your NBC (assuming
ch#707)channel in Myth.

1.) go to zap2it and build your listing for your local
HD broadcast channels.

2.) assign that listing to your dvb 3k in mythtvsetup

3.) go into the channel editor (still in mythtvsetup)
select your new listing and do a scan (select type
"cable")
The scan will take some time. Mostly likely you won't
really get anything useful, but what this will do it
populate the dtv_multiplex table in your db. You will
need this later on.

4.) exit mythtvsetup and run mythfilldatabase. This
will now provide you with your xmltvids to callsign
mappings.
At this point you still will not be able to tune
anything yet so don't try.

5.) ***Important*** stop mythbackend.

6.) edit your channels.conf and remove your PSIP
values. You don't need them for Myth. So your file
will look like this.
NBC:561000000:QAM_256:0:0
ABC:561000000:QAM_256:0:0
CBS:567000000:QAM_256:0:0
FOX:567000000:QAM_256:0:0

7.) go ahead and fire up azap and tune a channel.
$ azap -r NBC

8.) in a second terminial run dvbscan -c
$ dvbscan -c
What you need is the serviceid. This is the number in
the [000#] at the far left. Your provider will most
likely be using the same frequency for multiple
channels. So you may have more then one service per
freq. In this example your serviceid for NBC would be
2.
Example:
dumping lists (1 services)
[0002] (0x0002) 00: PCR == V V
0x0010 A 0x0011 (eng)
Now stop your dvbscan and azap tune.

9.) log into your database.
$mysql -u root -p mythconverg
To tune the 3k you will need to find the mplexid for
you known frequency.

10.) finding the mplexid
mysql> select mplexid from dtv_multiplex where
frequency = '561000000';
+---------+
| mplexid |
+---------+
| 25 |
+---------+
1 row in set (0.01 sec)
Write down the mplexid value. For example sake we
will say it was 25.

11.) Now you are ready to setup the channel. You have
the freqency (561000000),mplexid(25),and the
serviceid(2). Assuming that you now have a channel
707 from the previous mythfilldatabase above.
mysql> update channel set freqid="561000000" where
channum=707;
mysql> update channel set mplexid="25" where
channum=707;
mysql> update channel set serviceid="2" where
channum=707;
You may want to do a quick check to make sure all
looks good.
mysql> select * from channel where channum=707;
mysql> quit

12.) Start mythbackend

13.) Start up the frontend and test.

-- A couple of things I ran across later with the 3k.

By default the 3k will be set to record in PS mode. I
had wierd fastforward and rewind problems. In
mythtvsetup under capture cards-->dvb-->Advanced
settings I selected the "Use TS instead of PS" option
and the ffw and rew problems went away.

Also stopping the backend is only really needed to do
the azap tune. So while your there you may just want
to run the scan for serviceids for your 4 channels so
you only have to do it once.

I hope this helps. I just went through this about a
week ago and it was not easy to find all of the info.
Alot for trial and error. Let me know how it works
out for you...
-jason