GNU Linux-libre 4.19.245-gnu1
[releases.git] / Documentation / media / uapi / cec / cec-intro.rst
1 .. _cec-intro:
2
3 Introduction
4 ============
5
6 HDMI connectors provide a single pin for use by the Consumer Electronics
7 Control protocol. This protocol allows different devices connected by an
8 HDMI cable to communicate. The protocol for CEC version 1.4 is defined
9 in supplements 1 (CEC) and 2 (HEAC or HDMI Ethernet and Audio Return
10 Channel) of the HDMI 1.4a (:ref:`hdmi`) specification and the
11 extensions added to CEC version 2.0 are defined in chapter 11 of the
12 HDMI 2.0 (:ref:`hdmi2`) specification.
13
14 The bitrate is very slow (effectively no more than 36 bytes per second)
15 and is based on the ancient AV.link protocol used in old SCART
16 connectors. The protocol closely resembles a crazy Rube Goldberg
17 contraption and is an unholy mix of low and high level messages. Some
18 messages, especially those part of the HEAC protocol layered on top of
19 CEC, need to be handled by the kernel, others can be handled either by
20 the kernel or by userspace.
21
22 In addition, CEC can be implemented in HDMI receivers, transmitters and
23 in USB devices that have an HDMI input and an HDMI output and that
24 control just the CEC pin.
25
26 Drivers that support CEC will create a CEC device node (/dev/cecX) to
27 give userspace access to the CEC adapter. The
28 :ref:`CEC_ADAP_G_CAPS` ioctl will tell userspace what it is allowed to do.
29
30 In order to check the support and test it, it is suggested to download
31 the `v4l-utils <https://git.linuxtv.org/v4l-utils.git/>`_ package. It
32 provides three tools to handle CEC:
33
34 - cec-ctl: the Swiss army knife of CEC. Allows you to configure, transmit
35   and monitor CEC messages.
36
37 - cec-compliance: does a CEC compliance test of a remote CEC device to
38   determine how compliant the CEC implementation is.
39
40 - cec-follower: emulates a CEC follower.