
{"id":9887,"date":"2022-06-21T09:10:29","date_gmt":"2022-06-21T09:10:29","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/documentation\/rdk_video_documentation\/components\/open-sourced_components\/hdmi_cec\/"},"modified":"2025-03-25T05:18:35","modified_gmt":"2025-03-25T05:18:35","slug":"hdmi_cec","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/","title":{"rendered":"HDMI CEC"},"content":{"rendered":"<p><!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\"><br \/>\n <html><body><\/p>\n<div class=\"toc-macro client-side-toc-macro  conf-macro output-block\" data-headerelements=\"H1,H2,H3,H4,H5,H6,H7\" data-hasbody=\"false\" data-macro-name=\"toc\"> <\/div>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Feature Summary<\/h2>\n\n\n<p>The HDMI_CEC API defines the ability to get connected HDMI devices, send messages to those devices, and to be notified when messages are received from HDMI devices.<\/p>\n<p>HDMI-CEC is a protocol that provides high-level control functions between audio-visual devices connected over HDMI. CEC is a one-wire bidirectional serial bus based on industry-standard AV.Link protocol to perform control functions. All audio-visual sources are connected directly or indirectly to a display device as the &lsquo;root&rsquo; in a tree-like structure.<\/p>\n<ul>\n<li>\n<p>Hardware support for HDMI-CEC as specified in HDMI 1.4a<\/p>\n<ul>\n<li>CEC 4 &ndash; Electrical Specification<\/li>\n<li>CEC 5 &ndash; Signaling and Bit Timings<\/li>\n<li>CEC 6 &ndash; Frame Description<\/li>\n<li>CEC 7 &ndash; Reliable Communication Mechanisms<\/li>\n<li>CEC 8 &ndash; Protocol Extensions<\/li>\n<li>CEC 9 &ndash; CEC Arbitration<\/li>\n<li>CEC 10.1 &ndash; Physical Address Discovery<\/li>\n<li>CEC 11 &ndash; Switch Requirements<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Send raw or formatted CEC messages on behalf of application<\/li>\n<li>Provide received CEC messages to registered application listener<\/li>\n<li>Get information about a device connected to HDMI input<\/li>\n<li>Autonomously handle subset of CEC messages<\/li>\n<li>Provide list of connected CEC capable device to application<\/li>\n<li>Send &#8220;Feature Abort&#8221; response if message is not handled autonomously by RDK and message is not handled by application listener<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Device Applicability<\/h2>\n\n\n<p>This feature applies to the following devices:<\/p>\n<ul>\n<li>Hybrid<\/li>\n<li>IP<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Architecture&nbsp;Overview<\/h2>\n\n\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/Architecture%20overview.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">HDMI-CEC Profiles supported in RDK<\/h2>\n\n\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><\/colgroup><tbody><tr><td class=\"highlight-grey confluenceTd\" data-highlight-colour=\"grey\"><p><strong>Profiles<\/strong><\/p><\/td><td class=\"highlight-grey confluenceTd\" data-highlight-colour=\"grey\"><p><strong>Description<\/strong><\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>Discovery<\/p><\/td><td class=\"confluenceTd\"><p>Discover HDMI devices that support CEC and provide settop information to those devices<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>Power<\/p><\/td><td class=\"confluenceTd\"><p>Synchronize settop power state with HDMI device power state<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>Switching<\/p><\/td><td class=\"confluenceTd\"><p>Switch settop HDMI inputs to settop HDMI outputs<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>Channel Change<\/p><\/td><td class=\"confluenceTd\"><p>Change channel on settop from HDMI device<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>Audio<\/p><\/td><td class=\"confluenceTd\"><p>Control audio mute\/volume on HDMI device from settop and vice versa<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>User Input<\/p><\/td><td class=\"confluenceTd\"><p>Accept user input commands from HDMI device<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Component Impacts<\/h2>\n\n\n<p><strong>CEC Protocol Library<\/strong><\/p>\n<ul>\n<li class=\"O2\">Translate application commands to CEC commands<\/li>\n<li class=\"O2\">Receive CEC commands and provide to application listeners<\/li>\n<li class=\"O2\">Autonomously respond to a subset of CEC messages<\/li>\n<\/ul>\n<p><strong>HDMI-CEC HAL<\/strong><\/p>\n<ul>\n<li>Abstracts SoC HDMI-CEC driver from higher level components that means it will abstract SoC CEC library from CEC Protocol Library<\/li>\n<li>it allow transmits\/receives HDMI-CEC messages<\/li>\n<\/ul>\n<p><strong>SoC CEC Driver<\/strong><\/p>\n<ul>\n<li class=\"O2\">Serialize and send CEC commands<\/li>\n<li class=\"O2\">Receive CEC commands and provide to CEC Protocol Library<\/li>\n<li class=\"O2\">\n<p>Send EDID to HDMI source<\/p>\n<\/li>\n<li class=\"O2\">\n<p>Provide HDMI input connect notification<\/p>\n<\/li>\n<\/ul>\n<p><strong>Service Manager<\/strong><\/p>\n<ul>\n<li class=\"O2\">\n<p>Provide HDMI input connect notification via State Observer API.<\/p>\n<\/li>\n<li class=\"O2\">\n<p>Select select video source<\/p>\n<\/li>\n<\/ul>\n<p><strong>Device Settings HAL<\/strong><\/p>\n<p>Device Settings APIs that SoC vendors implement.&nbsp; It provides primitive and hardware specific implementation for each controllable aspect of the SoC.&nbsp; This level API is considered single-app mode only, even though its SoC implementation may potentially support multiple-app mode.<\/p>\n<ul>\n<li>Initialize and terminate device inputs and outputs.<\/li>\n<li>Determine device settings capabilities (e.g. supported video resolutions, audio modes, etc).<\/li>\n<li>Modify device settings (e.g. audio encoding).<\/li>\n<li>Modify front panel LEDs.<\/li>\n<li class=\"O2\">\n<p>Provide HDMI event notification<\/p>\n<\/li>\n<li class=\"O2\">\n<p>Read\/Modify\/Write EDID<\/p>\n<\/li>\n<li class=\"O2\">\n<p>Add dsRegisterHdmiListener<\/p>\n<\/li>\n<li class=\"O2\">\n<p>Add dsSelectVideoSource<\/p>\n<\/li>\n<li class=\"O2\">\n<p>Add dsScaleVideoSource<\/p>\n<\/li>\n<\/ul>\n<p><strong>SoC Video Pipeline<\/strong><\/p>\n<ul>\n<li class=\"O2\">\n<p>Source video from HDMI input<\/p>\n<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">How HDMI-CEC Works in RDK<\/h2>\n\n\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/HDMI.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Application API Specification<\/h2>\n\n\n<p>Overall the RDK-CEC library offers 3 categories of application APIs,<\/p>\n<p><strong>HDMI-CEC Connection<\/strong><\/p>\n<ul>\n<li>The Connection APIs allows application to transmit and receive raw data bytes (a.k.a. CEC Frame) that conforms to the HDMI-CEC specification.&nbsp;<\/li>\n<li>This is the only interface that the application can use to access CEC Bus.<\/li>\n<\/ul>\n<p><strong>HDMI-CEC Message and Frame Structure<\/strong><\/p>\n<ul>\n<li>The Messages APIs allows application to encode high-level message constructs into CECFrame raw bytes, or decode CECFrame raw bytes into high-level message constructs.<\/li>\n<\/ul>\n<p><strong>HDMI-CEC Library Interface<\/strong><\/p>\n<ul>\n<li>The Library APIs allows application to contrl how the CEC stack operates, such as adding logical address to the stack.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/Components%20of%20CEC%20Library.drawio.png\"><\/p>\n<p>The <strong>Host <\/strong>interface allows libCEC implementation to interact with the host environment. Such interaction includes monitoring of the Power State change, the HDMI HotPlug events, or API to change the Host State. The Host Interface is delivered as a run-time plugin to the libCEC stack. This allows the CEC stack to run in any devices that implements the Host Interface.<\/p>\n<p>The <strong>Driver<\/strong> Component access the HDMI-CEC SoC Driver via the CEC HAL API. The vendors are responsible in delivering a SoC Driver that conforms to the HAL API (see the header file hdmi_cec_driver.h)<\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">HDMI-CEC Applications<\/h2>\n\n\n<p>The relation between Application, Connection and CEC-Bus is described in the figure.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/Application-1.drawio.png\"><\/p>\n<p><strong>CEC Daemon<\/strong><\/p>\n<ul>\n<li>This daemon receives Raw Bytes from the SoC Driver and dispatches them into IARM Bus via CecIARMMgr, it also receives Raw Bytes from IARM Bus and send to the SoC Driver. It controls the only access point to the physical HDMI CEC Bus.<\/li>\n<\/ul>\n<p><strong>Receiver<\/strong><\/p>\n<ul>\n<li>This application receives Raw Bytes from IARM Bus and dispatch to Service Manager (which in turn may dispatch the bytes to Guide Application). It also receives Raw bytes from Service Manager and send to the IARM-Bus.<\/li>\n<\/ul>\n<p><strong>CECDevMgr<\/strong><\/p>\n<ul>\n<li>This application is a &#8220;sniffer&#8221; on the CEC Bus. It monitors all messages on the bus and construct a Device Map, which depicts the topology of all connected devices on the CEC Bus. Other applications can be developed similar to Receiver or CECDevMgr where the CEC Raw bytes (in form of CECFrame) are send\/receive to\/from IARM Bus. This pseudo CEC Driver implemented on IARM Bus is called CEC IARM Adapter in the diagram.<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">HDMI CEC Messaging<\/h2>\n\n\n<p>The <strong>CECFrame<\/strong> is a byte buffer that provides access to raw CEC bytes. CECFrame is guaranteed to be a complete CEC Message that has the necessary data blocks:<\/p>\n<p>The <strong>Header<\/strong> Data block (The byte that contains the initiator and destination address)<br \/>The <strong>OpCode<\/strong> Data Block (The byte that contains the opcode).<br \/>The <strong>Operand<\/strong> Data Block.(The bytes that contains the operands).<\/p>\n<p>In most cases application need not access <strong>CECFrame<\/strong> directly, but manipulate the raw bytes through the Message API. The Message API allows the application to send or receive high-level CEC message construct instead of raw bytes. Basically for each CEC message (such as ActiveSource), there is a C++ class implementation representing it. Each message class provides necessary getter and setter methods to access the properties of each message.<\/p>\n<p><strong>Asynchronous Vs. Synchronous<\/strong><\/p>\n<p><span>When messages converge on the logical buses, they are queued for sending opportunities on the physical bus. The waiting time for such send to complete, though short in most cases, can be problematic to some interactive real-time applications. It is recommended that the applications always send CEC messages asynchronously via the&nbsp;<\/span><strong>Connection<\/strong><span>&nbsp;API and use the listener APIs to monitor response messages or device state changes. The CEC library offers abundant APIs to facilitate such asynchronous implementation and the application is encouraged to make full use of them.&nbsp;<\/span><\/p>\n<p><span>Given the vast variance of HDMI-CEC support from the off-the-self media devices, it is not recommended that application wait for the response from a destination device. Even if the request message is sent out successfully, the destination device may choose to ignore the request. The recommended approach is again to send the request asynchronously and use the listener to monitor responses.&nbsp;<\/span><\/p>\n<p><span>Overall, given the asynchronous nature of HDMI-CEC, application should always opt to use Asynchronous APIs as first choice. And for same reasons, the RDK CEC library offers only limited support for Synchronous APIs.<\/span><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Multiple Application Support<\/h2>\n\n\n<p>Often , the application functionality (Record, Tune and Playback) is distributed across multiple components. In order for any component to have equivalent access to the HDMI-CEC bus, the library offers Multi-App support via IARM-Bus. This support is enabled by default, and can be disabled if desired.<\/p>\n<p>In essence, there is only one physical CEC bus on a system. However, with the help of Connection, Logical CEC-Bus, and IARM-Bus, the CEC library can converge the CEC traffic from different Connections and Logical Buses before forwarding them to the single physical bus. This is illustrated by the diagram below.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/multi-Application.drawio.png\"><\/p>\n<p>In this diagram there are two applications (Receiver and CECDevMgr). Since both applications can only access the underlying physical CEC Bus via Connection API, they have no knowledge how the message are eventually delivered to the Physical Bus.<\/p>\n<p>For both applications, its CEC messages flows from,<\/p>\n<p>Connection &#8211;&gt; Logical Bus&#8211;&gt; CEC IARM Apaper&#8211;&gt; IARM Bus&#8212;&gt; (CECDaemonMain)<\/p>\n<p>For CECDaemonMain, its CEC messages flows from,<\/p>\n<p>IARM Bus &#8211;&gt; CecIARMMgr &#8211;&gt; Connection &#8211;&gt; Logical Bus &#8211;&gt; CEC Driver &#8211;&gt; (Physical Bus)<\/p>\n<p>The message flow on Connections and Logical Buses are full duplex.<\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Methods &amp; Events<\/h2>\n\n\n<p>Following methods are used for DMI CEC module.<\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><\/colgroup><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Parameters<\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">setEnabled<\/td><td colspan=\"1\" class=\"confluenceTd\">enabled : boolean<\/td><td colspan=\"1\" class=\"confluenceTd\">Enables or disables CEC<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">getEnabled<\/td><td colspan=\"1\" class=\"confluenceTd\">none<\/td><td colspan=\"1\" class=\"confluenceTd\">Returns true if CEC is enabled<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">setName<\/td><td colspan=\"1\" class=\"confluenceTd\">name : string<\/td><td colspan=\"1\" class=\"confluenceTd\">Sets the name of the STB device.&nbsp; The default name is &#8220;STB&#8221;.&nbsp; It is recommended that the name of the device is set prior to enabling CEC.<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">getName<\/td><td colspan=\"1\" class=\"confluenceTd\">none<\/td><td colspan=\"1\" class=\"confluenceTd\">Returns the name of the STB device<\/td><\/tr><tr><td class=\"confluenceTd\">sendMessage<\/td><td class=\"confluenceTd\"><p>message : String<\/p><\/td><td class=\"confluenceTd\"><p>The message is a base64 encoded byte array of the raw CEC bytes.&nbsp; The CEC message includes the device ID for the intended destination.<\/p><\/td><\/tr><tr><td rowspan=\"2\" class=\"confluenceTd\">getCECAddresses<\/td><td rowspan=\"2\" class=\"confluenceTd\">none<\/td><td colspan=\"1\" class=\"confluenceTd\"><p>return the JSON object &lt;<em>CECAddresses<\/em>&gt; that is assigned to the local device. It does not contain the &lt;CECAddresses&gt; of other devices on the connected CEC network.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\"CECAddresses\" : {<br> \"physicalAddress\": Array of 4 bytes [byte0, byte1, byte2, byte3],<br> \"logicalAddresses\" : Array of &lt;CECLogicalAddress&gt;<br>}<\/pre><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\"CECLogicalAddress\" : {<br> \"deviceType\" : &lt;string&gt; <br> \"logicalAddress\": &lt;integer&gt;<br>}<\/pre><p>The&nbsp;<em>deviceType<\/em>&nbsp;returned is part or all of devices types optionally set by XRE.<\/p><p><span>A CEC device can have multiple deviceTypes, if so an array of &lt;CECLogicalAddress&gt; with size more than one is returned.<\/span><\/p><p>Default&nbsp;<em>deviceType<\/em>&nbsp;is Tuner, and its logical Address is either 3, 6, 7, or 10.<\/p><p>In messages sent by XRE, XRE can only use the logicalAddress returned from&nbsp;<em>CECAddresses<\/em>.<\/p><p>Accepted&nbsp;<em>deviceType<\/em>&nbsp;are: &#8220;Tuner&#8221;, &#8220;Record&#8221;, &#8220;Playback&#8221;, &#8220;AudioSystem&#8221;, &#8220;VideoProcessor&#8221;, &#8220;Switch&#8221;<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<p><strong>Events notification:<\/strong><\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><\/colgroup><thead><tr><th class=\"confluenceTh\"><p>Name<\/p><\/th><th class=\"confluenceTh\"><p>Content<\/p><\/th><th class=\"confluenceTh\"><p>Description<\/p><\/th><\/tr><\/thead><tbody><tr><td class=\"confluenceTd\">onMessage<\/td><td class=\"confluenceTd\"><p>message : String<\/p><\/td><td class=\"confluenceTd\"><p>Fired when a message is sent from an HDMI device.&nbsp; Message is a base64 encoded byte array of the raw CEC bytes.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">cecAddressesChanged<\/td><td colspan=\"1\" class=\"confluenceTd\">JSON object &lt;CECAddresses&gt;<\/td><td colspan=\"1\" class=\"confluenceTd\">Notify that address of the host CEC device has changed<\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<p><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">API Documentation&nbsp;<\/h2>\n\n\n<p>&nbsp;To know more about SoC\/Application level APIs details use in RDK, refer the link&nbsp;&nbsp;<a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/d4\/d25\/group___h_d_m_i___c_e_c.html\" rel=\"nofollow\">RDK HDMI-CEC API Documentation<\/a><\/p>\n<p><\/body><\/html><\/p>","protected":false},"excerpt":{"rendered":"<p>Feature Summary The HDMI_CEC API defines the ability to get connected HDMI devices, send messages [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":9844,"menu_order":8,"comment_status":"open","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-9887","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>HDMI CEC - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HDMI CEC - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Feature Summary The HDMI_CEC API defines the ability to get connected HDMI devices, send messages [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-25T05:18:35+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/\",\"name\":\"HDMI CEC - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2022-06-21T09:10:29+00:00\",\"dateModified\":\"2025-03-25T05:18:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Video\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Components\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"HDMI CEC\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HDMI CEC - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/","og_locale":"en_US","og_type":"article","og_title":"HDMI CEC - RDK Documentation Portal | Documentation","og_description":"Feature Summary The HDMI_CEC API defines the ability to get connected HDMI devices, send messages [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-03-25T05:18:35+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/","name":"HDMI CEC - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2022-06-21T09:10:29+00:00","dateModified":"2025-03-25T05:18:35+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/hdmi_cec\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Video","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/"},{"@type":"ListItem","position":4,"name":"Components","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/"},{"@type":"ListItem","position":5,"name":"HDMI CEC"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=9887"}],"version-history":[{"count":2,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9887\/revisions"}],"predecessor-version":[{"id":10998,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9887\/revisions\/10998"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9844"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=9887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}