[BPI-R4] and SFP

Would someone recommend a copper SFP(+) module that is known to work out of the box or with minimal tinkering and supports 1G speed? Beside the Xicom SFP±T (SFP-10G-T) that @Vasya mentioned, as I couldn’t find them being sold anywhere.

You can buy the SFP+/SFP modules that SinoVoip (Bipai), LuLeey, HiLink and XRT Fiber Optic Factory sells in their stores:

.

SFP+/SFP to RJ45 modules

10 Gbit/s SFP+:

2.5 Gbit/s SFP:

1 Gbit/s SFP:

.

SFP+/SFP Optical modules

10 Gbit/s SFP+:

2.5 Gbit/s SFP:

.

Information about the power consumption when reducing the speed on 10 Gbit/s SFP+ modules:

Thank you. Those are apparently the same SFP-10G-T that @Vasya had luck with. I wonder if the 2.5G one branded as compatible with BPI-R3 will work though.

1 Like

Quoting the BPI-R4 wiki: “The SFP serdes speed of BPI-R4 is fixed at 10Gbps, so only SFP that support this can be used”. The SP-2.5G-T is also not SFP+, but a regular SFP.

On the other hand, will the SFP-10G-T support 2.5G? Those that Vasya pictured are labeled as 2.5G compatible, while the ‘official’ ones are labled for 100/1000/10000M only.

Another question is temperature. Will a 10G copper module run as hot in a 1G network as it usually does at full speed?

1 Like

I found Huawei MA5671A and Nokia G-010S-P xPON ONU SFP Sticks with Lantiq PEB98035 chipset on AliExpress, maybe they will not have the same problems on Banana Pi BPI-R3 / BPI-R4 and OpenWrt as modules with Realtek RTL9601D chipset like ODI DFP-34X-2C2 (aka. HSGQ).

AliExpress Links:

AliExpress Seller Notes:

  • The “Huawei MA5671A” is already rooted and flashed with OpenWrt firmware.
  • The “Nokia G-010S-P” is the model that fixed the Nokia G-010S-A pin 6 hardware issue and has already been flashed with OpenWrt firmware.

.

Quirks already added to the “sfp” driver in the linux kernel to make “Huawei MA5671A” and “Nokia G-010S-P” work automatically at “2500base-X” without problems:

Tutorials:

  1. Detailed authentication configuration of SFP GPON G-010S-P/A & Huawei MA5671A running OpenWRT firmware.
  2. Replace ISP ONT/ONU - NOKIA GPON SFP G-010S-A (OpenWrt SFP 7.5.3).
  3. 2.5G GPON with the Nokia G-010S-A ONT and NanoPi R6S.
  4. Nokia Modem Flashing Tutorial (G-010S-A) No profiteering, if you like to tinker, do it yourself!.

Posts about Huawei MA5671A:

Comparison made by sibisties:

BTW, both Alcatel Lucent G-010S-P (aka. Nokia G-010S-P) and Huawei MA5671A SFPs share the same hardware with minor differences. In fact they’re so similar, I’ve been able to run a Huawei firmware on an Alcatel

The only diffrence is that the Alcatel Lucent G-010S-P has a physical EEPROM chip (24LC16) to store SFP MSA settings (serial number, nominal bit rate, …). This chip is connected to both the GPON SoC and I2C pins on the SFP connector. This way, settings can be read by the SFP host while the SoC is still booting. On the Huawei MA5671A, U-Boot environment variables are used to store MSA settings and an I2C slave driver is loaded on boot to simulate an EEPROM device.

2.5G xPON ONU SFP Sticks Power Consumption Test

Huawei MA5671A vs Nokia G-010S-A vs Nokia G-010S-P vs ODI DFP-34X-2C2

@kuzevich1983

I was able to get my 2.5G xpon stick to run on the banana BPI-R4 by doing exactly the same I had to do on the BPI-R3, patch the kernel to force the sfp link to be 2.5G. The patch is exactly the same for the R4 as for the R3. ( I’m using OpenWRT master) My 2.5 xpon stick is a clone of the ODI one, so it should also work for the ODI.

@Betonmischer

I have a bunch of sfp modules with me that I tested on the BPI-R4, one 10g copper module, 3 diferent brand 2.5G copper modules, several 1G fiber modules. They all work well and thus this means that The BPI-R4 is compatible with 10G, 2.5G and 1G modules. ( using OpenWRT master )

1 Like

Please describe what patch you use to work dfp-34x-2c2 on bpi-r4, if you can describe how to apply it, I will be very glad if my problem is solved. Thank you in advance. Thank you for your answer.

I created a file named 952-add-sfp-quirk.patch with the following content:

--- a/drivers/net/phy/sfp.c
+++ b/drivers/net/phy/sfp.c
@@ -458,6 +458,10 @@ static const struct sfp_quirk sfp_quirks[] = {
        SFP_QUIRK_F("OEM", "RTSFP-10G", sfp_fixup_rollball_cc),
+       // DFP-34X-2C2 GPON ONU supports 2500base-X
+       SFP_QUIRK_M("OEM", "DFP-34X-2C2", sfp_quirk_2500basex),
+       SFP_QUIRK_M("OEM", "XPON-Stick", sfp_quirk_2500basex),
+       SFP_QUIRK_M("OEM", "GPONOLTC+++", sfp_quirk_2500basex),
        SFP_QUIRK_F("Turris", "RTSFP-10", sfp_fixup_rollball),
        SFP_QUIRK_F("Turris", "RTSFP-10G", sfp_fixup_rollball),
 };

and placed it in target/linux/mediatek/patches-6.6/

What this patch does is, it forces any sfp stick that identifies itself as OEM DFP-34X-2C2 or OEM XPON-Stick or OEM GPONOLTC+++ to sync at 2.5G speed. It does so by adding a sfp quirck to the sfp.c file. In your case you have to modify the patch so that it matches the identifier of your strick, so just select one of the three lines I added ( the ones with + ) and edit it and change to your stick identifier. If your stick identification is one of those three, you don’t have to edit the patch. You then build OpenWRT from source and it’s done.

I must say that this is not a good choice. More information here:

https://patchwork.kernel.org/project/netdevbpf/patch/AS1PR03MB8189AD85CEB6E139F27307D3827F2@AS1PR03MB8189.eurprd03.prod.outlook.com/ https://patchwork.kernel.org/project/netdevbpf/patch/AS1PR03MB8189FE82C632EBA97644D70082642@AS1PR03MB8189.eurprd03.prod.outlook.com/ https://patchwork.kernel.org/project/netdevbpf/patch/TY3P286MB2611C0FA24318AA397DB689B985A2@TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM/

I’ve seen those messages before, actually, the submited patch was what I used to make mine agaisnt the current openwrt master. It’s the choice that works. If you find another that doesn’t require adding the quirk I would be very much interested in knowing about it.

Actually ODI sticks’ eeprom can be modified through i2c bus directly and I have already posted in this topic before. More information here: Right SFP EEPROM config for DFP-34X-2C2 to work automatically work at 2500base-X? · Anime4000/RTL960x · Discussion #250 · GitHub

1 Like

I’ve come across that post when trying to figure out how to make the stick work but I thought it would be too risky. patching the kernel is risk free but it does bother me to have to do it.

I may order another stick and try changing the eeprom.

thanks for the heads up!

This method is not that risky as long as you have a backup of original eeprom data. Because even linux can’t find correct eeprom data, we can still have access to i2c bus and fix the corrupted eeprom data. eeprom access is separated from stick access.

1 Like

ok, you convinced me, I will try it. :slight_smile:

Changes according to your instructions do not work for my bpi-r4+dfp-34x-2c2 bundle firmware V1.0-210702, I will try the latest version. Today I tried to build an image for the be14 wifi module according to the instructions from mediatek and I wanted to put a patch for quirk in it. In the end, nothing worked. I was a little upset, but nothing, I will try again tomorrow. In general, I need a working sfp and be14. Tomorrow I will try to build an image with a quirk patch separately. Thank you all for your answers.

V1.0-210702 is R4’s firmware version? If so, that’s not mainline kernel but SDK. Have you tried firmware here?

OpenWrt Firmware Selector

No, sorry for not describing in more detail. This is the firmware dfp-34x-2c2, the firmware version for bpi-r4 is the latest, snapshot, I also tried 21.02 from sinovoip.

So both version of openwrt firmware won’t work on r4 + sfp? Can you post dmesg message that generated after module plugged in?