I guess there was a eeprom crc quirk in older openwrt which is now missing
I also have the SFP G-010s-A, I use it on a BPI-R3 in OpenWrt 23.05, I’m still going to test it on the latest version, and it has the same error. In the research I did on the forum, this happens because the SFP takes a long time to restart, so I managed to use the SFP, I used a media converter to configure the SFP and insert it into the BPI-R3. On the first boot, the SFP is not recognized, so I just restarted the BPI-R3 again and the SFP was recognized and I’m using the G-010s-A without a patch.
I also expired almost the same error on old 23.05 and new 24.10.2 openwrt version
[ 16.931749] sfp sfp-1: EEPROM base structure checksum failure: 0x92 != 0x00
[ 16.938711] sfp EE: 00000000: 03 04 01 00 00 00 00 00 00 00 00 03 10 00 04 c8 ................
[ 16.947387] sfp EE: 00000010: 00 00 00 00 40 40 42 40 50 40 0c 00 00 00 00 00 ....@@B@P@......
[ 16.956062] sfp EE: 00000020: 00 20 20 20 00 00 00 00 46 00 11 10 41 50 00 00 . ....F...AP..
[ 16.964737] sfp EE: 00000030: 00 00 00 00 00 00 00 00 30 30 20 20 01 14 00 00 ........00 ....
[ 16.973411] sfp EE: 00000040: 00 00 00 00 00 00 00 00 70 3d 61 81 c0 ff ff ff ........p=a.....
[ 16.982086] sfp EE: 00000050: f8 7e 8d 80 01 00 00 00 30 3d 61 81 c0 ff ff ff .~......0=a.....
helps only reinsert sfp module.
lets clarify, you said that you have no problems with “ONT Huawei MA5671A” and has fully supported in 24.10?
If crc is right after reinsert than it is not the known eeprom crc which have to be fixed by quirk…afaik the quirk is when eeprom crc is always wrong.
Maybe some delay quirk can help?
I thought that version 24.10.2 with kernel 6.6.93 already included it, but unfortunately, it doesn’t.
SFP_QUIRK_M("ALCATELLUCENT", "G010SP", sfp_quirk_2500basex),
So, do you suggest adding a path that introduces sfp_fixup_long_startup for the G010SP quirks and testing it?
Something like this:
SFP_QUIRK_M("ALCATELLUCENT", "G010SP", sfp_quirk_2500basex,
sfp_fixup_long_startup),
?
After I (and possibly @Rooot) test that, is there any way it will be merged into the OpenWRT mainstream? Or will I face the same problem in the next release?
I ask this because purchasing and setting up a guaranteed working “Huawei MA5671A” is a much simpler solution than going through the process of patching, compiling, and flashing just to make it work for me. However, if we can successfully integrate this fix and it proves useful for others as well, it would definitely make the effort worthwhile!
Does the firmware of the ONT allow you to change the vendor and product string? Then you can have it match a quirk that has the long startup.
I never thought about that. I guess changing the product string will be enough because the quirks for G-010S-A are exactly what it should look like.
SFP_QUIRK("ALCATELLUCENT", "3FE46541AA", sfp_quirk_2500basex,
sfp_fixup_long_startup),
Unfortunately, there is no simple way to do that. I can’t find any instructions on how to do it fw_printenv output looks very cryptic to me.
Eric means using his tool to write a known vendor string to your sfp eeprom…not related to fw_printenv
But imho the wrong way as it says your sfp is another one because of software in linux kernel…
I guess this was the second stick that I bricked with the i2csfp tool; the first was the DFP-34CX-2C2. Be careful, guys!
It failed to detect after I ran i2csfp sfp-1 eepromfix w/o any params.
Now, @Rooot, you are one-on-one with this problem.
I do not expect i2csfp works on any ONT. It was not written to use on ONT’s. Never can know what damage it could do, as every ONT is implemented in a different manner.
Some ONT’s firmware allows for changing the vendor and product string. If possible, this would be the easiest way
The only place where these strings are used in the kernel are for quirk/fixup lookup.
Edit:
It is likely this cannot be changed through the firmware, so then never mind the above, you’ll need to patch the kernel.
Hello, Since V6 kernel, the sfp quircks are no more located in the sfp-bus.c file now… where can we found them in the tree ?
i’d like to find wich ONT has this “sfp_fixup_long_startup”
EDIT:
openwrt 24.10.4 is on kernel 6.6.110
i found : Making sure you're not a bot!
So sfp_fixup_long_startup must be added to :
SFP_QUIRK("ALCATELLUCENT", "G010SP", sfp_quirk_2500basex,
sfp_fixup_ignore_tx_fault),
result should be :
SFP_QUIRK("ALCATELLUCENT", "G010SP", sfp_quirk_2500basex,sfp_fixup_long_startup,
sfp_fixup_ignore_tx_fault),
am i right ??
Cannot increase the number of arguments of the macro …
Create a function that calls:
sfp_fixup_long_startup and sfp_fixup_ignore_tx_fault