Saturday, 30 September 2017

Making my TV dumb again!

I don't like my TVs smart.  I like them dumb....

...and when I'm using my 4k LG Smart TV as a glorified computer monitor for work, I *really* want nothing to do with pressing buttons on a remote control, chatty on-screen display messages, and displaying stupid pictures of a golden retriever.

Android Things to the rescue!

💖  I  LOVE my computer setup! 💖

What's not to love?  My 4k monitor has enough real-estate to display everything I might need to reference (Slack, browser windows, notes, etc.), and the smaller (but crisper and easier to read) Macbook Pro Retina display is used for what I'm actually concentrating on.

Well... the only thing not to love, is that this *awesome* monitor is sold and marketed as a Smart TV, which is marketer's parlance for loading it with features that make it as intrusive and as annoying as Microsoft's Clippy.
Actually, you know what?  I'll do one better.  Every time I unplug my computer, I get this silly picture of a dog smiling at me, so really it's more like that dog in Duck Hunt for the original Nintendo.  You know, the one you can never shoot even though it constantly laughs at you when you miss the birds?  (I guess you can all guess at how old I am now) 

Like in Duckhunt, you can never ever get rid of this dog.

And switching the HDMI input to another other computer involves four or five button presses on the remote control... which is around here somewhere...  Wait, are you kidding me?!?  I just want to change the input?  We had buttons on TVs figured out since the 1950s

Well I've been itching to build something using the Android Things platform for a while now, so why not use it for this?

In the end the project was absurdly simple.  It seems that recent LG TVs have a built in serial protocol that lets you send commands to the TV if you have the right kind of USB serial adapter plugged in the back (with a PL2303 chipset).  You can find a description of the command language if you search for "External Control Device Setup" (the links seem to move around).

So, my simple hack to make my smart TV dumb(er) is some buttons, a RPi3 running Android Things, and a USB serial adapter.

The code is also pretty simple (you can find it here).  It just listens for button presses and then switches the HDMI input when a button is pressed.  It also sends periodic commands to disable to On Screen Display (OSD), which amazingly seems to banish the dog!

The only thing that was mildly out of the ordinary was that you need to disable the default serial console in order to use the serial port.

Yay!  My TV is dumb again!


You might be asking, why use a RPi3 to do this?  Isn't your solution ridiculously over powered?  Well, yes.  Yes, it is.  Two reasons: 

1. I wanted to do something with Android Things, and I don't really care if my solution is over powered.

2. I had *hoped* to use the RPi to send HDMI-CEC commands, which I know the RPi3 hardware can manage.  Unfortunately, it doesn't look like Google has enabled/implemented the HdmiControlService on the RPi3.  It's also a SystemAPI which is not normally visible to regular developers (though I can still get to it via reflection), which is something Google will probably want to address in future releases (hint, hint).

No comments :

Post a Comment