Skip to content

CPE Devices (TR-069)

ProxPanel includes a full TR-069 ACS (Auto-Configuration Server) so you can manage customer routers remotely. When a customer’s router boots and is configured to talk to your ACS URL, it auto-registers in this panel; from then on you can read its WiFi SSID and password, change them remotely, reboot the device, and list the devices connected to its LAN — all without dispatching a tech or asking the customer to read settings off a sticker.

The ACS speaks CWMP / SOAP / XML on port 7547, proxied through nginx at /acs on port 80 so customer firewalls don’t need a special port open. Supported routers are auto-detected; tested explicitly are several Cudy models, but any standards-compliant TR-069 device should work.

  • SidebarCPE Devices (wifi-router icon).
  • Direct URL: /cpe-devices.

Admins and resellers with cpe.view. SaaS tenants each have their own CPE list (tenant-scoped).

ColumnSource
Serialcpe_devices.serial_number — set by the router on first Inform.
Manufacturer / ModelPulled from the Inform payload.
SubscriberLinked by IP, or manually linked via Link action.
WiFi (2.4 / 5 GHz)Latest known SSID per band.
ClientsCount of connected hosts. Click to open the list.
Last InformTimestamp of the most recent CWMP session.
ActionsRefresh, Set WiFi, Reboot, Link / Unlink, Delete.

Filters: subscriber, manufacturer, model, online status (last_inform within last hour).

A TR-069-capable router boots, reads its ACS URL from its config (you configure this once at the factory, or push via the customer’s firmware build), and sends an Inform to http://your-panel/acs. The ACS:

  1. Reads DeviceID.Manufacturer, DeviceID.ModelName, DeviceID.SerialNumber from the SOAP body.
  2. Upserts a row in cpe_devices keyed by serial number.
  3. Tries to auto-link to a subscriber by matching the device’s WAN IP against subscribers.ip_address. If a unique online subscriber has that IP, the link is set automatically. If ambiguous, the device is left unlinked and you can link it manually.
  4. Queues a get_parameter_values task to fetch initial state.
  5. Returns the appropriate SOAP response so the router moves to the next CWMP step.

You see the new device on this page within seconds of its first Inform — no manual provisioning step.

SetWiFi (POST /api/cpe/devices/:id/wifi) creates a CWMP task to update SSID and password. Two bands are supported (2.4 GHz and 5 GHz on dual-band routers); single-band routers like the Cudy WR300 only have band 1 — the handler tries both and silently ignores the failure on band 2 for those models.

ParameterPath
2.4 GHz SSIDInternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID
5 GHz SSIDInternetGatewayDevice.LANDevice.1.WLANConfiguration.2.SSID
Password (Cudy)InternetGatewayDevice.LANDevice.1.WLANConfiguration.{1,2}.X_CUDY_Password
Password (standard)InternetGatewayDevice.LANDevice.1.WLANConfiguration.{1,2}.KeyPassphrase

Cudy uses the vendor-specific X_CUDY_Password parameter; standard TR-069 devices use KeyPassphrase or PreSharedKey. The handler tries Cudy first and falls back to the standard names so it works on both. Other vendors with their own vendor prefixes work the same way — file an issue at info@proxrad.com if you find a model that needs a new prefix added.

TR-069 is server-pull: the router decides when to call home (typically every 30 minutes), it isn’t push. To apply a setting immediately, the ACS issues a Connection Request — a small HTTP GET to the router’s connection-request URL using HTTP Digest auth. The router responds by initiating a CWMP session within seconds. Then:

  1. ACS sends SetParameterValues with the new SSID/password.
  2. Router applies it, sends SetParameterValuesResponse.
  3. ACS reads the result, updates cpe_devices.wifi_* columns.
  4. Optional Reboot if the model needs it for changes to take effect.

You see status as pending → in_progress → completed (or failed) in the device detail panel.

RebootDevice posts a Device.Reboot task. Same Connection Request mechanism. The router comes back online in ~60 seconds (typical Cudy). The next Inform after reboot updates last_inform and any changed parameters.

Use it when:

  • A WiFi change didn’t take effect cleanly.
  • The customer complains of slow speeds — sometimes a reboot of the CPE is the fastest fix.
  • After a firmware push (not done from here — use the customer’s firmware-update process).

HostNumberOfEntries in TR-069 returns the count; the host list itself is fetched via the Hosts model: InternetGatewayDevice.LANDevice.1.Hosts.Host.{1,2,3,...}. The handler iterates and stores each host’s:

  • HostName
  • IPAddress
  • MACAddress
  • Active (true = currently connected, false = stale entry)

Stored as JSON in cpe_devices.connected_hosts. Click the Clients count badge on the device row to see the table — useful for confirming “is the customer’s smart-TV online?” or for counting devices when investigating sharing.

ModelBandsData modelNotes
WR1200 V2.0Dual (2.4 + 5 GHz)Device:2 + IGDWorks
WR1200 V2.1DualIGD onlyWorks
WR1300 V4.0DualIGD onlyWorks
WR300 V1.0Single (2.4 GHz)IGD onlyBand-2 calls fail silently — handled.

Other Cudy models in the same generation generally work — the handler auto-detects data model on first Inform.

In Settings → TR-069 you configure:

  • ACS URL — what the routers connect to. Default: http://<panel-host>/acs. Use HTTPS only if you have a valid certificate; many routers don’t include enough root CAs to validate Let’s Encrypt without firmware updates.
  • ACS Username / Password — Basic auth credentials the router sends to authenticate to the ACS.
  • Connection Request Username / Password — credentials the ACS uses to authenticate to the router when issuing Connection Requests.
  • Periodic Inform Interval — pushed to the router via PeriodicInformInterval parameter. Default 1800 (30 min).

Change these only if you’re rolling out a fleet — existing routers need to be reprovisioned to pick up new ACS URLs.

Change a customer’s WiFi password after a complaint

Section titled “Change a customer’s WiFi password after a complaint”
  1. Open CPE Devices, filter by subscriber username.
  2. Click Set WiFi on the row → enter the new SSID and password (you can change one or both).
  3. Click Save. The task queues; status moves to in_progress within ~5 seconds.
  4. Confirm the new SSID appears in the row within a minute. The customer should reconnect their devices to the new SSID.

”How many devices does this household have?”

Section titled “”How many devices does this household have?””
  1. Open the customer’s CPE row, click the Clients badge.
  2. The host list shows all active and recently-seen devices with hostnames and MACs.
  3. If the count seems high (15+ devices in a single home), cross-check with Sharing Detection.
  1. Make sure Settings → TR-069 has your ACS URL set.
  2. For each customer router, you need a one-time provisioning. Cudy ships with a default ACS URL field in their web UI — push your URL there via their bulk-config tool, or telnet/SSH if your firmware build allows.
  3. Once the router talks to your ACS for the first time, it auto-registers here. After that, all management is remote.
PermissionWhat it gates
cpe.viewOpen the page.
cpe.wifiChange SSID and password.
cpe.rebootIssue Reboot tasks.
cpe.linkManually link/unlink a device to a subscriber.
cpe.deleteRemove a stale device from the list.
cpe.settingsEdit ACS URL and credentials.