CodingBox Q&A Ask question

Установка SFP в порты 24-28 DGS-1210-28 на OpenWrt ничего не меняет, линк держит медь

Asked Active Viewed 96 AI translation from English
3

Домашний коммутатор: D-Link DGS-1210-28 ревизии F1, который я перепрошил на OpenWrt, чтобы перестать бороться со стоковым веб-интерфейсом. Всё работает, кроме последних четырёх портов, тех самых комбо медь/оптика.

  • Коммутатор: D-Link DGS-1210-28 rev F1
  • Прошивка: OpenWrt 21.02.0-rc3 (r16172-2aba3e9784)
  • Порты 24-28: комбо RJ45/SFP за PHY RTL8214FC (остальные сидят на RTL8218B/RTL8218D)
  • Модуль: generic 1G оптика, которая нормально линкуется в другом коммутаторе

Что бы я ни поставил в слот, порт ведёт себя как обычный порт RJ45. Медная сторона остаётся выбранной, а оптическая никогда не поднимается:

# ethtool lan28
        Supported ports: [ TP MII FIBRE ]
        Port: MII
        Link detected: yes

Лог загрузки действительно показывает эти порты привязанными к драйверу комбо-PHY RTL8214FC, а этот драйвер должен знать про SFP, так что аппаратная сторона выглядит правильно.

Что уже пробовал:

  • переустановил модуль, затем попробовал второй
  • вынул медный кабель из порта полностью, на случай если это вопрос приоритета - порт остаётся на меди
  • перенёс модуль на другой коммутатор, где он линкуется

На вендорской прошивке этот коммутатор раньше сам переключал порт на оптику в момент установки модуля. Есть ли способ выбрать среду на этой сборке, или комбо-порты просто пока непригодны к использованию?

Comments 3

Accepted answer

Ничего не сломано, в realtek-таргете просто нет автоматического выбора среды. RTL8214FC - это комбо-PHY с медной половиной и оптической половиной, и на этой прошивке он остаётся на стороне MII/медь, пока что-то не скажет ему иначе. Установка модуля ничего не значит для драйвера, потому что переключение никто не реализовал.

Выбираете среду сами из пространства пользователя:

ethtool -s lan28 port fibre

После этого слот становится активной средой на этом порту, и оптика поднимается. Чтобы вернуть порт на половину RJ45:

ethtool -s lan28 port tp

Тот же вызов для каждого из остальных комбо-портов, по одному на порт.

То, что вы помните по стоковой прошивке - это был ограниченный автовыбор: он смотрел на обе половины, и медь побеждала всякий раз, когда линк был на обеих. Поэтому это и читается как регрессия, но это не она - функция для этого таргета просто никогда не была написана.

Два предостережения. Это только через CLI, в LuCI это не выведено, и люди просят это уже давно. И ничто в этой сборке не выбирает среду за вас само, так что если хотите оптику после каждой загрузки, убедитесь, что этот вызов реально выполняется.

7 South KoreanetrunnerKR Show original (English) AI translation

Это оно, спасибо. Один вызов, и порт переключился:

# ethtool -s lan28 port fibre
# ethtool lan28 | grep Port:
        Port: FIBRE

Оптика поднялась сразу же, а половина RJ45 замолчала. Сделал то же самое для остальных трёх комбо-портов и положил четыре вызова в стартап-скрипт, поскольку, как вы сказали, ничего не помнит выбор.

Слегка раздражает, что переключатель на порт должен жить в шелл-скрипте, но порты теперь пригодны к использованию, а это то, что мне и было нужно.

4 VietnamtxhawkVN Show original (English) AI translation

Стоит знать, прежде чем строить мониторинг поверх этих портов: состояние линка на стороне SFP этих плат не всегда заслуживает доверия. На DGS-1210-10P в device tree вообще нет узлов sfp, так что ядро никогда не получает module-present или loss-of-signal, и MAC отчитывается о постоянной несущей - ip link печатает <BROADCAST,MULTICAST,UP,LOWER_UP> для lan9 с пустым слотом, и остаётся up с установленным медным SFP GLC-T-CO без патч-корда в нём. DGS-1210-10MP так себя не ведёт, потому что в его DTS узлы уже есть.

Исправление там было изменением device tree по образцу 10MP и Zyxel GS1900-10HP: шина i2c-gpio на каждый слот, узел sfp на каждый слот с los-gpio, mod-def0-gpio и tx-disable-gpio, sfp = <&sfp0>, на который ссылается порт, phy-mode = "1000base-x" и managed = "in-band-status". С этим на месте слот опрашивается по I2C, и несущая наконец-то отслеживает реальный оптический сигнал.

На стоковых образах того периода поведение сохраняется, так что если что-то у вас следит за несущей на комбо- или SFP-порту, проверьте, что она реально падает, когда вы вынимаете оптику.

3 South Korealinkadmin79KR Show original (English) AI translation
Log in to comment. Log in