PoE management
On RTL8380 and RTL8390 switches based on Realtek's development boards, power over ethernet is usually not managed directly by the SoC itself, but by an intermediate microcontroller. This microcontroller in turn talks to a PoE power sourcing equipment (PSE) controller chip. The Realtek platform supports both a Broadcom based, and a Microsemi based implementation. A daemon running on the OS will poll the controller to manage the PoE ports and inform about their status.
The PSE controllers will always be in the PoE power domain, which needs to be isolated from the SoC to protect it from external PoE faults. This means that the PoE controller will talk to either the SoC or PSE controller through a pair of optocouplers or isolators. Be aware of this when probing the control signals on the PoE hardware.
Hardware combinations
Vendor | Device | SoC | Management IC | Management interface | PSE controller | PoE FW version | PoE standard support |
---|---|---|---|---|---|---|---|
Cisco | SF220-24P | RTL8332M | Microsemi PD69100 | PD69108 x3 | n/a | 802.3at | |
Cisco | SG220-26P | RTL8382M | Microsemi PD69100 | PD69108 x3 | n/a | 802.3at | |
D-Link | DGS-1210-10P F1 | RTL8380M | Nuvoton M0516LDE | UART | BMC59121 | 1.8.2.1 | 802.3at |
D-Link | DGS-1210-28P | RTL8382M | Nuvoton M0516LDE | UART | BCM59121 x3 | ? | 802.3at |
D-Link | DGS-1210-28MP | RTL8382M | Nuvoton M0516LDE | UART | BCM59121 x3 | ? | 802.3at |
Edge-CorE | ECS2100-10P | RTL8380M | Microchip PD69200 | Microchip PD69208M | n/a | 802.3at | |
Engenius | EGS7228P | RTL8382M | STMicro STM32F100C8 | BCM59111 x6 | 802.3at | ||
Engenius | EWS2910P | RTL8380M | STMicro STM32F100C8 | BCM59111 x2 | ? | 802.3at | |
Engenius | EWS52912FP | RTL8380M | Nuvoton M0516LDE | BCM59121 | ? | 802.3at | |
Hasivo | S1100WP-8GT_SE | RTL9303 | - | HS104PTI x2 | n/a | 802.3af/at/bt | |
HPE | 1920-8G-PoE+ (JG922A) | RTL8380M | Nuvoton M0516LDE | BCM59121 | ? | 802.3at | |
Netgear | GS110TPv3 | RTL8380M | Nuvoton M0516LDN | BCM59121 | ? | 802.3at | |
Netgear | GS110TPP v1 | RTL8380M | Nuvoton M0516 | UART | BCM59121 | 1.8.0.5 | 802.3at |
Netgear | GS310TP | RTL8380M | Nuvoton M0516LDN | UART | BCM59121 | 802.3at | |
Netgear | GS710TUP | Nuvoton M0518 | BMC59121 ×2 | 4.1.0.1 | 802.3bt | ||
Netgear | GS728TP v2 | RTL8391M | Nuvoton M0516LDN | I2C | BCM59121 x3 | 2.0.2.7 | 802.3at |
TP-Link | T1600G-52PS | RTL8393 | - | TI TPS23861PW ×12 | n/a | 802.3at | |
TP-Link | TL-SG2008P | RTL8380M | - | I2C | TI TPS23861PW | n/a | 802.3at |
TP-Link | TL-SG2210MP | RTL8380 | - | I2C | ChipUP XS2184 | n/a | 802.3at |
TP-Link | TL-SG2210P v5 | RTL8380 | - | I2C | MonolithicPower MP3924 | n/a | 802.3at |
Trendnet | TPE-082WS | RTL8380M | Nuvoton M0516LDE | UART | BCM59121 | 802.3at | |
Trendnet | TPE-224WS | RTL8332M | STMicro STM32F100C8 | BCM59111 x6 | 802.3at | ||
Trendnet | TPE-1620WS | RTL8382M | Nuvoton M0516LDE | UART | BCM59121 ×2 | 802.3at | |
Trendnet | TPE-2840WS | RTL8382M | Nuvoton M0516LDE | UART | BCM59121 ×3 | 802.3at | |
Ubiquiti | Unifi Switch Lite 16 PoE | RTL8382M | Nuvoton M0516 | I2C | BCM59121 | 3.0.0.2 | 802.3at |
Whitelabel | 24-port POE+, 4 SFP+ | RTl9301 | Holtek HT32F50231 | UART | ??? x3 | 802.3af 802.3at | |
Zyxel | GS1900-8HP v1 | RTL8380M | STMicro STM32F100C8 | UART | BCM59111 x2 | 802.3at | |
Zyxel | GS1900-10HP | RTL8380M | STMicro STM32F100C8 | UART | BCM59121 | 1.6.0.4 (BCM59121), 1.0.0.1 (BCM59101) | 802.3at |
Zyxel | GS1900-24EP | RTL8382M | Nuvoton NUC029ZAN | Realtek RTL8238 x2 | 802.3bt | ||
Zyxel | GS1900-24HP | RTL8382M | STMicro STM32F100C8 | UART | BCM59111 x6 | 802.3at | |
Zyxel | GS1920-24HP | STM 32F100 | I2C | BMC59111 ×6 | 802.3at | ||
Zyxel | GS2210-8HP | RTL8392 | STMicro STM32F100C8 | BCM59111 x2 | 802.3at |
Broadcom platform
On the Broadcom platform, an intermediate microcontroller is used to managed a Broadcom PSE controller, like the BCM59121. Although more than one microcontroller type is used over different products, they all appear to use the same serial protocol. The high level control and status commands between the microcontroller and SoC use the SoC's secondary UART. The UART connection between the SoC and microcontroller typically uses a 19200 baud, 8n1 connection. Communication between the microcontroller and the Broadcom chip uses Broadcom Serial Control (BSC), an I2C dialect.
See Broadcom PoE control protocol for more details.
Microchip/Microsemi platform
Like the Broadcom platform, the Microchip PoE platform also uses a combination of a SoC-PSE bridge as controller, and PSE management ICs to control the power to the PoE devices.
Documentation
- Microsemi Serial control protocol between SoC and management IC
- PD69108 PSE controller: Product page
- PD69200 PoE PSE Controller: Datasheet
- PD69208T4/PD69204T4/PD69208M PSE Manager: Datasheet
Hasivo
HS104PTI/HS104PBI
Hasivo have a pair of chips (HS104PTI/HS104PBI) that allow for 802.3af/at/bt support for up to 4 channels of PoE. They are configured / monitored via I2C.
Texas Instruments
Until now, only one switch series was based TI's PSE controllers. These can be controlled directly by the SoC, or (according to TI's product pages) by an intermediate MCU.
Realtek platform
Realtek now also produces the RTL8238 PSE chip, paired with a management MCU. The GS1900-24EP uses this device, and the source archive contains some code referring to it. From the headers, it appears to mirror the Broadcom platform's interface, probably to provide a uniform interface to the controlling SoC for both PSE options.
OpenWrt Support for PoE
If your switch is based on the Broadcom PoE platform, you will need the rtl83xx-poe package in order to use PoE. This is currently available from blogic's staging tree. Note that the other PoE platforms are not supported by this package.
Either compile the package separately and install it on the switch after booting up OpenWrt, or copy over the files in the files sub-directory over into the base-files directory of your OpenWrt git repository from which you build the switch firmware.
Information on how to configure is here: https://forum.openwrt.org/t/support-for-rtl838x-based-managed-switches/57875/284.
Please note this Lua implementation is no longer receiving updates and the new C code is in the works: https://patchwork.ozlabs.org/project/openwrt/patch/20210511152243.1167160-1-john@phrozen.org/.