orisec-connect
Open-source ESP32 and WIZnet W5500 UPS network card prototype for Ethernet-based monitoring, telemetry, and smart infrastructure integration.
What the Project Does
Eaton / MGE UPS is a power backup system used in server rooms and industrial environments to protect equipment during power outages and enable remote status monitoring.open-network-ms is not an official product released by Eaton, but an open-source hardware project by an individual developer that aims to replace Eaton/MGE UPS Network-MS / Network-M2 cards.
The project was created because official network cards are expensive, and older firmware versions may have security and compatibility issues.
In the project roadmap, the Sushi stage plans to add wired Ethernet and SD card support.
For the Ethernet interface, the project specifically mentions the WIZnet W5500 as a candidate, highlighting the strong library support of the W5xxx series and its SPI interface, which reduces GPIO usage on the ESP32.
The current repository is not a finished replacement card. It contains reverse-engineering notes, hardware investigation material, third-party firmware research, and a NET+OS firmware header parsing tool. The intended direction is to evolve this research into an ESP32-based UPS monitoring card with WIZnet W5500 Ethernet.
The first realistic demo should avoid claiming full UPS compatibility. A better starting point is simulated UPS telemetry served over Ethernet, followed by real serial capture and gradual protocol implementation.
Where WIZnet Fits
The WIZnet product is the W5500. In the proposed architecture, it acts as the wired Ethernet interface between the ESP32-based UPS card and the local network.
This is a strong fit because a UPS network card is normally installed in a fixed location such as a server rack, homelab, equipment closet, or industrial cabinet. Wired Ethernet is more appropriate than Wi-Fi for this type of device because monitoring and alerting should remain stable over long operating periods.
The W5500 also reduces firmware complexity compared with implementing a full software TCP/IP stack on a constrained MCU. Its SPI interface is practical for ESP32 prototypes, and it supports common embedded network features such as HTTP status pages, JSON endpoints, MQTT publishing, and metrics output.
Implementation Notes
The current repository does not yet contain a complete ESP32 firmware implementation, W5500 driver integration, PlatformIO project, or finished W5500 PCB. Therefore, this curation should present the project as a prototype roadmap, not as a working product.
The repository currently includes research and preparation material such as:
README.md— project goals, hardware roadmap, and planned featuresdocs/reverse-engineering/reversing.md— UPS interface and Network-MS firmware notesdocs/spork/spork.md— Spork interposer board documentationdocs/3rd_party/network-ms-firmware/— collected firmware binaries and release notesdocs/3rd_party/network-ms-firmware/processed/— extracted payloads and logstools/netos_firmware_header_parser.linq— C# LINQPad tool for parsing NET+OS firmware headers
Because W5500 firmware code is not yet available, the correct implementation framing is architectural.
A practical first firmware milestone would be:
ESP32 boot
-> initialize SPI
-> initialize W5500 Ethernet
-> obtain IP address by DHCP or static config
-> start HTTP server
-> publish simulated UPS telemetry
-> expose /api/status and /metricsConceptual integration example based on WIZnet Ethernet use:
// Conceptual integration example based on WIZnet Ethernet use
// Not verified from the current repository
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x02, 0x08, 0xDC, 0x12, 0x34, 0x56 };
EthernetServer server(80);
void setup() {
SPI.begin();
Ethernet.begin(mac);
server.begin();
}
void loop() {
EthernetClient client = server.available();
if (client) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: application/json");
client.println();
client.println("{\"ups\":{\"status\":\"online\"},\"network\":{\"interface\":\"W5500\"}}");
client.stop();
}
}This code is not copied from the repository. It only illustrates the kind of first W5500 bring-up demo that would make the project easier to validate before real UPS protocol support is complete.
Practical Tips / Pitfalls
- Treat this as a prototype, not a drop-in Eaton/MGE Network-MS replacement.
- Verify MiniSlot pinout and voltage levels before connecting an ESP32.
- Use level shifting, buffering, and protection on all UPS-side signals.
- Start with simulated UPS telemetry before attempting live UPS control.
- Separate third-party firmware research files from original project source.
- Use Ethernet first for HTTP JSON and Prometheus metrics; add MQTT later.
- Document model-specific behavior because UPS generations may differ.
FAQ
Q: Why use the WIZnet W5500 for this UPS network card prototype?
A: The W5500 provides stable wired Ethernet through SPI and includes hardware TCP/IP offload. That makes it suitable for embedded UPS monitoring where long-running network reliability matters more than wireless convenience.
Q: How does the W5500 connect to the ESP32?
A: The proposed design connects the W5500 to the ESP32 over SPI. The ESP32 handles UPS protocol logic, while the W5500 provides the Ethernet interface for web pages, APIs, MQTT, and monitoring endpoints.
Q: What role does W5500 play in this project?
A: It is the network interface for the UPS monitoring card. It would carry HTTP status pages, JSON telemetry, Prometheus metrics, MQTT messages, and configuration traffic over wired LAN.
Q: Can beginners follow this project?
A: Not as a full UPS hardware project. Beginners can follow the ESP32 + W5500 web telemetry demo, but live UPS integration requires electrical safety knowledge, serial protocol analysis, and careful hardware validation.
Q: How does W5500 compare with Wi-Fi for UPS monitoring?
A: Wi-Fi is easier to install where cabling is unavailable, but a UPS monitoring card is usually installed in a fixed location. W5500 Ethernet is better suited for server racks, homelabs, and infrastructure monitoring because the link is wired and predictable.
Source
Original project link: not provided in the supplied material.
License: not confirmed. Third-party firmware and manuals should be treated as reference material unless redistribution rights are verified.
Reference material: provided WIZnet curation project guide.
Tags
WIZnet, W5500, ESP32, Ethernet, UPS, Eaton, MGE, Network-MS, MQTT, Prometheus, HTTP API, Embedded Monitoring

