Writing about this mostly because I am starting to use it most recently with newest television and with new K box.
Consumer Electronics Control (CEC) is a feature of HDMI designed to allow users to command and control devices connected through HDMI by using only one remote control. For example, by using the remote control of a television set to control a set-top box and/or DVD player. Up to 15 devices can be controlled. CEC also allows for individual CEC-enabled devices to command and control each other without user intervention.
It is a one-wire bidirectional serial bus that is based on the CENELEC standard AV.link protocol to perform remote control functions. CEC wiring is mandatory, although implementation of CEC in a product is optional. It was defined in HDMI Specification 1.0 and updated in HDMI 1.2, HDMI 1.2a and HDMI 1.3a (which added timer and audio commands to the bus).
Trade names for CEC
Touch Play (Roku)
Aquos Link (Sharp)
BRAVIA Link, BRAVIA Sync, Control for HDMI (Sony)
CE-Link, Regza Link (Toshiba)
Fun-Link (Funai, Sylvania, Emerson, Magnavox, Philips)
Kuro Link (Pioneer)
NetCommand for HDMI, Realink for HDMI (Mitsubishi)
RIHD (Remote Interactive over HDMI) (Onkyo)
RuncoLink (Runco International)
T-Link (ITT, Thomson)
VIERA Link, HDAVI Control, EZ-Sync (Panasonic)
The following is a list of the most commonly used HDMI-CEC commands:
One Touch Play allows devices to switch the TV to use it as the active source when playback starts
System Standby enables users to switch multiple devices to standby mode with the press of one button
Preset Transfer transfers the tuner channel setup to another TV set
One Touch Record allows users to record whatever is currently being shown on the HDTV screen on a selected recording device
Timer Programming allows users to use the electronic program guides (EPGs) that are built into many HDTVs and set-top-boxes to program the timer in recording devices like PVRs and DVRs
System Information checks all components for bus addresses and configuration
Deck Control allows a component to interrogate and control the operation (play, pause, rewind etc.), of a playback component (Blu-ray or HD DVD player or a Camcorder, etc.)
Tuner Control allows a component to control the tuner of another component
OSD Display uses the on-screen display (OSD) of the TV set to display text
Device Menu Control allows a component to control the menu system of another component by passing through the user interface (UI) commands
Routing Control controls the switching of signal sources
Remote Control Pass Through allows remote control commands to be passed through to other devices within the system
Device OSD Name Transfer transfers the preferred device names to the TV set
System Audio Control allows the volume of an AV receiver, integrated amplifier or preamplifier to be controlled using any remote control from a suitably equipped device(s) in the system
CEC is a separate electrical signal from the other HDMI signals. This allows a device to disable its high-speed HDMI circuitry in sleep mode, but be woken up by CEC. It is a single shared bus, which is directly connected between all HDMI ports on a device, so it can flow through a device which is completely powered off (not just asleep).
The bus is electrically identical to the AV.link protocol, but CEC adds a detailed higher-level message protocol.
The bus is an open-collector line, somewhat like I²C, passively pulled up to +3.3 V, and driven low to transmit a bit.
CEC (Consumer Electronics Control) allows for control of devices over the HDMI port.
All modern televisions and AV-receivers support HDMI-CEC, which is a technology that allows devices to talk with each other over the HDMI cable. K comes with libCEC (CEC abstraction and interface library from Pulse-Eight) which allows control of the K input over the standard TV remote that comes with your TV. As buttons are pressed the remote command is sent via the HDMI cable to your K device.
Using this feature a K compatible CEC controller/adapter will send and receive remote key presses to and from your television and AV-receiver via libCEC.
CEC allows you to do things such as:
Controlling K from the TV's remote control
Automatically switch to the right TV input device
Letting the HTPC control what mode your audio receiver is on when the TV switches on
Turning all devices off with one remote
Set volume/mute of the receiver
And a lot more!
Consumer Electronics Control (CEC) is an HDMI feature designed to allow the user to command and control up-to 15 CEC-enabled devices, that are connected through HDMI,by using only one of their remote controls (for example by controlling a television set, set-top box, and DVD player using only the remote control of the TV). CEC also allows for individual CEC-enabled devices to command and control each other without user intervention.
It is a one-wire bidirectional serial bus that is based on the CENELEC standard AV.link protocol to perform remote control functions. CEC wiring is mandatory, although implementation of CEC in a product is optional. It was defined in HDMI Specification 1.0 and updated in HDMI 1.2, HDMI 1.2a and HDMI 1.3a (which added timer and audio commands to the bus). USB to CEC adapters exist that allow a computer to control CEC-enabled devices.
K uses libCEC (CEC library) from Pulse-Eight for send and receive CEC commands over the HDMI bus, this is because libCEC acts an abstraction layer and translate the commands to match each vendor and devices compatibility issues.
libCEC is aimed at being a reference implementation of the HDMI 1.4b Specification, however what each adopter supports is not always what they should support. Equally some mandatory features of HDMI-CEC are not implemented by some vendors.
Most HTPCs, such as x86 ("desktop"-class) HTPCs, don't have the ability to use CEC on their internal HDMI ports. Probably because the industry is silly. Those HTPCs will need to use an adapter to inject the CEC signal into the HDMI cable, such as the Pulse-Eight CEC USB adapter: hxxp://www.pulse-eight.com/store/products/104-usb-hdmi-cec-adapter.aspx
Some ARM/"Android boxes" have the ability to use CEC, but only expose some basic functions to K. These functions are typically enough to use a TV remote to control that box. For example, the Amazon Fire TV has this kind of CEC functionality.
Other devices, such as the Raspberry Pi, have more complete CEC abilities, and are completely built-in.
Most HDMI ports on computers (onboard or via GPU) do not have integrated support for the CEC feature, but instead can use a external CEC adapter, such as the ones from Pulse-Eight, and some more recent Intel motherboards come with a integrated HTPC header to allow you to connect an internal CEC-adapter.
Pulse-Eight USB CEC Adapter
Pulse-Eight makes two different formats of HDMI-CEC USB-adapters, one for external and one internal. The work the same, with both permitting a connected device to send and receive HDMI-CEC control commands on the HDMI bus. The Pulse-Eight CEC adapters can be installed for use with K. Your television remote can then be used to control K, and K can control all compatible connected devices.
Intel Graphics doesn't support CEC commands (hxxp://www.intel.com/support/graphics/sb/CS-034397.htm under "What are the differences between different HDMI versions?") and a Pulse-Eight adapter is required. Both the external USB adapter and the internal adapter (hxxp://www.intel.com/support/motherboards/desktop/sb/CS-034631.htm) works.
The Raspberry Pi GPU has CEC support which is supported by libCEC, and is therefore fully supported by K.
The Wetek Play GPU has CEC support which is supported by libCEC, and is therefore fully supported by K.
Common Issues with CEC
When "setting up" CEC make sure your configuration uses good HDMI cables. Especially cheap cables - still able to support 1080p without any problems - have been reported to cause problems with CEC (eg. devices like raspberry not showing up in the CEC menu at all, devices showing up but remote not working, etc).
Using better HDMI cables might resolve that problem.
There are also reports of devices with improper HDMI CEC implementation, such as ROKU streaming box, causing problems with CEC device recognition. Disconnecting non-CEC devices, or upgrading firmware on those devices, may resolve the problem.
* Recently purchased a Roku enabled LCD TV (well about 1 year ago). Have it disabled as I did not like the integration to the OS of the television.