Стандартный список регистров SFP I²C
Вот стандартная «карта» регистров SFP, доступных по шине I²C (адрес 0x50) и то, какие из них можно использовать, чтобы «подружить» модуль с вашей системой или изменить его режим работы.
Все адреса приведены в шестнадцатеричном формате (byte-offset). Формат соответствует спецификациям SFF-8472 и SFF-8431 (MSA).
1. Базовая EEPROM-таблица (A0h, 0x50)
| Адрес | Длина | Назначение | Что можно извлечь/изменить |
|---|---|---|---|
| 0x00–0x3F | 64 Б | ID и базовые константы | Тип порта, длина волокна, скорость, коды сигналов. Можно читать, чтобы понять, какой «чип» внутри и какие режимы теоретически поддерживает. |
| 0x40–0x47 | 8 Б | Дата/номер производства | Только чтение. |
| 0x48–0x5F | 24 Б | Vendor / OUI / Part Number / Rev | Только чтение. |
| 0x60–0x7F | 32 Б | Serial / Date-code | Только чтение. |
| 0x80–0xFF | 128 Б | «Произвольные» пользовательские данные | Часть модулей позволяет перезаписывать (пароль или отсутствие WP-вывода). |
Вывод: в первых 256 байтах нет управляющих битов, только идентификация. Но именно здесь лежит поле «Compliance» (0x06–0x08) – из него можно узнать, поддерживает ли модуль 1000-BASE-T, 100-BASE-FX и т.д.
2. Диагностический/управляющий EEPROM (A2h, 0x51)
| Адрес | Длина | Назначение | Режим работы / управление |
|---|---|---|---|
| 0x00–0x39 | 56 Б | Аварийные пороги (темп., ток, напряж., TX/RX мощность) | Чтение/запись (если нет WP). Позволяет «подогнать» диапазон DDM под ваши требования. |
| 0x40–0x47 | 8 Б | Внешние выводы (TX-Disable, TX-Fault, LOS) | Биты 0–2: TX_DIS, 3–4: TX_FLT, 5: LOS. Записав «1» в 0x40[0] можно программно выключить передатчик, тем самым «перевести» модуль в «sleep»-режим. |
| 0x48–0x4F | 8 Б | Rate-Select / Soft-Rate | Два бита: RS0, RS1. 00 = <1 Г, 01 = 1 Г, 10 = 2 Г, 11 = 2,5/3 Г. Записывая сюда можно форсировать скорость, если внутренний чип поддерживает несколько rate. |
| 0x50–0x5F | 16 Б | Резерв | В ряде модулей используется для «page select» (0x7F). |
| 0x60–0x7F | 32 Б | Пароль/ключ доступа к страницам | Байты 0x60–0x63 = 32-битный «password». Если записать 0xFFFFFFFF, часть модулей открывает страницы 3–7 и разрешает запись в регистры 0x80–0xFF. |
| 0x80–0xFF | 128 Б | 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.Практическая последовательность «настройки» модуля
- Читаем 0x00–0x08 (A0) – убеждаемся, что модуль действительно умеет нужный режим.
- Переходим на A2, читаем 0x40 – смотрим текущее состояние TX_DIS, LOS.
- Если нужно «убить» передатчик – пишем 0x01 в 0x40 (Soft-TX-Disable).
- Если нужно поменять скорость – пишем новое значение RS0/1 в 0x48.
- Если нужен доступ к внутренним регистрам PHY/VCSEL:
- Пишем 0xFFFFFFFF в 0x60–0x63 (password),
- Пишем 0x03 в 0x7F (page-select),
- Работаем с 0x80–0xFF как с обычной памятью – читаем/пишем конкретные биты mode, duplex, master-slave и т.д.
- Для 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. Итого
- Для «режима работы» важны три области:
- 0x40 – «выключатель» передатчика;
- 0x48 – выбор скорости;
- 0x80–0xFF после unlock – полноценный доступ к регистрам самого чипа, где уже задаётся master/slave, copper/fiber, autoneg-on/off и т.д.
- Всё остальное – справочная информация, по которой вы понимаете, какие именно возможности реализованы в данном экземпляре SFP.
Как на Cisco 892 посмотреть, какой SFP-модуль установлен
На Cisco 892 (IOS 15.x) SFP-информация берётся из стандартного «IOS-шного» набора команд — никаких специфичных для 892 опций не требуется.
Последовательность, которую достаточно набрать в привилегированном режиме:
- Посмотреть, какой именно порт у вас SFP
(обычно это GigabitEthernet 0/8/0 или GigabitEthernet 0/0/8 — зависит от образа IOS и подмодели WIC/SFP-VAM):show ip interface brief show inventory
- Проверить, опозналась ли оптика и какой у неё PID/серийник:
show inventory
Пример вывода:
NAME: "SFP Module", DESCR: "1000BASE-SX SFP" PID: GLC-SX-MMD , VID: V01 , SN: FNS123456AB
- Прочитать полный EEPROM модуля (vendor, part-number, wavelength):
show idprom interface gigabitethernet 0/8/0
(если команда отсутствует, переходите к шагу 4)
- Посмотреть текущие параметры DOM (мощность Tx/Rx, температуру, напряжение):
show interface gigabitethernet 0/8/0 transceiver detail
или коротко:
show interface transceiver detail
- Убедиться, что порт «видит» линк и нет ошибок:
show interface gigabitethernet 0/8/0
- Если модуль не поддерживается Cisco, в логе появится %TRANSCEIVER-3-UNSUPPORTED:
show logging | include transceiver
Таким набором вы получите:
— тип/PN/серийник (show inventory)
— поля EEPROM (show idprom …)
— цифры DOM (… transceiver detail)
Дополнительных команд для 892 не нужно — всё, что показано выше, присутствует в стандартном IOS 15.x.
