So I took a bit of a closer look at the TL-SM410U 2.5G RJ-45 SFP module:
So unsurprisingly there is a RealTek 2.5G PHY (RTL8221B) and a microcontroller connecting to both the PHY and the I2C bus on Moddef2~3.
However, unlike with OEM SFP-2.5G-T module I had no luck accessing the PHY with @ericwoud’s patcheset. The normal MDIO access addresses are not present on the I2C bus:
root@OpenWrt:/# i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x08-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 52 53 54 -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
As expected we got the EEPROM at 0x50:
root@OpenWrt:/# i2cdump 1 0x50
No size specified (using byte-data access)
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1, address 0x50, mode byte
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 03 04 07 00 00 00 00 00 00 40 00 01 1f 00 00 00 ???......@.??...
10: 00 00 00 00 54 50 2d 4c 49 4e 4b 20 20 20 20 20 ....TP-LINK
20: 20 20 20 20 00 00 00 00 54 4c 2d 53 4d 34 31 30 ....TL-SM410
30: 55 20 20 20 20 20 20 20 31 2e 30 20 00 00 00 73 U 1.0 ...s
40: 00 18 00 00 31 32 31 35 34 4a 36 30 30 30 38 36 .?..12154J600086
50: 34 20 20 20 32 31 30 36 30 36 20 20 00 00 00 96 4 210606 ...?
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 53 46 50 2d 54 0c 64 ff ........SFP-T?d.
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~0x53 return only ff
, at least when accessing with read byte operation.
0x54 is a but more interesting and could be for RollBall access (but that doesn’t work, at least not with the 0xffffffff
password hard-coded in the SFP driver in Linux)
root@OpenWrt:/# i2cdump 1 0x54
No size specified (using byte-data access)
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1, address 0x54, mode byte
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
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 ce 00 00 00 00 00 00 ff ........?.......
80: 12 dc 00 ce 00 00 00 00 00 00 86 00 02 01 01 00 ??.?......?.???.
90: 84 ff 00 01 05 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 ................
The microcontroller is a Nuvoton N76E003AT20 which is on i8051 CPU with a bit of flash, RAM, I2C, UART, SPI, PWM, ADC, …
So unless we get some help, are lucky guessing or manage to extract the content of the flash memory of that uC it will be difficult.