Стандартный список регистров SFP I²C

Вот стандартная «карта» регистров SFP, доступных по шине I²C (адрес 0x50) и то, какие из них можно использовать, чтобы «подружить» модуль с вашей системой или изменить его режим работы.
Все адреса приведены в шестнадцатеричном формате (byte-offset). Формат соответствует спецификациям SFF-8472 и SFF-8431 (MSA).

1. Базовая EEPROM-таблица (A0h, 0x50)

АдресДлинаНазначениеЧто можно извлечь/изменить
0x00–0x3F64 БID и базовые константыТип порта, длина волокна, скорость, коды сигналов. Можно читать, чтобы понять, какой «чип» внутри и какие режимы теоретически поддерживает.
0x40–0x478 БДата/номер производстваТолько чтение.
0x48–0x5F24 БVendor / OUI / Part Number / RevТолько чтение.
0x60–0x7F32 БSerial / Date-codeТолько чтение.
0x80–0xFF128 Б«Произвольные» пользовательские данныеЧасть модулей позволяет перезаписывать (пароль или отсутствие WP-вывода).

Вывод: в первых 256 байтах нет управляющих битов, только идентификация. Но именно здесь лежит поле «Compliance» (0x06–0x08) – из него можно узнать, поддерживает ли модуль 1000-BASE-T, 100-BASE-FX и т.д.

2. Диагностический/управляющий EEPROM (A2h, 0x51)

АдресДлинаНазначениеРежим работы / управление
0x00–0x3956 БАварийные пороги (темп., ток, напряж., TX/RX мощность)Чтение/запись (если нет WP). Позволяет «подогнать» диапазон DDM под ваши требования.
0x40–0x478 БВнешние выводы (TX-Disable, TX-Fault, LOS)Биты 0–2: TX_DIS, 3–4: TX_FLT, 5: LOS. Записав «1» в 0x40[0] можно программно выключить передатчик, тем самым «перевести» модуль в «sleep»-режим.
0x48–0x4F8 БRate-Select / Soft-RateДва бита: RS0, RS1. 00 = <1 Г, 01 = 1 Г, 10 = 2 Г, 11 = 2,5/3 Г. Записывая сюда можно форсировать скорость, если внутренний чип поддерживает несколько rate.
0x50–0x5F16 БРезервВ ряде модулей используется для «page select» (0x7F).
0x60–0x7F32 БПароль/ключ доступа к страницамБайты 0x60–0x63 = 32-битный «password». Если записать 0xFFFFFFFF, часть модулей открывает страницы 3–7 и разрешает запись в регистры 0x80–0xFF.
0x80–0xFF128 БVendor-specific или открытая страница 3Сюда выводит внутренние регистры PHY/VCSEL-контроллера. Через них можно:
– переключить copper/fiber (media select)
– включить/выключить автосогласование
– задать master/slave для 1000-BASE-T
– форсировать дуплекс/скорость

Список регистров SFP I²C. Ключевые управляющие байты:

  • 0x40 – Soft-TX-Disable
  • 0x48 – Soft-Rate-Select (RS0/1)
  • 0x60–0x63 – «открывашка» страниц (password)
  • 0x7F – page-select (0x00–0x07) – после успешной авторизации
  • 0x80–0xFF – уже конкретные регистры самого чипа (PHY, драйвера лазера), доступные режимы зависят от прошивки и производителя

3. Список регистров SFP I²C.Практическая последовательность «настройки» модуля

  1. Читаем 0x00–0x08 (A0) – убеждаемся, что модуль действительно умеет нужный режим.
  2. Переходим на A2, читаем 0x40 – смотрим текущее состояние TX_DIS, LOS.
  3. Если нужно «убить» передатчик – пишем 0x01 в 0x40 (Soft-TX-Disable).
  4. Если нужно поменять скорость – пишем новое значение RS0/1 в 0x48.
  5. Если нужен доступ к внутренним регистрам PHY/VCSEL:
    1. Пишем 0xFFFFFFFF в 0x60–0x63 (password),
    2. Пишем 0x03 в 0x7F (page-select),
    3. Работаем с 0x80–0xFF как с обычной памятью – читаем/пишем конкретные биты mode, duplex, master-slave и т.д.
  6. Для 1000-BASE-T SFP (медные) регистры 0x80–0xFF часто повторяют стандартный MDIO-набор 0x00–0x1F того же PHY – просто отображённый на I²C-адрес 0x51.

4. Что нельзя изменить

  • Базовые идентификаторы (Vendor Name, Part Number) – на 90 % модулей защищены железным WP-выводом.
  • Калибровочные константы (0x20–0x39) – тоже часто блокируются.
  • Регистры 0x56 (встроенный PHY-MDIO) – у многих модулей доступ только read-only с CPU-стороны; для записи нужен отдельный MDIO-GPIO или «roll-ball»-протокол.

5. Список регистров SFP I²C. Итого

  • Для «режима работы» важны три области:
    1. 0x40 – «выключатель» передатчика;
    2. 0x48 – выбор скорости;
    3. 0x80–0xFF после unlock – полноценный доступ к регистрам самого чипа, где уже задаётся master/slave, copper/fiber, autoneg-on/off и т.д.
  • Всё остальное – справочная информация, по которой вы понимаете, какие именно возможности реализованы в данном экземпляре SFP.

Как на Cisco 892 посмотреть, какой SFP-модуль установлен

На Cisco 892 (IOS 15.x) SFP-информация берётся из стандартного «IOS-шного» набора команд — никаких специфичных для 892 опций не требуется.
Последовательность, которую достаточно набрать в привилегированном режиме:

  1. Посмотреть, какой именно порт у вас SFP
    (обычно это GigabitEthernet 0/8/0 или GigabitEthernet 0/0/8 — зависит от образа IOS и подмодели WIC/SFP-VAM):
    show ip interface brief
    show inventory
  2. Проверить, опозналась ли оптика и какой у неё PID/серийник:
    show inventory

    Пример вывода:

    NAME: "SFP Module", DESCR: "1000BASE-SX SFP"
    PID: GLC-SX-MMD     , VID: V01  , SN: FNS123456AB
  3. Прочитать полный EEPROM модуля (vendor, part-number, wavelength):
    show idprom interface gigabitethernet 0/8/0

    (если команда отсутствует, переходите к шагу 4)

  4. Посмотреть текущие параметры DOM (мощность Tx/Rx, температуру, напряжение):
    show interface gigabitethernet 0/8/0 transceiver detail

    или коротко:

    show interface transceiver detail
  5. Убедиться, что порт «видит» линк и нет ошибок:
    show interface gigabitethernet 0/8/0
  6. Если модуль не поддерживается Cisco, в логе появится %TRANSCEIVER-3-UNSUPPORTED:
    show logging | include transceiver

Таким набором вы получите:
— тип/PN/серийник (show inventory)
— поля EEPROM (show idprom …)
— цифры DOM (… transceiver detail)

Дополнительных команд для 892 не нужно — всё, что показано выше, присутствует в стандартном IOS 15.x.