Search Results

CDRouter BBF.069 User Guide


CDRouter BBF.069 is the official collection of test cases using the Broadband Forum’s BBF.069 test process to certify TR-069 devices. These test cases are available through QA Cafe, giving you the ability to perform testing in your own lab before exporting and submitting your certified results.

Test Methodology

The tests in the CDRouter BBF.069 add-on are defined in the Broadband Forum’s TP-069 “TR-069 Test Plan”. Each test module contains a number of test cases covering a specific area of functionality.

Test Module Tests Description
ACS_URL_Behavior.tcl 3 Tests functionality specific to the ACS URL.
Add_Delete.tcl 4 Tests the functionality of the Add and Delete Objects RPCs.
BooleanParameterConfiguration.tcl 1 Tests the handling of different boolean parameters.
CWMP_Faults.tcl 3 Tests the handling of common CWMP Faults.
DHCP_URL_Discovery.tcl 1 Tests the handling DHCP URL discovery.
DHCPv4.tcl 4 Tests DHCPv4 options and functionality
DHCPv6.tcl 4 Tests DHCPv6 options and functionality.
Diagnostics.tcl 1 Tests the functionality of IPPing Diagnostics.
Download.tcl 4 Tests the functionality of the Download RPC.
Events_Informs.tcl 9 Tests the behavior of Informs and Events.
GetParameterAttributes.tcl 6 Tests the functionality of the GetParameterAttributes RPC.
GetParameterNames.tcl 10 Tests the functionality of the GetParameterNames RPC.
GetParameterValues.tcl 6 Tests the functionality of the GetParameterValues RPC.
GetRPCMethods.tcl 1 Tests the functionality of the GetRPCMethods RPC.
HTTP_Redirect.tcl 6 Tests the functionality of HTTP redirection.
HTTP_SOAP.tcl 10 Tests the functionality of SOAP and HTTP.
Optional_RPCs.tcl 7 Tests the functionality of various conditional functions and RPCs.
PeriodicInform.tcl 3 Tests the functionality of Periodic Informs.
Reboot.tcl 2 Tests the handling of Reboots and the functionality of the Reboot RPC.
Secure_CWMP.tcl 8 Tests the functionality of secure CWMP sessions.
Session_Retry.tcl 1 Tests the handling of retrying sessions.
Sessions.tcl 5 Tests the handling of sessions.
SetParameterAttributes.tcl 8 Tests the functionality of the SetParameterAttributes RPC.
SetParameterValues.tcl 4 Tests the functionality of the SetParameterValues RPC.
Upload.tcl 3 Tests the functionality of the Upload RPC.
XMPP.tcl 11 Tests the functionality of the DUT using XMPP.

Mandatory Versus Conditional Tests

The Broadband Forum ATP-069 document designates certain test cases as “Mandatory” or “Conditionally Mandatory” for the purposes of the BBF.069 Certification Program. These designations are provided within the Description section of the test case, but they do not have any meaning within CDRouter and are not used by CDRouter when selecting or executing tests.

Automated Versus Manual Testing

Most of the CDRouter BBF.069 test cases are fully automated and can be run together in one package. However, some of the tests require some sort of manual intervention during the test execution in order for the test to complete successfully. This will be indicated in the “Test Execution Type:” section of test case description. Tests labeled as “Manual” will provide details of what actions the user must perform when running these tests.

Manual testing is assisted through the use of CDRouter’s built-in pause mode which will automatically pause a test at specific points and prompt the user for manual interaction. CDRouter will automatically skip “Manual” tests if pause mode has not been enabled.

CDRouter’s pause mode can be enabled by checking off the "Pause between each test case" option when creating or modifying a test package. Alternatively, pause mode can be enabled by adding the -pause option to the “Additional CLI arguments” field, or by specifying the -pause argument when running cdrouter-cli directly from the command line. For more information on enabling pause mode, please see this Knowledge Base article.

The table below lists all BBF.069 “Manual” tests that require CDRouter’s “pause mode” in order to run.

Manual Tests

Test Name Description
5_001_DHCPv4_ACS_discovery ACS Discovery Using DHCPv4
5_002_DHCPv6_ACS_discovery ACS Discovery Using DHCPv4
5_003_DHCPv4_ACS_rediscovery ACS rediscovery Using DHCPv4
5_004_DHCPv6_ACS_rediscovery ACS Rediscovery Using DHCPv6
5_005_DHCPv4_Inform_retry DHCP Retry to the DHCPv4 Server
5_006_DHCPv6_Inform_retry DHCP Retry To The DHCPv6 Server
5_011_Same_mechanism_after_factoryReset Connection To ACS Uses Same Mechanism After Factory Reset
5_012_DHCPv4_null_term_URL Handling Null Terminated ACS URL Obtained From DHCPv4 Server
5_013_DHCPv6_null_term_URL Handling Null Terminated ACS URL Obtained From DHCPv6 Server
5_016_ACS_URL_mod_3rd_party ACS URL Change On The DUT By Third Party Means
5_018_event_discard_after_bootstrap Event Discard After Bootstrap Inform
5_066_SPA_Active_notif SetParameterAttributes - Active Notifications
5_069_SPA_complete_path_passive_notif SetParameterAttributes - Passive Notification - Complete Path
5_070_SPA_partial_path_passive_notif SetParameterAttributes - Passive Notification - Partial Path
5_071_SPA_complete_partial_path_passive_notif SetParameterAttributes Passive Notification Complete and Partial Path
5_072_SPA_disable_notif SetParameterAttributes Disable Notification
5_089_factoryReset FactoryReset
5_099_no_inform_ip_address_change No Inform On Reconnect With No IP Address Change
5_100_enable_cwmp_to_false EnableCWMP Set To False
5_105_default_active_notification_throttle DefaultActiveNotificationThrottle Throttles Active Notifications

Reboot Test

Test 5_079_Manual_Reboot requires that the DUT be rebooted by a mechanism other than TR-069. Use RestartDut and cpeRebootMode to configure the DUT to be rebooted automatically or manually with a prompt. See the CDRouter User Guide for more information.

Requirements and License

CDRouter BBF.069 is an add-on for CDRouter that is purchased separately. It requires a base license of CDRouter or CDRouter Multiport along with the CDRouter TR-069 add-on. Please contact for pricing and purchase information.

To install the CDRouter BBF.069 add-on, your license file must first be updated. Please follow the instructions from on updating your license file to enable the CDRouter BBF.069 add-on. These instructions are normally provided at the time of purchase.

CDRouter will report the status of all available add-ons during the installation process and during startup. To verify that the CDRouter BBF.069 add-on is enabled on your system, go to the Utilities page within CDRouter’s web interface and verify that BBF.069 is listed as an add-on. Alternatively, you can also verify your license from the command line by executing the command cdrouter-cli -info as root and looking for the lines “BBF.069 is enabled”, as shown below. If these lines are present, the CDRouter BBF.069 add-on is enabled and ready to use.

$ cdrouter-cli -info

Starting /usr/cdrouter/bin/cdrouter-cli Wed Aug 16 11:30:58 EDT 2017
Copyright (c) 2001-2017 by QA Cafe
Version 10.4 build 1 (24820 branches/release_10_4), built 2017-08-14 17:49:40 by nightly@cdr-forge6.lan (x86_64)
OS: CentOS Linux 7.2.1511 (4.4.20-1.el7.elrepo.x86_64)
CPU: Intel(R) Core(TM) i7-4790S CPU @ 3.20GHz
Loaded modules from: '/usr/cdrouter/tests'
Start command: /usr/cdrouter/bin/cdrouter-cli -info
Test Suite: cdrouter 10.4.1
System ID: de63d9857b51cf6a07c97620a5245db0
License file: /etc/cdrouter.lic
Serial number: NTA1000-10519
Registered to: qacafe
Maintenance, support and upgrades until: 2017-12-20
Licensed to run: cdrouter
    Multiport   is enabled
    IPv6        is enabled
    Storage     is enabled
    IKE         is enabled
    TR69        is enabled
    TR69-EDM    is enabled
    Nmap        is enabled
    BBF.069     is enabled
    SNMP        is enabled
    Performance is enabled
    ICS         is enabled
    DOCSIS      is enabled
NTA platform 5, image 5.1, serial number NTA1000-10519

Installation and Version information

Minimum version required

In CDRouter 10.4 or higher, the BBF.069 test modules are automatically included and updated with each release of CDRouter, and there is nothing additional to install.

In earlier versions of CDRouter, the BBF.069 tests were distributed as a separate installation package and required manual configuration. If you are running an older version of CDRouter, you must download and install a separate package containing the BBF.069 test suite. Please contact for assistance for information about installing the BBF.069 tests with earlier versions.

Uninstalling older BBF.069 packages

After upgrading to CDRouter 10.4 or above, you may use the yum or apt-get command to remove any previously installed BBF.069 add-on packages that are no longer being used:

CentOS, Red Hat or Fedora systems:
# yum remove cdrouter-iol-bbf-069

Ubuntu or Debian systems:
# apt-get remove cdrouter-iol-bbf-069


In CDRouter 10.3.6 and newer versions, CDRouter provides all of the necessary testvars to configure and run the BBF.069 test modules.

In previous versions of the BBF.069 add-on, these testvars were contained in a separate file and had to be manually added to the CDRouter config file.

New config files created by CDRouter will always contain the latest testvars available. However, if you are upgrading from a previous version of the BBF.069 add-on, you will need to upgrade your existing config file using the Upgrade button in CDRouter’s config editor to automatically add the BBF.069 testvars, as well as any other newly-added testvars that may be missing from your config.

See the “How do I upgrade a config file?” Knowledge Base article for more details on updating your config file.

It is important to note that the testvars required by previous versions of the BBF.069 add-on are now obsolete. In CDRouter 10.3.6 and newer versions, these tests have been updated to use testvars that already exist within CDRouter wherever possible. A smaller and completely different set of 'bbf069' testvars has been introduced to supersede the testvars used in previous versions of the add-on.

The new BBF.069 testvars can be found in the 'CDRouter BBF.069 Add-On' section of the config file.

SECTION "CDRouter BBF.069 Add-On" {

    # testvar supportsBBF069                   yes

    SECTION "General" {

        SECTION "ACS URL" {

            # testvar bbf069ACSURL           
            # testvar bbf069AlternateACSURL  


        SECTION "Security Certificates" {

            # testvar bbf069AlternateAcsCertPath       /usr/cdrouter/tests/bbf.069/Security_Certificate/acs2/CDRouter_acsCaCert.pem
            # testvar bbf069AlternateAcsCaCertPath     /usr/cdrouter/tests/bbf.069/Security_Certificate/acs2/CDRouter_acsCaCert.pem
            # testvar bbf069InvalidCertPath            /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1invalid/CDRouter_acsCert.pem
            # testvar bbf069InvalidCACertPath          /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1invalid/CDRouter_acsCaCert.pem
            # testvar bbf069AncientCertPath            /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1expired/CDRouter_acsCert.pem
            # testvar bbf069AncientCACertPath          /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1expired/CDRouter_acsCaCert.pem


        SECTION "HTTP Verification" {

            # testvar bbf069HTTPVerification           no



    SECTION "Device Specific" {

        SECTION "General" {

            # testvar bbf069RootDataModel              InternetGatewayDevice
            # testvar bbf069SupportedRPCs              "GetRPCMethods SetParameterValues GetParameterValues GetParameterNames SetParameterAttributes GetParameterAttributes AddObject DeleteObject Reboot Download"
            # testvar bbf069UnsupportedRPC             ChangeDUState
            # testvar bbf069UploadType                 "1 Vendor Configuration File"
            # testvar bbf069ExpectedUpgradeTime        100


        SECTION "Data Model" {

            # testvar bbf069AddDeleteObject            InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.PortMapping.

            # testvar bbf069ActiveParam                InternetGatewayDevice.ManagementServer.PeriodicInformInterval
            # testvar bbf069ActiveParamType            unsignedInt
            # testvar bbf069ActiveParamValue           60

            # testvar bbf069CompletePath1              InternetGatewayDevice.ManagementServer.PeriodicInformInterval
            # testvar bbf069CompletePath1Type          unsignedInt
            # testvar bbf069CompletePath1Value         73

            # testvar bbf069CompletePath2              InternetGatewayDevice.ManagementServer.PeriodicInformEnable
            # testvar bbf069CompletePath2Type          boolean
            # testvar bbf069CompletePath2Value         true

            # testvar bbf069PartialPath                InternetGatewayDevice.ManagementServer.
            # testvar bbf069PartialMultiPath           InternetGatewayDevice.LANDevice.
            # testvar bbf069PartialMultiPathEmpty      InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.PortMapping.
            # testvar bbf069PartialPathEmpty           InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.PortMapping.

            # testvar bbf069InvalidPath                InternetGatewayDevice.ManagementServer.PeriodicInformInterv
            # testvar bbf069InvalidPathType            unsignedInt

            # testvar bbf069UnwritablePath             InternetGatewayDevice.DeviceInfo.Manufacturer
            # testvar bbf069UnwritableType             string
            # testvar bbf069WritableString             InternetGatewayDevice.Time.NTPServer1




When upgrading your config file, any obsolete testvars will automatically be placed under the 'Miscellaneous Testvars' section of the config file since they are no longer recognized or used. Although these testvars can safely be deleted, you may wish to keep them in your config file in case you ever need to downgrade and return to an older version of the BBF.069 tests that requires them.

SECTION "Miscellaneous Testvars" {

    # - Obsolete testvars from previous versions of BBF.069 add-on
    testvar _unh_dhcp_inform_timeout 300
    testvar acs_pm_accessList {}
    testvar acs_pm_accessListChange 0
    testvar acs_pm_active_notify 2
    testvar acs_pm_notifyChange 1
    testvar acs_pm_path Device.ManagementServer.PeriodicInformInterval


Testvar Default Values

Certain BBF.069 specific testvars are data model specific and must be properly configured based on the root object and data model supported by the DUT.

By default all BBF.069 data model specific testvars have been defined for the InternetGatewayDevice:1 root object model. These testvars can be easily updated to support the Device:2 root object model instead by setting the testvar bbf069RootDataModel to a value of Device and then clicking on the “Upgrade Config” button.

Reasonable default values have been chosen for both InternetGatewayDevice:1 and Device:2 implementations. Some DUTs may not support all default values. In these cases the configuration should be modified to reference objects and parameters that are supported by the DUT.

Please contact for assistance in selecting the appropriate testvar values for older Device:1 DUTs.

Required testvar Settings and DUT Configuration

In order for the CDRouter BBF.069 tests to run properly, you must configure the DUT with the correct TR-069 parameters so that it can successfully connect to CDRouter’s ACS.

For most setups, the DUT should be configured with the following settings:

DUT TR-069 (CWMP) Setting Value
ACS Username qacafe
ACS Password qacafe123

Your CDRouter config file should also contain the following testvar settings to allow the DUT to connect and establish CWMP sessions:

testvar supportsCWMP                     yes
testvar acsDomain              
testvar acsIp                  
testvar acsTransport                     http
testvar acsPort                          80
testvar acsDiscoveryUrl                  none
testvar tr69InformTimeout                300
testvar tr69MinPeriodicInform            120

testvar bbf069ACSURL              (must match dnsHostname1)
testvar bbf069AlternateACSURL     (must match dnsHostname2)

testvar dnsHostname1           
testvar dnsIp1                                            (must be same as acsIp)
testvar dnsHostname2           
testvar dnsIp2                                            (must be different from acsIp)

These settings represent the minimum required configuration needed to start running the Mandatory-Automated test module.

SSL/TLS Testing Configuration

Some additional settings are necessary to enable the use of secure SSL/TLS connections between the DUT and ACS. Secure connections are required in order to run the optional Secure_CWMP.tcl test module.

DUT TR-069 (CWMP) Setting Value
testvar supportsCWMP                     yes
testvar acsDomain              
testvar acsIp                  
testvar acsTransport                     https
testvar acsPort                          443
testvar acsDiscoveryUrl                  none
testvar tr69InformTimeout                300
testvar tr69MinPeriodicInform            120
testvar acsSslVersion                    tls
testvar acsCertPath                      /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1/CDRouter_acsCert.pem
testvar acsCaCertPath                    /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1/CDRouter_acsCaCert.pem
testvar acsDownloadCertPath              /usr/cdrouter/tests/
testvar acsDownloadCaCertPath            /usr/cdrouter/tests/

testvar bbf069AlternateAcsCertPath       /usr/cdrouter/tests/bbf.069/Security_Certificate/acs2/CDRouter_acsCert.pem
testvar bbf069AlternateAcsCaCertPath     /usr/cdrouter/tests/bbf.069/Security_Certificate/acs2/CDRouter_acsCaCert.pem
testvar bbf069InvalidCertPath            /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1invalid/CDRouter_acsCert.pem
testvar bbf069InvalidCACertPath          /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1invalid/CDRouter_acsCaCert.pem
testvar bbf069AncientCertPath            /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1expired/CDRouter_acsCert.pem
testvar bbf069AncientCACertPath          /usr/cdrouter/tests/bbf.069/Security_Certificate/acs1expired/CDRouter_acsCaCert.pem

testvar bbf069ACSURL              (must match dnsHostname1)
testvar bbf069AlternateACSURL     (must match dnsHostname2)

testvar dnsHostname1           
testvar dnsIp1                                            (must be same as acsIp)
testvar dnsHostname2           
testvar dnsIp2                                            (must be different from acsIp)

(Note: in previous versions of the BBF.069 add-on, ACS certificates were located in the “/usr/cdrouter/vendor/IOL/BBF.069/Security_Certificate” directory)

The SSL test module includes seven optional automated test cases. Although this test module is automated, different configurations are required for some of the test cases. As a result, multiple test packages must be created for each of the three required configurations and run sequentially.

Test Case Description
commonName_validation Common Name Certificate Validation
connection_SSL Connection Establishment using SSL 3.0
connection_TLS Connection Establishment using TLS
rejection_SSL Rejection of Invalid certificate
redirect_HTTPS_matching_certificate HTTP Redirection HTTPS with URL Matching Certificate
redirect_HTTPS_mismatched_certificate HTTP Redirection HTTPS with URL/Certificate Mismatch
certificates_used_no_ntp Use of Certificates In The Absence Of NTP

The UNH-IOL has provided a number of self signed certificates for BBF.069 SSL testing. These certificates are installed in the following directory:


Each ACS that is used during the BBF.069 test cases has it’s own sub-directory where the server, intermediate, and root CA certificates are located. The server certificate and private key for each ACS are contained in the CDRouter_acsCert.pem file within the appropriate sub-directory. Likewise, the intermediate and root CAs are located in the CDRouter_acsCaCert.pem file. During the SSL handshake process the ACS will provide both the server certificate and intermediate CA to the DUT.

If you have issues with SSL, please refer to this Knowledge Base article for some helpful tips.

XMPP Connection Requests

If the DUT supports XMPP connection requests (as described in Annex K of the TR-069 Amendment 6 specification), the following configuration changes must be made.

DUT TR-069 (CWMP) Setting Value
Connection Request Mode XMPP
Username qacafe
Resource cdrouter
Password qacafe123
testvar acsDeviceDiscovery         yes
testvar acsSupportsXmppConnReq     yes
testvar acsXmppConnReqUsername     qacafe
testvar acsXmppConnReqResource     cdrouter
testvar acsXmppConnReqPassword     qacafe123
testvar acsXmppConnReqUseTls       yes

Download Testing

The tests in the BBF.069 Download.tcl module verify the the DUT can successfully handle Download RPC requests from the ACS to download and install new firmware. CDRouter provides these firmware images through a virtual download server that it creates at the start of each test.

Two firmware images are required for most tests. One image must be the same firmware version that the DUT is running at the start of the test (the “original” image), while the other image must be a different version that the DUT “upgrades” (or “downgrades”) to. The firmware version number for each image must be available in the Device.DeviceInfo.SoftwareVersion parameter reported by the DUT, as these tests will use this value to determine whether the DUT has successfully loaded the requested firmware image.

The following two testvars specify the path to the firmware images on the CDRouter system.

testvar tr69DownloadImage                /path/to/image
testvar tr69DownloadOriginalImage        /path/to/original_image

Note: These testvars are located in the CDRouter TR-069 Add-On section of the config file and are shared by other TR-069 tests.

Upload Testing

The optional Upload.tcl test module is designed to verify the DUT’s config file upload functionality using the Upload RPC. This is a fully automated test module covering a variety of Upload scenarios to a virtual server that CDRouter creates at the beginning of each test case.

In order to run any Upload tests, the following testvar must be set to “yes” to indicate that the DUT supports the Upload RPC:

testvar tr69UploadRPC                    yes

By default, the ACS will request the DUT to upload its config file, which will be placed in the /tmp directory of the CDRouter system. However, the following testvars can be used to change the upload location or request the DUT to upload its log file instead:

testvar tr69UploadPath                   /tmp
testvar bbf069UploadType                 "1 Vendor Configuration File"

Note: The tr69UploadPath testvar is located in the CDRouter TR-069 Add-On section of the config file and is shared by other TR-069 tests. However, the tr69ConfigUploadFilename and tr69LogUploadFilename testvars found in that section are not used by the BBF.069 Upload.tcl module.