SageTV Community  

Go Back   SageTV Community > Hardware Support > Hardware Support

Notices

Hardware Support Discussions related to using various hardware setups with SageTV products. Anything relating to capture cards, remotes, infrared receivers/transmitters, system compatibility or other hardware related problems or suggestions should be posted here.

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 10-16-2021, 10:59 AM
boukmandutty boukmandutty is offline
Sage Advanced User
 
Join Date: Oct 2011
Location: Norman OK
Posts: 123
CHANNELS DVR with Generic Pipe Capture (PLUTO TV as well)

The following assumes you have opendct installed and configured for generic pipe capture the way ENE outlines at the start. of this thread:

https://forums.sagetv.com/forums/sho...01&postcount=1

The relevant parts of the opendct config will look something like the following.

I have added two pipe devices as described at the beginning of the thread mentioned above. I am sticking to just two for now:

Quote:
generic.pipe.device_names_csv=Pipe 1, Pipe 2
After they are added I add the following path for each newly created device to the channelsdvr server. I run mine on a separate device, a mac mini over wifi for now. (Change IP address according to your server)

Quote:
streaming_executable=c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://xxx.xxx.xxx.xxx\:8089/devices/ANY/channels/%c%/hls/master.m3u8? -b\:v 6000k -c\:a mp2 -ac 2 -ab 192k -ar 44100 -f mpegts -codec\:a aac -
nyplayer has suggested for the command a simple ffmpeg remux so that the line would read (Change IP address according to your server):

Quote:
c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://xxx.xxx.xxx.xxx\:8089/devices/ANY/channels/%c%/hls/master.m3u8? -f mpegts -codec\:v copy -codec\:a copy -
EPG & CHANNEL MAPPING
Each channel number you see when you go to your channelsdvr guide has a path of the sort to it. Opendct inserts that channel number with the %c% command as I am assuming you know.

The thing to do for now is to make sagetv use the numbering that channlesdvr uses. For now I have had to use Schedules Direct for epg. Sagetv was so well designed and thought out that is is easy to go into the channels settings after you have set up your guide and then remap the number (The physical one especially) to match what you see when you go to the guide of your channelsdvr server.

After you remap it should work flawlessly.


Going forward I am hoping someone can figure out how to get the Channels dvr epg into SageTV. The epg can be accessed at the following location as indicated on the Channels dvr forum:

-->http://xxx.xxx.xxx.xxx:8089/devices/ANY/guide/xmltv?duration=500000<--

(Ignore the arrows they are just for fomatting.)

This should give seven days of data if I read the thread over there correctly. I think it might be able to go higher by now but I dont know for sure.

https://community.getchannels.com/t/...nnels/21679/24

Nyplayer has so far confirmed that the procedure works for him as well. From what he says here:
https://forums.sagetv.com/forums/sho...6&postcount=72

it should be pretty easy to add PLUTO TV using the process above.

Last edited by boukmandutty; 10-16-2021 at 01:08 PM.
Reply With Quote
  #2  
Old 10-16-2021, 11:07 AM
NetworkGuy NetworkGuy is online now
Sage Fanatic
 
Join Date: Dec 2009
Location: Central NJ
Posts: 865
Why not just ChannelsDVR do the recording and point a SageTV input directory at the ChannelsDVR recording directory? SageTV will automatically import the recordings.
__________________
Hardware: Intel Core i5-3330 CPU; 8GB (2 x 4GB); 2-4TB WD Blue SATA 6.0Gb/s HDD; Windows 7
Servers: ChannelsDVR, Plex, AnyStream, PlayOn,
Tuner: HDHomeRun Connect Quatro
Tuner: HDHomeRun Connect Duo
Sources: OTA, Sling Blue, Prime, Disney+,
Clients: ShieldTV (2), Fire TV Stick 4K (4)
Reply With Quote
  #3  
Old 10-16-2021, 11:09 AM
KryptoNyte's Avatar
KryptoNyte KryptoNyte is offline
SageTVaholic
 
Join Date: Dec 2006
Posts: 2,552
Can Sage parse the Channels DVR filename to associate any given file with an actual TV program episode? Can live TV somehow be watched and comskipped in this fashion?
Reply With Quote
  #4  
Old 10-16-2021, 11:21 AM
boukmandutty boukmandutty is offline
Sage Advanced User
 
Join Date: Oct 2011
Location: Norman OK
Posts: 123
All SageTV takes from Channels by the method described is the video feed. It records that feed from the virtual device (the opendct pipe) same way it would record the feed from any other device.

Last edited by boukmandutty; 10-16-2021 at 01:09 PM.
Reply With Quote
  #5  
Old 10-16-2021, 11:29 AM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 4,653
Quote:
Originally Posted by NetworkGuy View Post
Why not just ChannelsDVR do the recording and point a SageTV input directory at the ChannelsDVR recording directory? SageTV will automatically import the recordings.
This gives us the option to Exclude Channels DVR from the process when Recording Pluto and other M3U sources. This gives SageTV the ability to watch/record M3U sources. The way I have my test system setup right now using this I now have the ability to share tuners when watching the same channel on ChannelsDVR and SageTV. Once XMLTV is working in SageTV we can use the Pluto source and guide.
__________________
Windows 10 I3 Dual Core 3.0 Server, SageTV9... OpenDCT with 2 HDHRPrimes and 4 HDHRconnects for a total of 14 Tuners.

Last edited by nyplayer; 10-16-2021 at 11:34 AM.
Reply With Quote
  #6  
Old 10-16-2021, 11:31 AM
boukmandutty boukmandutty is offline
Sage Advanced User
 
Join Date: Oct 2011
Location: Norman OK
Posts: 123
Quote:
Originally Posted by NetworkGuy View Post
Why not just ChannelsDVR do the recording and point a SageTV input directory at the ChannelsDVR recording directory? SageTV will automatically import the recordings.
One of the reasons I went for this was they fact that I prefer my server to sleep. If you use channels dvr on windows that function just does not work. The channels dvr people dont seem to have worked out the power saving part of things yet and so the server wakes up every three or so minutes after hibernation. I dont want my tv server to run 24/7.

The other thing is the large database of recordings I already have in sagetv. Plus I am sure there hoops to jump over after pointing sagetv to the channels directory. (I wonder if there is a way to share my sagetv recordings with channels so I can view them outside my home network?)

Another thing is that with sagetv I add hard drives till kingdom come far more easily for space if needed. It is overall still just more robust.
Reply With Quote
  #7  
Old 10-16-2021, 12:46 PM
NetworkGuy NetworkGuy is online now
Sage Fanatic
 
Join Date: Dec 2009
Location: Central NJ
Posts: 865
Quote:
Originally Posted by boukmandutty View Post
(I wonder if there is a way to share my sagetv recordings with channels so I can view them outside my home network?)
Yes, ChannelsDVR has a local content function that you can point at the top of your SageTV recording directories. All the SageTV recording show up in Channels. I used this when I was on vacation in May and June. It is much better than PLEX for remote viewing.
__________________
Hardware: Intel Core i5-3330 CPU; 8GB (2 x 4GB); 2-4TB WD Blue SATA 6.0Gb/s HDD; Windows 7
Servers: ChannelsDVR, Plex, AnyStream, PlayOn,
Tuner: HDHomeRun Connect Quatro
Tuner: HDHomeRun Connect Duo
Sources: OTA, Sling Blue, Prime, Disney+,
Clients: ShieldTV (2), Fire TV Stick 4K (4)
Reply With Quote
  #8  
Old 10-16-2021, 01:05 PM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 4,653
I made a change to your HTTP settings so that ChannelsDVr closes the stream immediately ... It also stops Channels DVR from transcoding the stream before SageTV gets it.

c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://10.0.0.2\:8089/devices/ANY/channels/%c%/stream.mpg?format\=ts -f mpegts -codec\:v copy -codec\:a copy -


If anybody is Interested this is how I setup my 2 Primes on SageTV. This solves the Problem of using Different tuners when Watching in Channels and SageTV ... Also eliminates the Problem of using 2 tuners in order to keep padding on all recordings even back to back In SageTV. This is for users of ChannelsDVR and SageTV.


Code:
generic.pipe.device_names_csv=Cable1,Cable2,Cable3,Cable4,Cable5,Cable6


sagetv.device.2010761140.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.2010761140.custom_channels=
sagetv.device.2010761140.delay_to_wait_after_tuning=0
sagetv.device.2010761140.device_name=Cable1
sagetv.device.2010761140.encoder_listen_port=9000
sagetv.device.2010761140.encoder_merit=0
sagetv.device.2010761140.encoder_pool=generic_pipe_cable
sagetv.device.2010761140.exclusive_server_address=
sagetv.device.2010761140.fast_network_encoder_switch=true
sagetv.device.2010761140.last_channel=709
sagetv.device.2010761140.stopping_executable=
sagetv.device.2010761140.streaming_executable=c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://10.0.0.2\:8089/devices/ANY/channels/%c%/stream.mpg?format\=ts -f mpegts -codec\:v copy -codec\:a copy -
sagetv.device.2010761140.transcode_profile=
sagetv.device.2010761140.tuning_delay_ms=0
sagetv.device.2010761141.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.2010761141.custom_channels=
sagetv.device.2010761141.delay_to_wait_after_tuning=0
sagetv.device.2010761141.device_name=Cable2
sagetv.device.2010761141.encoder_listen_port=9000
sagetv.device.2010761141.encoder_merit=0
sagetv.device.2010761141.encoder_pool=generic_pipe_cable
sagetv.device.2010761141.exclusive_server_address=
sagetv.device.2010761141.fast_network_encoder_switch=true
sagetv.device.2010761141.last_channel=707
sagetv.device.2010761141.stopping_executable=
sagetv.device.2010761141.streaming_executable=c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://10.0.0.2\:8089/devices/ANY/channels/%c%/stream.mpg?format\=ts -f mpegts -codec\:v copy -codec\:a copy -
sagetv.device.2010761141.transcode_profile=
sagetv.device.2010761141.tuning_delay_ms=0
sagetv.device.2010761142.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.2010761142.custom_channels=
sagetv.device.2010761142.delay_to_wait_after_tuning=0
sagetv.device.2010761142.device_name=Cable3
sagetv.device.2010761142.encoder_listen_port=9000
sagetv.device.2010761142.encoder_merit=0
sagetv.device.2010761142.encoder_pool=generic_pipe_cable
sagetv.device.2010761142.exclusive_server_address=
sagetv.device.2010761142.fast_network_encoder_switch=true
sagetv.device.2010761142.last_channel=-1
sagetv.device.2010761142.stopping_executable=
sagetv.device.2010761142.streaming_executable=c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://10.0.0.2\:8089/devices/ANY/channels/%c%/stream.mpg?format\=ts -f mpegts -codec\:v copy -codec\:a copy -
sagetv.device.2010761142.transcode_profile=
sagetv.device.2010761142.tuning_delay_ms=0
sagetv.device.2010761143.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.2010761143.custom_channels=
sagetv.device.2010761143.delay_to_wait_after_tuning=0
sagetv.device.2010761143.device_name=Cable4
sagetv.device.2010761143.encoder_listen_port=9000
sagetv.device.2010761143.encoder_merit=0
sagetv.device.2010761143.encoder_pool=generic_pipe_cable
sagetv.device.2010761143.exclusive_server_address=
sagetv.device.2010761143.fast_network_encoder_switch=true
sagetv.device.2010761143.last_channel=-1
sagetv.device.2010761143.stopping_executable=
sagetv.device.2010761143.streaming_executable=c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://10.0.0.2\:8089/devices/ANY/channels/%c%/stream.mpg?format\=ts -f mpegts -codec\:v copy -codec\:a copy -
sagetv.device.2010761143.transcode_profile=
sagetv.device.2010761143.tuning_delay_ms=0
sagetv.device.2010761144.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.2010761144.custom_channels=
sagetv.device.2010761144.delay_to_wait_after_tuning=0
sagetv.device.2010761144.device_name=Cable5
sagetv.device.2010761144.encoder_listen_port=9000
sagetv.device.2010761144.encoder_merit=0
sagetv.device.2010761144.encoder_pool=generic_pipe_cable
sagetv.device.2010761144.exclusive_server_address=
sagetv.device.2010761144.fast_network_encoder_switch=true
sagetv.device.2010761144.last_channel=-1
sagetv.device.2010761144.stopping_executable=
sagetv.device.2010761144.streaming_executable=c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://10.0.0.2\:8089/devices/ANY/channels/%c%/stream.mpg?format\=ts -f mpegts -codec\:v copy -codec\:a copy -
sagetv.device.2010761144.transcode_profile=
sagetv.device.2010761144.tuning_delay_ms=0
sagetv.device.2010761145.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.2010761145.custom_channels=
sagetv.device.2010761145.delay_to_wait_after_tuning=0
sagetv.device.2010761145.device_name=Cable6
sagetv.device.2010761145.encoder_listen_port=9000
sagetv.device.2010761145.encoder_merit=0
sagetv.device.2010761145.encoder_pool=generic_pipe_cable
sagetv.device.2010761145.exclusive_server_address=
sagetv.device.2010761145.fast_network_encoder_switch=true
sagetv.device.2010761145.last_channel=-1
sagetv.device.2010761145.stopping_executable=
sagetv.device.2010761145.streaming_executable=c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://10.0.0.2\:8089/devices/ANY/channels/%c%/stream.mpg?format\=ts -f mpegts -codec\:v copy -codec\:a copy -
sagetv.device.2010761145.transcode_profile=
sagetv.device.2010761145.tuning_delay_ms=0
__________________
Windows 10 I3 Dual Core 3.0 Server, SageTV9... OpenDCT with 2 HDHRPrimes and 4 HDHRconnects for a total of 14 Tuners.

Last edited by nyplayer; 10-16-2021 at 01:51 PM.
Reply With Quote
  #9  
Old 10-16-2021, 03:23 PM
boukmandutty boukmandutty is offline
Sage Advanced User
 
Join Date: Oct 2011
Location: Norman OK
Posts: 123
Quote:
c\:\\\\ffmpeg\\bin\\ffmpeg.exe -i http\://10.0.0.2\:8089/devices/ANY/channels/%c%/stream.mpg?format\=ts -f mpegts -codec\:v copy -codec\:a copy -
This command without the transcoding gives me random pixelations in livetv for some reason. Is is entirely smooth for you?
Reply With Quote
  #10  
Old 10-16-2021, 03:26 PM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 4,653
Quote:
Originally Posted by boukmandutty View Post
This command without the transcoding gives me random pixelations in livetv for some reason. Is is entirely smooth for you?
Yes it is. What is your input ? and Client I am using a FIRETV 4K.

BTW I am using FFMPEG4 I will soon see if I can add my ASTC 3 tuner and see if I can record ASCT 3.
__________________
Windows 10 I3 Dual Core 3.0 Server, SageTV9... OpenDCT with 2 HDHRPrimes and 4 HDHRconnects for a total of 14 Tuners.

Last edited by nyplayer; 10-16-2021 at 03:48 PM.
Reply With Quote
  #11  
Old 10-16-2021, 04:05 PM
boukmandutty boukmandutty is offline
Sage Advanced User
 
Join Date: Oct 2011
Location: Norman OK
Posts: 123
Quote:
Originally Posted by nyplayer View Post
Yes it is. What is your input ? and Client I am using a FIRETV 4K.

BTW I am using FFMPEG4 I will soon see if I can add my ASTC 3 tuner and see if I can record ASCT 3.
I was testing it on a pc. It is actually smooth with a nvidia shield. I need to check the recordings with this option.

In the past when I used a BM1000 device I could never skip through my recordings on the android client without it freaking out and looping infinitely back to the start of the recording. I think it was a codec issue because there was no problem with my over the air recordings. Only the ones that had been encoded has h264 via the BM1000 device game trouble and made me have to use a pc for a frontend.

Let me know how the ASCT 3 goes. Is there enough programming around to make such a device worth it at this stage?
Reply With Quote
  #12  
Old 10-16-2021, 04:10 PM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 4,653
Quote:
Originally Posted by boukmandutty View Post
I was testing it on a pc. It is actually smooth with a nvidia shield. I need to check the recordings with this option.

In the past when I used a BM1000 device I could never skip through my recordings on the android client without it freaking out and looping infinitely back to the start of the recording. I think it was a codec issue because there was no problem with my over the air recordings. Only the ones that had been encoded has h264 via the BM1000 device game trouble and made me have to use a pc for a frontend.

Let me know how the ASCT 3 goes. Is there enough programming around to make such a device worth it at this stage?
I added all my tuners and Seeking back and forth is working great. I will look at ASTC 3 later right now I would like to see about Adding Pluto/TVE with guide data. Thanks for sharing this. I am always lurking if we ever figure out the XMLTV input.
__________________
Windows 10 I3 Dual Core 3.0 Server, SageTV9... OpenDCT with 2 HDHRPrimes and 4 HDHRconnects for a total of 14 Tuners.

Last edited by nyplayer; 10-16-2021 at 04:13 PM.
Reply With Quote
  #13  
Old 10-16-2021, 05:10 PM
boukmandutty boukmandutty is offline
Sage Advanced User
 
Join Date: Oct 2011
Location: Norman OK
Posts: 123
Man I have been struggling with the epg. There doesnt seem to be an option to import your own epg file anymore.
Reply With Quote
  #14  
Old 10-16-2021, 05:30 PM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 4,653
Quote:
Originally Posted by boukmandutty View Post
Man I have been struggling with the epg. There doesnt seem to be an option to import your own epg file anymore.
I know there was a plugin do not know if it still works....

https://forums.sagetv.com/forums/sho...t=xmltv+plugin
__________________
Windows 10 I3 Dual Core 3.0 Server, SageTV9... OpenDCT with 2 HDHRPrimes and 4 HDHRconnects for a total of 14 Tuners.
Reply With Quote
  #15  
Old 10-17-2021, 08:54 AM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 4,653
Quote:
Originally Posted by boukmandutty View Post
Man I have been struggling with the epg. There doesnt seem to be an option to import your own epg file anymore.
I am close using this guide ....


https://forums.sagetv.com/forums/sho...t=xmltv&page=8
__________________
Windows 10 I3 Dual Core 3.0 Server, SageTV9... OpenDCT with 2 HDHRPrimes and 4 HDHRconnects for a total of 14 Tuners.
Reply With Quote
  #16  
Old 10-17-2021, 09:28 AM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 4,653
Got Guide Data into SageTV using XML ... This is just a start it seems the season and episode is not quite right.


In Sage the Properties I Edited ,,,,

epg/epg_import_plugin=
to
epg/epg_import_plugin=xmltv.XMLTVImportPlugin

I Extracted XMLTV zip attached below and placed XMLTV folder in

C:\Program Files\SageTV\SageTV

I created a xmltv.properties C:\Program Files\SageTV\SageTV

Contents...
configurations=xmltv.properties
provider.name=TVECOMCAST
provider.id=1
xmltv.files=guide.xml

Copied my XML guide.xml to C:\Program Files\SageTV\SageTV

Started Sage.
setup tuner with XMLTV input zipcode 00000

Attached Files
File Type: zip xmltv.zip (26.0 KB, 11 views)
__________________
Windows 10 I3 Dual Core 3.0 Server, SageTV9... OpenDCT with 2 HDHRPrimes and 4 HDHRconnects for a total of 14 Tuners.

Last edited by nyplayer; 10-28-2021 at 03:34 PM.
Reply With Quote
  #17  
Old 10-17-2021, 09:43 AM
boukmandutty boukmandutty is offline
Sage Advanced User
 
Join Date: Oct 2011
Location: Norman OK
Posts: 123
I am heading home to try this.
Reply With Quote
  #18  
Old 10-17-2021, 10:32 AM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 4,653
Quote:
Originally Posted by boukmandutty View Post
I am heading home to try this.
The Automapping did not work. Also to get season and Episode ... I had the run the XMLTV from ChannelsDVR through python ...


Code:
#!/usr/bin/env python3
import requests 

URL = "http://10.0.0.214:8089/devices/TVE-Comcast_SSO/guide/xmltv?duration=1209600"

tve_xml = requests.get(URL)

xmlOutput = "C:/guide/guide.xml"

with open(xmlOutput,"w", encoding="utf8") as fileOut:
    for line in tve_xml.text.splitlines():
        fileOut.write(line+"\n")
        if '<episode-num system="onscreen">' in line:
            season_episode = line.replace('<episode-num system="onscreen">','').replace('</episode-num>','')
            if "S" in season_episode:
                season = ((season_episode.split('S'))[1].split('E'))[0]
                episode = ((season_episode.split('S'))[1].split('E'))[1]
                fileOut.write('    <episode-num system="xmltv_ns">' + str(int(season)-1) + '.' + str(int(episode)-1) + '.</episode-num>\n')
__________________
Windows 10 I3 Dual Core 3.0 Server, SageTV9... OpenDCT with 2 HDHRPrimes and 4 HDHRconnects for a total of 14 Tuners.

Last edited by nyplayer; 10-17-2021 at 12:02 PM.
Reply With Quote
  #19  
Old 10-17-2021, 12:00 PM
boukmandutty boukmandutty is offline
Sage Advanced User
 
Join Date: Oct 2011
Location: Norman OK
Posts: 123
Quote:
Originally Posted by nyplayer View Post
The Automapping did not work.
Where would I find the epg that schedule direct downloads? It might be useful to compare their formats. I am assuming that things might have changed since the plugin we are trying to use.
Reply With Quote
  #20  
Old 10-17-2021, 12:23 PM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 4,653
Quote:
Originally Posted by boukmandutty View Post
Where would I find the epg that schedule direct downloads? It might be useful to compare their formats. I am assuming that things might have changed since the plugin we are trying to use.
https://drive.google.com/file/d/1oMC...ew?usp=sharing
__________________
Windows 10 I3 Dual Core 3.0 Server, SageTV9... OpenDCT with 2 HDHRPrimes and 4 HDHRconnects for a total of 14 Tuners.
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Using the OpenDCT Generic Pipe Capture Device EnterNoEscape Hardware Support 95 11-16-2021 12:14 PM
Using the OpenDCT Generic HTTP Capture Device EnterNoEscape Hardware Support 30 10-16-2021 07:09 PM
Generic HDMI capture devices pjpjpjpj Hardware Support 11 03-11-2020 07:09 PM
A pipe dream or possible? digitalgm General Discussion 3 09-21-2004 01:18 PM


All times are GMT -6. The time now is 03:49 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, vBulletin Solutions Inc.
Copyright 2003-2005 SageTV, LLC. All rights reserved.