BPI-R3 SFP Module compatibility

Thanks @frank-w! As @prdtabim stated it works for him, I wonder if this is an issue with the driver or it’s related to the SFP’s EEPROM.

Hi @mrunx

I tested the Tplink Tl-SM410U linking to a 2.5Gb/s RTL8125B card in another PC. I will test with 1Gb/s to see if it syncs.

@prdtabim thanks! Much appreciate!

And if you could also post the SFP’s ethtool output, it might help too.

To @mrunx

I’m using snapshot from 2023-01-16 now. Module detection on eth1.

sfp sfp1: module TP-LINK          TL-SM410U        rev 2.0  sn 12241Y8000260    dc 220414

without cable



root@OpenWrt:~# ethtool eth1
Settings for eth1:
        Supported ports: [ FIBRE ]
        Supported link modes:   2500baseX/Full 
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  2500baseX/Full 
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: Unknown!
        Duplex: Unknown! (255)
        Port: FIBRE
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: no

Plug the cable on 2.5Gb/s card .

[  307.478370] mtk_soc_eth 15100000.ethernet eth1: Link is Up - 2.5Gbps/Full - flow control off
[  307.486833] br-wan: port 1(eth1) entered blocking state
[  307.492057] br-wan: port 1(eth1) entered forwarding state
ethtool eth1
Settings for eth1:
        Supported ports: [ FIBRE ]
        Supported link modes:   2500baseX/Full 
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  2500baseX/Full 
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 2500Mb/s
        Duplex: Full
        Port: FIBRE
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: yes

And if I lock the card ( RTL8125B ) at 1Gb/s. The link drops … :frowning:

ethtool eth1
Settings for eth1:
        Supported ports: [ FIBRE ]
        Supported link modes:   2500baseX/Full 
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  2500baseX/Full 
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: Unknown!
        Duplex: Unknown! (255)
        Port: FIBRE
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: no

I’m using this sfp module to link to a TPLink switch unmanaged 8x 2.5GBase-T , so no problems. I don’t guess that 2.5Gb/s is the only speed available.

Just to compare. Using an ONTI 2.5G Base-t adapter.

sfp sfp1: module                                   rev 1.0  sn 2206210017       dc 220621 

The behaviour is exactly the same. Works at 2.5Gb/s but not at 1Gb/s.

@prdtabim

Thanks a lot!

Indeed, it seems it only supports 2.5GBaseX :frowning:

Also mentioned by @dangowrt in Banana Pi BPI-R3 OpenWRT image, comment #49:

You can also use slightly cheaper ONTi SFP modules which then also support fall-back to 100M/1G speed (SM410U supports 2.5G only ): https://www.aliexpress.com/item/1005004545962352.html

Tested the eth1 port using DAC and AOC cable to a Mikrotik CRS326-4S+2Q+RM. 2,5Gb/s OK Any other speed failed.

1 Like

was anyone able to get a 1GBit optical transfer module running

I tried this one https://www.fs.com/de/products/20140.html

Nearly everything looks ok, but I don’t get any answer. The cable and module is ok (confirmed with a different device and same config)

for more details => https://forum.openwrt.org/t/sfp-port-banana-pi-bpi-r3-not-receiving-traffic-with-openwrt-snapshot-build-date-23-1-2023/149211

I have 1g h!fibre sfp working…but they are not 2g5 capable.

H!Fiber Gigabit SFP Multimode Transceiver, 1000Base-SX LC Modul(550m, 850nm) für Cisco GLC-SX-MMD, Ubiquiti, Netgear, D-Link, Linksys, Mikrotik and Other Open Switches, 2 Pack https://amzn.eu/d/eUdFegJ

I have an h!fibre 1000base-T… do not work either on eth1 and SFP2…

[edit]

ethool report: “Supported link modes: 2500baseX/Full”

[edit] here a log section:

Tue Jan 24 10:41:28 2023 kern.info kernel: [    9.180714] sfp sfp2: Host maximum power 1.0W

Tue Jan 24 10:41:28 2023 kern.info kernel: [    9.516751] sfp sfp2: module OEM              SFP-GE-T         rev      sn CSGE1Lxxxx9      dc 211028

Tue Jan 24 10:41:30 2023 kern.info kernel: [   14.278858] mt7530 mdio-bus:1f sfp2: configuring for inband/2500base-x link mode
Tue Jan 24 10:41:30 2023 kern.info kernel: [   14.287788] br-lan: port 5(sfp2) entered blocking state
Tue Jan 24 10:41:30 2023 kern.info kernel: [   14.293010] br-lan: port 5(sfp2) entered disabled state
Tue Jan 24 10:41:30 2023 kern.info kernel: [   14.300553] device sfp2 entered promiscuous mode
Tue Jan 24 10:41:30 2023 kern.err kernel: [   14.355303] mt7530 mdio-bus:1f sfp2: validation with 
support 0000000,00000000,00000000 failed: -22
Tue Jan 24 10:41:30 2023 kern.err kernel: [   14.364411] sfp sfp2: sfp_add_phy failed: -22

Oh wow, I’ve seen it a lot the other way around (2.5G-capable devices only announcing 1G capability), but this is new and even worse: 1G-capable devices announcing 2.5G capability… We will need to add a quirk for it to the Linux kernel, so it will be recognized correctly…

IMHO the SFP cage is set to 2.5G as default (even without any module insterted) and the kernel it is not able to activate a 1G module or a 1/2.5Gb module at 1G.

one more update

My Banana Pi is running with openwrt snapshot from 23.1.2023

My Mikrotik RB760iGS (hEX S) is running with openwrt snapshot from 24.1.2023

I tested now with 4 different SFP Optical Fibre Transmitter Modules

  1. FS.com - SFP Transceiver Modul mit DOM - 1000BASE-BX BiDi SFP 1310nm-TX/1550nm-RX 20km LC SMF https://www.fs.com/de/products/20140.html

  2. TP-Link - TL-SM321B 1G Mini-GBIC Single-Mode Transceiver Module, 1000Base-BX WDM Bi-Directional SFP Module, LC Port https://www.tp-link.com/en/business-networking/accessory/tl-sm321b/

  3. Elfcam - ELfCAM ESB3512-3LCD10 1.25 Gbps SFP Modul, 1000Base-BX WDM Bi-Directional, Singlemode LC/UPC, DDM, bis zu 10KM (TX 1310nm) https://smile.amazon.de/dp/B08V9J5ZVM

  4. DIGITUS - Gigabit SFP Modul, Mini GBIC, Singlemode, LC Simplex (BiDi), Tx 1310nm / Rx 1550nm, 20 km, 1.25 Gbit/s https://smile.amazon.de/dp/B00609EB0K

All of them are working fine with my Mikrotik RB760iGS (hEX S). Working fine means, they connect and getting a DHCP Address.

But none of them are working with my banana pi r3 who runs with the same configuration and MAC address as the Mikrotik.

On my Banana Pi I get the following symptoms.

  • All modules are detected and identified properly.
  • All modules are showing “Link UP”.
  • All modules are showing “Laser output power” and “Receiver signal average optical power” values, which means they send and receive light.
  • All modules are able to send packages (verified by “cat /proc/net/dev” and “ethtool -S eth1”)
  • But no modules are receiving packages back (rx is always 0)

The only difference is that “Supported ports:” on my Mikrotik SFP Port is “[TP MII]” and on my Banana Pi R3 is “[FIBRE]” and the Banana Pi is using the XDP (eXpress Data Path) Stack

Another difference is that on my Mikrotik calling “ethtool sfp” I see

    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

and on my BananaPi this is missing, but it shows link up

@frank-w any idea or hint how I can debug or investigate deeper into my problem?

e.g. can I compile related drivers with a debug flag? or is there a way to capture some kind of raw data receiving from link partner?

it’s so strange that it works with a different device but the same module, os and configuration.

I do not know if drivers expose some debug data.

Basicly if there are dev_dbg you should see them if your debuglevel matches (and dynamic debug symbol is enabled). You have to pass debug=7 to your cmdline.

I mostly add dev_err statements.

https://wiki.fw-web.de/doku.php?id=programming:start#linux (sorry german only)

Else you have to add own debug-messages in code. Some drivers expose a debugfs knob. For it you have to mount debugfs.

It depends on which sfp slot you use…

Left one uses mtk_soc_eth.c right one uses mt7530.c,both use sfp.c additionally.

Vielen Dank! :slight_smile:

I installed a fresh version of openwrt (master), this time together with kernel modules (sfp and mtk_soc_eth) with debug symbols… I hope it will give me some more insights.

Debug symbols allowing running debugger (gdb) in linux…i’m not sure this will help you here.

ok. My understanding was that a kernel without debug option compiled, will strip out all debug related stuff lik “dev_*dbg/pr_debug()”.

I will try out “/sys/kernel/debug/dynamic_debug/control” and check if this will show me some more messages.


just another idea regarding the topic “BRI-R3 SFP Module compatibility”. Maybe it will be helpful to have a page with a “compatibility matrix”. Currently you have to read the full topic to get an idea which modules are supported and which not. And you have to read also unrelated messages like my messages. :innocent:

Hi! Any chance to solve this? I’m not found any way to make this module working… :frowning:

It is a very strange behaviour cause the module is declared full compatible with Cisco GLC-T/SFP-GE-T, Meraki MA-SFP-1GB-TX, Mikrotik, Ubiquiti UniFi UF-RJ45-1G, Intel, Netgear… My question is if anyone have a 1000base-T RJ45 working with R3. Thanks

I can add such matrix in my repo,but i need to know which modules are tested and working not working, maybe detailed in “recognized” and “really working”. I guess we need a way for find out the correct module informations like “how to find on a shop” and some kind of technical part number for identification. Maybe some kind of class like copper/fibre/ont/1g/2g(only)

something like this:

https://www.fw-web.de/dokuwiki/doku.php?id=en:bpi-r3:start#network_connections

have now only added mine, maybe i can add a column for comments (working after patch xyz or something) or maybe ethtool output. For speed i can use the 1000baseX/T names