This is the third post in a series of posts about the IPTV project.
In the previous post I talked about the Video Signal Path. In this post I’m going to talk about how we control the DISH Network Satellite receivers remotely without the aid of hand held remote controls. We’ll look at the IR Command Path for the DISH Network Satellite Receivers and the role that the Global Cache CG-100 Network Adapters play in allowing us to control devices.

As stated in the previous post, the DISH Network receivers are stored in a climate controlled server room under lock-and-key. This is great for the receivers, not so great for the jailers trying to change a channel.
Fortunately, this is where the Global Cache GC-100 Network Adapters come to the rescue.
Global Cache GC-100 Network Adapter
The GC-100 is a really cool device. What it allows you to do is send ASCII text commands to it over a network. It then interprets those ASCII commands, transforming them into IR commands that can be understood by the device you’re trying to control.
For this process to work, the GC-100 has to be located next to the device you want to control as it utilizes short, wired IR Emitters. Basically, you string a wired IR Emitter from the GC-100 to the IR input of your device (in this case, the front of the DISH receiver where the IR receptor is located). The IR Emitters have a sticky substance on their face that allows you to fasten the emitter to the front of the IR input on the DISH receiver. However, in reality, we found this sticky substance to be pretty pathetic, so we fastened the emitters to the receivers using black electrician tape.
The GC-100 is then hooked up to the network via CAT-5/CAT-6 and given a network address.
Sending Commands To The GC-100
Having the GC-100 IR emitters hooked up to the DISH receivers and also having it plugged into the network is only half the equation. The next thing you need to be able to do is actually send ASCII commands to it. These ASCII commands are actually text representations of IR signals. But how do we know what commands to send? What do they look like? How do we create them?
Programming The GC-100
Fortunately, the folks at Global Cache created a little tool that makes this whole process much easier. It’s called an IR-Learner.

What the IR-Learner does is allow you to point a remote control at it and capture the ASCII representation of the command. So, for instance, you can take the DISH Network remote control, press the “Power” button, and the IR-Learner will capture the ASCII representation of that “Power” command. From that point you just need to save that text somewhere. In our application, we choose to save this in a database.

Operating The Virtual Remote
So now we have the GC-100 hooked up to the DISH Network receiver, and we have the ASCII commands saved in the database. How do we actually control the DISH Receiver? Remember, the DISH Network receiver is housed in a climate-controlled environment. The jailers do not have direct access to the DISH receivers. What happens when they want to change a channel on the receiver?
We start at the client application, with a view that shows us a virtual DISH Network Remote Control:

The Client
The user can click a button on this virtual remote control. The client then sends a request to the server application via WCF Duplex Channel. The request basically consists of an ID for the internally stored ASCII command that is located in our database.
The Server
When the request reaches the server application, it fetches the ASCII text from the db cache (we’re using NHibernate and an internal cache in the service to save round trips to the db). The server application then formulates the appropriate command to send out over TCP/IP to the GC-100 Network Adapter. You need to specify the IP Address of the GC-100 that you want to talk to, as well as a “module” on the GC-100 that you want to send the command over (a module in the GC-100 corresponds directly to a physical device you are controlling, in this case a specific DISH receiver). For instance, the GC-100-18 has multiple modules so it can control multiple “devices”. We used one GC-100-18 to control four DISH receivers. By specifying the module we specify which of the DISH receivers we want the IR signal to go to.
Conclusion
There are a lot of pieces involved in this part of the puzzle, but the result is a simple interface in the client application that non-technical people can understand and utilize. Almost everyone nowadays has a DISH or DirectTV remote control at home. Jailers can easily make sense of the client interface, press a button on the remote control and thus control the DISH receivers remotely, from the comfort of their command and control stations.
Leave a Reply
You must be logged in to post a comment.