Repair

ComfoAir Q350: black display, every sensor in error

October 2026 · Zehnder ComfoAir Q350, firmware 1.7.0

The display on our ventilation unit was dead, and one of the two fans had stopped running. The cause was not the main PCB but a corroded capacitor on the outdoor air sensor. A part costing pennies fixed it.

Symptoms

I read the error codes over the ComfoNet bus (CAN) with an ESP32, since the display was not showing anything. On the bus they come without the leading 10, i.e. 23, 25, 27 and so on.

Cause

It was the outdoor air sensor (ODA, the “top” sensor, Zehnder part 400502004). Zehnder lists this possibility themselves: their German fault overview names a possibly defective outdoor air sensor for a display that stays black while the unit is running.

On my unit the small sensor board carries an SHT30 with a capacitor next to it, and that capacitor had corroded. With this sensor plugged in, the communication with the other sensors and with the display was disturbed, so they all went down together. I did not measure how exactly the corrosion caused that.

Blue sensor board with an SHT30; the part next to it is covered in grey-green corrosion
Sensor board of the outdoor air sensor: the capacitor next to the SHT30 has corroded.

How to check

The unit should be unplugged from the mains before you touch anything: to avoid damage, and there is 230 V on the board.

  1. Unplug the outdoor air sensor at the main PCB. It is one of the two green connectors: the right-hand one if your outdoor air duct is on the right, the left-hand one if it is on the left.
  2. Power up. If the display comes back, you have found the fault, and the other sensor errors will most likely be gone too. On my unit only SENSOR_ODA ERROR (1027/1043) remained and the other sensors read normally.
  3. You can’t simply leave it unplugged, though: after power-up both fans start, but as soon as the unit detects the sensor error it switches off the fan for the supply air.
Main PCB of the ComfoAir Q350 with white, green and blue sensor connectors on both sides
Main PCB: the green connector on the right is marked. That is the outdoor air sensor when the outdoor air duct is on the right.
Display of the ventilation unit showing SENSOR_ODA ERROR
With the outdoor air sensor unplugged the display works again and shows only this one error.

Fix

I pulled the sensor (service manual chapter 6.7: front cover off, heat exchanger out, filters out, pull the sensor down from the inside), desoldered the corroded capacitor and fitted a new 100 nF ceramic one. I damaged a solder pad while removing the old capacitor, so I had to solder in a short wire bridge as well.

I could not read the value off the original part. I assumed it is the chip’s decoupling capacitor, for which the Sensirion SHT3x datasheet specifies 100 nF, and the sensor works with that value. I did not trace where it is actually connected.

With the capacitor merely removed, the display and the other sensors came back but the outdoor air sensor itself did not respond. I don’t know whether it needs the capacitor or whether that was down to the damaged pad. With the new one in place all errors cleared, the display works, and both fans run.

Sensor board with a new capacitor and a short wire bridge next to the SHT30
New capacitor, with a wire bridge for the damaged pad.

Afterwards I coated the joint and the pins of the sensor with conformal lacquer (CRC Plastik 70), because it is damp in there and the sensor comes lacquered from the factory as well. I applied the lacquer with a pair of tweezers instead of spraying it, so that none of it gets into the SHT30’s sensing opening and clogs the sensor. Masking the opening would probably work too.

If you’d rather not solder

Replacing the complete top sensor is the fix Zehnder recommends.

What matters here is the sensor chip. Older units have an SHT20, newer ones an SHT30; the type is printed on the chip. If you go from an SHT20 to a new sensor with an SHT30, forum reports and dealers say you need a firmware update (1.7.1 or later is the figure given), and on old units an adapter cable set as well. My unit, however, has SHT30 sensors and runs them on firmware 1.7.0; the display shows that version too.

If you only replace the capacitor, you keep your chip and need no update.

Reading it out with an ESP32

Since the display was dead, I read the unit out through its ComfoNet port. ComfoNet is a CAN bus running at 50 kbit/s. Besides CAN-H and CAN-L the port also carries 12 V and ground, so the setup is powered by the unit.

Breadboard with an ESP32-C3, MCP2515 CAN module, level shifter and voltage regulator, wired to the ComfoNet port of the ventilation unit
This is a test setup on a breadboard, not a finished installation.

The parts:

The wiring diagram:

ComfoNetterminal on the unit12 VGNDCAN-HCAN-LTRACO TSR 1-2450+Vin+VoutGNDMCP2515 + TJA10508 MHz, jumper J1 (120 Ω) setHLVCCSCKSISOCSGND · INT n/cTXS0104Elevel shifterVCCbVCCaOEB1A1B2A2B3A3B4A4GNDESP32-C3 Super Mini3V35VGPIO 0GPIO 1GPIO 2GPIO 3GND12 V5 V3,3 VSPIcommon ground everywhere
Wiring of the test setup. Red: 5 V, yellow: 3.3 V, blue: SPI, purple: CAN.
ESP32-C3 TXS0104E MCP2515
GPIO 0 A1 ↔ B1 SCK
GPIO 1 A2 ↔ B2 SI (MOSI)
GPIO 2 A3 ↔ B3 SO (MISO)
GPIO 3 A4 ↔ B4 CS
3V3 VCCa and OE
5V VCCb VCC

12 V and ground come from the ComfoNet terminal and go to the voltage regulator; CAN-H and CAN-L go straight to the screw terminal of the MCP2515 module. The INT output of the MCP2515 is left unconnected. There is also an electrolytic capacitor at the regulator’s 12 V input.

Three things cost me time while getting it to work:

The ESP runs ESPHome. The configuration reads temperatures, humidity, air flows, fan speeds and the active errors, and offers them as a web interface and to Home Assistant. It can also control the unit: fan level, boost, automatic mode, bypass and temperature profile.

Web interface of the ESP with a table of all readings and buttons of the ventilation unit
Web interface of the ESP after the repair (click to enlarge; entity names are in German): no active errors, all sensors deliver values.

The code to download (comments are in German):

Use at your own risk: the control commands interfere with the operation of the unit. The web interface has no password, so anyone on the same network can press the buttons. I only checked the bypass and temperature profile commands against the reference projects and did not try them on the unit.

I did not reverse-engineer the protocol myself. It is based on aiocomfoconnect and comfoair-esp32.

Others with the same fault

Home Impressum Datenschutz