€•€) Œ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Œ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”hòŒ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 ]”(hñŒstd”Œstd-ref”eh"]”h$]”h&]”uh1håhj
ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hþŒ 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.”…””}”(hj4 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.”…””}”(hjB 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
”…””}”(hjP hžhhŸNh Nubh)”}”(hŒ:ref:`CEC_ADAP_G_CAPS`”h]”hæ)”}”(hjZ h]”hŒCEC_ADAP_G_CAPS”…””}”(hj\ hžhhŸNh Nubah}”(h]”h ]”(hñŒstd”Œstd-ref”eh"]”h$]”h&]”uh1håhjX ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hþŒ refdomain”jf Œreftype”Œref”Œrefexplicit”‰Œrefwarn”ˆj Œcec_adap_g_caps”uh1hhŸh³h KhjP ubhŒ4 ioctl will tell userspace what it is allowed to do.”…””}”(hjP 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”j< Œ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.