Telnet control of Toshiba Smart TVs
Here's how to control the Toshiba 49U6863 - and other similar models - using Telnet.
Quickstart
At the command prompt, type telnet 192.168.0.123 4660
then type 1012
and your TV will turn on. MAGIC!
Background
After six years of use, I decided to upgrade my old 37 inch Panasonic TV. I know Toshiba aren't the coolest brand around, but the 49 inch monster was half the price of the old TV. Yay Moore's Law!
BUT! It turns out that Toshiba don't actually manufacture their own TVs. They just rebadge screens made by Vestel - a Turkish company.
And, the Android remote app is made by Cabot Communications. It is pretty crappy.
Neither Vestel nor Cabot are interested in providing documentation, or any technology support. Hmmm... Reminds me, I need to do a GPL request to Vestel...
So it is up to fearless hackers to reverse engineer what they've done.
Open Source To The Rescue!
Before trying anything yourself, see if someone else has done the hard work for you. Teemu Mikkonen had already written some code to control his Vestel TV. It didn't quite work with the Toshiba models, but gave a good starting point.
WebSockets
The TV has a WebSocket interface, which broadcasts some information. Here's a scrap of JavaScript to show you the basics:
JavaScriptvar TV = new WebSocket("ws://192.168.0.123:7681/")
TV.onmessage = function (event) { console.log(event.data); }
As you play about with the TV, you'll see various messages pop back - but they're not that useful.
Port Scan
Like all good movie hackers I use nmap. Here's what it reported to be open:
2870/tcp open unknown
4660/tcp open mosmig
4661/tcp open unknown
4725/tcp open unknown
7681/tcp open unknown
56789/tcp open unknown
56790/tcp open unknown
57707/tcp open unknown
I hit the jackpot with the second port! telnet 192.168.0.123 4660
got me in. 1337 h4x0r!
Who's got the button?
I used JADX to decompile Toshiba's Android remote app.
Here are the button codes I found:
BUTTON_HOME 1046
BUTTON_POWER 1012
BUTTON_POWER_NAV 1012
BUTTON_POWER_PLAYER 1012
BUTTON_POWER_PVM 1012
BUTTON_POWER_GES_NAV 1012
BUTTON_POWER_GES_PLAYER 1012
BUTTON_POWER_GES_PVM 1012
BUTTON_RECORD 1051
BUTTON_PLAY 1025
BUTTON_PAUSE 1049
BUTTON_STOP 1024
BUTTON_PREVIOUS 1034
BUTTON_REWIND 1027
BUTTON_FORWARD 1028
BUTTON_NEXT 1255
BUTTON_SCREEN 1011
BUTTON_LANG 1015
BUTTON_SUBTITLE 1031
BUTTON_PRESETS 1014
BUTTON_EPG 1047
BUTTON_TEXT 1255
BUTTON_FAV 1040
BUTTON_3D 1040
BUTTON_SLEEP 1042
BUTTON_0 1000
BUTTON_1 1001
BUTTON_2 1002
BUTTON_3 1003
BUTTON_4 1004
BUTTON_5 1005
BUTTON_6 1006
BUTTON_7 1007
BUTTON_8 1008
BUTTON_9 1009
BUTTON_MENU 1048
BUTTON_MUTE 1013
BUTTON_UP 1020
BUTTON_LEFT 1021
BUTTON_OK 1053
BUTTON_RIGHT 1022
BUTTON_DOWN 1019
BUTTON_VOL_UP 1016
BUTTON_VOL_DOWN 1017
BUTTON_VOL_UP_2 1016
BUTTON_VOL_DOWN_2 1017
BUTTON_PROG_UP 1032
BUTTON_PROG_DOWN 1033
BUTTON_BACK 1010
BUTTON_EXIT 1037
BUTTON_RED 1055
BUTTON_GREEN 1054
BUTTON_YELLOW 1050
BUTTON_BLUE 1052
BUTTON_INFO 1018
BUTTON_MMEDIA 1057
BUTTON_SOURCE 1056
BUTTON_SWAP 1034
BUTTON_CHAN 1045
BUTTON_QMENU 1043
The good news is that the codes perfectly emulate a remote button push, so CEC passes the controls onto devices connected via HDMI.
Security? Where we're going, we don't need security!
Sadly, Vestel TV's are notorious for their lax security. This Toshiba branded one seems to have fixed most major flaws - I wasn't able to execute commands as root on the TV, for example.
But two minor privacy flaws are apparent. Any device on your home network can:
- control the TV.
- see its status messages.
Other vulnerabilities may be present, but Toshiba helpfully brands its TVs as "Secure".
I couldn't find any details about the Bavarian State Government's certification programme - let's hope it's good!
James says:
Vestel also make the JVC sets in Currys as well as all of their own brand sets
Eoin Paul Marron says:
I've got a JVC tv, I can see port 4660 is open as well according to nmap. However when I telnet to the port, it appears as if I have a connection but it subsequently closes. Unsure how to maintain the connection, any thoughts? Thanks!
mykro says:
hi, i bought toshibat smart tv 32lblabla which lack of functionality of Sleep timer, what i am shocked. I need this functionality, so I try a lot of android IR remote apps, but didnt find SLeep timer. I tried Toshiba Smart Remote app, and here we go, Sleep timer function was invoked despite it is not officialy supported. THen I want to buid any small device with ESP8266 which will use code 1042 in order to invoke sleep timer. Simpliest solution will be to find on ebay another IR remote, which has sleep function and works also on my TV, but as I said, i Didnt emulate sleep timer with android apps. any hints? hanks
Anon says:
the television actually have a sleep mode in settings if you look carefully. But it's not handy to go set it from there everytime.
bash721 says:
Leaving this here for anyone that stumbles upon this post in the future. You can find the LAN management guide from Vestel's site, https://www.vestelvisualsolutions.com/files/vestel-visual-solutions-rs232-lan-customer-control-v1-1-d13c7b454990_9ABE26049440.pdf
@edent says:
Nice one!