[Brendan Robert] has been sending us forum thread links outlining the things he’s learned while hacking LG televisions. They were a bit hard to follow for the uninitiated, so we asked if he could give us an overview of what he’s been working on. Not only did he do that, but he made a little Hackaday shout-out seen above by adding the skull and cross-wrenches as one of the menu overlays.
He’s using a TV as his computer monitor, which he picked up at a discount because it was a display model. Without the original remote, and wanting to have features like power-saving mode which is standard on monitors but not on this TV, he decided to see what he could accomplish. A couple of things made this quite a bit easier. First, there’s an RS232 port built into the back which removes the need to investigate and solder your own onto the board. Secondly, since LG built on the Linux kernel for the set, you can download some of the firmware sources from their website.
What he came up with is a script that will find and communicate with the TV over the serial connection. The test script used during development polled every possible command, looking for valid return values. Once [Brendan] established which commands work and what they do, he was able to take command of the unit, writing scripts to adjust brightness based on the ambient light in the room as seen from the computer’s webcam. Make sure you check out the sub-pages to his post that detail the brightness adjustments, stand-by functionality, custom overlay graphics, and the extra commands he uncovered.
It’d be sweet if he ditched the KVM and used Synergy (http://synergy-foss.org/) and a custom hook to switch the TV input when his cursor hit the screen edge.
Synergy only works if you aren’t VPNing though.
Synergy is sweet indeed! I’ve had hit-or-miss luck with it in terms of error recovery (in the event of a flaky connection or reset router). For the most part, I try using ssh x-forwarding since both computers run linux. I’m considering winswitch, but am getting odd errors from it.
I think it might be nice to have a custom PiP or maybe a pigin notifier using the OSD — so that I don’t miss anything if I’m watching TV or anything else that is equally unproductive. You can (easily) display a JPG and scale it to any size as an overlay very easily. The trouble is getting the image to /tmp on the TV without a memory stick.
Side note: My apologies for a total lack of artistic talent. It might have looked better if I used the actual HaD logo instead of a pixelated one. I originally tried using a transparent PNG but couldn’t get the OSD debug menu to blit anything other than JPGs. But I wanted something with transparency so it didn’t look ‘shopped.
This stuff has been known for a decade now. All integrators have been doing this with LG tv’s for a very long time. the CD that comes with the TV’s has all the codes documented.
Now crack into the Firmware… That will impress me.
Why reinvent the wheel? OpenLGTV and LGMOD are readily available. I’m not in a hurry to brick my TV in the quest to determine compatibility though. And, though you might think the codes are all documented, that is in fact not true at all. LG does not document how to set the tool options (useful for unlocking DivX playback) or all of the remote control button presses (MC commands). Nor do they document how to poke around the debug features to mess with the OSD. The hack here is gaining additional functionality WITHOUT modding (perhaps bricking) the TV.
It would be so cool to be able to use the IR port on the front of the TV to throw code and force a custom menu overlay up. This would make a trip to the local appliance shop so much more entertaining “Gorilla Advertising” :)
have been doing this for a while now, the tv’s user guide has all the information and codes you need.
defyboy: Check out the MC codes subpage for a few undocumented surprises. :-) My next stop is to manipulate the OSD debug menu to do more that fly a jolly roger, I just need to work out a solid file transfer mechanism.
This looks sweet. I’ll be looking for one of these for my next TV.
I’ve added a new subpage for this: How to send binary files over using the debug shell. Thank the FSM that this TV has awk in the /bin directory already. Many thanks to Peter van Eerten for his base64 decode awk script, which I’ve tailored to this purpose. Next step: custom OSD notifications!
I have a 40″ Element Electronics 1080p set tht has a USB port on the back.
So too the Motorola cable box. I gotta plug in and see what’s there.
As I look around the back of my 47″ LG… YES!!!
A serial port… JOY!! I had *NO* idea that I could hack my TV so easily.. WooooHoooo!!
Thank for the eye opener BLuRry ;)
One of my first jobs as a techie was to go around to peoples places to flash the firmware on there LG tvs as there was a run that was shipped with buggy firmware. I had to change the Baud rate first before running the software that LG supplied. There were a bunch of passwords for them and options to do a forced flash if the standard way didn’t work. Even if you bricked the TV by putting the wrong firmware on it, doing a forced flash with the right one would usually fix it…..damn, I wish I had kept that program and the password codes
@Jehu: That makes TWO of us that wish you had that. ;-)
Ok, a fun update: The page where I document how to draw on the OSD (on screen display) has been updated to include an example of using image overlays. I’ve shell-scripted the process of resizing an image, transferring it to the TV over the serial cable and displaying it.
Nice work BLuRry !
About the undocumented serial commands… How did you brute-force them?
Assuming a letter-only four character command you get around 18000 combinations, assuming 0.25 sec/command gives 30 hours of probing for a rather limited space of potential commands..!
Where you just persistent or am I missing something??
I also wrote a python library and script which makes it super easy to control your LG TV over its serial port, its cross-platform, supports most models and most common commands – all you need to do is provide your model number and serial port!
You can check it out at https://github.com/suan/libLGTV_serial
hi everyone. i have a LG47LY330C and my tutor wants me to put the television on in lunch hours and put an app by omron that is like a video in the rest of the day, how can i do that? pls help me regards
Good guys, I have a problem that is:
I have a TV LG 47L330C at work and my boss wants from a RS-232 communication, I get in the lunch and dinner hours to tv connect to a television channel, outside of these hours you will need to open an application of omron in that this will be a kind of videos and slides.
Appreciate a response to a future resolution of this problem.
Thanks and a continuation of a good day.