For All Things TR-069

The Gatespace CPE WAN Management Protocol client (CWMPc) is offered to the OEM market for integration into the wide range of Customer Premises Equipment (CPE) designed to managed in the context of TR-069.  The CWMP client supports the full set of TR-069 data objects and is readily extended in support vendor-specific objects.

Widespread acceptance of TR-069 has created the need for a strictly compliant client-side protocol handler that also allows CPE vendors to innovate with new features and functions within the standard framework but ahead of the standardization process.  The Gatespace CWMP client fully addresses this need.

CWMP client implements the baseline RPC messages defined in TR-069 Appendix A4 plus the optional messages ScheduleInform and FactoryReset.  The software is delivered as an embedded Linux implementation, but can be readily ported to other environments.
Because the CPE WAN Management Protocol client (CWMPc) delivers value adding functions to service providers it is most commonly deployed in WAN the connected CPE devices under service provider control.  A small but growing number of LAN connected devices are deploying with the CWMPc enabling the broadband service provider or other third party providers to offer managed devices/services.
In order to support the data model templates defined in WT-106 the CWMPc protocol implementation is independent of the data model that it is supporting.  A small number of parameters within the Common Object are used internally; for example, the .ManagementServer.URL.  The parameter get and set functions are defined in a set of tables that represent the parameter tree for the required data model.  The parameter tables define the attributes of the parameter and control how the CWMPc handles the calls to the getter and setter functions for the associated parameters.  A utility program is provided that can process a file of parameter definitions to create the getter/setter function stubs, the parameter tables, the string constant tables that define the parameter names and the necessary header files that provide the prototype definitions for the getter/setter functions.  The parameter definition file can be created by cut and paste operations from the parameter definition tables in TR-69, TR-098, or other documents.
CWMPc runs as a separate application or process thread that is linked to a set of CPE supplied functions to provide access to the CPE configuration parameters.  CWMPc depends on CPE functions to provide configuration data persistence across reboot and cycling power off/on.  The majority of this data relates to the modem/router functions of the device, with only a small amount relating to state information for the CWMPc application.  A CPEWrapper implementation example is provided.

CWMPc connects to the ACS using the default routing over a wide-area network connection provided to the CPE.  Standard sockets I/O is used to communicate with the ACS.  The CWMPc image may optionally be built with SSL to provide secure socket communications with the ACS.  This compile time option includes the OpenSSL package ( to support the SSL communications and server certificate authentication.  This is the only extra package used by CWMPc with the exception of the Linux standard C libraries.

The CWMPc framework parses the SOAP/RPC protocol and executes the CWMP TR-069 RPC methods.  The framework accesses the configuration data of the CPE using a getter and setter function for each TR-069 parameter.  The getter/setter functions provide the mapping of the TR-069 parameter to the CPE configuration data item.  Similarly, the TR-069 AddObject and DeleteObject are mapped to the CPE configuration using an add/delete object function for each of the TR-069 objects that may be dynamically created or deleted on the CPE.
The CWMPc OSGi interface enables Java application bundles residing in the managed device to read/write (get/put) TR-069 parameters. This powerful feature in turn enables new classes of CPE resident applications, for example:
  • CPE application can intelligently configure the managed device to provide itself with access to the wide area network with appropriate resources and security.
  • Local (end user) device configuration procedures can be built to co-exist without conflict with central (service provider) TR-069 configuration procedures. This is achieved by building the local configuration procedures and user interfaces as a Java application bundle that updates the TR-069 parameters through the OSGi interface. Then, by configuring the TR-069 parameters to trigger an INFORM to the ACS whenever the parameter value changes the ACS remains in sync with the device. The use of standard data models, such as TR-098, TR-104, TR-135, and TR-196, allows the Java applications to be portable across CPEs provided by multiple vendors.
Gatespace offers a workstation implementation of the Common WAN Management Protocol Client (CWMPc) software free of charge for demonstration purposes.  This allows TR-069 developers to get a fast start by providing an easy-to-use model for showing the correct message interaction with an ACS.

Gatespace offers a workstation implementation of the Common WAN Management Protocol Client (CWMPc) software free of charge to Test ACS subscribers for evaluation purposes.  This package enables prospective users of the Gatespace CWMPc to assess the functionality and level of effort required to integrate the software and achieve TR-069 compliance. The package includes sufficient source code to enable the crteation of getter/setter functions respobsible for mapping information to/from software in the host device.