
{"id":10608,"date":"2026-02-16T11:25:07","date_gmt":"2026-02-16T11:25:07","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/support\/?page_id=10608"},"modified":"2026-02-16T11:25:23","modified_gmt":"2026-02-16T11:25:23","slug":"including-usppa-in-a-device","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/","title":{"rendered":"Including UspPa in a device"},"content":{"rendered":"\n<p>The USP protocol agent (UspPa) is normally disabled in RDK-B.<\/p>\n\n\n\n<p>To enable it, add the following line to your target device bit bake layer:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">DISTRO_FEATURES_append = \" usppa\"<\/pre>\n\n\n\n<p>UspPa is currently enabled in the RaspberryPI build of RDK-B.<\/p>\n\n\n\n<p>To disable it, comment out, or remove the above line from&nbsp;<em>meta-cmf-raspberrypi\/conf\/distro\/include\/rdk-rpi.inc.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"IncludingUspPainadevice-USPDatabase\">USP Database<\/h2>\n\n\n\n<p>The configuration settings for UspPa are stored in a database.<\/p>\n\n\n\n<p>On the device, the database is located at &#8220;\/nvram\/usp-pa.db&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"IncludingUspPainadevice-Modifyingthefactoryresetfile\">Modifying the factory reset file<\/h2>\n\n\n\n<p>The factory reset file contains the default configuration settings.&nbsp;<\/p>\n\n\n\n<p>If no USP database exists when UspPa starts, then a USP database will be created using the values in the factory reset file.<\/p>\n\n\n\n<p>You will need to modify it to point to the USP Controller that you are using.<\/p>\n\n\n\n<p>On the device, the factory reset file is located at &#8220;\/etc\/usp-pa\/usp_factory_reset.conf&#8221;.<\/p>\n\n\n\n<p>After making changes to this file, you must (<strong>IMPORTANT<\/strong>) delete the USP database, then restart UspPa, in order for the changes to take effect.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"IncludingUspPainadevice-AddingtotheUSPtruststore\">Adding to the USP trust store<\/h2>\n\n\n\n<p>When connecting to a USP Controller, TLS may be used.<\/p>\n\n\n\n<p>UspPa validates the Controller&#8217;s TLS certificate using the CA certs located in &#8220;\/etc\/usp-pa\/usp_truststore.pem&#8221;. You can add CA certs to this file. After adding certs, you must restart UspPa for the changes to take effect.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"IncludingUspPainadevice-CommandLineTool\">Command Line Tool<\/h2>\n\n\n\n<p>UspPa may be invoked as a command line tool using the &#8216;-c&#8217; option.<\/p>\n\n\n\n<p>For example you can get parameters, query the supported data model or stop the UspPa daemon process.<\/p>\n\n\n\n<p>To see a list of commands supported in CLI mode use:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ UspPa -c help<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"IncludingUspPainadevice-Troubleshooting\">Troubleshooting<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"IncludingUspPainadevice-CCSP_ERR_INVALID_PARAMETER_NAME\">CCSP_ERR_INVALID_PARAMETER_NAME<\/h3>\n\n\n\n<p>If a USP Get results in the following error:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">err_msg: \"RDK_GetGroup: CcspBaseIf_getParameterValues() failed (9005 - CCSP_ERR_INVALID_PARAMETER_NAME)\"<\/pre>\n\n\n\n<p>This error is caused by a mismatch between the supported data model in UspPa (as defined by UspPa&#8217;s config files) and the supported data model in RDK-B.&nbsp;Most likely some parameters in RDK-B have been&nbsp;removed or renamed.<br><br>UspPa can discover the RDK-B data model at bootup and regenerate the data model config files.<br>To regenerate the files, on the device, delete out the following files from the directory \/etc\/usp-pa:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">usp_dm_comps.conf\nusp_dm_objs.conf\nusp_dm_params.conf<\/pre>\n\n\n\n<p><br>When UspPa starts up again, it will regenerate the files. You could then copy the files back into your build environment at&nbsp;<em>meta-rdk-broadband\/recipes-rdkb\/usp-pa\/conf.<\/em><\/p>\n\n\n\n<p><em>If you are still having problems:<\/em><\/p>\n\n\n\n<p>When performing a &#8216;get&#8217; operation UspPa attempts to get all specified parameters using a single RDK bus message. This is more efficient than requesting each parameter individually, however it has the downside that if the &#8216;get&#8217; of any single parameter fails, all fail (the RDK response message does not provide a partial response in this case). So if you try to get all parameters of an object using a a partial path, and get the CCSP_ERR_INVALID_PARAMETER_NAME error, you need to determine which one is causing the error. You can use the GET_GROUPED_PARAMETERS_INDIVIDUALLY and SET_GROUPED_PARAMETERS_INDIVIDUALLY defines in vendor_defs.h to change the behaviour of UspPa to request parameters individually, and determine which parameter is actually causing the problem. You can then omit this parameter from usp_dm_params.conf.<\/p>\n\n\n\n<p>For problems with get use:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">UspPa -c get \"Device.\"<\/pre>\n\n\n\n<p>UspPa will print the value of all parameters. If it failed to get a parameter, then it will print an error message of the form:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ERROR: [error-code] retrieving [parameter-name] ([textual-error-message])<\/pre>\n\n\n\n<p>For problems with set, you can consult the logs (obtained with -p option enabled) to determine which parameter is causing problems, or use &#8216;UspPa -c set&#8217;, to try setting each parameter in turn.<\/p>\n\n\n\n<p><strong>WARNING: No instances in Device.LocalAgent.Controller<\/strong><\/p>\n\n\n\n<p><strong>WARNING: No enabled MTPs in Device.LocalAgent.MTP. USP Agent may only be usable via the CLI<\/strong><\/p>\n\n\n\n<p>If you get these errors, it means that UspPa does not have a valid configuration database. To fix this, delete out \/nvram\/usp-pa.db, and ensure that the first invocation of UspPa after that includes the &#8216;-r&#8217; option specifying the factory reset database to apply (The system daemon invocation uses this option). If the first invocation of UspPa after deleting the database is &#8216;UspPa -c&#8217;, make sure that you include the &#8216;-r&#8217; option, otherwise you will end up with an empty database again.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"IncludingUspPainadevice-Questions\">Questions<\/h2>\n\n\n\n<p><strong>Why doesn&#8217;t &#8216;dmcli eRT getv Device.LocalAgent.&#8217; work ?<\/strong><\/p>\n\n\n\n<p>dmcli is used to explore the data model provider components on the RDK bus.<br>UspPa does not currently export USP Specific configuration parameters to the RDK bus, they only exist in the USP Agent.<br><\/p>\n\n\n\n<p><strong>Why isn&#8217;t Device.LocalAgent in&nbsp;<\/strong><strong>usp_dm_objs.conf and usp_dm_params.conf ?<\/strong><\/p>\n\n\n\n<p>The usp_dm_objs.conf and usp_dm_params.conf files are used to define which RDK data model provider components are imported into the USP Agent.<\/p>\n\n\n\n<p>Device.LocalAgent (and a number of other data model objects) exist only in the USP Agent and so do not need to be imported. If you want to remove any of these USP-Agent-only objects, this must be done at compile time using the defines in vendor_defs.h (Example: REMOVE_DEVICE_TIME).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The USP protocol agent (UspPa) is normally disabled in RDK-B. To enable it, add the [&hellip;]<\/p>\n","protected":false},"author":659,"featured_media":0,"parent":207,"menu_order":0,"comment_status":"closed","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-10608","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>Including UspPa in a device - RDK Documentation Portal | Support<\/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\/support\/support\/articles\/including-usppa-in-a-device\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Including UspPa in a device - RDK Documentation Portal | Support\" \/>\n<meta property=\"og:description\" content=\"The USP protocol agent (UspPa) is normally disabled in RDK-B. To enable it, add the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Support\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-16T11:25:23+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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/\",\"name\":\"Including UspPa in a device - RDK Documentation Portal | Support\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/#website\"},\"datePublished\":\"2026-02-16T11:25:07+00:00\",\"dateModified\":\"2026-02-16T11:25:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/support\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Support\",\"item\":\"https:\/\/developer.rdkcentral.com\/support\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Articles\",\"item\":\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Including UspPa in a device\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/support\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/support\/\",\"name\":\"RDK Documentation Portal | Support\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/support\/?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":"Including UspPa in a device - RDK Documentation Portal | Support","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\/support\/support\/articles\/including-usppa-in-a-device\/","og_locale":"en_US","og_type":"article","og_title":"Including UspPa in a device - RDK Documentation Portal | Support","og_description":"The USP protocol agent (UspPa) is normally disabled in RDK-B. To enable it, add the [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/","og_site_name":"RDK Documentation Portal | Support","article_modified_time":"2026-02-16T11:25:23+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/","url":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/","name":"Including UspPa in a device - RDK Documentation Portal | Support","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/support\/#website"},"datePublished":"2026-02-16T11:25:07+00:00","dateModified":"2026-02-16T11:25:23+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/including-usppa-in-a-device\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/support\/"},{"@type":"ListItem","position":2,"name":"Support","item":"https:\/\/developer.rdkcentral.com\/support\/"},{"@type":"ListItem","position":3,"name":"Articles","item":"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/"},{"@type":"ListItem","position":4,"name":"Including UspPa in a device"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/support\/#website","url":"https:\/\/developer.rdkcentral.com\/support\/","name":"RDK Documentation Portal | Support","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/support\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages\/10608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/users\/659"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/comments?post=10608"}],"version-history":[{"count":1,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages\/10608\/revisions"}],"predecessor-version":[{"id":10609,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages\/10608\/revisions\/10609"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/pages\/207"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/support\/wp-json\/wp\/v2\/media?parent=10608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}