I bought a PMG3000-D20B SFP module, since I need that for my GPON Fiber uplink. However, the module is not detected whatsoever.
In dmesg, with debugging turned on, sometimes this appears while inserting it:
[Wed Jul 3 19:23:08 2024] sfp sfp1: mod-def0 0 -> 1
[Wed Jul 3 19:23:08 2024] sfp sfp1: SM: enter empty:up:down event insert
[Wed Jul 3 19:23:08 2024] sfp sfp1: SM: exit probe:up:down
[Wed Jul 3 19:23:08 2024] sfp sfp1: mod-def0 1 -> 0
[Wed Jul 3 19:23:08 2024] sfp sfp1: SM: enter probe:up:down event remove
[Wed Jul 3 19:23:08 2024] sfp sfp1: module removed
[Wed Jul 3 19:23:08 2024] sfp sfp1: SM: exit empty:up:down
The status LED of the mainboard briefly flashes bright green while pushing in the module, and then settles for a very dim green glow while the module is in. When pulling it out, it very briefly flashes bright green as well. I can also fiddle with the module to hold it at the point where it’s bright green. It stays bright then the whole time, but nothing else changes. Notably, above debug messages also scrolls through when I only push it in up to that point.
I can however successfully talk to the module via i2cdump:
# i2cdump -y 3 0x50
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: 03 04 01 00 00 00 02 00 00 00 00 03 0c 00 14 c8 ???...?....??.??
10: 00 00 00 00 5a 59 58 45 4c 00 00 00 00 00 00 00 ....ZYXEL.......
20: 00 00 00 00 00 00 00 00 50 4d 47 33 30 30 30 2d ........PMG3000-
30: 44 32 30 42 00 00 00 00 56 31 2e 30 05 1e 00 55 D20B....V1.0??.U
40: 00 1a 00 00 53 32 33 34 31 30 37 35 30 32 35 39 .?..S23410750259
50: 36 00 00 00 31 35 30 35 32 35 20 20 68 f0 01 a4 6...150525 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 ................
When manually trying to bring the link up, this is logged:
[ 448.515127] sfp sfp1: SM: enter empty:up:down event dev_down
[ 448.520845] sfp sfp1: SM: exit empty:down:down
[ 450.753154] mtk_soc_eth 15100000.ethernet eth2: configuring for inband/sgmii link mode
[ 450.761141] mtk_soc_eth 15100000.ethernet eth2: major config sgmii
[ 450.767314] mtk_soc_eth 15100000.ethernet eth2: phylink_mac_config: mode=inband/sgmii/none adv=00,00000010,00000200,00026260 pause=00
[ 450.782875] sfp sfp1: SM: enter empty:down:down event dev_up
[ 450.788550] sfp sfp1: SM: exit empty:up:down
ethtool reports:
# ethtool eth2
Settings for eth2:
Supported ports: [ MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
10000baseT/Full
2500baseX/Full
1000baseKX/Full
10000baseKX4/Full
10000baseKR/Full
10000baseR_FEC
1000baseX/Full
10000baseCR/Full
10000baseSR/Full
10000baseLR/Full
10000baseLRM/Full
10000baseER/Full
2500baseT/Full
5000baseT/Full
100baseT1/Full
1000baseT1/Full
100baseFX/Half 100baseFX/Full
10baseT1L/Full
10baseT1S/Full
10baseT1S/Half 10baseT1S_P2MP/Half
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 1000baseT/Full
1000baseKX/Full
1000baseX/Full
1000baseT1/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Unknown! (255)
Auto-negotiation: on
Port: MII
PHYAD: 0
Transceiver: internal
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: no
# ethtool -m eth2
netlink error: No such device
I tried manually setting the speed of the module to 1Gbit full duplex, but to no avail. Is this module just electrically incompatible? Or is this just a missing driver quirk?
The kernel in use is 6.9-main from GitHub - frank-w/BPI-Router-Linux at 6.9-main with latest stable linux 6.9.7 merged into it. Also tried with 6.9.0 as it is in that repo, but that changed nothing either.