SFP port failure

Hi, I am trying to use a Nokia 3FE46541AA G-010S-A SFP in openWRT with my Mikrotik RouterBOARD RB760iGS. With the Mikrotik OS the SFP worked fine, but in openWRT it does not and I saw this message in dmesg:

[ 120.249527] sfp sfp1: module ALCATELLUCENT 3FE46541AA
[ 120.258421] sfp sfp1: Unknown/unsupported extended compliance code: 0x20
[ 120.265158] Atheros 8031 ethernet mdio-bus:07: incompatible SFP module inserted;Only SGMII/1000BASEX are supported!

Is it possible to get it running? Thanks in advance!

It seems possible, just use a SGMII/1000BASEX SFP as the error says. Let us know your results.

you can refer to the mode switching sgmii here:

8. For some applications LAN port speed can be set to 2.5G
a. Set LAN port speed to 2.5G
fw_setenv sgmii_mode 5

b. Remove LAN port speed 2.5G (back to default 1G)
fw_setenv sgmii_mode

D23446/HL23446 initial configuration V.01

Do not modify any optical parameters(GOI). Avoid direct exposure to a laser beam!

Network stack will become available approximately 80 seconds after power up.

Run the Telnet software on PC, such as the TeraTerm
Set the Host as <> (the GPON STICK’s IP address), choose the Service as <Telnet> and connect

Quick Setup (Serial Number and GPON password change)

fw_setenv ont_serial ARLT12345678
uci set gpon.ploam.nPassword='0x30 0x36 0x32 0x32 0x38 0x36 0x53 0x30 0x34 0x34'
uci commit

1. Build Info
OpenWrt - (14.07_ltq) --- Lantiq Edition for GPON 
Linux SFP 3.10.49

2. Partition layout
dev:    size   erasesize  name
mtd0: 00040000 00010000 "uboot"
mtd1: 00080000 00010000 "uboot_env"
mtd2: 00740000 00010000 "linux"
mtd3: 00618322 00010000 "rootfs"
mtd4: 00420000 00010000 "rootfs_data"
mtd5: 00800000 00010000 "image1"

3. Flash Info
uboot -     0x040000
uboot_env - 0x080000
image0 -    0x740000
image1 -    0x800000
total -    0x1000000 16MB

4. Memory (DRAM) info
memory size - 0x4000000 64MB

5. Display all GPON Stick variables. Copy and store it in a safe place
root@SFP:/# fw_printenv
root@SFP:/# uci show

6. Verify if the u-boot environment variable 'target' is set
root@SFP:/# fw_printenv target

Each configuration value if present in the startup file sys.sh will be overwritten

# - \s is used to place a space (ASCII 0x20)
# - \0 is used to place ASCII 0
# - enclose "a b c" in quotes (either single or double) to interpret it as one attribute

Display and edit the file /etc/init.d/sys.sh with your current ONT values

root@SFP:/# cat /etc/init.d/sys.sh

                uci set sys.target.name=oem-generic
                uci set sys.features.mib_customized=1
                uci set sys.features.igmp_fast_leave=1
                uci set sys.features.dying_gasp_enabled=0
                uci set sys.features.suppress_power_level=0
                uci set sys.features.eeprom_sync_option='1'
                uci set sys.mib.vendor_id='ARLT'                    # 4 char Vendor ID left-aligned
                uci set sys.mib.ont_version='ARLTLBFIB2.0.0'   # 14 char Hardware Version left-aligned padded with zeros
                uci set sys.mib.equipment_id='PRV3399B_B_LT\0\0\0'  # 16 char model name left-aligned padded with zeros

use vi editor to update Vendor ID, Hardware Version, Model Name
root@SFP:/# vi /etc/init.d/sys.sh

7. Update serial number, password, MAC address, image version
fw_setenv ont_serial ARLT12345678
fw_setenv image0_version AR_LBFIBRA_sp-
fw_setenv image1_version AR_LBFIBRA_sp-

uci set gpon.ploam.nPassword='0x30 0x36 0x32 0x32 0x38 0x36 0x53 0x30 0x34 0x34'
uci set network.host.macaddr='e4:3e:d7:69:be:ef'
uci commit

8.Emulated EEPROM commands
sfp_i2c command will automatically calculate correct A0h checksums at offsets 63(0x3F) 95(0x5F)
indexes [-i] are written in decimal and converted to hex

a. Display stored soft eeprom data values
root@SFP:/# uci show sfp_eeprom.default.data_eeprom_0

b. Reset eeprom to default values (LANTIQ,NO_PART_NUMBER,0001,NO_SERIAL_NUMBER,140101)
root@SFP:/# sfp_i2c -d yes

c. Write to eeprom your ONT values
sfp_i2c -i 0 -s "HUWAWAWEI"         # 16 bytes(ASCII) Vendor Name left-aligned
sfp_i2c -i 1 -s "PRV3399B_B_LT"     # 16 bytes(ASCII) Part Number left-aligned
sfp_i2c -i 2 -s "0001"              #  4 bytes(ASCII) Part Number Rev. left-aligned
sfp_i2c -i 3 -s "ARLT567890123456"  # 16 bytes(ASCII) Serial Number left-aligned
sfp_i2c -i 4 -s "181224"            # 8 bytes Date Code(mandatory)

sfp_i2c -i 36 -w 0xe43ed7 -4 -m 0x00FFFFFF          # 3 bytes MAC address Vendor OUI

8. For some applications LAN port speed can be set to 2.5G
a. Set LAN port speed to 2.5G
fw_setenv sgmii_mode 5

b. Remove LAN port speed 2.5G (back to default 1G)
fw_setenv sgmii_mode

9. asc0 mode pin configuration
Turn off UART. Set pin#6 of 20 to low(module availability indication)
fw_setenv asc0 1 

Troubleshooting (bricked device)
Set asc0 to 0 temporarily, change back asc0 to 1 when finished.
fw_setenv asc0 0
Connect USB UART adapter to pin#3 of 20(RX) and pin#6 of 20(TX)
Press SPACE to delay and Ctrl-C to abort autoboot in 5 seconds to modify environment variables

FALCON => printenv asc0
FALCON => setenv asc0 0
FALCON => saveenv
Saving Environment to SPI Flash...
SF: Detected GD25Q127C with page size 256 Bytes, erase size 4 KiB, total 16 MiB
Erasing SPI flash...Writing to SPI flash...done
Valid environment: 1

Ignore Ctrl-C, wait for the full console (asc0=0) then press Enter

This module, and any other faster than SFP (with 1000baseX or 1000baseT fallback capability) module should work on this hardware, after this change (not yet merged): https://github.com/openwrt/openwrt/pull/3584

The issue is: An Openwrt patch adds SFP support for the hardware RGMII-to-SerDes adapter: at803x: https://github.com/openwrt/openwrt/pull/2901. The kernel function used in part of testing module compatibility returned only the fastest supported interface mode, and tested this against 1000baseX or 1000baseT. Faster modules would be stopped here, even if they could fall back to a supported mode. First linked PR fixes this.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.