

Ecoport bridge v1
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
12ESP32-C6-WROOM-1-N8
SMD,25.5x18mm-40℃~+85℃ -99.2dBm 2.4GHz 20.5dBm 382mA 3V~3.6V 78mA ESP32-C6 On-board PCB Antenna UART、SPI、I2C、I2S、USB SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesIRM-05-5
DIP,45.7x25.4mm0.1W 120V~430V 1A 200mVp-p 21.5mm 25.4mm 3kV 45.7mm 5V 5W 71% 85VAC~305VAC AC/DC-DC Short Circuit Protection、Over Current Protection、Overvoltage protection ±2.5% DIP,45.7x25.4mm Power Module/Power Supply ROHSMWAC-DC Power ModulesSP3485EET(UMW)
TSSOP-8-40℃~+105℃ 1 1 12Mbps 256 3V~3.6V 520uA Half-Duplex Transceiver TSSOP-8 RS-485 / RS-422 ICs ROHSUMWRS-485 / RS-422 ICsUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)SN74LV1T34DCKR
SOT-353-40℃~+125℃ 1 1 1.6V~5.5V 1.6V~5.5V CMOS CMOS Level translator Power-off protection Unidirectional SOT-353 Translators, Level Shifters ROHSTECH PUBLICTranslators, Level ShiftersTLV75733PDBVR-MS
SOT-23-5SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMSKSEMIUncategorisedRC0603FR-0710KL
UncategorisedUnknown makerPREC002SAAN-RC
插件,P=2.54mm-40℃~+105℃ 1 2.54mm 2.5mm 2P 3.05mm 3A 5.84mm Black Brass Pin Header Through Hole Tin 插件,P=2.54mm Pin Headers ROHSSullins Connector SolutionsPin HeadersSK6812
SMD-4P,5.4x5mm-40℃~+85℃ 0.6mA 1.6mm 120° 160mcd~320mcd 1kHz 2000V 280mcd~515mcd 3.7V~5.5V 460nm~470nm 520nm~530nm 620nm~625nm 800Kbit/s 815mcd~1275mcd Built-in power-on reset circuit Semi-transparent lens SMD-4P,5.4x5mm RGB LEDs(Built-in IC) ROHSOPSCO OptoelectronicsRGB LEDs(Built-In IC)420B2V12FL0
插件Wire To Board ConnectorOn-Shore TechB3B-PH-K-S(LF)(SN)
插件,P=2mm-25℃~+85℃ 1 100V 1x3P 2A 2mm 3 3P 4.5mm 6mm 7.9mm Brass K Pin PA66 PH Through Hole Tin UL94V-0 White 插件,P=2mm Wire To Board Connector ROHSJSTWire To Board ConnectorBM04B-SRSS-TB(LF)(SN)
SMD,P=1mm-25℃~+85℃ 1 1A 1mm 1x4P 3.6mm 4 4.25mm 4P 50V 6mm Auxiliary Solder Pin Copper alloy PA SR Surface Mount,Vertical Tin UL94V-0 White SMD,P=1mm Wire To Board Connector ROHSJSTWire To Board Connector
README
README.mdEcoPort 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.

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
cta2045layer implements the protocol (framing, messages, CRC, link, Basic DR / Intermediate messages). Appliance-specific behavior (e.g. Rinnai REHP65 quirks and capability mappings) lives underappliances/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.mdand 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
┌───────────────────────────────┐
│ 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
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 helpersStatus
Early planning / hardware on order. See docs/reverse-engineering.md and
captures/ as the project progresses.
Documentation
docs/architecture.md— software layering and the device ↔ Azure cloud architecture (telemetry, commands, storage, dashboard, security)docs/hardware.md— connector, pinout, safety, bring-up hardwaredocs/protocol.md— CTA-2045 protocol facts, capability matrixdocs/capabilities.md— what we can see, infer, log and control on the Rinnai REHP65docs/reverse-engineering.md— staged plan (EPRI oracle → passive capture → queries → writes)docs/references.md— source material, tools, and libraries (EPRI,python-cta2045, ANSI, EcoPort DB, OpenADR, connector part numbers)docs/troubleshooting.md— common issues
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| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 0.1µF | Capacitor_SMD:C_0603_1608Metric | C2, C5, C7, C8, C9, C12, C13, C14, C15 |
| 4 | 10kΩ | Resistor_SMD:R_0603_1608Metric | R4, R5, R9, R10 |
| 4 | 1µF | Capacitor_SMD:C_0603_1608Metric | C3, C4, C10, C16 |
| 3 | 22µF | Capacitor_SMD:C_1206_3216Metric | C1, C6, C11 |
| 2 | 390Ω | Resistor_SMD:R_0603_1608Metric | R2, R3 |
| 2 | 4.7kΩ | Resistor_SMD:R_0603_1608Metric | R6, R7 |
| 2 | 5.1kΩ | Resistor_SMD:R_0603_1608Metric | R11, R12 |
| 2 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J2, J5 |
| 2 | GND | Custom:TestPoint_Keystone_5000-5004_Miniature | TP1, TP2 |
| 2 | LOGO | Custom:electrical_hazard | G***, G*** |
| 2 | SK6812 | LED_SMD:LED_SK6812_PLCC4_5.0x5.0mm_P3.2mm | D2, D3 |
| 2 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U4, U7 |
| 1 | 120Ω | Resistor_SMD:R_1206_3216Metric | R1 |
| 1 | 3V3 | Custom:TestPoint_Keystone_5000-5004_Miniature | TP4 |
| 1 | 420B2V12FL0 | Custom:Onshore_Header_2x06_P4.20mm_Vertical | J1 |
| 1 | 470Ω | Resistor_SMD:R_0603_1608Metric | R8 |
| 1 | 5V | Custom:TestPoint_Keystone_5000-5004_Miniature | TP3 |
| 1 | B3B-PH-K-S | Custom:JST_B3B-PH-K-S | J7 |
| 1 | BM04B-SRSS-TB | Custom:CONN4_BM04B-SRSS_JST | J3 |
| 1 | BOOT | Custom:SW_TS04-66-50-BK-260-SMT | SW2 |
| 1 | BOOT | Custom:TestPoint_Pad_D2.0mm | TP11 |
| 1 | Connector Wire | Custom:Wire_Solder_1x03_P2.54mm_Relief | J6 |
| 1 | D+ | Custom:TestPoint_Pad_D2.0mm | TP5 |
| 1 | D- | Custom:TestPoint_Pad_D2.0mm | TP6 |
| 1 | DE | Custom:TestPoint_Pad_D2.0mm | TP9 |
| 1 | EN | Custom:TestPoint_Pad_D2.0mm | TP10 |
| 1 | ESP32-C6-WROOM-1-N8 | Custom:XCVR_ESP32-C6-WROOM-1-N8 | U6 |
| 1 | EcoPort_Bridge_Marking | Custom:EcoPort_Bridge_Marking | G*** |
| 1 | IO23 | Custom:TestPoint_Keystone_5000-5004_Miniature | TP14 |
| 1 | IRM-05-5 | Converter_ACDC:Converter_ACDC_MeanWell_IRM-05-xx_THT | U1 |
| 1 | Kobee Studio | kobee-studio-6AD3E735 | kobee-studio-6AD3E735 |
| 1 | Kobee Studio | kobee-studio-6AD3D2C7 | kobee-studio-6AD3D2C7 |
| 1 | LM66100DCKR | Package_TO_SOT_SMD:SOT-363_SC-70-6 | U8 |
| 1 | RESET | Custom:SW_TS04-66-50-BK-260-SMT | SW1 |
| 1 | RX0 | Custom:TestPoint_Pad_D2.0mm | TP13 |
| 1 | RX1 | Custom:TestPoint_Pad_D2.0mm | TP8 |
| 1 | SF-2410SP100W-2 | Custom:FUSC6125X236N | F1 |
| 1 | SM712_SOT23 | Package_TO_SOT_SMD:SOT-23 | D1 |
| 1 | SN74LV1T34DCKR | Custom:SC-70-5_L2.1-W1.3-P0.65-LS2.1-BR | U5 |
| 1 | SP3485EET | Custom:TSSOP-8_L4.4-W3.0-P0.65-LS6.4-BL | U3 |
| 1 | TLV75733PDBVR | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | TX0 | Custom:TestPoint_Pad_D2.0mm | TP12 |
| 1 | TX1 | Custom:TestPoint_Pad_D2.0mm | TP7 |
| 1 | USB4085-GF-A | Custom:USC-C-SMD_USB4085-GF-A | J4 |
The 68 most common of 74 parts.
Similar boards
- 4 layers130 × 130 mm

- 2 layers33 × 128.5 mm

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 mm

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 mm

- 2 layers158.3 × 110 mm

- 4 layers141 × 93 mm

- 4 layers41 × 41 mm

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 mm

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).