jointSPACE: controlling a Philips TV over the network
Surprised by the almost complete lack of information on this topic, I decided to write this post. In a nutshell, jointSPACE is an OpenSource platform designed to develop custom applications for Philips TVs. It is an open API for developing two types of applications:
- Applications running on a remote system, rendering and control of which is carried out using the TV interface.
- Applications to control your TV from remote systems
There is an SDK for Linux, iOS, MacOS, Android and Windows (both cygwin and native for Visual Studio). The developers and the community have written many examples for different platforms. I especially want to note the launch of the Doom game on a TV with remote control.

The latest firmware must be installed on the TV and the jointSPACE function must be enabled.
So far, TVs of the following models are supported:
- 2k10 (xxPFLxxx5)
- 2k9 (xxPFLxxx4)
(a full list of supported models).
It is included by speed dialing from the remote control combination "5646877223".
Usage example
As for me, the emergence of technology was great news - I was able to realize a long-held dream: to put the TV and PC into movie viewing mode with one click.
My TV is connected to a computer with Windows 7 via an HDMI cable, the sound is output through it. To start watching the movie, I had to: press WinKey + P, select the output to the TV, press the source selection button on the TV, select the desired HDMI port with arrows, press OK.
I decided to write a small program on the SDK under cygwin, which allows you to do these actions in one click. Since the API cannot call the function I need, I had to emulate keystrokes.
#include
#include
int $i;
int main (int argc, char *argv[])
{
jslibrc_Init( &argc, &argv );
// Жмем кнопку Source на пульте
jslibrc_KeyDown(keySourceRc6, 0, 56);
jslibrc_KeyUp(keySourceRc6, 0, 56);
//Ждем 2 секунды чтобы телек "подумал"
sleep(2);
// N раз жмем кнопку "вверх", чтобы поднять курсор гарантированно вверх
for($i=0; $i <= 20; $i++)
{
jslibrc_KeyDown(keySourceRc6, 0, 88);
jslibrc_KeyUp(keySourceRc6, 0, 88);
}
// Два раза жмем вниз, чтобы выбрать HDMI 2
jslibrc_KeyDown(keySourceRc6, 0, 89);
jslibrc_KeyUp(keySourceRc6, 0, 89);
sleep(1);
jslibrc_KeyDown(keySourceRc6, 0, 89);
jslibrc_KeyUp(keySourceRc6, 0, 89);
sleep(1);
// Жмем ОК
jslibrc_KeyDown(keySourceRc6, 0, 92);
jslibrc_KeyUp(keySourceRc6, 0, 92);
// Меняем дисплей, запуская виндовую программу (которая вызывается по WinKey+P)
//WinExec("c:\\windows\\system32\\displayswitch.exe /internal",SW_SHOW);
jslibrc_Exit();
return 1;
}
So, in a few lines, my dream came true. I do not consider myself a programmer, so the code is quite crooked and not yet completed, but the essence, I think, is clear.
Prospects
Technology opens up great scope for the imagination of developers. You can display any interactive information on the TV screen and interact with the user. Someone wants to follow Twitter while watching TV shows, and someone wants to see the status of the microwave or kettle. It supports the management of multiple TVs on the subnet.
For those who are interested in:
- The project website (on SourceForge.net)
- The most visual description of the development process
- jointSPACE SDK tutorial for Cygwin (installing and configuring SDK + basics)
- jointSPACE API Reference Manual (full description of the API)