Two protocols, two vantage points
OMCI is the OLT talking to the ONU over the fiber itself — it exists the moment the ONU is authorized, needs no IP path to the device, and controls the transport side: VLANs, gemports, line profiles, deactivate/activate. TR-069 is a management server (ACS) talking to the ONU's router brain over IP — it needs the WAN up first, and controls the home side: WiFi SSIDs and passwords, PPPoE credentials on the WAN, LAN settings, diagnostics.
The practical rule: OMCI gets the device online and shaped; TR-069 manages the subscriber experience after that. A full remote provisioning flow uses both, in that order.
OMCI owns the fiber side; TR-069 owns the home side. Real provisioning uses both, in that order.
The zero-touch activation flow
A technician hangs the ONU and leaves. The rest happens from the console: the ONU appears on the PON as unauthorized with its serial; authorization binds it with the right profiles; OMCI pushes the VLAN; the ONU's WAN comes up and it informs in to the ACS; TR-069 pushes the PPPoE credential and WiFi settings; the subscriber record binds to the hardware. Activation and billing turn up in the same motion — no config by hand, no second visit.
What remote control saves you
The most common tickets stop being truck rolls:
- WiFi password forgotten — changed from the subscriber record in seconds
- Router 'hanging' — remote reboot via TR-069, or OMCI deactivate/activate when the ONT itself is stuck
- Speed complaints — live optical reading plus session throughput tells you fiber problem vs. plan problem before anyone drives
- New estate rollout — bulk provisioning treats a street of ONUs as one job
The failure modes worth knowing
Some ONTs lock their PPPoE credential fields via OMCI so TR-069 writes appear to succeed but don't stick — the fix is pushing via the right path for that model, which the platform knows per vendor. And an ONT stuck half-configured sometimes ignores reboots entirely; the reliable cure is a targeted deactivate/activate cycle from the OLT side, which is a button in CoreSync, not a CLI session.