The problem: indoor air is bad
Although we don’t think about it much, indoor air quality matters. We spend most of our time indoors, breathing whatever is floating around. And because our houses are full of humans, that means dust, dirt, carbon dioxide just from us being gross; also things like volatile organics, combustion byproducts, and mold that come from what our houses are made of, what we do in them, and what likes to live in them with us.
Historically, this was tolerable because houses were not very “tight:” they had natural cracks and gaps in the walls that let in plenty of fresh air. But modern building practices have changed that: houses are made very energy efficient through things like spray foam insulation, complete water-tight envelopes, and tightly sealed windows and doors. This often has the side effect of severely limiting air exchange between the interior and exterior of the house, so indoor pollutants can build up inside.
Most people would read about this and shrug, because it feels like we are all doing fine breathing whatever air we’ve got. But not me! I’m constantly on the lookout for things to worry about, so a few years ago I started buying carbon dioxide monitors so I could torture myself with a constant feed of air quality data. I really like the Aranet4 CO2 monitor, I now have three of them in the house.

The e-ink display is classy and the battery lasts more than a year
While it can be very expensive to buy monitors for the many varieties of indoor pollutants, it turns out that carbon dioxide is a great proxy measure. Humans are always exhaling it, so when its high, it’s a good sign that the air is stale and probably contains high levels of other pollutants. Plus, studies show that levels of CO2 frequently observed in indoor environments have measurable impact on cognitive performance along with unknown long-term side effects.
A critical aspect of the Aranet monitor is that I can integrate it via Bluetooth with Home Assistant, my centralized home automation platform. This integration allows me to produce horrifying graphs of the CO2 levels in my children’s bedrooms

This is not ideal.
I’ve been watching these numbers with simmering dismay for a couple of years, not really sure what I should do about them. For reasons I have not been able to figure out, the levels are worst in the shoulder seasons, when the AC and heat aren’t running very much. Running the AC or heat seems to drive the levels down, somehow bringing more fresh air into the house. When CO2 is hatruly high, I can always open a window. But the manual nature of that just doesn’t appeal to my sense of sustainable problem solving.
This fall, after watching the high CO2 levels night after night, I decided to act–I was going to find a way to get more fresh air into the house.
The Solution: automated fresh air with an energy recovery ventilator (ERV)
So how can we improve on an open window to let fresh air in and stale air out? First, we could open two windows, so that a breeze could blow air through the house. That gives you an inlet and an exhaust, but it depends on the weather how much air turnover you actually get. And oh, the weather: that’s the other problem with opening windows. In Austin it gets hot in the summer and we use energy to cool and dehumidify the indoor air. Open windows just bleed out that conditioned air.
The home HVAC industry has devised a solution for this: an energy recovery ventilator. This is a box that pumps in fresh air from an exterior vent and dumps it into your house, while pumping stale air from an interior vent and dumping it outside. The energy recovery part is that the incoming air and outgoing air pass by one another in a lasagna-like heat and humidity exchange manifold called the ‘core,’ so the incoming air ends up with similar temperature and humidity to what’s already in the house. This saves energy (about 75%) that would otherwise be spent conditioning all the fresh air brought in Here’s a video from This Old House that explains it:
ERV install options
It seems intuitive that if you already have a ducted HVAC system, you’d want to reuse those ducts for the ERV. Maybe you could tap into the return ducts to pull stale air out of and then splice the fresh air into output. But it’s a bit tricky: the HVAC ducts and air handler are usually a closed system (they just recirculate interior air, optionally heating or cooling it). The ERV pulls new air from the exterior and pushes old out. If you try to run the ERV using the same ducts, you have to coordinate the HVAC fan so it runs at the same time, or else you’ll be fighting that system. In the worst case, you might cause condensation to form in your ducts, and you’ll probably also have to overspec your ERV fan so that it can deal with all the ducting pressure.

Intuitive but suboptimal: reusing your HVAC ducting for your ERV. (from finehomebuilding.com)
Most experts seem to agree that it’s ideal to give an ERV its own dedicated duct system: a set of intakes that pull stale air from bathrooms and kitchens (producers of pollutants) and a set of fresh air outputs into bedrooms and living rooms (areas where people hang out).

The whole nine yards: multiple dedicated ducts. (from finehomebuilding.com)
My compromise for DIY ease: separate ducts; single input and output
There’s no chance of running a full set of dedicated ducts like the one in the second picture in my house. The existing HVAC ducting is squeezed in between the floors, inacessible with no room for expansion. Plus, the more holes I have to cut in walls and the exterior the less realistic this becomes as a DIY job. However, I happen to know that air circulation within my house is good by watching CO2 monitors placed upstairs and downstairs: they hardly ever diverge, even when everyone in the house is downstairs.
So, I reasoned I could probably get away with one big vent pulling stale air from the interior and one big vent dumping fresh air back in, especially if I was a little clever about it. I decided to pull air out of the kids bathroom, above the shower, and dump fresh air into my office right next to a return air vent. This is akin to tying the fresh air into the return air duct directly, but without the pressurization / fan synchronization issues. I run the HVAC fan for recirculation 30 minutes of every hour, so there should be plenty of time that the return is pulling fresh air from the ERV and redistributing it throughout the house.

My DIY compromise fresh air delivery
Combine this with the fact that the attic over the old part of the house already had two 12"x12" gable vents that I could reuse for exterior intake and exhaust, and I only had two cut holes (both interior) for the whole project!
Here’s a sketch of my final design:
The ERV is connected via 8" flex ducting to each of the attic gable vents and to the interior and to two interior 12"x12" vents, which are a bit oversized but the goal is for them to be silent when the ERV is in operation.
Shopping list
The ERV
There are a ton of ERVs on the market; the main difference among them is how much air they move. They typically have four ports (exterior fresh air in and stale air out; interior stale air in and fresh air out). I selected the Broan One (model BLP150E75NS-PC) because it has constant, automatic pressure balancing to make sure the amount of air it puts into the house equals the amount it pulls out, even when things change like a window opens or a bathroom fan comes on.
It has a middle-of-the-road air movement capacity of 150 CFM, more than big enough for my 2700 sqft house, especially because of my weirdo plan to have just a single intake and exhaust. It has simple washable filters (you can optionally add MERV) so ongoing costs should be low.
The Broan “One” series is a bit cheaper and much less diverse than the “AI” series which come in many physical port configurations and CFM ranges; the “One” series seemed to have the same auto-balancing brain and was released more recently. I also considered the Panasonic Intelli-Balance ERVs but they lack the automatic balancing and require more skill and equipment to “commission” (get the input and output airflow balanced for your house).
Price: $1056
The Rest
Here’s all the sundry items I needed to accomplish the install. I ordered the ERV online and bought the rest from Home Depot–I bet I could have gotten better prices from an HVAC supplier but most of them aren’t interested in a DIY-scale customer like me. Still, the overall price came in under $1700. The quote I got to install an HVAC-integrated ERV started around $4k. That actually sounds about right given the expertise required to do this right, including the system design, plus overhead.
| Name | Pic | Description | Price | Qty | Total price |
|---|---|---|---|---|---|
| Broan BLP150E75NS-PC | ![]() |
The actual energy recovery ventilator | $1,056.52 | 1 | $1,056.52 |
| 12"x12" to 8" register box | ![]() |
For duct terminations | $21.90 | 4 | $87.60 |
| 12 x 12 inch return air grill | ![]() |
Covers interior vents | $15.98 | 2 | $31.96 |
| 8 in to 6 in reducer | ![]() |
Convert 6" ERV ports to 8" ducting | $14.28 | 1 | $14.28 |
| 8" 90-degree ell | ![]() |
To improve airflow when a bend was necessary | $8.90 | 3 | $26.70 |
| 8" R8 insulated flex duct, 25' | ![]() |
For moving air to and from ERV | $102.00 | 3 | $306.00 |
| 555 FlexFix tape, 1.89" x 120 yd | ![]() |
For connecting flex duct interior | $14.98 | 1 | $14.98 |
| 324A Foil Tape, 2.5" x 60yd | ![]() |
Heavier foil tape for sealing | $23.97 | 1 | $23.97 |
| Foilmastic Tape 2" x 34 yd | ![]() |
For sealing seams in metal ducting (instead of mastic) | $29.98 | 1 | $29.98 |
| 36" nylon ties (25) | ![]() |
For securing flex duct to collars | $17.90 | 1 | $17.90 |
| zip-tie tightener | ![]() |
For tightening big zip ties | $57.00 | 1 | $57.00 |
| Grand total | $1,666.89 | ||||
The install process
The biggest adventure by far was getting this thing into the attic and ducted. I watched many Youtube videos on how to work with flex duct, how to connect and seal the ductwork, how to spec size and length. I was shocked just how much disagreement there is about something as simple as how you connect the end of a piece of flex to a ceiling register–some people put mastic inside, some don’t; some people use zip ties, some use mylar tape, some use both. In the end I followed the instructions that came with the ERV: I used a zip tie on the interior liner of the duct plus mylar flex tape to seal it, then another zip tie around the insulation and more tape just to clean it up.
Here’s the ERV after I lugged it up to the attic and screwed it into the frame I built to mount it on:
You can see the interior side of one of the attic gable vents I used. Because I used 8" ducting and the ERV has 6" ports, I needed to adapt the sizes, so I started out by attaching 6" to 8" increasers on each of the ports using foil mastic:
Next, I framed up the gable vent with an 8" round to 12" square register boot, just going absolutely nuts with foil tape. I love that stuff:
I attached the flex duct using the belt-and-suspenders approach of placing a zip-tie on the inner liner, then using flex duct tape (a sort of thin mylar variant of the foil tape), then pulling the insulation down around the collar, and zip tying and taping that. Seems totally bomber, like you could rip the collar off the ERV before this bond would fail.
Although it was almost certainly over-engineering, I used rigid 90-degree sections when I needed to turn the path of air in a tight space. The internet seemed to think this was important to avoid restricting airflow in the flex, which tends to sort of collapse if you take it through tight turns.
Here you can see the first of four connections to the ERV complete: the air path from the gable vent to the input of the ERV, which draws fresh air in:
The second gable connection takes stale air out of the house; it was about 20 feet away from the ERV and pretty tricky to route around all the existing HVAC flex. I also got to try my hand at using these hang straps that are recommended to keep weight off the register connections and sharp bends out of the flex.
Next came the excitment of the interior connections, which required cutting two new 12"x12" square holes. I already discussed my decision to place the fresh air output right next to a return vent in my office. Here’s the view from the attic and the loft of that register going in:
The stale air gets sucked from the ceiling over the shower in the kids’ bathroom. As part of this excavation I discovered some beautiful (not really) old wall paper that used to be on the ceiling as well as a grocery flyer from 1948:
Here’s how the final install looks–pretty crowded with all the flex but I was incredibly proud, and bore the injuries of a dozen scalp punctures from roofing nails and lungs full of aerosolized rodent poop and fiberglass (just kidding, I wore an N95 so the coughs only lasted a day or so):
I plugged it in and was overjoyed to see it configure it self and report that it was happily running at low speed: 80CFM in and out in perfect balance!
And boy was it effective! After a few hours running at full speed, the CO2 was down at levels I’d only before seen after we’d been out of the house for days:
Connecting the ERV to Home Assistant
The final step in my adventure was tying the ERV into my smart home. Broan offers a bewildering array of wall control options, each offering a different subset of functionality to change how fast the ERV is blowing, how often in runs, whether it is controlled by humidity. I mean, there are at least nine controls for sale by them that work with my ERV.
Instead, I wanted to hook this into my Home Assistant system so I could monitor and adjust it with the rest of my smart home stuff. The Home Assistant community totally came through for me: someone reverse engineered the RS485 serial protocol that the ERV uses to talk to the Broan controllers and implemented an ESPHome-based control for it!
So, getting control was a simple matter of ordering the same ESP32-based relay/serial controller and flashing its firmware.
I was able to wire it up directly to the 12 volt rail provided on the ERV, for a total of five wires: +12V, -V (tied to ERV ground), RS485 data+, data-, and data ground (tied to ERV ground).
This was almost too easy, booting up on the first try and exposing lots of data and controls for home assistant:
So far, I have a simple timer that ticks the ERV up higher at night when everyone is home and turns it back down in the mornings. But in principle I could put this into a PID loop with the actual CO2 levels the Aranets measure—the sky is the limit with Home Assistant, as usual.
The results
The ERV does its job well. Since I installed it, I seldom see CO2 levels rise above 800, even at the usual peak at dinner/bedtime. More often they hover in the 6-700s (six-sehhhhhhven), well into the range where I’m no longer worried about them. Here’s a plot of CO2 in Paul’s bedroom similar to the one at top. The spikes you see are when groups of people enter (usually kids playing). It’s so lovely to see spend almost all its time it down in the benign range.










