| Table of Contents | ||
|---|---|---|
|
Xconf code consists of 3 web applications - Xconf Webconfig, XConf Admin and Xconf UI. The source code for golang version is available in the below Github repositories:
...
| Component | Recommendation |
|---|---|
| GIT | Version 2.17.1 |
System/OS | Ubuntu 24.04 Noble |
| Node | 16 |
| Java/JDK | Java 8 (JDK version 1.8.0_282) |
| python | 2.7 |
| Cassandra DB | apache-cassandra-3.11.9 |
| php | 8.2 |
| php-fpm | 8.2 |
...
$ cd apache-cassandra-3.11.9
$ sudo bin/cassandra
$ bin/nodetool status
...
For standalone server bring up, kindly refer the instructions mentioned in readme
For containerized environment bring up, Kindly refer this section XCONF containerization configuration of XCONF services, refer this page Steps to bring up XCONF golang version
RDKM has the xconf reference server which is primarily hosted in https://xconf.rdkcentral.com/. To login, kindly refer this page Xconf GO Reference Setup Credentials for credentials
Below steps will affect all the features in Xconf system and should be configured after initial setup. Go to the steps given in site navigation step and press on create button to create new entries.
kindly refer this page Xconf GO Reference Setup Credentials for credentials
| Panel | ||
|---|---|---|
| ||
...
Feature rule is to map devices to a particular feature. A new feature rule can be created via RFC->feature rule -> Create
| Panel | ||
|---|---|---|
| ||
a. Verification of feature and feature rule via test page.
...
Verification and setup from RPI
| Code Block |
|---|
RFC_CONFIG_SERVER_URL=https://xconf.rdkcentral.com.rdkcentral.com/featureControl/getSettings |
...
RPI
| Code Block |
|---|
curl --header "Content-Type: application/json" --request POST --data '{"jsonrpc":"2.0","id":"3","method":"Controller.1.activate","params":{"callsign":"org.rdk.MaintenanceManager"}}' http://127.0.0.1:9998/jsonrpc |
...
6. Note : The formula will be effective only if we select 'Are Settings Active' option to 'true' in 'Create Device Settings' and 'Log Upload settings'
| Info |
|---|
For Logupload endpoint, if you are planning to use community reference server please use https://xconf.rdkcentral.com/logTelemetryServer/logupload.php https://xconf.rdkcentral.com/logTelemetryServer/upload/display.php to view the uploaded logs. |
a.Verification of log upload settings test page.
...
| Info |
|---|
For telemetry, if you are using community reference endpoints, please use https://xconf.rdkcentral.com/logTelemetryServer/telemetry_upload.php To view the telemetry logs, there is a reference portal for community https://xconf.rdkcentral.com/logTelemetryServer/upload/display.php?mode=telemetry |
...
| Code Block |
|---|
{
"urn:settings:GroupName": "RDKM_TEST",
"urn:settings:CheckOnReboot": true,
"urn:settings:CheckSchedule:cron": "2 1 2 1 1",
"urn:settings:CheckSchedule:DurationMinutes": 0,
"urn:settings:LogUploadSettings:Message": null,
"urn:settings:LogUploadSettings:Name": "RDKM_TEST",
"urn:settings:LogUploadSettings:NumberOfDays": 1,
"urn:settings:LogUploadSettings:UploadRepositoryName": "RDKM_TEST",
"urn:settings:LogUploadSettings:RepositoryURL": "http://{loguoloadserver}/xconf/logupload.php",
"urn:settings:LogUploadSettings:UploadOnReboot": true,
"urn:settings:LogUploadSettings:UploadImmediately": false,
"urn:settings:LogUploadSettings:upload": true,
"urn:settings:LogUploadSettings:UploadSchedule:cron": "2 1 1 1 1",
"urn:settings:LogUploadSettings:UploadSchedule:levelone:cron": null,
"urn:settings:LogUploadSettings:UploadSchedule:leveltwo:cron": null,
"urn:settings:LogUploadSettings:UploadSchedule:levelthree:cron": null,
"urn:settings:LogUploadSettings:UploadSchedule:DurationMinutes": 0,
"urn:settings:VODSettings:Name": null,
"urn:settings:VODSettings:LocationsURL": null,
"urn:settings:VODSettings:SRMIPList": null,
"urn:settings:TelemetryProfile": {
"id": "69e37757-b463-47aa-94a8-2ce438e26a50",
"telemetryProfile": [
{
"header": "Firewall",
"content": "starting firewall service",
"type": "FirewallDebug.txt",
"pollingFrequency": "1"
},
{
"header": "MEDIA_ERROR_NETWORK_ERROR",
"content": "onMediaError NETWORK ERROR(10)",
"type": "receiver.log",
"pollingFrequency": "1"
}
],
"schedule": "3",
"expires": 0,
"telemetryProfile:name": "RDKM_TEST",
"uploadRepository:URL": "http://{logupload-server}/xconf/logupload.php",
"uploadRepository:uploadProtocol": "HTTP"
}
} }
} |
eg :
$ curl 'https://<XCONF_IP>/loguploader/getT2Settings?estbMacAddress=AA:BB:CC:DD:EE:FF’
Sample Response :
| Code Block |
|---|
{
"urn:settings:GroupName": "RDKM_TEST",
"urn:settings:CheckOnReboot": true,
"urn:settings:CheckSchedule:cron": "2 1 2 1 1",
"urn:settings:CheckSchedule:DurationMinutes": 0,
"urn:settings:LogUploadSettings:Message": null,
"urn:settings:LogUploadSettings:Name": "RDKM_TEST",
"urn:settings:LogUploadSettings:NumberOfDays": 1,
"urn:settings:LogUploadSettings:UploadRepositoryName": "RDKM_TEST",
"urn:settings:LogUploadSettings:RepositoryURL": "http://{log-upload-server}/xconf/logupload.php",
"urn:settings:LogUploadSettings:UploadOnReboot": true,
"urn:settings:LogUploadSettings:UploadImmediately": false,
"urn:settings:LogUploadSettings:upload": true,
"urn:settings:LogUploadSettings:UploadSchedule:cron": "2 1 1 1 1",
"urn:settings:LogUploadSettings:UploadSchedule:levelone:cron": null,
"urn:settings:LogUploadSettings:UploadSchedule:leveltwo:cron": null,
"urn:settings:LogUploadSettings:UploadSchedule:levelthree:cron": null,
"urn:settings:LogUploadSettings:UploadSchedule:DurationMinutes": 0,
"urn:settings:VODSettings:Name": null,
"urn:settings:VODSettings:LocationsURL": null,
"urn:settings:VODSettings:SRMIPList": null,
"urn:settings:TelemetryProfile": {
"id": "69e37757-b463-47aa-94a8-2ce438e26a50",
"telemetryProfile": [
{
"header": "Firewall",
"content": "starting firewall service",
"type": "FirewallDebug.txt",
"pollingFrequency": "1"
},
{
"header": "MEDIA_ERROR_NETWORK_ERROR",
"content": "com.cisco.spvtg.ccsp.meshagent",
"type": "<event>",
"pollingFrequency": "1"
}
],
"schedule": "3",
"expires": 0,
"telemetryProfile:name": "RDKM_TEST",
"uploadRepository:URL": "http://log-upload-server}/xconf/logupload.php",
"uploadRepository:uploadProtocol": "HTTP"
}
} |
| CURL Command | curl 'http://<XCONF_IP>/loguploader/getSettings?estbMacAddress=AA:BB:CC:DD:EE:FF&firmwareVersion=rdk-generic-hybrid-wpe-image_default_20190702100618&env=dev&model=RPI&ecmMacAddress=AA:BB:CC:DD:EE:FF&controllerId=2504&channelMapId=2345&vodId=15660&timezone=&partnerId=&accountId=Unknown&version=2' |
|---|---|
| CPE Script (RDK-V) | /lib/rdk/DCMscript.sh /lib/rdk/dca_utility.sh |
| CPE Service (RDK-V) | /lib/systemd/system/dcm-log.service |
Please watch the demo video below for a quick lesson in creating a T2 Report Profile in XConf.
A few things to note:
Profile.Name if you include that in your T2 profile (which is highly recommended!).| Multimedia | ||
|---|---|---|
|
Please watch the demo video below for a quick lesson in creating a T2 Rule in XConf.
A few things to note:
| Multimedia | ||
|---|---|---|
|
a. Verification of telemetry test page.
After creating the permanent profile and targeting rules, go to Telemetry->Test page and give a parameter that will match the one of the rule that you have created. Then matched rule will be displayed like below.
| Panel | ||
|---|---|---|
| ||
b. Verification via curl command
The curl command mocks the request being sent from an STB like below and sample response is also given. It can be given as a curl command or as a get request via postman or browser. To fetch the configured telemetry profile follow curl request as below
eg :
$ curl 'httpshttp://<XCONF_IP>/loguploader/getT2SettingsgetTelemetryProfiles?estbMacAddress=AA:BB:CC:DD:EE:FF’
Sample Response :
| Code Block |
|---|
{
"urn:settings:GroupName": "RDKM_TEST",
"urn:settings:CheckOnReboot": true,
"urn:settings:CheckSchedule:cron": "2 1 2 1 1",
"urn:settings:CheckSchedule:DurationMinutes": 0,
"urn:settings:LogUploadSettings:Message": null,
"urn:settings:LogUploadSettings:Name": "RDKM_TEST",
"urn:settings:LogUploadSettings:NumberOfDays": 1,
"urn:settings:LogUploadSettings:UploadRepositoryName": "RDKM_TEST",
"urn:settings:LogUploadSettings:RepositoryURL": "http://{log-upload-server}/xconf/logupload.php",
"urn:settings:LogUploadSettings:UploadOnReboot": true,
"urn:settings:LogUploadSettings:UploadImmediately": false,
"urn:settings:LogUploadSettings:upload": true,
"urn:settings:LogUploadSettings:UploadSchedule:cron": "2 1 1 1 1",
"urn:settings:LogUploadSettings:UploadSchedule:levelone:cron": null,
"urn:settings:LogUploadSettings:UploadSchedule:leveltwo:cron": null,
"urn:settings:LogUploadSettings:UploadSchedule:levelthree:cron": null,
"urn:settings:LogUploadSettings:UploadSchedule:DurationMinutes": 0,
"urn:settings:VODSettings:Name": null,
"urn:settings:VODSettings:LocationsURL": null,
"urn:settings:VODSettings:SRMIPList": null,
"urn:settings:TelemetryProfile": {
"id": "69e37757-b463-47aa-94a8-2ce438e26a50",
"telemetryProfile": [
{
"header": "Firewall",
"content": "starting firewall service",
"type": "FirewallDebug.txt",
"pollingFrequency": "1"
},
{
"header": "MEDIA_ERROR_NETWORK_ERROR",
"content": "com.cisco.spvtg.ccsp.meshagent",
"type": "<event>",
"pollingFrequency": "1"
}
],
"schedule": "3",
"expires": 0,
"telemetryProfile:name": "RDKM_TEST",
"uploadRepository:URL": "http://log-upload-server}/xconf/logupload.php",
"uploadRepository:uploadProtocol": "HTTP"
}
} |
...
/lib/rdk/DCMscript.sh
/lib/rdk/dca_utility.sh
"profiles":[{"name":"RDKE_test_profile","value":{"EncodingType":"JSON","HTTP":{"Compression":"None","Method":"POST","RequestURIParameter":[{"Name":"device","Reference":"Device.DeviceInfo.X_COMCAST-COM_CM_MAC"}],"URL":"https://xconf.rdkcentral.com/logTelemetryServer/telemetry_upload.php"},"JSONEncoding":{"ReportFormat":"NameValuePair","ReportTimestamp":"None"},"Parameter":[{"name":"NTPServer3","reference":"Device.Time.NTPServer3","type":"dataModel"},{"name":"HwVer","reference":"Device.DeviceInfo.HardwareVersion","type":"dataModel"},{"name":"MemStatFree","reference":"Device.DeviceInfo.MemoryStatus.Free","type":"dataModel"},{"name":"MemStatTotal","reference":"Device.DeviceInfo.MemoryStatus.Total","type":"dataModel"},{"component":"sysint","eventName":"Xi_wifiMAC_split","type":"event","use":"absolute"},{"component":"sysint","eventName":"SYST_ERR_LogUpload_Failed","reportEmpty":false,"type":"event","use":"count"},{"logFile":"NetworkManager.log","marker":"NW_DNSMASQ","search":"starting /usr/bin/dnsmasq","type":"grep","use":"absolute"},{"name":"CpuUsage","reference":"Device.DeviceInfo.ProcessStatus.CPUUsage","type":"dataModel"},{"name":"Uptime","reference":"Device.DeviceInfo.UpTime","type":"dataModel"}],"Protocol":"HTTP","ReportingInterval":30,"TimeReference":"0001-01-01T00:00:00Z","Version":"0.1"},"versionHash":"dca68b4f"}]} |
| Info |
|---|
For telemetry, if you are using community reference endpoints, please use https://xconf.rdkcentral.com/logTelemetryServer/telemetry_upload.php To view the telemetry logs, there is a reference portal for community https://xconf.rdkcentral.com/logTelemetryServer/upload/display.php?mode=telemetry |
Refer this page for validation of t2 profile using webconfig WebConfig, XConf & T2
...
...
There is a new option added in the Firmware Config, where we can add parameters. For example if we add parameters 'firmwareLocation' and 'firmwareDownloadProtocol'. then we will be able to override the default download location set from the 'DownLoad Location Filter' page.
To create a new firmware configuration for a particular set of devices with http download location :
| Info |
|---|
For RDK7, TFTP and HTTP is not supported, only HTTPS support is available. |
a. Verification of Firmware test page.
...
| Code Block |
|---|
{"firmwareDownloadProtocol":"http","firmwareFilename":"rdkb-generic-broadband-image_rdk-next_20250305000408_DEV_NG.rootfs","firmwareLocation":"http://10.75.129.16","firmwareVersion":"rdkb-generic-broadband-image_rdk-next_20250305000408_DEV_NG.rootfs","mandatoryUpdate":false,"rebootImmediately":true} |
| Code Block |
|---|
CLOUDURL=https://xconf.rdkcentral.com/xconf/swu/stb?eStbMac= |
...
/lib/rdk/swupdate_utility.sh
NG.rootfs","mandatoryUpdate":false,"rebootImmediately":true} |
| Code Block |
|---|
curl --header "Content-Type: application/json" --request POST --data '{"jsonrpc":"2.0","id":"3","method":"Controller.1.activate","params":{"callsign":"org.rdk.MaintenanceManager"}}' http://127.0.0.1:9998/jsonrpc |
...
Percentage based filters allow us to block a certain percentage of Xconf responses that would otherwise have resulted in a change in firmware. The use case for this is when we have tons of STBs out there and we don't yet have scheduled downloads. We would like to be able to only service a certain percentage as a throttling mechanism so download servers aren't overwhelmed.
...
1. I am getting a 503 error on accessing the dataservice. What may be the reason?
Check whether Cassandra DB is up or not. If Cassandra DB is not up, then it may affect the admin UI as well. The admin UI may be up, but you may not be able to add data to the Application.