€•€)Œ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”hhh ubh)”}”(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”ˆuh1hhh ubh)”}”(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”ˆuh1hhh ubh)”}”(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”ˆuh1hhh ubh)”}”(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”ˆuh1hhh ubh)”}”(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”ˆuh1hhh ubeh}”(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]”(hX9HDMI 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”…””}”(hjhž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.”…””}”(hj4hž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.”…””}”(hjBhž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 ”…””}”(hjPhžhhŸNh Nubh)”}”(hŒ:ref:`CEC_ADAP_G_CAPS`”h]”hæ)”}”(hjZh]”hŒCEC_ADAP_G_CAPS”…””}”(hj\hžhhŸNh Nubah}”(h]”h ]”(hñŒstd”Œstd-ref”eh"]”h$]”h&]”uh1håhjXubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hþŒ refdomain”jfŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆjŒcec_adap_g_caps”uh1hhŸh³h KhjPubhŒ4 ioctl will tell userspace what it is allowed to do.”…””}”(hjPhž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”juh1h´Œ 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”}”jh¶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”}”(jhÁjjj§j¤uŒ nametypes”}”(jˆj‰j§ˆuh}”(hÁhÄjhÄ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.