This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| projects:homelab:sfp_gpon_onu:eeprom_editing [2025/03/29 07:31] – [Steps] i2cset param note Andrew Yong | projects:homelab:sfp_gpon_onu:eeprom_editing [2026/03/21 17:21] (current) – clarification on 1000BASE-X linux limitation Andrew Yong | ||
|---|---|---|---|
| Line 10: | Line 10: | ||
| * SFP port(s) (any speed) with I2C bus | * SFP port(s) (any speed) with I2C bus | ||
| * Packages '' | * Packages '' | ||
| - | * [[https:// | ||
| ==== Steps ==== | ==== Steps ==== | ||
| - | - On OpenWrt | + | - SSH into OpenWrt |
| - | - Dump EEPROM:\\ '' | + | - Run one of the following commands to determine which I2C bus your SFP is on |
| - | - On Windows desktop | + | * If your router has **a single SFP**: |
| - | - Copy EEPROM to Windows desktop (run in Windows Terminal):\\ '' | + | - '' |
| - | - Open sfp.bin in SFPTotal Wizard | + | - '' |
| - | - Set the bits in SFPTotal Wizard according to the EEPROM Bits table below | + | |
| - | - Take note of the checksum in 0x3F (first green byte) | + | |
| - | - On OpenWrt | + | b=${bus## |
| - | - Set the SFP EEPROM bits in OpenWrt according to the EEPROM Bits table below (you will need to adjust '' | + | if i2cdetect -y -r $b 2>/ |
| - | * '' | + | vendor="" |
| - | | + | for reg in $(seq 20 35); do |
| - | | + | vendor=" |
| - | | + | done |
| - | - Physically re-seat the SFP | + | serial="" |
| - | - Verify the new speeds are detected:\\ '' | + | for reg in $(seq 68 83); do |
| + | serial=" | ||
| + | | ||
| + | echo "" | ||
| + | echo "Bus: $b" | ||
| + | echo " | ||
| + | echo " | ||
| + | | ||
| + | done</ | ||
| + | | ||
| + | - '' | ||
| + | - Run the following commands to set the SFP EEPROM bits in OpenWrt according to the EEPROM Bits table below | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | - Physically re-seat the SFP | ||
| + | - Verify the new speeds are detected:\\ '' | ||
| Supported link modes: | Supported link modes: | ||
| 1000baseX/ | 1000baseX/ | ||
| Line 35: | Line 51: | ||
| ==== EEPROM Bits ==== | ==== EEPROM Bits ==== | ||
| - | ^ Address ^ Old Setting | + | ^ Address |
| - | | '' | + | | '' |
| - | | '' | + | | '' |
| - | | '' | + | | '' |
| - | | '' | + | | '' |
| + | | '' | ||
| + | ==== EEPROM Bits (XG-PON/ | ||
| + | > ⚠️ **Warning: | ||
| + | |||
| + | Notes: | ||
| + | |||
| + | * Due to Linux kernel limitations, | ||
| + | * You do not have to update the 0x5F checksum (CC_EXT) unless you edit addresses '' | ||
| + | |||
| + | === Fiber Rates (No PHY) === | ||
| + | |||
| + | ^ Address | ||
| + | ^ ::: ^ ::: ^ 1000BASE-X | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | Notes: | ||
| + | |||
| + | * Set '' | ||
| + | |||
| + | === Copper Rates (PHY Emulation Required) === | ||
| + | |||
| + | ^ Address | ||
| + | ^ ::: ^ ::: ^ 2500BASE-T | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||