
{"id":9884,"date":"2022-06-21T09:10:28","date_gmt":"2022-06-21T09:10:28","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/documentation\/rdk_video_documentation\/components\/open-sourced_components\/dtcp\/"},"modified":"2025-03-25T05:18:35","modified_gmt":"2025-03-25T05:18:35","slug":"dtcp","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/","title":{"rendered":"DTCP"},"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<p><span><\/p>\n<div class=\"toc-macro client-side-toc-macro  conf-macro output-block\" data-headerelements=\"H1,H2\" data-hasbody=\"false\" data-macro-name=\"toc\"><\/div>\n<p><\/span><\/p>\n<h3 class=\"wp-sub-header\"><span>Overview<\/span><\/h3>\n<p><span>Digital Transmission Content Protection (&#8220;DTCP&#8221;) technology protects high-value digital motion pictures, television programs and audio against unauthorized interception and copying in the home and personal environment (e.g., between a digital set top box and gateway&nbsp;or between a personal computer and a digital TV).&nbsp;<\/span><\/p>\n<p>There are two gstreamer filter elements that are used for content encryption\/decryption.&nbsp;<\/p>\n<ol>\n<li>DTCP Encrypt:&nbsp;<br \/>\nThe &#8220;dtcpencrypt&#8221; is a gstreamer filter element which encrypts incoming MPEG 2 SPTS stream and pushes encrypted data to the source pad. DTCP encrypt requires initialization of DTCP libs done in RMF application (e.g Media Streamer) which includes creating socket and listening for AKE request, authenticate and send exchange key to Sink device upon DTCP request from sink EMO&nbsp;It support Authentication and Key Exchange (AKE) from DTCP client. It encrypts the video stream using DTCP Encryption Mode Indicator (EMI)<\/li>\n<li>DTCP Decrypt:<br \/>\nThe &#8220;dtcpdecrypt&#8221; is a gstreamer filter element is used to decrypt the MPEG2 SPTS video streams. It performs Authentication and Key Exchange (AKE) to DTCP server.<\/li>\n<\/ol>\n<h3 class=\"wp-sub-header\">DTCP Protection<\/h3>\n<p>A device enabled with DTCP determines whether it is connected to other devices that implement the DTCP protection technology. Content encoded for DTCP protection is encrypted and securely transmitted only to recording and display devices that implement DTCP. &nbsp;The content carries information indicating whether and to what extent the content may be copied.<\/p>\n<p>All DTCP encryption and decryption uses common set of provided gstreamer elements, The gstreamer elements uses DTCP manager API. Each SoC provides binary DTCP encryption\/decryption library to support the DTCP Manager API.<\/p>\n<h3 class=\"wp-sub-header\">DTCP Disable Procedure for Gateway boxes<\/h3>\n<p>At first, please verify that the current build of the box supports to disable DTCP. If it&#8217;s yes, follow the next steps<\/p>\n<div class=\"panel conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"panel\">\n<div class=\"panelContent\">\n<p>Copy rmfConfig.ini under \/etc to \/opt<\/p>\n<ul>\n<li>cp \/etc\/rmfconfig.ini \/opt<\/li>\n<\/ul>\n<p>Change value of this string &#8220;FEATURE.DTCP.SUPPORT&#8221; in \/opt\/rmfconfig.ini from TRUE to FALSE<\/p>\n<ul>\n<li>vi \/opt\/rmfconfig.ini<\/li>\n<li>Find FEATURE.DTCP.SUPPORT<\/li>\n<li>Change value of &#8220;FEATURE.DTCP.SUPPORT&#8221; from TRUE to FALSE<\/li>\n<li>Save and Exit<\/li>\n<\/ul>\n<p>Create receiver_config.ini.user under \/opt<\/p>\n<ul>\n<li>touch \/opt\/receiver_config.ini.user<\/li>\n<li>sync<\/li>\n<\/ul>\n<p>Reboot<br \/>\nEdit receiver_config.ini.user under \/opt<\/p>\n<ul>\n<li>echo enableDtcpIp=false &gt; \/opt\/receiver_config.ini.user<\/li>\n<li>sync<\/li>\n<\/ul>\n<p>Reboot<\/p>\n<\/div>\n<\/div>\n<p>Check AV for the box once it&#8217;s up. This step can manually check or use script as below.<\/p>\n<h3 class=\"wp-sub-header\">DTCP Use Case: Live Playback using QAM Source<\/h3>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/dtcp-use%20case.drawio.png\"><\/p>\n<ul>\n<li>In case of live stream, &nbsp;the HTTPReqHandler will receive a request from client box and the Media Streamer&nbsp;will sets an pipeline between QAM Source and HN Sink.<\/li>\n<li>QAM Src element receives the data from the tuner and sends to the HN Sink.<\/li>\n<li>In the client side another pipeline has created between HNSrc and&nbsp;MediaPlayerSink.<\/li>\n<li>HNSrc receive the incoming data from&nbsp;HNSink&nbsp;and feeds to the&nbsp;MediaPlayerSink&nbsp;for live playback.<\/li>\n<li>DTCP encryption and decryption are used for protecting contents over network.<\/li>\n<\/ul>\n<h3 class=\"wp-sub-header\">DTCP Interface Specifications<\/h3>\n<p>Please refer to&nbsp;<a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/d1\/df5\/group___d_t_c_p.html\" rel=\"nofollow\">API Documentation<\/a> for more details about API specifications.<\/p>\n<h3 class=\"wp-sub-header\">References<\/h3>\n<h4 id=\"DTCP-http:\/\/www.dtcp.com\/documents\/dtcp\/dtcp-overview-20180531.pdf\"><strong><a href=\"http:\/\/www.dtcp.com\/documents\/dtcp\/dtcp-overview-20180531.pdf\" class=\"external-link\" rel=\"nofollow\">http:\/\/www.dtcp.com\/documents\/dtcp\/dtcp-overview-20180531.pdf<\/a><\/strong><\/h4>\n<h4 id=\"DTCP-http:\/\/www.dtcp.com\/faq.aspx\"><strong><a href=\"http:\/\/www.dtcp.com\/faq.aspx\" class=\"external-link\" rel=\"nofollow\">http:\/\/www.dtcp.com\/faq.aspx<\/a><br \/>\n<\/strong><\/h4>\n<p><\/body><\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview Digital Transmission Content Protection (&#8220;DTCP&#8221;) technology protects high-value digital motion pictures, television programs and [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":9844,"menu_order":7,"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-9884","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>DTCP - 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\/dtcp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DTCP - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Overview Digital Transmission Content Protection (&#8220;DTCP&#8221;) technology protects high-value digital motion pictures, television programs and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/\" \/>\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=\"3 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\/dtcp\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/\",\"name\":\"DTCP - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2022-06-21T09:10:28+00:00\",\"dateModified\":\"2025-03-25T05:18:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/#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\":\"DTCP\"}]},{\"@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":"DTCP - 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\/dtcp\/","og_locale":"en_US","og_type":"article","og_title":"DTCP - RDK Documentation Portal | Documentation","og_description":"Overview Digital Transmission Content Protection (&#8220;DTCP&#8221;) technology protects high-value digital motion pictures, television programs and [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/","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":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/","name":"DTCP - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2022-06-21T09:10:28+00:00","dateModified":"2025-03-25T05:18:35+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dtcp\/#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":"DTCP"}]},{"@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\/9884","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=9884"}],"version-history":[{"count":2,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9884\/revisions"}],"predecessor-version":[{"id":10997,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9884\/revisions\/10997"}],"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=9884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}