| 1 | .. _cec-intro: |
| 2 | |
| 3 | Introduction |
| 4 | ============ |
| 5 | |
| 6 | .. note:: |
| 7 | |
| 8 | This documents the proposed CEC API. This API is not yet finalized |
| 9 | and is currently only available as a staging kernel module. |
| 10 | |
| 11 | HDMI connectors provide a single pin for use by the Consumer Electronics |
| 12 | Control protocol. This protocol allows different devices connected by an |
| 13 | HDMI cable to communicate. The protocol for CEC version 1.4 is defined |
| 14 | in supplements 1 (CEC) and 2 (HEAC or HDMI Ethernet and Audio Return |
| 15 | Channel) of the HDMI 1.4a (:ref:`hdmi`) specification and the |
| 16 | extensions added to CEC version 2.0 are defined in chapter 11 of the |
| 17 | HDMI 2.0 (:ref:`hdmi2`) specification. |
| 18 | |
| 19 | The bitrate is very slow (effectively no more than 36 bytes per second) |
| 20 | and is based on the ancient AV.link protocol used in old SCART |
| 21 | connectors. The protocol closely resembles a crazy Rube Goldberg |
| 22 | contraption and is an unholy mix of low and high level messages. Some |
| 23 | messages, especially those part of the HEAC protocol layered on top of |
| 24 | CEC, need to be handled by the kernel, others can be handled either by |
| 25 | the kernel or by userspace. |
| 26 | |
| 27 | In addition, CEC can be implemented in HDMI receivers, transmitters and |
| 28 | in USB devices that have an HDMI input and an HDMI output and that |
| 29 | control just the CEC pin. |
| 30 | |
| 31 | Drivers that support CEC will create a CEC device node (/dev/cecX) to |
| 32 | give userspace access to the CEC adapter. The |
| 33 | :ref:`CEC_ADAP_G_CAPS` ioctl will tell userspace what it is allowed to do. |