BPi R3 SF SFP 2.5G OpenWrt

Hello,

similar to this post I’m struggling to get this specific SF SFP RJ45 module to work.

I need this module specifically because I have an external ONT with an RJ45 2.5 Gbps that I need to connect to my RPi 3. Of course the RJ45 ports are all 1 Gbps, so the idea is to have an SFP RJ45 module to connect to the SFP 2.5 Gbps ports; and this module in particular is the only one I could find to accomplish such task.

The issue however, as reported by the post above that apparently, due to a problem in the Kernel, or due to a bad Eeprom in the SFP (I’m not enough of an expert to comment on this) the Kernel fails to correctly enable the device, specifically with the following dmesg output:

[520334.973653] mtk_soc_eth 15100000.ethernet eth1: validation with support 0000000,00000000,00000000 failed: -22
[520334.983741] sfp sfp-1: sfp_add_phy failed: -22

And for good measure, here is the output of ethtool eth1

root@OpenWrt:~# ethtool eth1
Settings for eth1:
        Supported ports: [ ]
        Supported link modes:   2500baseX/Full
                                1000baseX/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: Direct Attach Copper
        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

and of ethtool --module-info eth1

root@OpenWrt:~# ethtool --module-info eth1
        Identifier                                : 0x03 (SFP)
        Extended identifier                       : 0x04 (GBIC/SFP defined by 2-wire interface ID)
        Connector                                 : 0x22 (RJ45)
        Transceiver codes                         : 0x00 0x01 0x00 0x00 0x00 0x00 0x02 0x00 0x1e
        Transceiver type                          : SONET: OC-48, short reach
        Transceiver type                          : Extended: 2.5GBASE-T
        Encoding                                  : 0x05 (SONET Scrambled)
        BR, Nominal                               : 2500MBd
        Rate identifier                           : 0x00 (unspecified)
        Length (SMF,km)                           : 0km
        Length (SMF)                              : 0m
        Length (50um)                             : 0m
        Length (62.5um)                           : 0m
        Length (Copper)                           : 100m
        Length (OM3)                              : 0m
        Laser wavelength                          : 0nm
        Vendor name                               : FS
        Vendor OUI                                : 64:9d:99
        Vendor PN                                 : SFP-2.5G-T
        Vendor rev                                : 1.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                                 : G2410075656
        Date code                                 : 240219

and finally a very sad cat /sys/kernel/debug/sfp-1/state

Module state: present
Module probe attempts: 0 0
Device state: up
Main state: fail
Fault recovery remaining retries: 5
PHY probe remaining retries: 12
moddef0: 1
rx_los: 1
tx_fault: 0
tx_disable: 0

Now, the issue is that I really need to get this SFP working, since I need a 2.5 WAN and the only way to do this is via the SFP port.

I am willing to get another SFP module, but since this is already the second one, and since those things are expensive, I would like to know if anyone can point me to an SFP module that is known to work with the currently latest version of OpenWrt for BPi R3

(by which I mean uname -a)

Linux OpenWrt 5.15.150 #0 SMP Fri Mar 22 22:09:42 2024 aarch64 GNU/Linux

Because at this point SFPs are costing more than the router itself :frowning:

Otherwise I would like to know if anybody can point me to a stable enough snapshot which supports this specific SFP, or a workaround to get it working.

… I really do wish that multi-gig RJ45 was more popular :cry:

Thanks in advance!

That should be the one discussed in this topic:

[bpi-r3] sfp 2.5g - Banana Pi BPI-R4/BPI-R3 Mini/BPI-R3/BPI-R64/BPI-R2 / Linux - banana pi single board computer open source project official forum BPI team (banana-pi.org)

Then it is also supported by my i2csfp tool and also various patches have been applied on this.

As for openwrt, I do not know, I do not use it.

Hi !

Why don’t you just buy one of these ? https://www.aliexpress.com/item/1005005201566342.html https://www.aliexpress.com/item/1005005871983618.html

It is the very same, only the Vendor string is FS instead of OEM.

can we compile your i2csfp tool directly from openwrt?

if yes then what do we have to install ? only gcc package ?

I do not use openwrt. The file can be build statically, no libraries linked, so easy-peasy.

I tried to get gcc on my Banana Pi R3 but I instantly filled all the storage, I instead cross compiled from a Ubuntu VM on x86

sudo apt install gcc-aarch64-linux-gnu and then aarch64-linux-gnu-gcc -Wall -o i2csfp i2csfp.c --static.

I uploaded the executable on the BPi R3 via SSH and it is working… now… I kind of don’t know what to do with it though…

I would be happy to share the binary as a github release if it can be of use, but since I don’t know what to do with it yet I haven’t tested anything.

Update, can’t be sure if what I did is correct or wrong though i2csfp /dev/i2c-1 eepromfix it did seem to change something, even though after removing and reinserting the module it seems like the eeprom keeps changing?

Regardless, the output of the command if the following:

root@OpenWrt:~# i2csfp /dev/i2c-1 eepromfix
Checksum 0x00-0x3e matched a1
Checksum 0x40-0x5e matched 68
RollBall Password used: 0xf0051aba
Checksum 0x00-0x3e matched a1
Checksum 0x40-0x5e matched 68
root@OpenWrt:~#

One doubt that I had (of course, only after patching the eeprom :stuck_out_tongue:) is that @ericwoud said here

It can edit eeprom data of the OEM modules so it can match another string, so you do not need to add another quirk if the same hardware already has a quirk but uses different id string.

So this means that the tool changes a string, so that a quirk/patch inside the kernel can apply a specific fix to make the SFP work (provided that it’s the same hardware).

Does this mean that you still need to have a particular patched version of the kernel, but simply not one that has been specifically made for your SFP stick, or does this mean that a fix present in an upstream, possibly older, kernel version is still used?

Sorry if this question is dumb I’m just trying to collect info :sweat_smile:

Thanks for all the work by the way!

Here it seems to find anither password, so I do not know this will work on your module… Guess there are more differences.

What do you get as output when you do:

i2cdump -y 1 complains that there is no address:

root@OpenWrt:~# i2cdump -y 1
Error: No address specified!
Usage: i2cdump [-f] [-y] [-r first-last] [-a] I2CBUS ADDRESS [MODE [BANK [BANKREG]]]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x08 - 0x77, or 0x00 - 0x7f if -a is given)
  MODE is one of:
    b (byte, default)
    w (word)
    W (word on even register addresses)
    s (SMBus block, deprecated)
    i (I2C block)
    c (consecutive byte)
    Append p for SMBus PEC

So I gave it the first available address it said I could use, which is 0x08

root@OpenWrt:~# i2cdump -y 1 0x08
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
root@OpenWrt:~#

As for i2cdump -y 1 0x56

root@OpenWrt:~# i2cdump -y 1 0x56
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 20 58 00 02 00 1c c8 49 20 70 00 8a 80 00 00 30     X.?.??I p.??..0
10: 82 00 00 00 00 00 41 a0 00 00 00 00 00 1c c8 49    ?.....A?.....??I
20: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00    ...........?....
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
root@OpenWrt:~#

it produces the result above, which if I’m not mistaken is the same that was reported on the other thread, which should make sense since I believe we have the same module from SF.

I believe this 00: 20 58 00 02 00 1c c8 49 is what you were looking for last time?

By the way, in case it could be useful.

Here is an eeprom dump pre patch:

root@OpenWrt:~# i2csfp /dev/i2c-1 eepromdump
0x50:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
00: 03 04 22 00 01 00 00 00 00 02 00 05 19 00 00 00   ..".............
10: 00 00 64 00 46 53 20 20 20 20 20 20 20 20 20 20   ..d.FS
20: 20 20 20 20 1e 64 9d 99 53 46 50 2d 32 2e 35 47       .d..SFP-2.5G
30: 2d 54 20 20 20 20 20 20 31 2e 30 20 00 00 00 a1   -T      1.0 ....
40: 00 1a 00 00 47 32 34 31 30 30 37 35 36 35 36 20   ....G2410075656
50: 20 20 20 20 32 34 30 32 31 39 20 20 00 f0 01 68       240219  ...h
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0x51:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
00: 50 00 f6 00 4b 00 fb 00 8c a0 75 30 88 b8 79 18   P...K.....u0..y.
10: 1d 4c 01 f4 19 64 03 e8 4d f0 06 30 3d e8 06 f2   .L...d..M..0=...
20: 2b d4 00 c7 27 10 00 df 00 00 00 00 00 00 00 00   +...'...........
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
40: 00 00 00 00 3f 80 00 00 00 00 00 00 01 00 00 00   ....?...........
50: 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 23   ...............#
60: 20 0a 84 0c 0b b8 13 88 00 00 ff ff ff ff 02 ff    ...............
70: 00 40 ff ff 00 40 ff ff 00 ff ff ff ff ff ff 00   .@...@..........
0x51 PAGE 0x00:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0x51 PAGE 0x01:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0x51 PAGE 0x02:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
0x51 PAGE 0x03:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
80: 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
90: ff ff 00 00 ff ff ff ff ff ff ff ff ff ff ff ff   ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
f0: ff ff ff ff ff ff ff ff ff ff 05 00 f0 05 1a ba   ................
root@OpenWrt:~#

and here is an eeprom dump post fix:

root@OpenWrt:~# i2csfp /dev/i2c-1 eepromdump
0x50:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
00: 03 04 22 00 01 00 00 00 00 02 00 05 19 00 00 00   ..".............
10: 00 00 64 00 46 53 20 20 20 20 20 20 20 20 20 20   ..d.FS
20: 20 20 20 20 1e 64 9d 99 53 46 50 2d 32 2e 35 47       .d..SFP-2.5G
30: 2d 54 20 20 20 20 20 20 31 2e 30 20 00 00 00 a1   -T      1.0 ....
40: 00 1a 00 00 47 32 34 31 30 30 37 35 36 35 36 20   ....G2410075656
50: 20 20 20 20 32 34 30 32 31 39 20 20 00 f0 01 68       240219  ...h
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0x51:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
00: 50 00 f6 00 4b 00 fb 00 8c a0 75 30 88 b8 79 18   P...K.....u0..y.
10: 1d 4c 01 f4 19 64 03 e8 4d f0 06 30 3d e8 06 f2   .L...d..M..0=...
20: 2b d4 00 c7 27 10 00 df 00 00 00 00 00 00 00 00   +...'...........
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
40: 00 00 00 00 3f 80 00 00 00 00 00 00 01 00 00 00   ....?...........
50: 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 23   ...............#
60: 20 ad 83 f5 0b b8 13 88 00 00 ff ff ff ff 02 ff    ...............
70: 00 40 ff ff 00 40 ff ff 00 ff ff ff ff ff ff 00   .@...@..........
0x51 PAGE 0x00:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0x51 PAGE 0x01:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0x51 PAGE 0x02:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
0x51 PAGE 0x03:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0123456789abcdef
80: 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
90: ff ff 00 00 ff ff ff ff ff ff ff ff ff ff ff ff   ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff   ................
f0: ff ff ff ff ff ff ff ff ff ff 05 00 f0 05 1a ba   ................
root@OpenWrt:~#

It does look like a rollball module, but there are some differences with the other rollball modules.

Not sure you can edit eeprom data, you need to try it, perhaps even brute torce. Then you could chsnge the strings so it matches a module that already has the rollball-fixup.

Otherwise you will need to create a fixup for the module and build new kernel.

I can try doing that and would be happy to!

I do have some programming experience but I haven’t really modded an SFP before nor used one, so I need a little more guidance.

What string exactly do I need to edit inside the eeprom and with what value to make the kernel apply the fixup?

And also do you happen to know since when those fixups are available in the upstream kernel?

I will try bruteforcing the password with your tool, I think your tool is also able to edit specific data at specific addresses on the eeprom, so one I do that and know what value to place where I should theoretically be able to apply he patch right?

As always, thanks for the help, it’s really appreciated!

I do not track the sfp patches of openwrt, so for openwrt i do not know.

As for mainline, check the commit history of sfp.c, it is where the quirks and fixups are.

I believe the FS 2.5G fixup is added to kernel 6.9 mainline.

Ah thanks! I’ll check that and see out of curiosity!

But yeah 6.9 is way too recent… or 6.x for that matter, I upgrade the kernel only a couple months on my Arch NAS and it’s still 6.8.9, sadly I only have 5.15.150 on OpenWrt.

I guess it’s time to somehow build a new image with an updated kernel :stuck_out_tongue:.

I think I read on another post that you built some Arch images? I know this is unrelated, but do you suggest using Arch and then installing on top LuCI and other tools that may pre installed on OpenWrt or is it only used as a testing platform for kernel patches?

There is no luci for arch

On archlinuxarm you use ssh and setup the device using shell commands and editing config files with an editor.

Ah I see, I was hoping for some sort of all-in-one package.

Well, for now I’ll try to recompile OpenWrt with the latest upstream Kernel and see if that helps with the fixups. In theory, even if I fix the eeprom now, I will still end up not having the fixup for the reported string if I’m guessing things correctly.

I’ll update here one I manage to get the thing done.

Thanks for all the support!

There should be a fixup for oem sfp2.5g already there backported in earlier openwrt kernel. Just add your sfp to use the same…

Ah I see, very nice: i2csfp /dev/i2c-1 eepromfix -V OEM which is seems to work!

In fact got ethtool --module-info eth1

root@OpenWrt:~# ethtool --module-info eth1
        Identifier                                : 0x03 (SFP)
        Extended identifier                       : 0x04 (GBIC/SFP defined by 2-wire interface ID)
        Connector                                 : 0x22 (RJ45)
        Transceiver codes                         : 0x00 0x01 0x00 0x00 0x00 0x00 0x02 0x00 0x1e
        Transceiver type                          : SONET: OC-48, short reach
        Transceiver type                          : Extended: 2.5GBASE-T
        Encoding                                  : 0x05 (SONET Scrambled)
        BR, Nominal                               : 2500MBd
        Rate identifier                           : 0x00 (unspecified)
        Length (SMF,km)                           : 0km
        Length (SMF)                              : 0m
        Length (50um)                             : 0m
        Length (62.5um)                           : 0m
        Length (Copper)                           : 100m
        Length (OM3)                              : 0m
        Laser wavelength                          : 0nm
        Vendor name                               : OEM
        Vendor OUI                                : 64:9d:99
        Vendor PN                                 : SFP-2.5G-T
        Vendor rev                                : 1.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                                 : G2410075656
        Date code                                 : 240219
root@OpenWrt:~#

Am I supposed to change other fields? I’m trying to read the patch to see what the expected values.