Skip to the content
2 layers51.5 × 92 mmEcoport bridge v1, the printed circuit board in 3D

Ecoport bridge v1

jrowe88/ecoport-bridge1

CTA-2045 (EcoPort) bridge for a Rinnai REHP65 heat pump water heater

Size
51.5 × 92 mm
Copper layers
2
Thickness
1.6 mm
Parts
74
Nets
54
Pads
244
Tracks, vias
428, 167
Pours
209
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
28 Sep 2026
Updated
26 Oct 2026

Overview

Ecoport bridge v1 is an open-source printed circuit board by jrowe88, from the jrowe88/ecoport-bridge repository on GitHub, published under the AGPL-3.0 licence. It is a 2-layer board of 51.5 × 92 mm with 74 parts on 54 nets, routed with 428 tracks and 167 vias.

It is built around the ESP32-C6-WROOM-1-N8, IRM-05-5 and SP3485EET(UMW), with the USBLC6-2SC6, SN74LV1T34DCKR and TLV75733PDBVR-MS among its other parts. Its parts include 16 capacitors, 12 resistors, 8 ICs, 7 connectors and 3 diodes. It belongs with the interfaces and adapters boards and the ESP32 and RISC-V boards of this library.

Main components

12

README

README.md

EcoPort Bridge

EcoPort Bridge is a hobby reverse-engineering and hardware project to build a communication bridge for appliances using the CTA-2045 "EcoPort" interface (AC-form-factor UCM connector, RS-485 @ 19,200 baud) — starting with a Rinnai REHP65 heat pump water heater (CTA-2045-B / SGD, connector CN50, physical connector part 420B2V12FL0).

The goal is to expose the appliance's CTA-2045 data (tank temperature, setpoint, operating state, energy, demand-response/shed status, faults, etc.) to home automation systems (MQTT, Matter, Home Assistant) via a small ESP32-class bridge device, built on top of a Python implementation of the CTA-2045 protocol.

Exploded view of the rev-A bridge: bottom plate with the PCB, and the lid

Rev A: ESP32-C6 board with an on-board mains supply, plugged straight into the heater's CTA-2045 connector. See hardware/rev-a for the board and hardware/enclosure for the 3D-printed case.

Design principles

  • Generic CTA-2045 core, separate from appliance-specific logic. The cta2045 layer implements the protocol (framing, messages, CRC, link, Basic DR / Intermediate messages). Appliance-specific behavior (e.g. Rinnai REHP65 quirks and capability mappings) lives under appliances/rinnai (or a Rinnai crate in firmware) so other CTA-2045/EcoPort appliances can be supported later without untangling Rinnai assumptions from the protocol implementation.
  • Protocol reverse engineering is kept separate from electrical reverse engineering. Most of the protocol can be worked out via the EPRI UCM simulator without ever touching the heater.
  • Facts vs. hypotheses are recorded separately in docs/protocol.md and per-capture notes, so reverse-engineering guesses don't quietly turn into "the spec" later.
  • Captures are first-class project artifacts. Raw captures + notes live under captures/ as a reproducible dataset, not a pile of Wireshark screenshots.

Architecture

text
                   ┌───────────────────────────────┐
                   │       Your application        │
                   │ Home Assistant / MQTT / etc.  │
                   └───────────────┬───────────────┘
                                   │
                         Python CTA-2045 API
                                   │
                   ┌───────────────▼───────────────┐
                   │       CTA-2045 protocol       │
                   │ link + Basic DR + Intermediate│
                   └───────────────┬───────────────┘
                                   │
                              RS-485 UART
                                   │
                   ┌───────────────▼───────────────┐
                   │       Isolated RS-485         │
                   │       transceiver             │
                   └───────────────┬───────────────┘
                                   │
                         CTA-2045 AC connector
                                   │
                   ┌───────────────▼───────────────┐
                   │       Rinnai REHP65           │
                   │          SGD / CN50           │
                   └───────────────────────────────┘

Hardware notes (confirmed)

  • Physical connector: 420B2V12FL0 (EPRI's "UCM Connector")
  • Only pins 1 (D-), 7 (D+), 8 (GND) are used; all other pins are left unconnected.
  • EPRI documents 19,200 baud, 8 data bits, 1 stop bit, no parity.
  • This is a mains-adjacent AC-form-factor interface — treat it with a deliberate electrical isolation strategy (isolated USB/RS-485 adapter).

See docs/hardware.md and docs/protocol.md for details, and captures/ for recorded traffic.

Repository layout

text
ecoport-bridge/
│
├── README.md
├── LICENSE             # AGPL-3.0 (software); hardware/LICENSE is CERN-OHL-S-2.0
├── CONTRIBUTING.md
│
├── docs/                 # architecture, hardware, protocol, HOWTOs
├── hardware/             # PCB revisions + 3D-printed enclosure
├── firmware/             # ESP32-C6 bridge firmware (Rust on ESP-IDF)
├── python/               # ecoport Python package (protocol + tooling)
├── tools/                # CLI tools: sniff, decode, query, interactive
├── captures/             # recorded protocol traffic + notes (EPRI + Rinnai)
├── test/                 # cross-cutting test fixtures/integration tests
└── scripts/              # dev setup / flashing helpers

Status

Early planning / hardware on order. See docs/reverse-engineering.md and captures/ as the project progresses.

Documentation

License

Both licenses are copyleft: you can use, modify and share this project, and anything you distribute that's based on it has to stay under the same terms.

  • Software (firmware/, python/, tools/, scripts/, test/) — GNU Affero General Public License v3.0 (AGPL-3.0-only), see LICENSE.
  • Hardware (hardware/: KiCad board, footprints, fab outputs, enclosure CAD) — CERN Open Hardware Licence v2, Strongly Reciprocal (CERN-OHL-S-2.0), see hardware/LICENSE.
  • Docs and captures — AGPL-3.0, same as the software.

Source location for the hardware (CERN-OHL-S §1.9): https://github.com/jrowe88/ecoport-bridge. It is also printed on the board.

Parts

74
QtyValueFootprintReferences
90.1µFCapacitor_SMD:C_0603_1608MetricC2, C5, C7, C8, C9, C12, C13, C14, C15
410kΩResistor_SMD:R_0603_1608MetricR4, R5, R9, R10
41µFCapacitor_SMD:C_0603_1608MetricC3, C4, C10, C16
322µFCapacitor_SMD:C_1206_3216MetricC1, C6, C11
2390ΩResistor_SMD:R_0603_1608MetricR2, R3
24.7kΩResistor_SMD:R_0603_1608MetricR6, R7
25.1kΩResistor_SMD:R_0603_1608MetricR11, R12
2Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2, J5
2GNDCustom:TestPoint_Keystone_5000-5004_MiniatureTP1, TP2
2LOGOCustom:electrical_hazardG***, G***
2SK6812LED_SMD:LED_SK6812_PLCC4_5.0x5.0mm_P3.2mmD2, D3
2USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U4, U7
1120ΩResistor_SMD:R_1206_3216MetricR1
13V3Custom:TestPoint_Keystone_5000-5004_MiniatureTP4
1420B2V12FL0Custom:Onshore_Header_2x06_P4.20mm_VerticalJ1
1470ΩResistor_SMD:R_0603_1608MetricR8
15VCustom:TestPoint_Keystone_5000-5004_MiniatureTP3
1B3B-PH-K-SCustom:JST_B3B-PH-K-SJ7
1BM04B-SRSS-TBCustom:CONN4_BM04B-SRSS_JSTJ3
1BOOTCustom:SW_TS04-66-50-BK-260-SMTSW2
1BOOTCustom:TestPoint_Pad_D2.0mmTP11
1Connector WireCustom:Wire_Solder_1x03_P2.54mm_ReliefJ6
1D+Custom:TestPoint_Pad_D2.0mmTP5
1D-Custom:TestPoint_Pad_D2.0mmTP6
1DECustom:TestPoint_Pad_D2.0mmTP9
1ENCustom:TestPoint_Pad_D2.0mmTP10
1ESP32-C6-WROOM-1-N8Custom:XCVR_ESP32-C6-WROOM-1-N8U6
1EcoPort_Bridge_MarkingCustom:EcoPort_Bridge_MarkingG***
1IO23Custom:TestPoint_Keystone_5000-5004_MiniatureTP14
1IRM-05-5Converter_ACDC:Converter_ACDC_MeanWell_IRM-05-xx_THTU1
1Kobee Studiokobee-studio-6AD3E735kobee-studio-6AD3E735
1Kobee Studiokobee-studio-6AD3D2C7kobee-studio-6AD3D2C7
1LM66100DCKRPackage_TO_SOT_SMD:SOT-363_SC-70-6U8
1RESETCustom:SW_TS04-66-50-BK-260-SMTSW1
1RX0Custom:TestPoint_Pad_D2.0mmTP13
1RX1Custom:TestPoint_Pad_D2.0mmTP8
1SF-2410SP100W-2Custom:FUSC6125X236NF1
1SM712_SOT23Package_TO_SOT_SMD:SOT-23D1
1SN74LV1T34DCKRCustom:SC-70-5_L2.1-W1.3-P0.65-LS2.1-BRU5
1SP3485EETCustom:TSSOP-8_L4.4-W3.0-P0.65-LS6.4-BLU3
1TLV75733PDBVRPackage_TO_SOT_SMD:SOT-23-5U2
1TX0Custom:TestPoint_Pad_D2.0mmTP12
1TX1Custom:TestPoint_Pad_D2.0mmTP7
1USB4085-GF-ACustom:USC-C-SMD_USB4085-GF-AJ4

The 68 most common of 74 parts.

Similar boards

  • 4 layers130 × 130 mmPCBDrone, the printed circuit board in 3D

    PCBDrone

    AriB2003/aero

    Olin Aero

    90 parts1
  • 2 layers33 × 128.5 mmEncoder, the printed circuit board in 3D

    Encoder

    cukier/LoraProgrammer

    Firmware ESP32 (ESP-IDF) para programar e configurar módulos de rádio LoRa, expondo a configuração através de um servidor HTTP em Wi-Fi (SoftAP/STA), acessível também via mDNS (http:// .local/).

    84 partsMIT
  • 2 layers119.9 × 57 mm1v2boost, the printed circuit board in 3D

    1v2boost

    benkrasnow/1v2-boost-converter

    Schematics and PCB layout for a boost converter 0.9V minimum input, 30A maximum input current

    77 parts7MIT
  • 4 layers290 × 215 mmPlacard, the printed circuit board in 3D

    Placard

    tocksin/placard

    PLA computer

    187 parts2AGPL-3.0
  • 2 layers158.3 × 110 mmLathrum thesis, the printed circuit board in 3D

    Lathrum thesis

    Dylancyclone/thesis

    Undergraduate Honors thesis for graduation in 2022

    80 parts1
  • 4 layers141 × 93 mmDevkyt, the printed circuit board in 3D

    Devkyt

    Lattrex/devkyt

    Development board for the Kyttar KYT16A120 chip

    26 parts
  • 4 layers41 × 41 mmFlight Controller, the printed circuit board in 3D

    Flight Controller

    benwys/SparrowHawk

    Open source flight controller for FPV drones. Includes two complete hardware designs (kicad) with production files. Will include custom firmware (bare-metal cpp). In progress :-)

    103 partsMIT
  • 4 layers17.8 × 51.6 mmBonsai C4, the printed circuit board in 3D

    Bonsai C4

    customMK/Bonsai-C

    An open-source ARM-based microcontroller board

    59 parts71

Questions

How big is the Ecoport bridge v1 PCB?

It measures 51.5 × 92 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ecoport bridge v1 use?

74 parts, built around the ESP32-C6-WROOM-1-N8, IRM-05-5, SP3485EET(UMW) and USBLC6-2SC6. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Ecoport bridge v1 KiCad files?

From the jrowe88/ecoport-bridge repository on GitHub, at the commit this page was made from: the board is hardware/board/ecoport-bridge-v1/ecoport-bridge-v1.kicad_pcb and its schematic hardware/board/ecoport-bridge-v1/ecoport-bridge-v1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ecoport bridge v1 design in my own project?

Its repository publishes it under the AGPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).