summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErnesto Castellotti <mail@ernestocastellotti.it>2022-12-30 23:16:56 +0100
committerGitHub <noreply@github.com>2022-12-30 23:16:56 +0100
commit94a078f454126066ba398bbc853350a46a46cf7a (patch)
tree94fdf62a2fdf7e84e563e49a0c402ff7643fe121
parentStreamlining of customisations: migration of numerous functionalities to the JTD fork and add new functionalities implemented by JTD fork (#75) (diff)
downloadhack-gpon.github.io-94a078f454126066ba398bbc853350a46a46cf7a.tar
hack-gpon.github.io-94a078f454126066ba398bbc853350a46a46cf7a.tar.gz
hack-gpon.github.io-94a078f454126066ba398bbc853350a46a46cf7a.tar.bz2
hack-gpon.github.io-94a078f454126066ba398bbc853350a46a46cf7a.tar.lz
hack-gpon.github.io-94a078f454126066ba398bbc853350a46a46cf7a.tar.xz
hack-gpon.github.io-94a078f454126066ba398bbc853350a46a46cf7a.tar.zst
hack-gpon.github.io-94a078f454126066ba398bbc853350a46a46cf7a.zip
-rw-r--r--_ont/ont-zyxel-pmg3000-d20b.md119
1 files changed, 119 insertions, 0 deletions
diff --git a/_ont/ont-zyxel-pmg3000-d20b.md b/_ont/ont-zyxel-pmg3000-d20b.md
index 2ee63fa..2e75f66 100644
--- a/_ont/ont-zyxel-pmg3000-d20b.md
+++ b/_ont/ont-zyxel-pmg3000-d20b.md
@@ -172,6 +172,125 @@ reboot
Sometimes, under certain circumstances, the Web Gui admin credentials might get changed from the default `admin`/`1234` combination.
To restore the default combination you can try following [this method](https://github.com/xvzf/zyxel-gpon-sfp/issues/6#issuecomment-1065864650).
+## EEPROM (I2C slave simulated EEPROM)
+The Zyxel PMG3000-D20B does not have a physical EEPROM, the Falcon SOC emulates an EEPROM by exposing it on the I2C interface as required by the SFF-8472 specification.
+
+On the I2C interface there will be two memories of 256 bytes each at the addresses `1010000X (A0h)` and `1010001X (A2h)`.
+
+The Zyxel PMG3000-D20B stores the content of the emulated EEPROM1 (A2h) in `/tmp/config/sfp_eeprom1` to restore it after a reboot.
+
+{% include alert.html content="The contents of EEPROM0 (A0h) are not stored anywhere and is regenerated at each boot" alert="Info" icon="svg-info" color="blue" %}
+
+### EEPROM0 layout
+
+| address | size | name | default value | description |
+| --------- | -------- | --------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
+| | | **BASE ID FIELDS (SFF-8472)** | | |
+| 0 | 1 | Identifier | `0x03` (SFP) | Type of transceiver |
+| 1 | 1 | Ext identifier | `0x04` (MOD_DEF 4) | Additional information about the transceiver |
+| 2 | 1 | Connector | `0x01` (SC) | Type of media connector |
+| 3-10 | 8 | Transceiver | `0x04 0x40 0x00 0x02 0x12 0x10 0x00 0x80` (1X LX, 1310TX SMF, 1000BASE-LX, 1200 Mbps) | Code for optical compatibility |
+| 11 | 1 | Encoding | `0x03` (8B/10B) | High speed serial encoding algorithm |
+| 12 | 1 | Signaling Rate, Nominal | `0x0C` (1Gbps) | Nominal signaling rate |
+| 13 | 1 | Rate Identifier | `0x00` (Not used) | Type of rate select functionality |
+| 14 | 1 | Length (SMF,km) | `0x14` (20 km) | Link length supported for single-mode fiber, units of km |
+| 15 | 1 | Length (SMF) | `0xC8` (200 x 100m) | Link length supported for single-mode fiber, units of 100 m |
+| 16 | 1 | Length (50 um, OM2) | `0xFF` (No support) | Link length supported for 50 um OM2 fiber, units of 10 m |
+| 17 | 1 | Length (62.5 um, OM1) | `0xFF` (No support) | Link length supported for 62.5 um OM1 fiber, units of 10 m |
+| 18 | 1 | Length copper cable | `0x00` (No support) | Link length supported for copper or direct attach cable, units of m |
+| 19 | 1 | Length (50 um, OM3) | `0xFF` (No support) | Link length supported for 50 um OM3 fiber, units of 10 m |
+| 20-35 | 16 | Vendor name | `0x4C 0x61 0x6E 0x74 0x69 0x71 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20` (Lantiq) | SFP vendor name (ASCII) |
+| 36 | 1 | Transceiver | `0x00` (No support) | Code for optical compatibility |
+| 37-39 | 3 | Vendor OUI | `0x00 0x1C 0xAD` | SFP vendor IEEE company ID |
+| 40-55 | 16 | Vendor PN | `0x50 0x61 0x72 0x74 0x20 0x4E 0x75 0x6D 0x62 0x65 0x72 0x20 0x20 0x20 0x20 0x20` (Part Number) | Part number provided by SFP vendor (ASCII) |
+| 56-59 | 4 | Vendor rev | `0x30 0x30 0x30 0x30` (0000) | Revision level for part number provided by vendor (ASCII) |
+| 60-61 | 2 | Wavelength | `0x05 0x1E` (1310nm TX) | Laser wavelength |
+| 62 | 1 | Fibre Channel Speed 2 | `0xFF` (No support) | Transceiver's Fibre Channel speed capabilities |
+| 63 | 1 | CC_BASE | | Check code for Base ID Fields (addresses 0 to 62) |
+| | | **EXTENDED ID FIELDS (SFF-8472)** | | |
+| 64-65 | 2 | Options | `0x00 0x1A` (TX DISABLE, TX FAULT, RX LOS) | Indicates which optional transceiver signals are implemented |
+| 66 | 1 | Signaling Rate, max | `0x00` (No specified) | Upper signaling rate margin, units of % |
+| 67 | 1 | Signaling Rate, min | `0x00` (No specified) | Lower signaling rate margin, units of % |
+| 68-83 | 16 | Vendor SN | `0x6E 0x6F 0x20 0x73 0x65 0x72 0x69 0x61 0x6C 0x20 0x6E 0x75 0x6D 0x62 0x65 0x72` (no serial number) | Serial number provided by vendor (ASCII) |
+| 84-91 | 8 | Date code | `0x31 0x33 0x30 0x31 0x30 0x31 0x20 0x20` (130101) | Vendor's manufacturing date code |
+| 92 | 1 | Diagnostic Monitoring Type | `0x6C` (Digital diagnostic, Internally calibrated, Received average power type, address change) | Indicates which type of diagnostic monitoring is implemented |
+| 93 | 1 | Enhanced Options | `0xF0` (Alarm/warning flags, soft TX_DISABLE control, soft TX_FAULT monitoring, soft RX_LOS monitoring) | Indicates which optional enhanced features are implemented |
+| 94 | 1 | SFF-8472 Compliance | `0x05` (Rev 11.0 of SFF-8472) | Indicates which revision of SFF-8472 the transceiver complies with |
+| 95 | 1 | CC_EXT | | Check code for the Extended ID Fields (addresses 64 to 94) |
+| | | **VENDOR SPECIFIC FIELDS** | | |
+| 96-127 | 32 | Vendor data | `0x20 0x20 0x20...` (Not used) | Vendor specifc data (ASCII) |
+| 128-255 | 128 | Reserved | `0x00 0x00 0x00...` | Reserved |
+
+### EEPROM1 layout
+
+| address | size | name | default value | description |
+| --------- | -------- | --------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
+| | | **DIAGNOSTIC AND CONTROL FIELDS** | | |
+| 0-1 | 2 | Temp High Alarm | `0x64 0x00` (100℃) | |
+| 2-3 | 2 | Temp Low Alarm | `0xCE 0x00` (-50℃) | |
+| 4-5 | 2 | Temp High Warning | `0x55 0x00` (85℃) | |
+| 6-7 | 2 | Temp Low Warning | `0xD8 0x00` (-40℃) | |
+| 8-9 | 2 | Voltage High Alarm | `0x8C 0xA0` (3.6V) | |
+| 10-11 | 2 | Voltage Low Alarm | `0x75 0x30` (3.0V) | |
+| 12-13 | 2 | Voltage High Warning | `0x88 0xB8` (3.5V) | |
+| 14-15 | 2 | Voltage Low Warning | `0x79 0x18` (3.1V) | |
+| 16-17 | 2 | Bias High Alarm | `0xAF 0xC8` (90mA) | |
+| 18-19 | 2 | Bias Low Alarm | `0x00 0x00` (0mA) | |
+| 20-21 | 2 | Bias High Warning | `0x88 0xB8` (70mA) | |
+| 22-23 | 2 | Bias Low Warning | `0x00 0x00` (0mA) | |
+| 24-25 | 2 | TX Power High Alarm | `0x7B 0x86` (5dBm) | Value expressed in watts subunits |
+| 26-27 | 2 | TX Power Low Alarm | `0x27 0x10` (0dBm) | Value expressed in watts subunits |
+| 28-29 | 2 | TX Power High Warning | `0x6E 0x17` (4dBm) | Value expressed in watts subunits |
+| 30-31 | 2 | TX Power Low Warning | `0x2B 0xD4` (0.1dBm) | Value expressed in watts subunits |
+| 32-33 | 2 | RX Power High Alarm | `0x07 0xCB` (-7dBm) | Value expressed in watts subunits |
+| 34-35 | 2 | RX Power Low Alarm | `0x00 0x0F` (-28dBm) | Value expressed in watts subunits |
+| 36-37 | 2 | RX Power High Warning | `0x06 0x30` (-8dBm) | Value expressed in watts subunits |
+| 38-39 | 2 | RX Power Low Warning | `0x00 0x14` (-27dBm) | Value expressed in watts subunits |
+| 40-55 | 16 | Reserved | `0x00 0x00 0x00...` | Contains the mac address of the SFP, it could also be empty |
+| 56-59 | 4 | RX_PWR(4) Calibration | `0x00 0x00 0x00 0x00` | 4th order RSSI calibration coefficient |
+| 60-63 | 4 | RX_PWR(3) Calibration | `0x00 0x00 0x00 0x00` | 3rd order RSSI calibration coefficient |
+| 64-67 | 4 | RX_PWR(2) Calibration | `0x00 0x00 0x00 0x00` | 2nd order RSSI calibration coefficient |
+| 68-71 | 4 | RX_PWR(1) Calibration | `0x00 0x00 0x00 0x00` | 1st order RSSI calibration coefficient |
+| 72-75 | 4 | RX_PWR(0) Calibration | `0x00 0x00 0x00 0x00` | 0th order RSSI calibration coefficient |
+| 76-77 | 2 | TX_I(Slope) Calibration | `0x00 0x00` | Slope for Bias calibration |
+| 78-79 | 2 | TX_I(Offset) Calibration | `0x00 0x00` | Offset for Bias calibration |
+| 80-81 | 2 | TX_PWR(Slope) Calibration | `0x00 0x00` | Slope for TX Power calibration |
+| 82-83 | 2 | TX_PWR(Offset) Calibration | `0x00 0x00` | Offset for TX Power calibration |
+| 84-85 | 2 | T(Slope) Calibration | `0x00 0x00` | Slope for Temperature calibration |
+| 86-87 | 2 | T(Offset) Calibration | `0x00 0x00` | Offset for Temperature calibration, in units of 256ths °C |
+| 88-89 | 2 | V(Slope) Calibration | `0x00 0x00` | Slope for VCC calibration |
+| 90-91 | 2 | V(Offset) Calibration | `0x00 0x00` | Offset for VCC calibration |
+| 92-94 | 3 | Reserved | `0x00 0x00 0x00` | Reserved |
+| 95 | 1 | CC_DMI | | Check code for Base Diagnostic Fields (addresses 0 to 94) |
+| 96 | 1 | Temperature MSB | | Internally measured module temperature |
+| 97 | 1 | Temperature LSB | | |
+| 98 | 1 | Vcc MSB | | Internally measured supply voltage in transceiver |
+| 99 | 1 | Vcc LSB | | |
+| 100 | 1 | TX Bias MSB | | Internally measured TX Bias Current |
+| 101 | 1 | TX Bias LSB | | |
+| 102 | 1 | TX Power MSB | | Measured TX output power |
+| 103 | 1 | TX Power LSB | | |
+| 104 | 1 | RX Power MSB | | Measured RX input power |
+| 105 | 1 | RX Power LSB | | |
+| 106-109 | 4 | Optional Diagnostics | `0x00 0x00 0x00 0x00` (No support) | Monitor Data for Optional Laser temperature and TEC current |
+| 110 | 1 | Status/Control | `0x02` (Digital RX LOS) | Optional Status and Control Bits |
+| 111 | 1 | Reserved | `0x00` | Reserved |
+| 112-113 | 2 | Alarm Flags | `0x01 0x40` | Diagnostic Alarm Flag Status Bits |
+| 114 | 1 | Tx Input EQ control | `0x00` (No support) | Tx Input equalization level control |
+| 115 | 1 | Rx Out Emphasis control | `0x00` (No support) | Rx Output emphasis level control |
+| 116-117 | 2 | Warning Flags | `0x01 0x40` | Diagnostic Warning Flag Status Bits |
+| 118-119 | 2 | Ext Status/Control | `0x00 0x00` (No support) | Extended module control and status bytes |
+| | | **GENERAL USE FIELDS** | | |
+| 120-126 | 7 | Vendor Specific | `0x00 0x00 0x00 0x00 0x00 0x00 0x00` | Vendor specific memory addresses |
+| 127 | 1 | Table Select | `0x00` | Optional Page Select |
+| | | **USER WRITABLE EEPROM** | | |
+| 128-232 | 105 | Reserved | `0x00 0x00 0x00...` | Reserved |
+| 233-240 | 8 | GPON SN | Unique in each SFP | GPON Serial Number (ME 256) |
+| 241-247 | 7 | Reserved | `0x00 0x00 0x00...` | Reserved |
+| 248-255 | 8 | Vendor Control | `0x00 0x00 0x00...` (Not used) | Vendor specific control functions |
+
+{% include alert.html content="For more information, see the SFF-8472 Rev 11.0 specification." alert="Info" icon="svg-info" color="blue" %}
+
# Known Bugs
- [Not working with Broadcom BCM57810S](https://github.com/xvzf/zyxel-gpon-sfp/issues/10)
- Issue on IPv6 discovery. But we are not sure if is a edge case of a particular ISP or not