TR-069 Protocol Support
This page is a reference for the TR-069/CWMP protocol features the emulator implements: the CWMP RPC methods an ACS can call, the events the CPE raises, the Connection Request transports, and the supported diagnostics, software-module and bulk-data profiles.
Most of these features are exercised by the ACS against a running emulated device (they are part of the TR-069 data model), rather than from the Web UI. Use Single Emulator Mode (or the /apiV2 API) to start a device and watch the resulting sessions in the live log.
Supported CWMP RPC Methods
When the ACS calls GetRPCMethods, the emulated CPE advertises the following methods (defined in cpe_methods.txt). The emulator processes each of them in an ACS-initiated session:
| RPC Method | Direction | Description |
|---|---|---|
|
ACS → CPE |
Return the list of RPC methods the CPE supports |
|
ACS → CPE |
Read one or more parameter values from the data model |
|
ACS → CPE |
Write parameter values (triggers diagnostics when a |
|
ACS → CPE |
Enumerate parameter/object names under a path (honours |
|
ACS → CPE |
Read notification/access-list attributes |
|
ACS → CPE |
Set the notification level (active/passive/off) on parameters |
|
ACS → CPE |
Create a new object instance (e.g. a WiFi SSID or a PortMapping) |
|
ACS → CPE |
Remove an object instance and everything under it |
|
ACS → CPE |
Firmware / config file download (HTTP or FTP) — see File Transfers (Download / Upload) |
|
ACS → CPE |
File upload (HTTP or FTP) — see File Transfers (Download / Upload) |
|
ACS → CPE |
Reboot the device (raises a |
|
ACS → CPE |
Reset to defaults (raises a |
|
ACS → CPE |
Install / Update / Uninstall a Deployment Unit — see Software Modules (Deployment Units, TR-157) |
|
The CPE also issues |
TR-069 Event Codes
The emulator can raise the following CWMP events. They open a session with the ACS and appear in the device log as <code> <NAME>.
| Event Name | Code | Meaning |
|---|---|---|
|
0 |
Initial setup / factory reset |
|
1 |
Device reboot |
|
2 |
Scheduled inform |
|
4 |
A parameter with active notification changed |
|
6 |
ACS-initiated connection request (see Connection Request Transports) |
|
7 |
Download/upload completed |
|
8 |
Diagnostics complete (see Diagnostics) |
|
11 |
Deployment-unit state change complete (see Software Modules (Deployment Units, TR-157)) |
Events can be triggered manually for a Single Mode device through POST /apiV2/invoke (field eventName, using the exact names above).
|
The Single Mode Invoke Event dropdown exposes codes |
Connection Request Transports
A Connection Request is the mechanism an ACS uses to ask a device to start a session immediately, rather than waiting for the next periodic inform. The emulator supports all three TR-069 transports:
| Transport | Enabled by | Notes |
|---|---|---|
HTTP (default) |
|
A listener on port |
XMPP (CWMP Annex K) |
Data-model objects ( |
When the device’s parameter tree contains an enabled XMPP connection-request profile, the emulator connects to the XMPP server (DNS-SRV discovery, TLS, retry/back-off) and listens for connection-request IQ stanzas. Templates: |
UDP / STUN |
|
When |
|
HTTP Connection Request is the only transport with a Web UI / REST toggle. XMPP and UDP/STUN are driven entirely by the device data model — include (and enable) the relevant |
HTTPS Connection Request
The HTTP listener can also serve HTTPS. Start the JVM with an https:// Connection Request address and the emulator opens an additional TLS listener using the bundled certificate (certs/server-cert.pem / certs/server-key.pem):
java -jar target/FTCpeEmulator.jar --web-mode \
-Dconnection.request.address=https://<host>:<port>
The listener port can be overridden with -Dconnection.request.port (default 9999). See Environment Variables for the Docker mapping of CONNECTION_REQUEST_HOST.
Diagnostics
The emulator implements the standard TR-069 diagnostic state machine: the ACS sets the diagnostic object’s DiagnosticsState to Requested (via SetParameterValues), the emulator runs the test, writes the result parameters and raises an 8 DIAGNOSTICS COMPLETE event.
| Diagnostic | Trigger object (parameter prefix) |
|---|---|
IP Ping |
|
TraceRoute |
|
Download Diagnostics |
|
Upload Diagnostics |
|
UDP Echo (config + send) |
|
Neighboring WiFi Diagnostic |
|
IP Layer Capacity Metrics |
|
Vendor WiFi ( |
|
|
IP Ping and TraceRoute execute the host OS |
File Transfers (Download / Upload)
The Download and Upload RPCs are handled over HTTP and FTP (with Basic authentication). On completion the emulator sends a 7 TRANSFER COMPLETE event with a TransferComplete RPC.
-
In Load Test Mode, enable Transfer Emul (
transferEmulation) and set a Transfer Delay to simulate realistic transfer timing across the batch — see Emulator Configuration. -
Transfer faults are reported with standard CWMP fault codes (e.g.
9012login failed,9015could not connect,9016transfer failed).
Software Modules (Deployment Units, TR-157)
The emulator supports the TR-157 software-modules object model and the ChangeDUState RPC. The ACS can request three operation types:
-
Install — download a Deployment Unit (DU) from a URL, parse its metadata and create
DeploymentUnit/ExecutionUnitinstances. -
Update — replace an installed DU with a new version.
-
Uninstall — remove a DU and its execution units.
Each operation result is returned via a DUStateChangeComplete (event 11) session, including per-operation fault structures where applicable. The relevant data-model objects are …SoftwareModules.DeploymentUnit.{i}. and …SoftwareModules.ExecutionUnit.{i}..
Bulk Data Collection (TR-157)
The emulator supports TR-157 Bulk Data Collection profiles. Each enabled profile periodically collects the parameters referenced by its collection tasks (wildcards across multi-instance tables are supported) and HTTP/HTTPS POSTs the report to the profile’s ServerURL.
Profiles are configured through the data model under …BulkData.Profile.{i}. (Enable, ReportingInterval, CollectionTask.{j}.ParameterName, ServerURL). Collection is scheduled automatically from each profile’s ReportingInterval.
|
The |
TLS / Certificates
| Direction | Behaviour |
|---|---|
CPE → ACS (outbound) |
Any |
ACS → CPE (Connection Request) |
Optional HTTPS listener using the bundled |
Bulk Data upload |
Bulk data reports are sent over HTTP or HTTPS depending on the profile |
Related Documentation
-
REST API Reference — the
/apiand/apiV2endpoints that drive these features -
Single Emulator Mode — start one device and watch protocol sessions live
-
Load Test Mode — run protocol features across a batch of devices
-
Connection Request Host — externally reachable address setup