
{"id":12821,"date":"2026-03-13T09:32:24","date_gmt":"2026-03-13T09:32:24","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/?page_id=12821"},"modified":"2026-03-13T10:40:43","modified_gmt":"2026-03-13T10:40:43","slug":"epon-hal-proposal","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/","title":{"rendered":"EPON HAL Proposal"},"content":{"rendered":"\n<p>This document proposes the EPON (Ethernet Passive Optical Network) Hardware Abstraction Layer (HAL) API for RDK-B platforms. The HAL provides a standardized interface for EPON ONU (Optical Network Unit) management, statistics collection, and monitoring, aligned with TR-181 Device.Optical.Interface data model specifications.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>1. TR-181 Data Model Mapping<\/p>\n\n\n\n<p><strong>1.1 Device.Optical.Interface.{i} Object<\/strong><\/p>\n\n\n\n<p>This HAL implementation supports the TR-181 Device.Optical.Interface data model with additional RDK-specific extensions for EPON-specific features.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-1.1.1StatusParameters\">1.1.1 Status Parameters<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>TR-181 Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Status<\/code><\/td><td>string<\/td><td><code>epon_hal_init()<\/code>&nbsp;(callback)<\/td><td>Operational status of the optical interface. Maps from&nbsp;<code>epon_onu_status_t<\/code>&nbsp;enum.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Name<\/code><\/td><td>string<\/td><td><code>epon_hal_get_interface_list()<\/code><\/td><td>Interface name (e.g., &#8220;veip0&#8221;).<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.LowerLayers<\/code><\/td><td>string<\/td><td>N\/A<\/td><td>Lower layer interface reference (not a HAL dependent).<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Upstream<\/code><\/td><td>boolean<\/td><td>Constant<\/td><td>(not a HAL dependent).<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Status Mapping:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>EPON_ONU_STATUS_REGISTRATION<\/code>&nbsp;\u2192 &#8220;Up&#8221;<\/li>\n\n\n\n<li><code>EPON_ONU_STATUS_DEREGISTRATION<\/code>&nbsp;\u2192 &#8220;Down&#8221;<\/li>\n\n\n\n<li><code>EPON_ONU_STATUS_LOS<\/code>&nbsp;\u2192 &#8220;LowerLayerDown&#8221;<\/li>\n\n\n\n<li><code>EPON_ONU_STATUS_DOWNSTREAM_SIGNAL_DETECTED<\/code>&nbsp;\u2192 &#8220;Dormant&#8221;<\/li>\n<\/ul>\n\n\n\n<p>1.1.2 Optical Parameters<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>TR-181 Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.TransmitOpticalLevel<\/code><\/td><td>float<\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Current optical transmit power level in dBm.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.OpticalSignalLevel<\/code><\/td><td>float<\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Received optical power level in dBm.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.LowerOpticalThreshold<\/code><\/td><td>float<\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Lower receive power threshold in dBm.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.UpperOpticalThreshold<\/code><\/td><td>float<\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Upper receive power threshold in dBm.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.LowerTransmitPowerThreshold<\/code><\/td><td>float<\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Lower transmit power threshold in dBm.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.UpperTransmitPowerThreshold<\/code><\/td><td>float<\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Upper transmit power threshold in dBm.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.SFPReferenceList<\/code><\/td><td>string<\/td><td>N\/A<\/td><td>(not a HAL dependent)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>1.2 Device.Optical.Interface.{i}.Stats Object<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>TR-181 Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.BytesSent<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Total bytes transmitted.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.BytesReceived<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Total bytes received.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.PacketsSent<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Total packets transmitted.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.PacketsReceived<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Total packets received.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.ErrorsSent<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Errors on transmission.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.ErrorsReceived<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Errors on reception.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.DiscardPacketsSent<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Packets discarded prior to transmission.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.DiscardPacketsReceived<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Packets discarded on reception.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.MaxBitRate<\/code><\/td><td>uint32<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Maximum bit rate in Mbps.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EPONHALProposal-1.3RDKExtendedParameters(X_RDKNamespace)\">1.3 RDK Extended Parameters (X_RDK Namespace)<\/h3>\n\n\n\n<p>The following parameters extend TR-181 with EPON-specific metrics not covered by the standard specification:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-1.3.1Device.Optical.Interface.{i}.Stats.X_RDKExtensions\">1.3.1 Device.Optical.Interface.{i}.Stats.X_RDK Extensions<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.X_RDK_FECCorrected<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Number of FEC (Forward Error Correction) corrected bits.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.X_RDK_FECUncorrectable<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Number of FEC uncorrectable codewords.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.X_RDK_BroadcastPacketsSent<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Broadcast packets transmitted.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.X_RDK_BroadcastPacketsReceived<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Broadcast packets received.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.X_RDK_MulticastPacketsSent<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Multicast packets transmitted.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.Stats.X_RDK_MulticastPacketsReceived<\/code><\/td><td>uint64<\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Multicast packets received.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>|&nbsp;<code>Device.Optical.Interface.{i}.Stats.X_RDK_RangingResyncs<\/code>&nbsp;| uint64 |&nbsp;<code>epon_hal_get_link_stats()<\/code>&nbsp;| Number of ranging resynchronizations. | |&nbsp;<code>Device.Optical.Interface.{i}.Stats.X_RDK_MACResets<\/code>&nbsp;| uint64 |&nbsp;<code>epon_hal_get_link_stats()<\/code>&nbsp;| Number of MAC layer resets. |<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Note:<\/strong>&nbsp;Clock statistics are under consideration for inclusion. Need to determine what clock-related information is required (e.g., clock accuracy, drift, synchronization status, timing recovery metrics).<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-1.3.2Device.Optical.Interface.{i}.X_RDK_TransceiverObject\">1.3.2 Device.Optical.Interface.{i}.X_RDK_Transceiver Object<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_Transceiver.BiasCurrent<\/code><\/td><td>float<\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Laser bias current in milliamperes.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_Transceiver.Temperature<\/code><\/td><td>float<\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Module temperature in Celsius.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_Transceiver.SupplyVoltage<\/code><\/td><td>float<\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Supply voltage in volts.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>1.3.3 Device.Optical.Interface.{i}.X_RDK_EPON Object<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.OperationalMode<\/code><\/td><td>string<\/td><td><code>epon_hal_get_link_info()<\/code><\/td><td>EPON mode: &#8220;1G-EPON&#8221; or &#8220;10G-EPON&#8221;.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.EncryptionMode<\/code><\/td><td>string<\/td><td><code>epon_hal_get_link_info()<\/code><\/td><td>Encryption mode: &#8220;Disabled&#8221;, &#8220;AES-128&#8221;, &#8220;TripleChurning&#8221;, &#8220;AES-256&#8221;.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.ONUStatus<\/code><\/td><td>string<\/td><td>Callback<\/td><td>Detailed ONU registration status (see mapping below).<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.DPoESupported<\/code><\/td><td>boolean<\/td><td><code>epon_hal_init()<\/code>&nbsp;config<\/td><td>Indicates if DPoE is supported.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.Manufacturer<\/code><\/td><td>string<\/td><td><code>epon_hal_get_manufacturer_info()<\/code><\/td><td>Manufacturer name.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.ModelNumber<\/code><\/td><td>string<\/td><td><code>epon_hal_get_manufacturer_info()<\/code><\/td><td>Model number.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.HardwareVersion<\/code><\/td><td>string<\/td><td><code>epon_hal_get_manufacturer_info()<\/code><\/td><td>Hardware version.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.SoftwareVersion<\/code><\/td><td>string<\/td><td><code>epon_hal_get_manufacturer_info()<\/code><\/td><td>Software\/firmware version.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.SerialNumber<\/code><\/td><td>string<\/td><td><code>epon_hal_get_manufacturer_info()<\/code><\/td><td>Device serial number.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.VendorOUI<\/code><\/td><td>string<\/td><td><code>epon_hal_get_manufacturer_info()<\/code><\/td><td>Vendor Organizationally Unique Identifier (3 bytes).<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.MaxLLIDSupported<\/code><\/td><td>uint32<\/td><td><code>epon_hal_get_llid_info()<\/code><\/td><td>Maximum LLIDs supported.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>ONU Status Values:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>LOS<\/code>&nbsp;&#8211; Loss of signal (PHY down)<\/li>\n\n\n\n<li><code>DownstreamSignalDetected<\/code>&nbsp;&#8211; Downstream signal detected (power present, ONU not yet registered)<\/li>\n\n\n\n<li><code>Registration<\/code>&nbsp;&#8211; LLID-0 is online (includes MPCP and OAM registration)<\/li>\n\n\n\n<li><code>Deregistration<\/code>&nbsp;&#8211; LLID-0 is offline<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-1.3.4Device.Optical.Interface.{i}.X_RDK_EPON.LLID.{i}\">1.3.4 Device.Optical.Interface.{i}.X_RDK_EPON.LLID.{i}<\/h4>\n\n\n\n<p>LLID (Logical Link Identifier) table for multi-LLID support:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.LLID.{i}.LLIDValue<\/code><\/td><td>uint16<\/td><td><code>epon_hal_get_llid_info()<\/code><\/td><td>Logical Link Identifier value.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.LLID.{i}.Mode<\/code><\/td><td>string<\/td><td><code>epon_hal_get_llid_info()<\/code><\/td><td>&#8220;Unicast&#8221; or &#8220;Broadcast&#8221;.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.LLID.{i}.State<\/code><\/td><td>string<\/td><td><code>epon_hal_get_llid_info()<\/code><\/td><td>&#8220;Unregistered&#8221;, &#8220;Registering&#8221;, &#8220;Registered&#8221;, &#8220;Deregistering&#8221;, &#8220;Failed&#8221;.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.LLID.{i}.ForwardingState<\/code><\/td><td>string<\/td><td><code>epon_hal_get_llid_info()<\/code><\/td><td>&#8220;Disabled&#8221;, &#8220;Enabled&#8221;, &#8220;Learning&#8221;.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.LLID.{i}.EncryptionEnabled<\/code><\/td><td>boolean<\/td><td><code>epon_hal_get_llid_info()<\/code><\/td><td>Encryption enabled for this LLID. Encryption type is specified in Device.Optical.Interface.{i}.X_RDK_EPON.EncryptionMode.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.LLID.{i}.LocalMACAddress<\/code><\/td><td>string<\/td><td><code>epon_hal_get_llid_info()<\/code><\/td><td>MAC address associated with this LLID.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-1.3.5Device.Optical.Interface.{i}.X_RDK_EPON.OLTObject\">1.3.5 Device.Optical.Interface.{i}.X_RDK_EPON.OLT Object<\/h4>\n\n\n\n<p>Information about the connected OLT (Optical Line Terminal) learned via MPCP and OAM per IEEE 802.3ah:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>IEEE 802.3ah Reference<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.OLT.MACAddress<\/code><\/td><td>string<\/td><td><code>epon_hal_get_olt_info()<\/code><\/td><td>Clause 64.3.3<\/td><td>OLT MAC address from MPCP GATE messages.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.OLT.VendorOUI<\/code><\/td><td>string<\/td><td><code>epon_hal_get_olt_info()<\/code><\/td><td>Clause 57.4.2.2<\/td><td>OLT vendor OUI from OAM Information OAMPDU.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.OLT.VendorSpecificInfo<\/code><\/td><td>string<\/td><td><code>epon_hal_get_olt_info()<\/code><\/td><td>Clause 57.4.3.3<\/td><td>Vendor-specific information from Organization Specific OAMPDU.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EPONHALProposal-1.4Device.Optical.Interface.{i}.X_RDK_EPON.DPOEObject\">1.4 Device.Optical.Interface.{i}.X_RDK_EPON.DPOE Object<\/h3>\n\n\n\n<p>When DPoE support is enabled:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-1.4.1Device.Optical.Interface.{i}.X_RDK_EPON.DPOEParameters\">1.4.1 Device.Optical.Interface.{i}.X_RDK_EPON.DPOE Parameters<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.DPOE.MaxCPECount<\/code><\/td><td>uint32<\/td><td><code>dpoe_hal_get_cpe_mac_table()<\/code><\/td><td>Maximum CPE entries supported.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.DPOE.StaticCPECount<\/code><\/td><td>uint32<\/td><td><code>dpoe_hal_get_cpe_mac_table()<\/code><\/td><td>Number of static CPE entries.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.DPOE.DynamicCPECount<\/code><\/td><td>uint32<\/td><td><code>dpoe_hal_get_cpe_mac_table()<\/code><\/td><td>Number of dynamic CPE entries.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-1.4.2Device.Optical.Interface.{i}.X_RDK_EPON.DPOE.CPE.{i}\">1.4.2 Device.Optical.Interface.{i}.X_RDK_EPON.DPOE.CPE.{i}<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Parameter<\/td><td>Type<\/td><td>Source API<\/td><td>Description<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.DPOE.CPE.{i}.MACAddress<\/code><\/td><td>string<\/td><td><code>dpoe_hal_get_cpe_mac_table()<\/code><\/td><td>CPE MAC address.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.DPOE.CPE.{i}.Type<\/code><\/td><td>string<\/td><td><code>dpoe_hal_get_cpe_mac_table()<\/code><\/td><td>&#8220;Static&#8221; or &#8220;Dynamic&#8221;.<\/td><\/tr><tr><td><code>Device.Optical.Interface.{i}.X_RDK_EPON.DPOE.CPE.{i}.AgeTime<\/code><\/td><td>uint32<\/td><td><code>dpoe_hal_get_cpe_mac_table()<\/code><\/td><td>Age time in seconds (0 for static).<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"EPONHALProposal-2.TelemetryMarkers\">2. Telemetry Markers<\/h2>\n\n\n\n<p><strong>2.1 Recommended Telemetry Metrics<\/strong><\/p>\n\n\n\n<p>The following telemetry markers are recommended for monitoring EPON ONU health and performance:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-2.1.1CriticalHealthMetrics(HighPriority)\">2.1.1 Critical Health Metrics (High Priority)<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Telemetry Marker<\/td><td>Source<\/td><td>Threshold\/Alert<\/td><\/tr><tr><td><code>EPON_ONU_Status<\/code><\/td><td>Status callback<\/td><td>Alert on LOS, Fault, Timeouts<\/td><\/tr><tr><td><code>EPON_Optical_RX_Power<\/code><\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Alert if outside thresholds<\/td><\/tr><tr><td><code>EPON_Optical_TX_Power<\/code><\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Alert if outside thresholds<\/td><\/tr><tr><td><code>EPON_FEC_Uncorrectable<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Alert if increasing rapidly<\/td><\/tr><tr><td><code>EPON_Link_Status<\/code><\/td><td>Status callback<\/td><td>Alert on link down<\/td><\/tr><tr><td><code>EPON_BER_Errors<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Alert if exceeds 10^-6<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>2.1.2 Performance Metrics (Medium Priority)<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Telemetry Marker<\/td><td>Source<\/td><td>Purpose<\/td><\/tr><tr><td><code>EPON_TX_Bytes<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Bandwidth monitoring<\/td><\/tr><tr><td><code>EPON_RX_Bytes<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Bandwidth monitoring<\/td><\/tr><tr><td><code>EPON_TX_Errors<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Link quality<\/td><\/tr><tr><td><code>EPON_RX_Errors<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Link quality<\/td><\/tr><tr><td><code>EPON_FEC_Corrected<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>FEC efficiency<\/td><\/tr><tr><td><code>EPON_Discard_Packets<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Buffer overflow detection<\/td><\/tr><tr><td><code>EPON_Ranging_Resyncs<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>Timing stability<\/td><\/tr><tr><td><code>EPON_MAC_Resets<\/code><\/td><td><code>epon_hal_get_link_stats()<\/code><\/td><td>MAC layer stability<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>2.1.3 OLT Information Metrics (Low Priority)<\/p>\n\n\n\n<p>| Telemetry Marker | Source | Purpose | |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;|| |&nbsp;<code>EPON_OLT_MAC_Address<\/code>&nbsp;|&nbsp;<code>epon_hal_get_olt_info()<\/code>&nbsp;| OLT identification | |&nbsp;<code>EPON_OLT_Vendor_OUI<\/code>&nbsp;|&nbsp;<code>epon_hal_get_olt_info()<\/code>&nbsp;| OLT vendor tracking |<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-2.1.4AlarmEvents(Event-based)\">2.1.4 Alarm Events (Event-based)<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Telemetry Event<\/td><td>Source<\/td><td>Priority<\/td><td>Description<\/td><\/tr><tr><td><code>EPON_ALARM_LOS<\/code><\/td><td>Alarm callback<\/td><td>Critical<\/td><td>Loss of signal detected<\/td><\/tr><tr><td><code>EPON_ALARM_DYING_GASP<\/code><\/td><td>Alarm callback<\/td><td>Critical<\/td><td>Imminent power loss<\/td><\/tr><tr><td><code>EPON_ALARM_OAM_SESSION_LOST<\/code><\/td><td>Alarm callback<\/td><td>High<\/td><td>OAM session lost<\/td><\/tr><tr><td><code>EPON_ALARM_POWER_LOW<\/code><\/td><td>Alarm callback<\/td><td>High<\/td><td>Optical power below threshold<\/td><\/tr><tr><td><code>EPON_ALARM_POWER_HIGH<\/code><\/td><td>Alarm callback<\/td><td>High<\/td><td>Optical power above threshold<\/td><\/tr><tr><td><code>EPON_ALARM_TEMPERATURE<\/code><\/td><td>Alarm callback<\/td><td>Medium<\/td><td>Temperature threshold exceeded<\/td><\/tr><tr><td><code>EPON_ALARM_FEC_THRESHOLD<\/code><\/td><td>Alarm callback<\/td><td>Medium<\/td><td>FEC uncorrectable errors threshold<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-2.1.5EnvironmentalMetrics(LowPriority)\">2.1.5 Environmental Metrics (Low Priority)<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Telemetry Marker<\/td><td>Source<\/td><td>Threshold\/Alert<\/td><\/tr><tr><td><code>EPON_Temperature<\/code><\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Alert if &gt; 85\u00b0C<\/td><\/tr><tr><td><code>EPON_Bias_Current<\/code><\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Alert on anomalies<\/td><\/tr><tr><td><code>EPON_Supply_Voltage<\/code><\/td><td><code>epon_hal_get_transceiver_stats()<\/code><\/td><td>Alert if outside 3.0-3.6V<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>3. API Reference<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EPONHALProposal-3.1InitializationandConfiguration\">3.1 Initialization and Configuration<\/h3>\n\n\n\n<p>3.1.1&nbsp;<code>epon_hal_get_version()<\/code><\/p>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">uint32_t epon_hal_get_version(void);<\/code><\/p>\n\n\n\n<p>Returns the EPON HAL API version for ABI compatibility checking. Applications should verify major version match before using the HAL to ensure compatibility.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.1.2epon_hal_init()\">3.1.2&nbsp;<code>epon_hal_init()<\/code><\/h4>\n\n\n\n<p>i<code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">nt epon_hal_init(const epon_hal_config_t *config);<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><\/pre>\n\n\n\n<p>Initializes the EPON HAL module with configuration including DPoE support and callback handlers for status changes and alarms. Must be called before any other HAL functions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EPONHALProposal-3.2StatisticsandMonitoringAPIs\">3.2 Statistics and Monitoring APIs<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.2.1epon_hal_get_link_stats()\">3.2.1&nbsp;<code>epon_hal_get_link_stats()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_get_link_stats(epon_hal_link_stats_t *stats);<\/code><\/p>\n\n\n\n<p>Retrieves comprehensive EPON link statistics including packet counts, byte counts, errors, FEC metrics, BER measurements, and MAC layer statistics for performance monitoring.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.2.2epon_hal_get_transceiver_stats()\">3.2.2&nbsp;<code>epon_hal_get_transceiver_stats()<\/code>&nbsp;<\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_get_transceiver_stats(epon_hal_transceiver_stats_t *stats);<\/code><\/p>\n\n\n\n<p>Retrieves optical transceiver statistics including transmit\/receive power levels, thresholds, laser bias current, module temperature, and supply voltage for optical link health monitoring.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.2.3epon_hal_get_llid_info()\">3.2.3&nbsp;<code>epon_hal_get_llid_info()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_get_llid_info(epon_llid_list_t *llid_list);<\/code><\/p>\n\n\n\n<p>Retrieves Logical Link Identifier (LLID) information for multi-LLID support, including LLID values, modes, states, MAC addresses, and DSCP marking configuration.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.2.4epon_hal_get_manufacturer_info()\">3.2.4&nbsp;<code>epon_hal_get_manufacturer_info()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_get_manufacturer_info(epon_onu_manufacturer_info_t *info);<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><\/pre>\n\n\n\n<p>Retrieves ONU manufacturer information including manufacturer name, model number, hardware\/software versions, serial number, and vendor OUI as per IEEE 802.3ah specifications<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.2.5epon_hal_get_link_info()\">3.2.5&nbsp;<code>epon_hal_get_link_info()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_get_link_info(epon_hal_link_info_t *info);<\/code><\/p>\n\n\n\n<p>Retrieves current EPON operational information including link mode (1G-EPON or 10G-EPON) and encryption mode negotiated with the OLT.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.2.6epon_hal_get_interface_list()\">3.2.6&nbsp;<code>epon_hal_get_interface_list()<\/code><\/h4>\n\n\n\n<p>int epon_hal_get_interface_list(epon_interface_list_t *if_list);<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><\/pre>\n\n\n\n<p><br>&nbsp;Retrieves list of interfaces (e.g., veip0, veip1) configured by the OLT along with their current operational status (link up\/down). Each interface entry contains the interface name and status, used for mapping S1\/IP service interfaces to VLANs or service instances and monitoring their link state.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.2.7epon_hal_get_olt_info()\">3.2.7&nbsp;<code>epon_hal_get_olt_info()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_get_olt_info(epon_olt_info_t *olt_info);<\/code><br>Retrieves information about the OLT (Optical Line Terminal) learned during MPCP registration and OAM discovery. Includes OLT MAC address, vendor information, OAM capabilities, and supported features per IEEE 802.3ah specification.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EPONHALProposal-3.3ControlandManagementAPIs\">3.3 Control and Management APIs<\/h3>\n\n\n\n<p>3.3.1&nbsp;<code>epon_hal_clear_stats()<\/code><\/p>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_clear_stats(void);<\/code><\/p>\n\n\n\n<p>Resets all EPON link statistics counters to zero including packet counts, byte counts, and FEC error counters. Does not affect optical power measurements.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.3.2epon_hal_reset_onu()\">3.3.2&nbsp;<code>epon_hal_reset_onu()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_reset_onu(void);<\/code><\/p>\n\n\n\n<p>Performs ONU soft reset and initiates re-registration with the OLT following MPCP discovery and registration procedure. Causes temporary service disruption.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.3.3epon_hal_factory_reset()\">3.3.3&nbsp;<code>epon_hal_factory_reset()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_factory_reset(void);<\/code><\/p>\n\n\n\n<p>Resets EPON HAL configuration to factory defaults, clearing all custom settings and statistics. Requires re-initialization with\u00a0<code>epon_hal_init()<\/code>\u00a0after completion.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.3.4epon_hal_set_oam_log_mask()\">3.3.4&nbsp;<code>epon_hal_set_oam_log_mask()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int epon_hal_set_oam_log_mask(uint32_t oam_log_mask);<\/code><\/p>\n\n\n\n<p>Configures which IEEE 802.3ah OAM message types (Info, Event, Variable Request\/Response, Loopback, MPCP messages) should be logged for debugging and troubleshooting purposes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EPONHALProposal-3.4DPoEExtensionAPIs\">3.4 DPoE Extension APIs<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.4.1dpoe_hal_get_sys_descriptor()\">3.4.1&nbsp;<code>dpoe_hal_get_sys_descriptor()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int dpoe_hal_get_sys_descriptor(char *sys_desc, uint32_t desc_len);<\/code><\/p>\n\n\n\n<p>&nbsp;Retrieves DPoE system descriptor information per DPoE specification, providing system identification and capability information for DOCSIS provisioning.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"EPONHALProposal-3.4.2dpoe_hal_get_cpe_mac_table()\">3.4.2&nbsp;<code>dpoe_hal_get_cpe_mac_table()<\/code><\/h4>\n\n\n\n<p><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">int dpoe_hal_get_cpe_mac_table(dpoe_cpe_mac_table_t *cpe_table);<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> Retrieves CPE MAC address table including both statically configured and dynamically learned CPE devices for DPoE multi-CPE support and tracking.<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>4. Implementation Notes<\/p>\n\n\n\n<p><strong>4.1 Callback Mechanism<\/strong><\/p>\n\n\n\n<p>The HAL uses two callback functions registered during initialization:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Status Callback<\/strong>: Invoked when ONU status changes (e.g., link up\/down, registration state changes)<\/li>\n\n\n\n<li><strong>Alarm Callback<\/strong>: Invoked when alarms are raised or cleared (e.g., LOS, power threshold violations, dying gasp)<\/li>\n<\/ol>\n\n\n\n<p><strong>4.2 Logging Integration<\/strong><\/p>\n\n\n\n<p>The HAL provides a flexible logging framework:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Define&nbsp;<code>HAL_LOG_FUNCTION<\/code>&nbsp;before including the header to redirect logs to RDK Logger, syslog, or printf<\/li>\n\n\n\n<li>Use&nbsp;<code>epon_hal_set_oam_log_mask()<\/code>&nbsp;to control verbosity of OAM message logging<\/li>\n\n\n\n<li>Default implementation has logging disabled (no-op)<\/li>\n<\/ul>\n\n\n\n<p><strong>4.3 Memory Management<\/strong><\/p>\n\n\n\n<p>For APIs returning arrays (LLID list, interface list, CPE table):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Caller may pre-allocate memory, or<\/li>\n\n\n\n<li>Implementation may allocate internally (implementation-specific)<\/li>\n\n\n\n<li>Documentation should clarify ownership and free responsibilities<\/li>\n<\/ul>\n\n\n\n<p><strong>4.4 Thread Safety<\/strong><\/p>\n\n\n\n<p>Implementation should consider:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Thread-safe access to statistics counters<\/li>\n\n\n\n<li>Callback invocation context (separate thread or signal handler)<\/li>\n\n\n\n<li>Mutex protection for shared resources<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>5. Benefits and Use Cases<\/p>\n\n\n\n<p><strong>5.1 Benefits<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>TR-181 Compliance<\/strong>: Aligns with Broadband Forum standards for optical interfaces<\/li>\n\n\n\n<li><strong>Comprehensive Monitoring<\/strong>: Provides detailed statistics for link health, performance, and diagnostics<\/li>\n\n\n\n<li><strong>Alarm Management<\/strong>: Real-time notification of critical events and faults<\/li>\n\n\n\n<li><strong>DPoE Support<\/strong>: Enables DOCSIS provisioning for EPON networks<\/li>\n\n\n\n<li><strong>Vendor Independence<\/strong>: Standardized API across different EPON chipset vendors<\/li>\n\n\n\n<li><strong>Telemetry Ready<\/strong>: Rich metrics for cloud-based monitoring and analytics<\/li>\n<\/ol>\n\n\n\n<p><strong>5.2 Use Cases<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Service Activation<\/strong>: Monitor ONU registration progress and link establishment<\/li>\n\n\n\n<li><strong>Performance Monitoring<\/strong>: Track bandwidth utilization, errors, and FEC statistics<\/li>\n\n\n\n<li><strong>Fault Detection<\/strong>: Real-time alarm notifications for proactive issue resolution<\/li>\n\n\n\n<li><strong>Capacity Planning<\/strong>: Historical statistics for network planning<\/li>\n\n\n\n<li><strong>Troubleshooting<\/strong>: Optical power levels, BER, and OAM message logging for diagnostics<\/li>\n\n\n\n<li><strong>Multi-Service Support<\/strong>: LLID management for multiple service instances<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>6. Testing and Validation<\/p>\n\n\n\n<p><strong>6.1 Functional Testing<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&nbsp;Verify all APIs return correct data<\/li>\n\n\n\n<li>&nbsp;Validate callback invocation for status changes and alarms<\/li>\n\n\n\n<li>&nbsp;Test statistics accuracy against hardware counters<\/li>\n\n\n\n<li>&nbsp;Verify ONU reset and factory reset operations<\/li>\n\n\n\n<li>&nbsp;Validate DPoE APIs if supported<\/li>\n<\/ul>\n\n\n\n<p><strong>6.2 Performance Testing<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&nbsp;Measure API call latency<\/li>\n\n\n\n<li>&nbsp;Verify statistics polling does not impact data plane performance<\/li>\n\n\n\n<li>&nbsp;Test callback overhead and timing<\/li>\n<\/ul>\n\n\n\n<p><strong>6.3 Stress Testing<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&nbsp;Rapid polling of statistics<\/li>\n\n\n\n<li>&nbsp;Frequent status changes<\/li>\n\n\n\n<li>&nbsp;High alarm rate scenarios<\/li>\n\n\n\n<li>&nbsp;Long-duration stability testing<\/li>\n<\/ul>\n\n\n\n<p><strong>6.4 Compliance Testing<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&nbsp;TR-181 data model mapping verification<\/li>\n\n\n\n<li>&nbsp;IEEE 802.3ah EPON compliance<\/li>\n\n\n\n<li>&nbsp;DPoE specification compliance (if applicable)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>7. Appendix<\/p>\n\n\n\n<p><strong>7.1 Error Code Reference<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Return Code<\/td><td>Value<\/td><td>Description<\/td><\/tr><tr><td><code>EPON_HAL_SUCCESS<\/code><\/td><td>0<\/td><td>Operation completed successfully<\/td><\/tr><tr><td><code>EPON_HAL_ERROR_INVALID_PARAM<\/code><\/td><td>-1<\/td><td>Invalid parameter provided<\/td><\/tr><tr><td><code>EPON_HAL_ERROR_NOT_INITIALIZED<\/code><\/td><td>-2<\/td><td>HAL not initialized<\/td><\/tr><tr><td><code>EPON_HAL_ERROR_HW_FAILURE<\/code><\/td><td>-3<\/td><td>Hardware operation failed<\/td><\/tr><tr><td><code>EPON_HAL_ERROR_NOT_SUPPORTED<\/code><\/td><td>-4<\/td><td>Operation not supported<\/td><\/tr><tr><td><code>EPON_HAL_ERROR_TIMEOUT<\/code><\/td><td>-5<\/td><td>Operation timeout<\/td><\/tr><tr><td><code>EPON_HAL_ERROR_MEMORY<\/code><\/td><td>-6<\/td><td>Memory allocation failed<\/td><\/tr><tr><td><code>EPON_HAL_ERROR_RESOURCE<\/code><\/td><td>-7<\/td><td>Resource unavailable<\/td><\/tr><tr><td><code>EPON_HAL_ERROR_CALLBACK_REG<\/code><\/td><td>-8<\/td><td>Callback registration failed<\/td><\/tr><tr><td><code>EPON_HAL_ERROR_CONFIG<\/code><\/td><td>-9<\/td><td>Configuration error<\/td><\/tr><tr><td><code>EPON_HAL_ERROR<\/code><\/td><td>-10<\/td><td>General error<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>7.2 Alarm Types Reference<\/strong><\/p>\n\n\n\n<p>Complete list of 20 alarm types supported by the HAL, covering optical link faults, OAM events, environmental conditions, and hardware failures.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"EPONHALProposal-7.3References\">7.3 References<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TR-181 Issue 2 Amendment 20<\/strong>: Device Data Model for TR-069<\/li>\n\n\n\n<li><strong>IEEE 802.3ah-2004<\/strong>: Ethernet in the First Mile (EPON)<\/li>\n\n\n\n<li><strong>DPoE Specification<\/strong>: DOCSIS Provisioning of EPON<\/li>\n\n\n\n<li><strong>RDK-B Architecture<\/strong>: Reference Design Kit for Broadband devices<\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/DOC\/pages\/467653822\/EPON+HAL+Proposal\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This document proposes the EPON (Ethernet Passive Optical Network) Hardware Abstraction Layer (HAL) API for [&hellip;]<\/p>\n","protected":false},"author":659,"featured_media":0,"parent":12819,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-12821","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>EPON HAL Proposal - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"EPON HAL Proposal - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"This document proposes the EPON (Ethernet Passive Optical Network) Hardware Abstraction Layer (HAL) API for [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-13T10:40:43+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/\",\"name\":\"EPON HAL Proposal - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2026-03-13T09:32:24+00:00\",\"dateModified\":\"2026-03-13T10:40:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Broadband\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Components\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"EPON Manager\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"EPON HAL Proposal\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"EPON HAL Proposal - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/","og_locale":"en_US","og_type":"article","og_title":"EPON HAL Proposal - RDK Documentation Portal | Documentation","og_description":"This document proposes the EPON (Ethernet Passive Optical Network) Hardware Abstraction Layer (HAL) API for [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2026-03-13T10:40:43+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/","name":"EPON HAL Proposal - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2026-03-13T09:32:24+00:00","dateModified":"2026-03-13T10:40:43+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/epon-hal-proposal\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Broadband","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/"},{"@type":"ListItem","position":4,"name":"Components","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/"},{"@type":"ListItem","position":5,"name":"EPON Manager","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/epon-manager\/"},{"@type":"ListItem","position":6,"name":"EPON HAL Proposal"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/659"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=12821"}],"version-history":[{"count":2,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12821\/revisions"}],"predecessor-version":[{"id":12824,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12821\/revisions\/12824"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12819"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=12821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}