USP Agent Configuration with respect to local Oktopus Controller
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"
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
USP Agent Onboarding
- After configuring the UspPa agent and connecting to the oktopus controller in the GUI the new device should appear under Devices with a status of ONLINE
- Click on the Access the device and then go to Remote Messages page to perform CRUD operations
- Read Operation
- Upate Operation
- Create Operation
- del Operation
UspPa commands from CLI
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"
Logs to see the response from Controller
# /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: "{}"
}
}
}
}
}
Known Issue
# 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