TV & Remote Control

I have used simple remotes and I have used programmable remotes like the Logitech Harmony. They all fall short of my expectations. The Harmony is especially frustrating because it promises to simplify the home AV experience. It offered macros and an "assistant" to troubleshoot problems but it was never intuitive enough for a guest to use. The touchpanel menus changed based on the "mode" of the remote and that confused people. The assistant would ask if everything turned on correctly but was cumbersome to use.

A few years ago I decided to fix this and implement my own programming to this issue. What I have now is a remote that I can hand to a guest and have them couch surfing like it was their own home.

First, let's take a look at the remote I have. It's a Crestron MLX-3. It Communicates via RF to the Crestron processor. The processor then sends commands via IR, RS232, and TCP/IP to my stereo equipment.

The top of the remote has a programmable LCD display. It's not touch screen but there is a scroll wheel on the right side of the remote. You can see that "Cable Box" is highlighted. If I press the scroll wheel the remote sends the command for "Cable Box" to the Crestron system.

The rest of the buttons on the remote are hard buttons and easy to find with muscle memory. There's also a hard power button on the top of the remote that you can't see. Our Verizon DVR had two extra buttons that this remote doesn't offer so I used two other buttons and put a p-touch label on there for now. I'll find a more elegant way to fix that some other time.

I am a firm believer that there is no better remote for the living room than a remote with hard buttons. The main reason I feel this way is because I want to watch TV and not look at my remote to find a button and make sure I'm pressing it. A touch screen requires constant attention to make sure you're pressing the right "button". When you're flipping through channels or the channel guide hard buttons give your fingers a place to rest and the tactile feel let you know exactly where your fingers are so they're ready to press the next button.

This is the remote logic diagram.

The idea is that the source selection section of the remote always stays the same. That is, the LCD display will always show the same items in the same order. The user simply needs to scroll to the item they want to use, select it, and then the remote will control that device. It's actually controlling a few devices, but it's transparent to the user.

When you're done watching, simply press the power button and the TV and the Stereo are turned off. There's no need to turn anything else off since in my tests all the other AV equipment draws the same amount of power in both the on and off state. Items like the Firestick or Apple TV will timeout and go to sleep on their own.

So let's dive into this.

When a user selects one of the sources, lets say they choose the Cable Box, the Crestron system will map all the hard buttons (with exception to volume, mute, and power) to the IR driver for the Cable Box. That means channel up, down, number pad, etc.

That same button press that selects the Cable Box also triggers a source selection program. The Crestron system does the following:

Delay 0s:   Turn TV ON
Delay 0s:   Turn Stereo ON
Delay 0s:   Turn Cable Box ON
Delay .25s: Set TV to Input 2 //If the TV is already on set the input immediatly but wait .25s so as not to step on the on command
Delay .25s: Set Stereo to Input 3 //give the stereo a chance to react to turning on
Delay 12s:  Set TV to Input 2 //wait for tv to turn on and receive commands

When a user wants to watch the Cable Box there are two scenarios. One the TV is already ON, two the TV is OFF. If the TV is on sending another On command won't do any harm so I can send an On command immediately and it'll work toward both scenarios. Next I need to turn the Stereo on. The same thought applies. If the stereo is on already the On command will do no harm. If it is off, then I need to turn it on anyway. After that the Cable Box needs to be turned on. In my case, my cable box has an "ON" command. I'll use that. It also makes no difference if the box is on or off first. On my old cable box I used the "Exit" command to trigger the box to wake up. I have also heard of people using the "0" number key but that will cause a "0" to popup on screen.

Now if the TV was actually off we need to wait for the initial "ON" command to complete. So we wait 12 seconds (that's how long it takes my TV) and then send the "Set Input" command again.

There's no intervention needed, I don't need an assistant program, this just works. Here's the fun part...I also don't need a ton of feedback from the devices because as a user of the system, I am the feedback. I can see if the TV didn't turn on or hear the lack of audio if the stereo didn't turn on. All I need to do is press the same command again. By now if the TV had a longer delay and the input didn't set appropriately the first time or the stereo glitched, the second press of the selection key should trigger the appropriate ON or INPUT commands this time. If it doesn't work by the second press then there's a bigger problem and no assistant is going to be able to solve the problem.

The Volume UP, DOWN, and MUTE commands are next. As I mentioned earlier, these hard buttons don't get routed with the rest of the remote buttons. These will always get peeled off and send to either the TV or the Stereo. By default I have them set to control the stereo. But I did add a feature for when I might want to keep the stereo off. I programmed the mute button with a special function. If I press and hold the mute button for 2 seconds, the Volume UP, Volume DOWN, and MUTE will now control the volume on the TV instead of the stereo. If I press and hold the mute button again then it switches back to the stereo.

Finally the power button is peeled off as well. This will simply turn the TV and Stereo OFF as I mentioned earlier in the post.

I can program this remote for as many devices as I want and the user will always be able to navigate the layout because it'll always be the same. The only thing that changes is which buttons work. It would be nice if I could illuminate the buttons that work in a particular layout but that's not an option. So for now the only remotes I need in my living room are this one and the one for the Firestick, but I hope to incorporate the Firestick into this remote as well. The goal is to only need one remote in the living room.

Current Thoughts

I purchased a new TV and there is no discrete ON or OFF command. I will probably end up adding a current sensor to the TV so I can detect when it is on and run the logic based on that. I also found a control module for the Firestick. I'll be trying that out soon and modify the blog post as necessary.