[BPI-R4] SFP GPON-ONU-34-20BI OpenWrt TX_Fault

Hi, It seems this ONU is disabled by the kernel because TX_Fault is the same pin as Serial TX for the module’s console. Is there a way to disable this check for this module?

OpenWRT version: 24.10.0-rc4

The log:

[   88.102293] sfp sfp1: module transmit fault indicated
[   92.063000] sfp sfp1: module transmit fault indicated
[   97.482071] sfp sfp1: module transmit fault recovered
[   97.503357] sfp sfp1: module persistently indicates fault, disabling

You can add a quirk in the sfp code which either ignores the tx-fault or negates the signal (idk what exactly it does).

Inverts it… (I need more characters)

In mainline code i see only a way to ignore them

True only ignore. I meant invert in a more general sense. Tx fault can indeed not be inverted (only in dts?)

Imho this should be only gpio setting (active high vs. Low) which could be done in code or dts,but this also depends on electrical circuit as mostly there are pullup/pulldown resistors.

Ok, I manage to stop the pin action from the ONU itself, but the log is still the same. The thong is I have a connection to internet with the module now, but in 1000baseX/full. How to get it works in 2500baseX ?

I change some bytes in the module eeprom: Set addr 0x06 to 0x00(Disable 1000base-LX), addr 0x0c to 0x1f(3100MBd), addr 0x3f to 0x7e(Checksum)

Settings for eth2:

        Supported ports: [ FIBRE ]
        Supported link modes:   1000baseX/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  1000baseX/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  1000baseX/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: on
        Port: FIBRE
        PHYAD: 0
        Transceiver: internal
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: yes
        Identifier                                : 0x03 (SFP)
        Extended identifier                       : 0x04 (GBIC/SFP defined by 2-wire interface ID)
        Connector                                 : 0x01 (SC)
        Transceiver codes                         : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
        Encoding                                  : 0x03 (NRZ)
        BR, Nominal                               : 3100MBd
        Rate identifier                           : 0x00 (unspecified)
        Length (SMF,km)                           : 20km
        Length (SMF)                              : 20000m
        Length (50um)                             : 0m
        Length (62.5um)                           : 0m
        Length (Copper)                           : 0m
        Length (OM3)                              : 0m
        Laser wavelength                          : 1310nm
        Vendor name                               : Lantiq
        Vendor OUI                                : 00:00:00
        Vendor PN                                 : Falcon SFP
        Vendor rev                                : 0
        Option values                             : 0x00 0x1a
        Option                                    : RX_LOS implemented
        Option                                    : TX_FAULT implemented
        Option                                    : TX_DISABLE implemented
        BR margin, max                            : 0%
        BR margin, min                            : 0%
        Vendor SN                                 : 3NXXXXXXXXXXX
        Date code                                 : 230315
        Optical diagnostics support               : Yes
        Laser bias current                        : 11.082 mA
        Laser output power                        : 1.3697 mW / 1.37 dBm
        Receiver signal average optical power     : 0.0103 mW / -19.87 dBm
        Module temperature                        : 58.24 degrees C / 136.83 degrees F
        Module voltage                            : 3.3525 V
        Alarm/warning flags implemented           : Yes
        Laser bias current high alarm             : Off
        Laser bias current low alarm              : Off
        Laser bias current high warning           : Off
        Laser bias current low warning            : Off
        Laser output power high alarm             : Off
        Laser output power low alarm              : Off
        Laser output power high warning           : Off
        Laser output power low warning            : Off
        Module temperature high alarm             : Off
        Module temperature low alarm              : Off
        Module temperature high warning           : Off
        Module temperature low warning            : Off
        Module voltage high alarm                 : Off
        Module voltage low alarm                  : Off
        Module voltage high warning               : Off
        Module voltage low warning                : Off
        Laser rx power high alarm                 : Off
        Laser rx power low alarm                  : Off
        Laser rx power high warning               : Off
        Laser rx power low warning                : Off
        Laser bias current high alarm threshold   : 90.000 mA
        Laser bias current low alarm threshold    : 0.000 mA
        Laser bias current high warning threshold : 70.000 mA
        Laser bias current low warning threshold  : 0.000 mA
        Laser output power high alarm threshold   : 6.3095 mW / 8.00 dBm
        Laser output power low alarm threshold    : 0.5623 mW / -2.50 dBm
        Laser output power high warning threshold : 5.0118 mW / 7.00 dBm
        Laser output power low warning threshold  : 0.7079 mW / -1.50 dBm
        Module temperature high alarm threshold   : 90.00 degrees C / 194.00 degrees F
        Module temperature low alarm threshold    : -45.00 degrees C / -49.00 degrees F
        Module temperature high warning threshold : 85.00 degrees C / 185.00 degrees F
        Module temperature low warning threshold  : -40.00 degrees C / -40.00 degrees F
        Module voltage high alarm threshold       : 3.6000 V
        Module voltage low alarm threshold        : 3.0000 V
        Module voltage high warning threshold     : 3.5000 V
        Module voltage low warning threshold      : 3.1000 V
        Laser rx power high alarm threshold       : 0.3162 mW / -5.00 dBm
        Laser rx power low alarm threshold        : 0.0008 mW / -30.97 dBm
        Laser rx power high warning threshold     : 0.2511 mW / -6.00 dBm
        Laser rx power low warning threshold      : 0.0010 mW / -30.00 dBm

Ok, All good now !

No more “transmit fault” message.

The link is now at 2500baseT or X/full.

I have downstream at 1800Mb/s and upstream at 780Mb/s (Provider 2G/1G).

I did change the Vendor Name and the Vendor PN in the SFP stick to “OEM” and “SFP-2.5G-T” to match an OpenWRT QUIRCK. Originaly set to “Lantiq” and “Falcon SFP”.

For info:

Settings for eth2:
        Supported ports: [ FIBRE ]
        Supported link modes:   2500baseX/Full
                                2500baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  2500baseX/Full
                                2500baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 2500Mb/s
        Duplex: Full
        Auto-negotiation: off
        Port: FIBRE
        PHYAD: 0
        Transceiver: internal
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: yes
        Identifier                                : 0x03 (SFP)
        Extended identifier                       : 0x04 (GBIC/SFP defined by 2-wire interface ID)
        Connector                                 : 0x01 (SC)
        Transceiver codes                         : 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
        Encoding                                  : 0x03 (NRZ)
        BR, Nominal                               : 3100MBd
        Rate identifier                           : 0x00 (unspecified)
        Length (SMF,km)                           : 20km
        Length (SMF)                              : 20000m
        Length (50um)                             : 0m
        Length (62.5um)                           : 0m
        Length (Copper)                           : 0m
        Length (OM3)                              : 0m
        Laser wavelength                          : 1310nm
        Vendor name                               : OEM
        Vendor OUI                                : 00:00:00
        Vendor PN                                 : SFP-2.5G-T
        Vendor rev                                : 0
        Option values                             : 0x00 0x1a
        Option                                    : RX_LOS implemented
        Option                                    : TX_FAULT implemented
        Option                                    : TX_DISABLE implemented
        BR margin, max                            : 0%
        BR margin, min                            : 0%
        Vendor SN                                 : XXXXXXXXXXXXX
        Date code                                 : 230315
        Optical diagnostics support               : Yes
        Laser bias current                        : 12.910 mA
        Laser output power                        : 1.2858 mW / 1.09 dBm
        Receiver signal average optical power     : 0.0105 mW / -19.79 dBm
        Module temperature                        : 64.69 degrees C / 148.44 degrees F
        Module voltage                            : 3.3499 V
        Alarm/warning flags implemented           : Yes
        Laser bias current high alarm             : Off
...

Any idea why you don’t get the full downstream and upstream speeds?

The fiber network itself I presume as I’m testing on a powerfull platform with a 10G link. I have “Hardware flow offloading” set (or not - testing) and not that mush firewall rules.

I have exactly the same error message on my module.

What do i need to change in the sfp.c ??

Hi, Nothing there. Just revert back the ONU Vendor_NAME and Vendor_PN in the SFP module EEPROM. Has to be, respectively FS and GPON-ONU-34-20BI, since I found these lines in the file:

SFP_QUIRK(“FS”, “GPON-ONU-34-20BI”, sfp_quirk_2500basex, sfp_fixup_ignore_tx_fault),

With SSH on the module do:

fw_setenv sfp_vendor_name “FS” fw_setenv sfp_part_name “GPON-ONU-34-20BI” fw_setenv sgmii_mode 5 or fw_setenv sgmii_mode the default value is 5

Thanks for your reply… but i have a different module and i really am clueless on how to talk to the EEPPROM or what tools to use …

But i,m trying to find out. (sorry… very noob newbie at linux)

Ethtool to interpret the eeprom data.

And i2cutils to access the eeprom.

Thanks man… this will solve all my problems :stuck_out_tongue: