Embedded icon

Friendly TR-069/TR-369 Client


Manufacturers of CPE – including modem, routers, Smart Home hubs, IPTV STBs, ATA/VoIP, storage devices, media centers, Femtocell, IP-phones, and cameras – are expected to allow remote management of these devices through the TR-069 & TR-369 (User Services Platform) standards. These standards allow service providers, including ISPs, Telcos, etc., to streamline the provisioning, maintenance, and support of these CPE devices on a single platform, thereby reducing their support and maintenance costs while increasing customer satisfaction.

Friendly’s TR-069/TR-369 client provides CWMP RPC functionality, as defined by TR-069 Issue 1, Amendment 5, Protocol Version 1.3, between the host CPE device and an Auto Configuration Server (ACS). Friendly TR69 client implementation is targeted at CPE devices running embedded Linux. Other environments are a straightforward implementation. The OEM client package includes the source code for multiple data models with stubbed off getter/setter functions that normally will run on the target platform once the cross-compile issues are resolved. This source provides a jumpstart on the TR-069 implementation. Executable demonstration versions of this code are available for X86 Linux workstations.

Friendly Technologies provides a code generation tool that processes the TR-106 compatible data model definitions and generates the source code for the data model tables and getter/setter stubs for the TR-069 client. Instances of TR-106 data model definitions are TR-098, TR-181, and TR-104. The code generation tool allows customization of the data models as required for the target CPE devices. The client supports both the Root data models, InternetGatewayDevice:1 and Device:2, as defined by TR-106 and the various data model definitions.

RPC Message Implementation

Friendly TR-069/TR-369 client currently implements the baseline RPC messages defined in TR-069 Amendment 4. The Connection Request via NAT Gateway (STUN) functionality defined by Annex G is also implemented and is optionally included based on compile-time options.

Friendly TR-369 client CPE methods that are marked “Supported/Optional” may be included or excluded at compile time.

TR-0069 requirements and methods

SOAP Implementation

A relaxed parsing of the SOAP RPC is performed to avoid ACS capability problems. Friendly TR-069 client implements versions 1.0, 1.1, 1.2, and version 1.3 of the CPE WAN Management Protocol.

Certificate Support

Friendly TR-069 client has support for both client and server Certificates. The native CPE software must provide a mechanism to manage the certificates.

HTTP Authentication Support

Friendly TR-069 client supports both Basic and Digest Authentication for the connection to the ACS. The client always uses digest authentication to challenge the Connection Request connections.

HTTPS Protocol

Friendly TR-069 client image may optionally be built with SSL to provide secure socket communications with the ACS. This compile-time option includes the OpenSSL package (http://www.openssl.org/) to support the SSL communications and server certificate authentication. This is the only extra package used by Friendly TR-069 client with the exception of the Linux standard C libraries.

Upload and Download Transfers

Friendly TR-069 client framework supports HTTP and HTTPS protocols for Uploads and Downloads. Basic and Digest Authentication are supported on transfer requests. Multiple queued transfer requests are supported. Interfaces to native transfer protocols such as FTP and TFTP, are provided. The jump-start versions of the Friendly TR-069 client contain the source code for interfacing to the native transfer utilities.

TR-106 Data Model Support

Friendly TR-069 client is designed to support the CPE data model templates defined in TR-106. Friendly TR-069 client protocol framework is independent of the CPE data model. Only a few parameters within the Management Server Common Object as defined by TR-106 are used internally by the Friendly TR-069 client framework; for example, the management server.URL. The parameter gets 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 client 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 majority of the work of implementing the TR-069 protocol on a CPE is in the implementation of the getter/setter parameter functions and the add/delete object functions.

The jump-start source code files containing parameter definitions and getter/setter functions are supplied for TR-069, TR-098, TR-104, and WT-135 version 5 are included with the source.

Supported Data Models:

  • TR-069 Amendment 1, 2, 3, 4, 5 – CPE WAN Management Protocol
  • TR-098 – Internet Gateway Device Data Model for TR-069
  • TR-104 – LTE/WiMAX Home™ Provisioning Parameters for VoIP CPE/UE
  • TR-106 – Data Model Template for TR-069 Enabled Devices – provides the template for extending TR-069 remote management to other digital home devices
  • TR-110 Issue 1.01 – DSLHome™ Reference Models for VoIP Configurations in the DSL Home
  • TR-111 – Applying TR-069 to Remote Management of Home Networking Devices – makes it easier for an auto-configuration server (ACS) to interact with home-based devices that live behind a NAT router
  • TR-135 – Data Model for a TR-069 Enabled STB
  • TR-140 Issue 1.1 – TR-069 Data Model for Storage Service Enabled Devices
  • TR-142 – Framework for TR-069 enabled PON devices
  • TR-143 – Specifies diagnostics objects for use in data models
  • TR-156 – Using GPON Access in the context of TR-101
  • TR-157 – Specifies Component objects for use in data models
  • TR-181i1 – Specifies Device:1
  • TR-181i2 – Specifies Device:2
  • TR-196 – Femto Access Point Service Data Model


Typical measures employed in the Friendly TR-069 client solution to ensure security include:

  • Authentication – username and password are required to connect to the ACS
  • HTTPS – HTTP over SSL/TLS xSP is used for data transfer
  • Signed certificates – policy can require firmware files to have signed certificates

Friendly TR-069/TR-369 client process environment

Friendly TR-069 client 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. Friendly TR-069 client depends on CPE functions for providing configuration data persistence across reboot and power on/off cycles. The majority of this data is the configuration data that corresponds to the TR-106 data model of the device, with a minor amount required to provide state information for the client application. An example of this CPE Wrapper implementation is provided in the jump-start source.

Friendly TR-069 client supports management of Component Objects as defined by TR-157. This feature is included at compile time by setting compile-time options. The quick-start implementation provides an example of how a CPE device could use the downloaded Component Objects by downloading and installing a sample OSGi framework. If the TR-157 option is included the client creates a separate process thread to manage the installation, starting, stopping, and uninstalling of the component objects.

LAN Device Management

Friendly TR-069 client supports the three types of connection of devices behind a NAT as defined in TR-069/TR-369. These are:

  • STUN as defined by Annex G of TR-069
  • XMPP as defined by Annex K and Appendix III of TR-069.

The STUN method can be excluded by the conditional compilation of the client. The XMPP method is implemented by sending inter-process messages between the client and an XMPP client process. The XMPP client process is based on the Google txmpp open-source project and is included with the development package.

TR-143 Network Throughput Performance Testing and Statistical Monitoring

The requirements of network throughput performance are defined by TR-143 and the TR-181 and TR-098 data models. The performance testing and monitoring tool are implemented as a single-threaded application that is started by the Friendly TR-069 client when requested by the ACS. The output of the performance monitoring application is used to populate the parameter values of the performance measuring objects defined in the TR-143.

Source Control and Release

A CVS repository of the Friendly TR-069 client code, data models are maintained. The majority of the client framework is self-contained in one directory and should not need to be modified when implementing a customer’s CPE solution. This code is updated continuously to fix problems and implement clarifications to the specification. In general, a customer can update this portion of the client code from the CVS without impacting their specific CPE implementation.