Index:
IPTV #1: Introduction
IPTV #2: Video Signal Path
IPTV #3: DISH Command Signal Path
One of the cool things about being a software developer is that occasionally you get to work on some really neat projects.
Last year, the taxpayers of Nez Perce County, my employer, authorized the construction of a new jail facility. As part of the construction of this facility we were tasked with implementing an IPTV system for the inmates (I’m not much for giving prisoners access to television, but this is a legal requirement).
There are IPTV solutions on the market, but our research found them to be really expensive. As a county government we’re funded by taxpayers, of which I am one. So in a way, I work for myself, as do many of our employees who hold residence in Nez Perce County. Taxpayers like to keep costs down, so we looked at building our own IPTV solution.
The project was really fun and one of the most interesting projects I’ve worked on as a professional developer. Mainly because of the disparate technologies involved and the process of bringing all of these different pieces together into a cohesive and working solution. Several people in our department contributed to the success of the project; we did a ton of research into hardware solutions and worked hard to find the right mix of hardware and software so that we could achieve our goals and yet still succeed on a relatively small budget. The result of our effort was a combination of hardware and software that allowed us to multicast DISH Network satellite streams over an isolated internal network and to remotely control the television sets with a client-server software package written entirely from scratch in C#.Net.
With the system we created, the control of the televisions (channel changing, volume, power) was taken out of the inmates hands. Thus, the inmates do not have access to small, plastic remote controls that can be easily broken (and cost money to replace) and used as weapons. Instead, our jailers control the televisions remotely through a Windows application:

To build this system we had to utilize a lot of different technologies:
Hardware:
- DISH Network Satellite Receivers
- Osprey 450e Video Capture Device
- Tornado Set Top Boxes
- Vizio Flatscreen Television sets
- Global Cache CG-100 Network Adapters
Software
- C#.Net Client and Server applications
- NHibernate
- SQL Server 2005
- Fluent NHibernate
- WCF Duplex Channels
- VideoLAN (Open Source Media Player)
In future posts I’ll detail how we pulled all this together.