€•p* Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ ”Œchildren”]”(Œtranslations”Œ
LanguagesNode”“”)”}”(hhh]”(h Œpending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ
attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ5/translations/zh_CN/userspace-api/media/cec/cec-intro”Œmodname”NŒ classname”NŒrefexplicit”ˆuŒtagname”hhhubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/zh_TW/userspace-api/media/cec/cec-intro”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/it_IT/userspace-api/media/cec/cec-intro”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/ja_JP/userspace-api/media/cec/cec-intro”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/ko_KR/userspace-api/media/cec/cec-intro”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/pt_BR/userspace-api/media/cec/cec-intro”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/sp_SP/userspace-api/media/cec/cec-intro”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h
hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”h]”hŒ8SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/userspace-api/media/cec/cec-intro.rst”h´KubhŒtarget”“”)”}”(hŒ.. _cec-intro:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œ cec-intro”uh1hÈh´Khhh²hh³hÇubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒIntroduction”h]”hŒIntroduction”…””}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)”}”(hXÇ HDMI connectors provide a single pin for use by the Consumer Electronics
Control protocol. This protocol allows different devices connected by an
HDMI cable to communicate. The protocol for CEC version 1.4 is defined
in supplements 1 (CEC) and 2 (HEAC or HDMI Ethernet and Audio Return
Channel) of the HDMI 1.4a (:ref:`hdmi`) specification and the
extensions added to CEC version 2.0 are defined in chapter 11 of the
HDMI 2.0 (:ref:`hdmi2`) specification.”h]”(hX9 HDMI connectors provide a single pin for use by the Consumer Electronics
Control protocol. This protocol allows different devices connected by an
HDMI cable to communicate. The protocol for CEC version 1.4 is defined
in supplements 1 (CEC) and 2 (HEAC or HDMI Ethernet and Audio Return
Channel) of the HDMI 1.4a (”…””}”(hhíh²hh³Nh´Nubh)”}”(hŒ:ref:`hdmi`”h]”hŒinline”“”)”}”(hh÷h]”hŒhdmi”…””}”(hhûh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1hùhhõubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ!userspace-api/media/cec/cec-intro”Œ refdomain”j Œreftype”Œref”Œrefexplicit”‰Œrefwarn”ˆŒ reftarget”Œhdmi”uh1hh³hÇh´KhhíubhŒg) specification and the
extensions added to CEC version 2.0 are defined in chapter 11 of the
HDMI 2.0 (”…””}”(hhíh²hh³Nh´Nubh)”}”(hŒ:ref:`hdmi2`”h]”hú)”}”(hj h]”hŒhdmi2”…””}”(hj" h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1hùhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”j, Œreftype”Œref”Œrefexplicit”‰Œrefwarn”ˆj Œhdmi2”uh1hh³hÇh´KhhíubhŒ) specification.”…””}”(hhíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)”}”(hX· The bitrate is very slow (effectively no more than 36 bytes per second)
and is based on the ancient AV.link protocol used in old SCART
connectors. The protocol closely resembles a crazy Rube Goldberg
contraption and is an unholy mix of low and high level messages. Some
messages, especially those part of the HEAC protocol layered on top of
CEC, need to be handled by the kernel, others can be handled either by
the kernel or by userspace.”h]”hX· The bitrate is very slow (effectively no more than 36 bytes per second)
and is based on the ancient AV.link protocol used in old SCART
connectors. The protocol closely resembles a crazy Rube Goldberg
contraption and is an unholy mix of low and high level messages. Some
messages, especially those part of the HEAC protocol layered on top of
CEC, need to be handled by the kernel, others can be handled either by
the kernel or by userspace.”…””}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)”}”(hŒ¤In addition, CEC can be implemented in HDMI receivers, transmitters and
in USB devices that have an HDMI input and an HDMI output and that
control just the CEC pin.”h]”hŒ¤In addition, CEC can be implemented in HDMI receivers, transmitters and
in USB devices that have an HDMI input and an HDMI output and that
control just the CEC pin.”…””}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)”}”(hŒ¾Drivers that support CEC will create a CEC device node (/dev/cecX) to
give userspace access to the CEC adapter. The
:ref:`CEC_ADAP_G_CAPS` ioctl will tell userspace what it is allowed to do.”h]”(hŒtDrivers that support CEC will create a CEC device node (/dev/cecX) to
give userspace access to the CEC adapter. The
”…””}”(hjd h²hh³Nh´Nubh)”}”(hŒ:ref:`CEC_ADAP_G_CAPS`”h]”hú)”}”(hjn h]”hŒCEC_ADAP_G_CAPS”…””}”(hjp h²hh³Nh´Nubah}”(h]”h ]”(j Œstd”Œstd-ref”eh"]”h$]”h&]”uh1hùhjl ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jz Œreftype”Œref”Œrefexplicit”‰Œrefwarn”ˆj Œcec_adap_g_caps”uh1hh³hÇh´Khjd ubhŒ4 ioctl will tell userspace what it is allowed to do.”…””}”(hjd h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)”}”(hŒ°In order to check the support and test it, it is suggested to download
the `v4l-utils `_ package. It
provides three tools to handle CEC:”h]”(hŒKIn order to check the support and test it, it is suggested to download
the ”…””}”(hj– h²hh³Nh´NubhŒ reference”“”)”}”(hŒ5`v4l-utils `_”h]”hŒ v4l-utils”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ v4l-utils”Œrefuri”Œ&https://git.linuxtv.org/v4l-utils.git/”uh1jž hj– ubhÉ)”}”(hŒ) ”h]”h}”(h]”Œ v4l-utils”ah ]”h"]”Œ v4l-utils”ah$]”h&]”Œrefuri”j± uh1hÈŒ
referenced”Khj– ubhŒ0 package. It
provides three tools to handle CEC:”…””}”(hj– h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K hhØh²hubhŒbullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒbcec-ctl: the Swiss army knife of CEC. Allows you to configure, transmit
and monitor CEC messages.
”h]”hì)”}”(hŒacec-ctl: the Swiss army knife of CEC. Allows you to configure, transmit
and monitor CEC messages.”h]”hŒacec-ctl: the Swiss army knife of CEC. Allows you to configure, transmit
and monitor CEC messages.”…””}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K$hjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjÌ h²hh³hÇh´NubjÐ )”}”(hŒxcec-compliance: does a CEC compliance test of a remote CEC device to
determine how compliant the CEC implementation is.
”h]”hì)”}”(hŒwcec-compliance: does a CEC compliance test of a remote CEC device to
determine how compliant the CEC implementation is.”h]”hŒwcec-compliance: does a CEC compliance test of a remote CEC device to
determine how compliant the CEC implementation is.”…””}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K'hjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjÌ h²hh³hÇh´NubjÐ )”}”(hŒ&cec-follower: emulates a CEC follower.”h]”hì)”}”(hj h]”hŒ&cec-follower: emulates a CEC follower.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K*hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏ hjÌ h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jÊ h³hÇh´K$hhØh²hubeh}”(h]”(Œintroduction”hÕeh ]”h"]”(Œintroduction”Œ cec-intro”eh$]”h&]”uh1hÖhhh²hh³hÇh´KŒexpect_referenced_by_name”}”j& hÊsŒexpect_referenced_by_id”}”hÕhÊsubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒcurrent_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÛNŒ generator”NŒ datestamp”NŒsource_link”NŒ
source_url”NŒ
toc_backlinks”Œentry”Œfootnote_backlinks”KŒ
sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ
strip_classes”NŒreport_level”KŒ
halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jP Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ
language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ
dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ_destination”NŒ
_config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒraw_enabled”KŒline_length_limit”M'Œpep_references”NŒpep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒrfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œsmart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ
docinfo_xform”KŒsectsubtitle_xform”‰Œ
image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”hÕ]”hÊasŒnameids”}”(j& hÕj% j" j» j¸ uŒ nametypes”}”(j& ˆj% ‰j» ˆuh}”(hÕhØj" hØj¸ j² uŒ
footnote_refs”}”Œ
citation_refs”}”Œ
autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”K Œ
id_counter”Œcollections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)”}”(hhh]”hì)”}”(hhh]”hŒ/Hyperlink target "cec-intro" is not referenced.”…””}”hjº sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj· ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1jµ ubaŒtransformer”NŒinclude_log”]”Œ
decoration”Nh²hub.