[mythtv-users] Zap2It multiple sources same cable?

R. G. Newbury newbury at mandamus.org
Fri Jan 6 23:37:03 UTC 2006


To all, I apologize for the length of this!
See the bottom... Geoff

Steve Adeff wrote:

>On Thursday 05 January 2006 14:32, R. G. Newbury wrote:
>  
>
>>Steve Adeff wrote:
>>    
>>
>>>On Thursday 05 January 2006 10:26, R. G. Newbury wrote:
>>>      
>>>
>>>>Byron Poland wrote:
>>>>        
>>>>
>>>>>On 1/3/06, Steve Adeff <adeffs at gmail.com> wrote:
>>>>>          
>>>>>
>>>>>>So I've got three sources from the same cable company, am I doomed to
>>>>>>have to have 3 logins?
>>>>>>
>>>>>>1: HD Digital Cablebox via Firewire
>>>>>>2: SD Digital Cablebox via PVR-150
>>>>>>3: pcHDTV HD3000 cia QAM
>>>>>>
>>>>>>all from Comcast. Now, each source requires its own specific channel
>>>>>>lineup and all three require a "Digital Cable" lineup to be selected.
>>>>>>
>>>>>>The easiest would be to setup 1 zap2it source for all three and somehow
>>>>>>tell Myth which tuner gets what channels. But I don't think this is
>>>>>>possible.
>>>>>>            
>>>>>>
>>>>>See if you can pick a neighboring zip code that has the same services.
>>>>>I seem to remember doing this to try and circumvent some multiple
>>>>>lineup issues, I don't remember my exact issues they could of been
>>>>>related to OTA stuff.
>>>>>          
>>>>>
>>>>I think you only need 2 different lineups at zap2it.
>>>>I have ONE logon at zap2it and TWO different lineups. One lineup is
>>>>just  'Cable'. The other is 'Digital'.
>>>>Your PVR150 card will use the 'Cable' source.
>>>>Your Digital channels should be handled by the Myth database.
>>>>You may be able to use the 'other zip-code' trick, but I think that that
>>>>will fail unless you set up a different login. (I haven't tested but I
>>>>thought that Myth could handle a different login for an alternate
>>>>source. The problem is the zap2it end: one login allows only one lineup
>>>>of each type, cable, digital, or broadcast.)
>>>>
>>>>You should be able to get all of the digital channels working properly
>>>>        
>>>>
>>>>from the one digital lineup.
>>>      
>>>
>>>>To get QAM working you have to set up the dtv_mulitplex table and then
>>>>enter the channel PID (as the serviceid) in the channel database.
>>>>Search gossamer threads for a topic heading starting with  "Sweet! PC
>>>>HD..." for links on how to get that done.
>>>>
>>>>When you select a show, Myth uses the database and searchs to find the
>>>>channel, and parses out the hardware source (and serviceid to give to
>>>>the hardware) and the frequency in order to tune the proper piece of
>>>>hardware.
>>>>In this case the source will be either #1 or #3, and it will always
>>>>internally 'tune' to the fixed channel while outputting an IR
>>>>change-channel signal to the cablebox for any channel mapped to #1. At
>>>>least that's how it appears it should work. And people have reported
>>>>here that the two parts of this do work separately. In fact, I'm doing
>>>>the 'source #3' part of that now with my PVR500 and HD3000. Your setup
>>>>is different only in using the 'same' digital source for different
>>>>tuners depending on the channel, but it should work.
>>>>
>>>>You have an advantage in that you can use the cablebox to discover the
>>>>PIDs for all of the digital channels, so it will be a little easier for
>>>>you to set up the HD3000 card's database entries. You may want to get
>>>>phpMyAdmin running on your box, as this requires some mysql database
>>>>bit-bashing which is a lot easier to do with a hand holding gui.
>>>>
>>>>Geoff
>>>>        
>>>>
>>>except that my hdtv cable box gets a different set of channels than my
>>>non-hdtv digital cable box which is a different set of channels that my
>>>DVB card can receive. If I could, I would have one lineup and tell MythTV
>>>which channels from the lineup each input is actually able to receive,
>>>but from what I understand there is no way to do this as the visible
>>>setting will still let Myth try and record a channel a source might not
>>>have.
>>>      
>>>
>>Yes, in this case, each tuner uses a different subset of all of the
>>channels which are sent down your cable. Your cableco (and zap2it)
>>differentiate between the analog and digital parts of the spectrum but
>>Myth handles them indiscriminately except as it is told how to handle
>>them by the database.
>>
>>I think that there is a way to make myth select a particular channel out
>>of a single datadirect lineup. It involves faking myth into thinking
>>that there are 2 different lineups for hardware tuning purposes while
>>having the same lineup for mythfilldatabase purposes.
>>
>>To do this it helps to understand how myth goes about tuning a channel.
>>
>>At
>>http://www.cuymedia.com/doxygen-dev-docs/html/group__db__schema.html
>>there is a discussion of the mysql database schema used by myth.
>>
>>Quote:
>>
>>
>>    Digital Television Multiplex Table (dtv_multiplex)
>>
>>This table contains the information needed to tune to a particular
>>frequency on a particular input.
>>
>>The primary key, 'mplexid', is automatically generated by the database.
>>The most important field is the 'frequency' field which contains the
>>transmission frequency in Hertz. The 'sourceid' which tells us which
>>card and on what input of that card this multiplex applies to according
>>to the Video Source Table (videosource)
>><http://www.cuymedia.com/doxygen-dev-docs/html/group__db__schema.html#video
>>source_table>. Along with a channel number 'sourceid' also uniquely
>>identifies a
>>channel in the Channel Table (channel)
>><http://www.cuymedia.com/doxygen-dev-docs/html/group__db__schema.html#chann
>>el_table>. The 'modulation' field tells us whether the modulation mode is
>>"qpsk", "qam_16", "qam_32", "qam_64", "qam_128", "qam_256", "8vsb",
>>"16vsb", or "auto". Finally, the 'sistandard' field is the last field which
>>applies to both DVB and ATSC, it contains on of two strings, "dvb" or
>>"atsc".
>>
>>When describing a DVB Multiplex, the networkid, and transportid are used
>>along with the serviceid in the Channel Table (channel)
>><http://www.cuymedia.com/doxygen-dev-docs/html/group__db__schema.html#chann
>>el_table> to tune to a particular MPEG stream in DVBChannel
>><http://www.cuymedia.com/doxygen-dev-docs/html/classDVBChannel.html>.
>>
>>When descrining an ATSC Multiplex, the Channel Table (channel)
>><http://www.cuymedia.com/doxygen-dev-docs/html/group__db__schema.html#chann
>>el_table> contains the major and minor channels used to tune to a particular
>>stream.
>>
>>Video Source Table (videosource) This table tells us about a particular
>>input on a video capture card.
>>
>>The primary key, 'sourceid', is automatically generated by the database.
>>The 'name' field gives the input name as passed to the video capture
>>card driver. The 'xmltvgrabber' field tells us where we get our listings
>>from. The 'userid' and 'password' fields are optionally used to log in
>>to a listings service, with the 'lineupid' being used to select a
>>particular lineup available from the listings service. Finally, the
>>'freqtable' tells us which channel number to frequency mapping to use
>>with analog channels, us, us-cable, pal, etc.
>>
>>
>>    Channel Table (channel)
>>
>>The primary key, 'chanid' is generated by combining the source id with a
>>unique number from 0 to 99.
>>
>>The 'channum' field contains the channel number to be input to jump to a
>>channel. With HDTV using video4linux drivers this field has a special
>>meaning. If the field contains only numeric characters then the digits
>>up to the last digit are used as the major channel number and the last
>>digit is used as the minor channel number. If it contains an underscore
>>(_), the default, then the digits before the underscore are used as the
>>major channel, and the ones after it as the minor channel. If it
>>contains a minus sign (-), then the digits after the minus sign are used
>>as the program number.
>>
>>The 'sourceid' field contains the Video Source Table (videosource)
>><http://www.cuymedia.com/doxygen-dev-docs/html/group__db__schema.html#video
>>source_table> key, which specifies which listings service to use and which
>>input on which video capture card to find this channel.
>>
>>Unquote
>>**********************************************************
>>
>>The key here is that each "chanid" (channel number/sourceid combination)
>>can be uniquely defined as a particular set of card, card input,
>>frequency and modulation and that combination points to a particular
>>channum in the program guide. 'Tuning' consists of mapping through from,
>>for example, the program guide using the  channum, to select the source
>>and parameters for that source.
>>
>>So if you want to try a little pioneering, then maybe you can try this,
>>which I think will allow you to do what you want to do:
>>
>>Do a dvbscan (or atscscan) to find some active channels so you can parse
>>out a QAM modulated feed and an HD feed which preferably should be on
>>the same frequency but differ in their vid, aid and pid numbers. You
>>want a chunk of your channels.conf like this:
>>CKND:771000000:QAM_256:16:17:16
>>CHMI:771000000:QAM_256:20:21:20
>>CFCN:771000000:QAM_256:28:29:28
>>CICT:771000000:QAM_256:30:31:30
>>CBRT:771000000:QAM_256:32:33:32
>>CHEK:771000000:QAM_256:34:35:34
>>CJON:771000000:QAM_256:36:37:36
>>
>>I have substituted the callsigns for the [000a] style names produced by
>>atscscan. None these happen to be HD streams, but those show up the same
>>as SD digitial streams. Assume that CKND is SD and CHMI is an HD stream.
>>
>>Make up a new Comcast Digital lineup consisting of  only those two
>>channels , say 117, and 118.
>>
>>Run mythtv-setup and create three cards, PVR150, HD3000 and Firewire
>>Cable Box) , create the sources (Comcast and Comcast Digital), attach
>>each to the proper source. making sure to set the starting channel
>>correctly, 117 and either 118 or 3 whichever you do for a Firwire input
>>(3 I think). Then run mythfilldatabase. Exit all and stop the backend.
>>
>>At this point, myth thinks that the latter 2 inputs/cards are
>>substitutes for each other and can each tune all of the channels in the
>>Comcast Digital source. Now we have to attempt to 'fix' that so that
>>myth knows it must use a particular card for a particular channel as if
>>the sources were entirely different.
>>
>>Note that I have not DONE this...I do not have a cable box for the HD
>>sources on my cable. I could use my HD3000 card for HD OTA, but then I
>>would select a broadcast lineup, not a cable lineup. So this is not
>>guaranteed to work, but I have spent a fair bit of time messing with the
>>mythconverg database tables in getting my HD card working and I think I
>>can see how this can be done. Then again this may cause your dog to hump
>>your leg and make your hair fall out....
>>
>>Following the procedures pointed to in the gossamerthreads reference for
>>how to get an HD3000 card working off digital QAM256,  get into mysql
>>and create 2 rows in dtv_multiplex, so that there are 2 mplexid's with
>>the same frequency. The sourceid's will 2 and 3 (if you entered the PVR
>>as the first card or 1 and 3 if you followed your setup description) and
>>the modulation field should be different: one will be QAM_256, I'm not
>>sure for the HD stream 8VSB? and sisstandard should probably be set to
>>atsc for the HD stream.
>>Mysql may barf at this as the frequency will be same as the first entry
>>for the second entry, unless you also set the modulation value at the
>>same time...I'm not sure how much internal error-checking mysql does in
>>determining unique key entries. I presume it would choke only if the new
>>row exactly matches an existing row....(Must check that out myself...
>>Yup! It does!). So make the modulation different.
>>
>>Now create a new row in videosource so that there are 3 sourceid's, 2 of
>>which in fact point to the same Comcast Digital lineup as the ultimate
>>source. You can almost duplicate the existing 'Comcast Digital' row. I
>>added a hyphen so it is 'Comcast-Digital'. This was enough to bypass the
>>mysql checking. I do not think that this will cause a problem with
>>Datadirect... least I hope not.
>>
>>Now in the channel table, adjust the channel entries. I think that
>>mythfilldatebase will have made both channels as if they were only
>>linked to the first listed input. That has to be changed. If 'CKND' is
>>117 and 'CHMI-HD' is 118, then the chanid's should be, for this test
>>setup, 3117 and 1118 and you will need to change the sourceid's to 3 and
>>1, the tvformat to ATSC (probably) and enter as the serviceid the last
>>number in the dvbscan line ( '16' and '20' respectively, above). Note
>>that the channum is what the guide uses. I know nothing about how a
>>firewire setup is actually set up in myth.
>>
>>Accordingly there are probably a couple of other little things which
>>need to be poked because you are running the cable box through firewire
>>and with an ir-blaster, but this will, at least as far as the QAM side
>>of things goes, get you a working mythtv setup through the HD300 card on
>>channel 117. The entries for 118 need to be set up for your blaster. I
>>suspect that this is most easily done in mythfrontend.
>>
>>Set the cable box to the correct channel manually so that no channel
>>changing in needed to get the HD on channel 118.
>>Start mythbackend and mythfrontend. Probably best to enter Setup, set
>>things so Live Tv starts with the Program Guide and finish setup on
>>channel 118 setup.
>>Try Live TV. The Guide should come up and you should see a picture of
>>the tuned channel. Myth seems to choose the lowest priority tuner for
>>live tv, thus reserving the higher priorities for recording. This could
>>be a problem which might need someSetup poking..
>>If the Guide does not come up, then the setup is probably wrong for
>>channel 117. That must be correct or things fail. I presume the same
>>will apply to 118.
>>If you get the Guide, then see what happens when you select from channel
>>61 or whatever to 117...That should at least give you an SD stream on
>>117. You should get the OSD and a small picture, top right. Select and
>>see if that gives up a full screen picture.
>>Cross you fingers and 'channel up' to 118, and select.
>>
>>Possible gotchas. I have no idea whether mythfilldatabase will try to
>>run itself 3 times because there are 3 rows in videosource. I have no
>>idea if it will run properly for the third row. It may run and duplicate
>>every channel in the database, once for 'Sourceid=2' and once for
>>'Sourceid=3'. It may just fail because of the extra hyphen in the name.
>>Hopefully it will just fail gracefully, without duplications, and
>>without wailing, crying and gnashing to teeth. Otherwise, it may require
>>a little mysql script to delete and re-insert the fake row before/after
>>every mythfilldatabase run. This will actually depend on datadirect not
>>myth!
>>
>>If this works, then you can modify to get a full lineup for which you
>>will have to adjust each channel. I have 27 usuable QAM channels on my
>>feed and about 300 total feeds (lots of music channels which are also
>>tunable). I ended up parsing out the data and putting it into a script
>>to run against the mysql database, since there were lots of similar and
>>repetitive entries.
>>
>>Good luck!    And report back here!
>>
>>Geoff
>>
>>Update.  Out of curiousity, I just ran mythfilldatabase from my desktop
>>(which has no tunre cards, but does have a compiled mythtv set of
>>programs). Mythfilldatabase ran to completion against all three
>>videosource entries. No glitches. But it appears that the third entry
>>has captured data for EVERY digital channel into the Program Guide,
>>probably because there is no actual 'Rogers-Digital' lineup. So it
>>appears that mythfilldatabase should be run inside a script which will
>>delete and later re-insert the third videosource table row....
>>
>>G.
>>    
>>
>
>long read. let me see if I understand what your getting to though...
>have the different set of channels listed for each source all come from and 
>reference the same zap2it source, but remove the channels for the sources 
>that don't receive them? The only problem I see is that when you run 
>mythfilldatabase it will say "hey, this channel is in the lineup for this 
>source but its not in the database", which is how it works when you add 
>channels.
>
>It would be nice to have a new field in the channels table to turn off a 
>channel for a specific source, like the visible field, but more of an 
>"ignore" field.
>
>  
>

Not quite. You have it backwards. We don't -remove- channels from the 
source list. We make myth think that there are more sources, by having a 
dummy source listed in the channel table. The dummy source points to one 
tuner, the real source to a different tuner.

Myth uses a quite good (and modular and independent) database schema to 
parse out how it will tune to a particular channel. It starts with the 
channel (identified by xmltvid really)  in the channel table, and gets 
some info and references other tables to get more and works back looking 
at the source, then the tuner connected to the source until it can 
deliver all of the needed tuning parameters. These parameters are 
different in the case of different tuners.

Our problem is that we can only have ONE "Cable-digital" lineup with one 
signon.

Digression: (I have NOT tried to see if a separate login to zap2it can 
be handled by myth. I suspect not which is why we are forced down this 
route. If you can get a different zap2it logon registered for a third 
tuner (hint, go set up a logon and then poke the videosource table) then 
NONE of what I have talked about is necessary (or desireable). I have no 
idea how mythfilldatabase will treat different logon setups.

So all of the digital channels will be taken from the 'Comcast -Digital' 
source feed. So channels 117 and 118 are in the source feed.
Once set up, there will be 3 listed sources in videosource. One will be 
a dummy, used only by myth (#3). The dummy must be removed before 
running mythfilldatabase or the program guide will get overloaded with 
ALL channels .
(hmmm, might be possible to go in and mark all unwanted 345 channels as 
'not visible' thus...) As noted above, you cannot enter an exact 
duplicate source into either the  mysql table or the zap2it system.
After doing a 'mythfilldatabase' with 2 listed sources (Cable and 
Cable-Digital), the third (dummy source) is put back into the database. 
It's purpose is to validate the existence of the pointers to the dummy 
source.
Individual channels in the channel table are referenced against one of 
the three separate sources.
Each source, including the dummy, is referenced against a particular tuner.
One set of digital channels, source 2,  is referenced against the 
pcHD3000..... channel 117
The other set of digital channels source 3, is referenced against the 
cable box/firewire combo.... channel 118.
The result is exactly as if we had three distinct sources, because the 
effect is to subset the channels in the channel table into those three 
distinct sets.
So...tuning channel 33...source is #1, tuner is #1...pvr150.
Tuning channel 117, source is #2, tuner is #2....pcHD3000
Tuning channel 118, source is #3, tuner is #3.... cablebox.

This works because tuners are tied to sources. Without faking a #3 
source, myth would call upon either of tuner #2 or tuner #3 
indiscriminately for either of channels 117 and 118. As noted, if you 
can do a separate login to zap2it and get that login into the 
videosource table, then you can legitimately have 2 different digtial 
lineups at zap2it under different names, and different sources in myth.

If I get the chance I may do that myself.





What is then done is to force myth to choose the particular


More information about the mythtv-users mailing list