
{"id":9894,"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\/iarm_manager\/"},"modified":"2025-12-23T15:59:00","modified_gmt":"2025-12-23T15:59:00","slug":"iarm_manager","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/","title":{"rendered":"IARM Manager"},"content":{"rendered":"<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<h3 class=\"wp-sub-header\">Overview<\/h3>\n<p>IARM (Inter Application Resource Management) is a mechanism for inter-process communication among different RDK applications. Its a platform agnostic inter process communication (IPC) mechanism for the other RDK components. The inter communication is possible between IARM application using events and RPC method.<\/p>\n<p>IARM-Bus offers two basic functionalities:<\/p>\n<ul>\n<li>Send Events to application.<\/li>\n<li>Invoke application&#8217;s RPC methods.<\/li>\n<\/ul>\n<p>An IARM Application that runs as a linux daemon process is considered a\u00a0<strong>Manager Component<\/strong>. The IARM-Bus\u00a0<strong><em>Daemon<\/em><\/strong>\u00a0is a special Manager component that belongs to the IARM core. Such manager components normally register Events and RPC methods for other applications to use.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/Architecture.drawio.png\" \/><\/p>\n<p>Basically there are three IARM entities involved for development<\/p>\n<ol>\n<li>IARM Bus<\/li>\n<li>IARM Application (Consumers\/Listeners)<\/li>\n<li>IARM Manager (Publishers)<\/li>\n<\/ol>\n<h3 class=\"wp-sub-header\">IARM Bus<\/h3>\n<ul>\n<li>Invoke methods in other processes via Remote Procedure Call.<\/li>\n<li>Send inter-process messages.<\/li>\n<li>Manage shared and exclusive access to resources.<\/li>\n<li>Register for event notification.<\/li>\n<li>Publish Event notification to registered listener.<\/li>\n<li>There are two ways for application to use IARM Bus ie &#8216;Subscribe for system events&#8217; and &#8216;Invoke RPC Methods&#8217;<\/li>\n<\/ul>\n<h3 class=\"wp-sub-header\">IARM Application<\/h3>\n<ul>\n<li>IARM Application utilize the IARM utilities and it register for event notification.<\/li>\n<li>For example, IR Application registering for the events and the same event appears in the IARM Bus so that the notification of the IARM Bus event shall be transfer to the IARM Bus application.<\/li>\n<li>IARM application can also invoke the RPC method which has been registered by the other IARM process.<\/li>\n<\/ul>\n<h3 class=\"wp-sub-header\">IARM Manager<\/h3>\n<ul>\n<li>IARM Manager is an IARM Application that runs as Linux daemon process.<\/li>\n<li>The IARM Bus Daemon is a Manager Component with Special privileges to manage resources.<\/li>\n<li>The Other IARM Manager components include Power Manager, IR Manager, Disk Manager, Sys Manager, DS Manager, etc<\/li>\n<\/ul>\n<h3 class=\"wp-sub-header\">IARM Publisher and Listeners Concept<\/h3>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/Flow%20Diagram.drawio.png\" \/><\/p>\n<h3 class=\"wp-sub-header\">IARM Manager modules<\/h3>\n<div class=\"plugin_pagetree conf-macro output-inline\" data-hasbody=\"false\" data-macro-name=\"pagetree\">\n<div id=\"children26181724-1\" class=\"plugin_pagetree_children\">\n<ul id=\"child_ul26181724-1\" class=\"plugin_pagetree_children_list\" role=\"list\">\n<li>\n<div class=\"plugin_pagetree_children_content\"><span id=\"childrenspan29458528-1\" class=\"plugin_pagetree_children_span\"><a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/device_update_manager\/\">Device Update Manager<\/a><\/span><\/div>\n<\/li>\n<li>\n<div class=\"plugin_pagetree_children_content\"><span id=\"childrenspan29458484-1\" class=\"plugin_pagetree_children_span\"><a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/disk_manager\/\">Disk Manager<\/a><\/span><\/div>\n<\/li>\n<li>\n<div class=\"plugin_pagetree_children_content\"><span id=\"childrenspan29458456-1\" class=\"plugin_pagetree_children_span\"><a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/ds_manager\/\">DS Manager<\/a><\/span><\/div>\n<\/li>\n<li>\n<div class=\"plugin_pagetree_children_content\"><span id=\"childrenspan29458536-1\" class=\"plugin_pagetree_children_span\"><a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/ip_manager\/\">IP Manager<\/a><\/span><\/div>\n<\/li>\n<li>\n<div class=\"plugin_pagetree_children_content\"><span id=\"childrenspan29458448-1\" class=\"plugin_pagetree_children_span\"><a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/ir_manager\/\">IR Manager<\/a><\/span><\/div>\n<\/li>\n<li>\n<div class=\"plugin_pagetree_children_content\"><span id=\"childrenspan29458440-1\" class=\"plugin_pagetree_children_span\"><a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/power_manager\/\">Power Manager<\/a><\/span><\/div>\n<\/li>\n<li>\n<div class=\"plugin_pagetree_children_content\"><span id=\"childrenspan8388826-1\" class=\"plugin_pagetree_children_span\"><a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/rf4ce_driver\/\">RF4CE Driver<\/a><\/span><\/div>\n<\/li>\n<li>\n<div class=\"plugin_pagetree_children_content\"><span id=\"childrenspan29458499-1\" class=\"plugin_pagetree_children_span\"><a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/sys_manager\/\">Sys Manager<\/a><\/span><\/div>\n<\/li>\n<li>\n<div class=\"plugin_pagetree_children_content\"><span id=\"childrenspan29458551-1\" class=\"plugin_pagetree_children_span\"><a href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/vrex_manager\/\">VREX Manager<\/a><\/span><\/div>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<h3 class=\"wp-sub-header\">API Documentation<\/h3>\n<p>To know more about SoC\/Application level APIs details use in RDK, refer the link\u00a0\u00a0<a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/d5\/d8b\/group___i_a_r_m_m_g_r___h_a_l.html\" rel=\"nofollow\">IARM MANAGER API Documentation<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview IARM (Inter Application Resource Management) is a mechanism for inter-process communication among different RDK [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":9844,"menu_order":9,"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-9894","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>IARM Manager - 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\/iarm_manager\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IARM Manager - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Overview IARM (Inter Application Resource Management) is a mechanism for inter-process communication among different RDK [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-23T15:59:00+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=\"2 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\/iarm_manager\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/\",\"name\":\"IARM Manager - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2022-06-21T09:10:29+00:00\",\"dateModified\":\"2025-12-23T15:59:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/#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\":\"IARM Manager\"}]},{\"@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":"IARM Manager - 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\/iarm_manager\/","og_locale":"en_US","og_type":"article","og_title":"IARM Manager - RDK Documentation Portal | Documentation","og_description":"Overview IARM (Inter Application Resource Management) is a mechanism for inter-process communication among different RDK [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-12-23T15:59:00+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/","name":"IARM Manager - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2022-06-21T09:10:29+00:00","dateModified":"2025-12-23T15:59:00+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/iarm_manager\/#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":"IARM Manager"}]},{"@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\/9894","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=9894"}],"version-history":[{"count":3,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9894\/revisions"}],"predecessor-version":[{"id":12654,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9894\/revisions\/12654"}],"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=9894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}