RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
Papers & Presentations Archive
Supported MTPs:
Using the OB-USP-AGENT which has been ported to RDK the agent can be configured using the following sample:
Note: Changed the Device.STOMP.Connection.1.EnableEncryption as "false" and Device.LocalAgent.MTP.2.Alias as "cpe-2"
########################################################################################################## # # This file contains a factory reset database in text format # # If no USP database exists when OB-USP-AGENT starts, then OB-USP-AGENT will create a database containing # the parameters specified in a text file located by the '-r' option. # Example: # obuspa -p -v 4 -r factory_reset_example.txt # # Each line of this file contains either a comment (denoted by '#' at the start of the line) # or a USP data model parameter and its factory reset value. # The parameter and value are separated by whitespace. # The value may optionally be enclosed in speech marks "" (this is the only way to specify an empty string) # ########################################################################################################## # # The following parameters will definitely need modifying to configure which USP controller to connect to # Device.LocalAgent.Controller.1.EndpointID "oktopusController" Device.STOMP.Connection.1.Host "192.168.2.11" Device.STOMP.Connection.1.Username "" Device.STOMP.Connection.1.Password "" # # The following parameters may be modified # Device.LocalAgent.MTP.1.Alias "cpe-1" Device.LocalAgent.MTP.1.Enable "true" Device.LocalAgent.MTP.1.Protocol "STOMP" Device.LocalAgent.MTP.1.STOMP.Reference "Device.STOMP.Connection.1" Device.LocalAgent.MTP.1.STOMP.Destination "" Device.LocalAgent.Controller.1.Alias "cpe-1" Device.LocalAgent.Controller.1.Enable "true" Device.LocalAgent.Controller.1.AssignedRole "Device.LocalAgent.ControllerTrust.Role.1" Device.LocalAgent.Controller.1.PeriodicNotifInterval "600" Device.LocalAgent.Controller.1.PeriodicNotifTime "0001-01-01T00:00:00Z" Device.LocalAgent.Controller.1.USPNotifRetryMinimumWaitInterval "5" Device.LocalAgent.Controller.1.USPNotifRetryIntervalMultiplier "2000" Device.LocalAgent.Controller.1.ControllerCode "" Device.LocalAgent.Controller.1.MTP.1.Alias "cpe-1" Device.LocalAgent.Controller.1.MTP.1.Enable "true" Device.LocalAgent.Controller.1.MTP.1.Protocol "STOMP" Device.LocalAgent.Controller.1.MTP.1.STOMP.Reference "Device.STOMP.Connection.1" Device.LocalAgent.Controller.1.MTP.1.STOMP.Destination "controller-notify-dest" Device.STOMP.Connection.1.Alias "cpe-1" Device.STOMP.Connection.1.Enable "true" Device.STOMP.Connection.1.Port "61613" Device.STOMP.Connection.1.EnableEncryption "false" Device.STOMP.Connection.1.VirtualHost "/" Device.STOMP.Connection.1.EnableHeartbeats "true" Device.STOMP.Connection.1.OutgoingHeartbeat "30000" Device.STOMP.Connection.1.IncomingHeartbeat "300000" Device.STOMP.Connection.1.ServerRetryInitialInterval "60" Device.STOMP.Connection.1.ServerRetryIntervalMultiplier "2000" Device.STOMP.Connection.1.ServerRetryMaxInterval "30720" Internal.Reboot.Cause "LocalFactoryReset" Device.LocalAgent.Subscription.1.Alias "cpe-1" Device.LocalAgent.Subscription.1.Enable "true" Device.LocalAgent.Subscription.1.Recipient "Device.LocalAgent.Controller.1" Device.LocalAgent.Subscription.1.ID "default-boot-event-ACS" Device.LocalAgent.Subscription.1.CreationDate "0001-01-01T00:00:00Z" Device.LocalAgent.Subscription.1.NotifType "Event" Device.LocalAgent.Subscription.1.ReferenceList "Device.Boot!" Device.LocalAgent.Subscription.1.Persistent "true" Device.LocalAgent.Subscription.1.TimeToLive "0" Device.LocalAgent.Subscription.1.NotifRetry "true" Device.LocalAgent.Subscription.1.NotifExpiration 10000 Device.UnixDomainSockets.UnixDomainSocket.1.Alias "cpe-2" Device.UnixDomainSockets.UnixDomainSocket.1.Mode "Listen" Device.UnixDomainSockets.UnixDomainSocket.1.Path "/var/run/usp/broker_controller_path" Device.UnixDomainSockets.UnixDomainSocket.2.Alias "cpe-2" Device.UnixDomainSockets.UnixDomainSocket.2.Mode "Listen" Device.UnixDomainSockets.UnixDomainSocket.2.Path "/var/run/usp/broker_agent_path" Device.LocalAgent.MTP.2.Alias "cpe-2" Device.LocalAgent.MTP.2.Protocol "UDS" Device.LocalAgent.MTP.2.UDS.UnixDomainSocketRef "Device.UnixDomainSockets.UnixDomainSocket.2" Device.LocalAgent.MTP.2.Enable "true"
The above can be saved to a text file and run as follows:
To build into an image, modify meta-rdk-broadband/recipes-rdkb/usp-pa/usp-pa/conf/usp_factory_reset.conf
Sample Response
# Version
root@RaspberryPi-Gateway:~# UspPa -c version
Running command on database /nvram/usp-pa.db
USP_SIGNAL_ObjectAdded is being called before data model has been initialised
USP_SIGNAL_ObjectAdded is being called before data model has been initialised
USP_SIGNAL_ObjectAdded is being called before data model has been initialised
Agent Version=8.0.3
OpenSSL Version=OpenSSL 3.0.5 5 Jul 2022
Sqlite Version=3.31.1
Curl Version=libcurl/7.82.0 OpenSSL/3.0.5 zlib/1.2.11 libidn2/2.3.2
zlib Version=1.2.11
libmosquitto Version=2.0.14
root@RaspberryPi-Gateway:~#
# get
root@RaspberryPi-Gateway:~# UspPa -c get Device.X_RDK_Ethernet.Link.1.
Device.X_RDK_Ethernet.Link.1.Enable => false
Device.X_RDK_Ethernet.Link.1.Status => Up
Device.X_RDK_Ethernet.Link.1.Alias => WANOE
Device.X_RDK_Ethernet.Link.1.Name => erouter0
Device.X_RDK_Ethernet.Link.1.LowerLayers =>
Device.X_RDK_Ethernet.Link.1.X_RDK_BaseInterface => eth0
Device.X_RDK_Ethernet.Link.1.MACAddress => e4:5f:01:d5:3c:13
Device.X_RDK_Ethernet.Link.1.MACAddrOffSet => 3
Device.X_RDK_Ethernet.Link.1.PriorityTagging => false
Device.X_RDK_Ethernet.Link.1.X_RDK_Refresh => false
Device.X_RDK_Ethernet.Link.1.X_RDK_MarkingNumberOfEntries => 0
root@RaspberryPi-Gateway:~#
# set
root@RaspberryPi-Gateway:~# UspPa -c set Device.WiFi.SSID.1.SSID 2GHz
Device.WiFi.SSID.1.SSID => 2GHz
root@RaspberryPi-Gateway:~# UspPa -c set Device.WiFi.ApplyAccessPointSettings true
Device.WiFi.ApplyAccessPointSettings => true
root@RaspberryPi-Gateway:~# dmcli eRT getv Device.WiFi.SSID.1.SSID
CR component name is: eRT.com.cisco.spvtg.ccsp.CR
subsystem_prefix eRT.
Execution succeed.
Parameter 1 name: Device.WiFi.SSID.1.SSID
type: string, value: 2GHz
# instances
root@RaspberryPi-Gateway:~# UspPa -c instances Device.Users.User.
Device.Users.User.1
Device.Users.User.2
Device.Users.User.3
# add
root@RaspberryPi-Gateway:~# UspPa -c add Device.Users.User.
Added Device.Users.User.4
root@RaspberryPi-Gateway:~# UspPa -c instances Device.Users.User.
Device.Users.User.1
Device.Users.User.2
Device.Users.User.3
Device.Users.User.4
# del
root@RaspberryPi-Gateway:~# UspPa -c del Device.Users.User.4.
Deleted Device.Users.User.4
root@RaspberryPi-Gateway:~# UspPa -c instances Device.Users.User.
Device.Users.User.1
Device.Users.User.2
Device.Users.User.3
# dump
root@RaspberryPi-Gateway:~# UspPa -c dump datamodel | head -n 30
Dumping DataModel Schema...
Device.
Device.Boot!
Device.Boot! event_arg:Cause
Device.Boot! event_arg:CommandKey
Device.Boot! event_arg:FirmwareUpdated
Device.Boot! event_arg:ParameterMap
Device.Bridging.
Device.Bridging.Bridge.{i}.
Device.Bridging.Bridge.{i}.Alias
Device.Bridging.Bridge.{i}.Enable
Device.Bridging.Bridge.{i}.Port.{i}.
Device.Bridging.Bridge.{i}.Port.{i}.AcceptableFrameTypes
Device.Bridging.Bridge.{i}.Port.{i}.Alias
Device.Bridging.Bridge.{i}.Port.{i}.DefaultUserPriority
Device.Bridging.Bridge.{i}.Port.{i}.Enable
Device.Bridging.Bridge.{i}.Port.{i}.IngressFiltering
Device.Bridging.Bridge.{i}.Port.{i}.LastChange
Device.Bridging.Bridge.{i}.Port.{i}.LowerLayers
Device.Bridging.Bridge.{i}.Port.{i}.ManagementPort
Device.Bridging.Bridge.{i}.Port.{i}.Name
Device.Bridging.Bridge.{i}.Port.{i}.PVID
Device.Bridging.Bridge.{i}.Port.{i}.PortState
Device.Bridging.Bridge.{i}.Port.{i}.PriorityRegeneration
Device.Bridging.Bridge.{i}.Port.{i}.PriorityTagging
Device.Bridging.Bridge.{i}.Port.{i}.Stats.
Device.Bridging.Bridge.{i}.Port.{i}.Stats.BroadcastPacketsReceived
Device.Bridging.Bridge.{i}.Port.{i}.Stats.BroadcastPacketsSent
Device.Bridging.Bridge.{i}.Port.{i}.Stats.BytesReceived
root@RaspberryPi-Gateway:~#
# database
root@RaspberryPi-Gateway:~# UspPa -c show database
Running command on database /nvram/usp-pa.db
USP_SIGNAL_ObjectAdded is being called before data model has been initialised
USP_SIGNAL_ObjectAdded is being called before data model has been initialised
USP_SIGNAL_ObjectAdded is being called before data model has been initialised
Device.LocalAgent.Controller.1.EndpointID => oktopusController
Device.STOMP.Connection.1.Host => 192.168.2.11
Device.STOMP.Connection.1.Username =>
Device.STOMP.Connection.1.Password =>
Device.LocalAgent.MTP.1.Alias => cpe-1
Device.LocalAgent.MTP.1.Enable => true
Device.LocalAgent.MTP.1.Protocol => STOMP
Device.LocalAgent.MTP.1.STOMP.Reference => Device.STOMP.Connection.1
Device.LocalAgent.MTP.1.STOMP.Destination =>
Device.LocalAgent.Controller.1.Alias => cpe-1
Device.LocalAgent.Controller.1.Enable => true
Device.LocalAgent.Controller.1.AssignedRole => Device.LocalAgent.ControllerTrust.Role.1
# dac use case using UspPa by operate command
root@RaspberryPi-Gateway:~# UspPa -c operate "Device.SoftwareModules.InstallDU(URL=http://192.168.2.165/busybox.tar.gz)"
Asynchronous Operation (Device.SoftwareModules.InstallDU()) Started successfully.
Device.LocalAgent.Request.1 created.
See log for output arguments of operation
root@RaspberryPi-Gateway:~/destination# UspPa -c operate "Device.SoftwareModules.ExecutionUnit.1.SetRequestedState(RequestedState=Active)"
Synchronous Operation (Device.SoftwareModules.ExecutionUnit.1.SetRequestedState()) completed successfully.
Output Arguments:-
Ret => "Starting EU"
root@RaspberryPi-Gateway:~/destination# DobbyTool list
descriptor | id | state
------------|----------------------------------|-------------
734 | Kn | running
root@RaspberryPi-Gateway:/var/log# UspPa -c operate "Device.SoftwareModules.ExecutionUnit.1.SetRequestedState(RequestedState=Idle)"
Synchronous Operation (Device.SoftwareModules.ExecutionUnit.1.SetRequestedState()) completed successfully.
Output Arguments:-
Ret => "Stopping EU"
# /usr/bin/UspPa -p -v 4 -r usp_factory_reset.conf
Sample Response
root@RaspberryPi-Gateway:~# systemctl stop usp-pa
root@RaspberryPi-Gateway:~# UspPa -p -v 4 -r /etc/usp-pa/usp_factory_reset.conf
DATABASE_Init: Opening database /nvram/usp-pa.db
LoadClientCert: Not using a device certificate for connections
DM_PRIV_GetNodeFromPath: Path is invalid: Device.DHCPv4.Server.Pool.1.Client.1.IPv4Address.1.
DM_INST_VECTOR_RefreshInstance: Path (Device.DHCPv4.Server.Pool.1.Client.1.IPv4Address.1.) does not exist in the schema
DM_PRIV_GetNodeFromPath: Path is invalid: Device.Hosts.Host.1.IPv4Address.1.
DM_INST_VECTOR_RefreshInstance: Path (Device.Hosts.Host.1.IPv4Address.1.) does not exist in the schema
Attempting to connect to host=192.168.2.11 (ipaddr=192.168.2.11, port=61613, unencrypted) from interface=any
CLI_SERVER_Init: Starting CLI server on /tmp/usp_cli
Connected to 192.168.2.11 (host=192.168.2.11, port=61613) from interface=erouter0
LogNoPasswordWarning: WARNING: No username/password set for connection to (host=192.168.2.11, port=61613)
LogNoPasswordWarning: WARNING: No TLS set for connection to (host=192.168.2.11, port=61613)
Sending STOMP frame to (host=192.168.2.11, port=61613)
STOMP
accept-version:1.2
host:/
heart-beat:30000,300000
endpoint-id:os\c\cFFFFFF-100000007fe11c07
Received CONNECTED frame from (host=192.168.2.11, port=61613)
CONNECTED
version:1.2
server:stompd/1.2
heart-beat:300000,60000
subscribe-dest:oktopus/usp/v1/agent/os\c\cFFFFFF-100000007fe11c07
Sending SUBSCRIBE frame to (host=192.168.2.11, port=61613)
SUBSCRIBE
id:0
destination:oktopus/usp/v1/agent/os\c\cFFFFFF-100000007fe11c07
ack:auto
USP_CONNECT_RECORD sending at time 2024-10-07T05:56:09Z, to host 192.168.2.11 over STOMP
SEND
content-length:107
content-type:application/vnd.bbf.usp.msg
reply-to-dest:oktopus/usp/v1/agent/os\c\cFFFFFF-100000007fe11c07
destination:controller-notify-dest
version: "1.3"
to_id: "oktopusController"
from_id: "os::FFFFFF-100000007fe11c07"
payload_security: PLAINTEXT
mac_signature[0]
sender_cert[0]
stomp_connect {
version: V1_2
subscribed_destination: "oktopus/usp/v1/agent/os\c\cFFFFFF-100000007fe11c07"
Sending NotifyRequest (Event for path=Device.LocalAgent.Subscription.1)
}
NOTIFY sending at time 2024-10-07T05:56:09Z, to host 192.168.2.11 over STOMP
SEND
content-length:227
content-type:application/vnd.bbf.usp.msg
reply-to-dest:oktopus/usp/v1/agent/os\c\cFFFFFF-100000007fe11c07
destination:controller-notify-dest
version: "1.3"
to_id: "oktopusController"
from_id: "os::FFFFFF-100000007fe11c07"
payload_security: PLAINTEXT
mac_signature[0]
sender_cert[0]
no_session_context {
payload[168]
}
header {
msg_id: "Event-2024-10-07T05:56:09Z-1"
msg_type: NOTIFY
}
body {
request {
notify {
subscription_id: "default-boot-event-ACS"
Retrying sending notification (retry_count=1) in 8 seconds.
send_resp: true
event {
obj_path: "Device."
event_name: "Boot!"
params {
key: "CommandKey"
value: ""
}
params {
key: "Cause"
value: "LocalReboot"
}
params {
key: "FirmwareUpdated"
value: "false"
}
params {
key: "ParameterMap"
value: "{}"
}
}
}
}
}
# If we remove and regenerate the usp_dm_comps.conf, usp_dm_objs.conf and usp_dm_params.conf files, observed below issue
Sample Response
root@RaspberryPi-Gateway:~# rm /nvram/usp-pa.db
root@RaspberryPi-Gateway:~# rm /etc/usp-pa/usp_dm_*
root@RaspberryPi-Gateway:~# systemctl restart usp-pa
root@RaspberryPi-Gateway:~# UspPa -p -v 4 -r /etc/usp-pa/usp_factory_reset.conf
DATABASE_Init: Opening database /nvram/usp-pa.db
DM_PRIV_AddSchemaPath: Path Device.SoftwareModules.ExecEnv.{i} already exists in schema
USP Agent aborted unexpectedly
root@RaspberryPi-Gateway:~#
→ To resolve this issue , remove all Device.SoftwareModules.ExecEnv. lines from
usp_dm_objs.conf and usp_dm_params.conf
→ Remove /nvram/usp-pa.db and restart the service to communicate with controller
DISCLAIMER: Please note that the use of the RDK Wiki is subject to its Privacy Policy & Terms of Use. In addition, this Wiki may be accessed by all RDK licensees and their contractors.
Powered by a free Atlassian Confluence Open Source Project License granted to RDKCentral. Evaluate Confluence today.
1 Comment
Mark Millard
Is there a way to remove a device using Oktopus Controller Community Edition? I tried the DELETE Rest API using curl and got a 405 method not allowed error. I did the "Get Devices" Rest API to verify that my Authorization token worked; it was ok. So token is probably not an issue. Is this method really not supported?