CMDC ONU PPPoE provisioning works only with sequential parameter configuration

Hello everyone,

I am learning TR-069 provisioning and I would like to better understand PPPoE provisioning behavior on a CMDC ONU (generic Chinese ONT/ONU).

After several tests, I noticed that PPPoE provisioning only works correctly when parameters are configured sequentially on an already existing WANPPPConnection instance.

If I try to create everything dynamically in a single declaration, the ONU behaves inconsistently.

The following path already exists on the device and works correctly:

InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1

Using the sequential method below, PPPoE works correctly:

  • VLAN is applied

  • PPPoE connects

  • WAN becomes active

  • No provisioning issues

This is the method that works for me:

var ppp = "InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1";

// 1. Disable first
declare(ppp + ".Enable", { value: now }, { value: false });

// 2. Name
declare(ppp + ".Name", { value: now }, {
  value: "2_INTERNET_R_VID_" + vlan
});

// 3. Connection mode
declare(ppp + ".ConnectionType", { value: now }, {
  value: "IP_Routed"
});

// 4. VLAN
declare(ppp + ".X_CMCC_VLANMode", { value: now }, { value: 2 });
declare(ppp + ".X_CMCC_VLANIDMark", { value: now }, { value: vlan });

// 5. Service
declare(ppp + ".X_CMCC_ServiceList", { value: now }, {
  value: "INTERNET"
});

// 6. Username / Password
declare(ppp + ".Username", { value: now }, { value: username });
declare(ppp + ".Password", { value: now }, { value: password });

// 7. Authentication
declare(ppp + ".PPPAuthenticationProtocol", { value: now }, {
  value: "AUTO"
});

// 8. Trigger
declare(ppp + ".ConnectionTrigger", { value: now }, {
  value: "AlwaysOn"
});

// 9. NAT
declare(ppp + ".NATEnabled", { value: now }, { value: true });

// 10. Enable final
declare(ppp + ".Enable", { value: now }, { value: true });

My question is:

Is this normal behavior on CMDC / Chinese ONUs?

Do these devices usually require sequential provisioning on existing WAN instances instead of dynamic WAN creation?

I would appreciate any explanation or best practices regarding this behavior.

Thank you.