MaxxFan Brushless Retrofit

MaxxFan Brushless Retrofit

The MaxxFan is the default roof fan in camper vans, and its brushed motor is the weak spot: it gets loud and squeaky, and cleaning the brushes only buys time. This retrofit keeps the fan’s housing, 12 in blade and powered lid, and replaces the motor with a 50 W brushless one run by field-oriented control (FOC), which is close to silent.

It’s run by a knob and a direction switch, which I like better than the stock button pad. Turn the knob to its click to close the lid, just past it to open the lid for a breeze, and further up for fan speed. A phone page on the van’s Wi-Fi does the same (no app, no cloud), and the knob still runs the fan if the controller ever dies.

How it’s built

  • Motor: StepperOnline 57BYA54-12-01, 12 V, 50 W brushless. Its hall sensors aren’t used.
  • Mount: a 3D-printed PETG cage bolts the motor to the fan’s two original motor ears and puts the blade back where it was. A shaft coupler and an 8 mm dowel extend the shaft to the blade hub.
  • Board: one 63 x 42 mm board does all of it. A TI MCF8316D runs the fan motor, a DRV8871 runs the lid motor, a buck converter makes 5 V from the van’s 12 V (with reverse-polarity and surge protection), and an ESP32-C3 SuperMini plugs in on top and sets everything up. JLCPCB makes it and fits the small parts; you solder the connectors.
  • Controller box: a printed base sticks to the fan’s control plate where the stock circuit board was, the board screws to it, and a cover snaps on over it with slots for the plugs.
  • Firmware: Arduino on the ESP32-C3: the phone page, lid calibration, live motor graphs and updates over Wi-Fi. Open source on GitHub.

The phone page

The board serves its own page on the van’s Wi-Fi at http://maxxfan.local, and it can live on your phone’s home screen like an app. The lid and fan buttons do what the knob does, and the motor card graphs the speed, current and supply voltage for the last 10 minutes. Settings has the lid calibration, the fan’s top speed and direction, and the Wi-Fi.

The MaxxFan phone page: the lid open with Close and Stop buttons, the fan at speed 6 (700 rpm) on exhaust set by the knob, and graphs of motor speed, current (0.48 A, 6 W) and supply (13.2 V) over the last 10 minutes
Home
The settings view: lid nudge and set-closed buttons, full travel and end time, the fan’s run speed, top speed and direction swap, and how the knob behaves
Settings

The real page from the firmware (v4.1), drawn with sample readings: it hasn’t run on the new board in the van yet.

The motor

StepperOnline’s 57BYA54-12-01: 12 V, 50 W, 57 mm across and 53.5 mm long. It’s the motor Minuet tuned, and that’s why it’s this one: the motor chip needs a tuning profile for the exact motor, and this one has a proven profile. Minuet runs it quietly from about 100 rpm to over 1200 on the same fan. It needs two adapters: the printed cage, because its screw holes don’t line up with the fan’s motor ears, and a coupler and dowel pin to carry its 21 mm shaft out to the blade (the stock motor’s shaft is 40 mm long).

Side and face views of the StepperOnline 57BYA54-12-01 motor: 57 mm diameter, 53.5 mm long, an 8 mm shaft 21 mm long, a 25 mm pilot and four M4 holes on a 38.9 mm circle
The motor, with the dimensions from the maker’s drawing. Tap or click for full size.

Assembly drawing

Every part, pulled apart along the way it goes together, numbered to match the parts list below. On the left, the fan end: the motor bolts into the cage, the cage bolts to the fan’s two motor ears, and the coupler and dowel pin carry the shaft up to the blade. On the right, the controller: base, board, ESP32-C3 and cover.

Exploded assembly drawing. Left: the motor, the printed motor cage, four M4 screws and washers, the fan's motor ears, two M6 screws and washers, the shaft coupler, the dowel pin and the blade hub. Right: the printed base, the FOC board, the ESP32-C3 SuperMini, four M3 screws and the printed cover. A parts list sits under the controller.
Drawn from the CAD for the rev A board. Tap or click for full size.

Wiring

Two screw terminals and three plugs. The 12 V feed and the motor’s three phase wires go into the screw terminals at one end of the board; the knob panel, the lid motor and the optional temperature probe plug into its top edge. The USB-C port is only for the first flash.

Wiring diagram MFB-002. The 12 V supply BT1 through the 5 A fuse F1 to J1; the fan motor M1's three phase leads to J2; the knob panel A3 (pot with click switch, direction switch, lid button) on a six-conductor cable to J3; the DS18B20 probe A4 to J4; the lid motor M2 to J5. With a wire list and notes.
Every wire is numbered: the wire list on the sheet gives each one's two ends, gauge and color. Tap or click for full size.

In the fan

Where everything goes, looking up from inside the van with the control plate off. The board rides on the control plate where the stock board was, so it comes down with the plate; the 12 V pair, the motor’s own leads and the lid motor pair reach it with enough slack to lower the plate. Two printed clips hold the runs up in the cavity, since the fan hangs upside down from the roof.

This sheet is a placeholder. The controller box drawn here is a new slim one that stands on edge, the way the stock board did; it hasn’t been test-fitted yet. The sizes marked VERIFY come from photos and a scan, not a tape measure.

Installed layout MFB-004, looking up from the cabin at half scale with the control plate removed: the vent frame, round wall and bracket arms, the motor on its cage, the lift motor, the controller at the keypad corner, the wire runs and two wire clips, with a section through a clip, location and run tables and notes.
Placeholder until the slim controller box has been test-fitted in the fan. Tap or click for full size.

In 3D

Three of the parts, from the CAD. Each one loads when you ask for it: drag to turn it, and zoom in for the detail.

3D model of the printed motor cage with the motor bolted into it: four M4 screws and washers through the cage's face plate, the shaft coupler and dowel pin on the motor shaft, and the two posts the fan's motor ears bolt to.
The motor cage, with the motor bolted in. The fan’s motor ears bolt to the tops of the two posts, and the coupler and dowel pin carry the shaft up to the blade.
3D model of the slim controller box: the printed base with the board standing on edge in it, and the printed cover lifted off above it.
The slim controller box, with its cover lifted off the board. It’s a placeholder: it hasn’t been test-fitted in the fan yet.
3D model of a wire clip: the printed base with a channel for the wires, and the gate snapped across the channel's mouth.
A wire clip, with the gate snapped on. The base sticks to the vent frame, and the wires run through the channel.

Parts list

For one fan, numbered as on the drawings.

No.QtyPartNotes
Fan motor and mount
11Motor: StepperOnline 57BYA54-12-0112 V, 50 W brushless. Its hall-sensor wires aren’t used.
21Motor cagePrinted in PETG.
34M4 × 8 socket head cap screwThe maker’s drawing says M4 × 0.5 fine pitch, not the usual 0.7: check your motor before you buy.
44M4 flat washer9 mm OD.
52M6 × 16 socket head cap screwThreads into the cage’s posts. Snug, about 1.5 N·m.
62M6 flat washer12 mm OD.
71Rigid shaft coupler, 8 mm to 8 mmØ14 × 22 with grub screws (uxcell).
81Dowel pin, Ø8 × 40File a flat for the grub screws (uxcell, pack of 10).
Controller
91Controller basePrinted in ABS or ASA. Sticks to the fan’s control plate, where the stock board sat.
101FOC board, rev AOrder it from JLCPCB with the board files, or ask me for one.
111ESP32-C3 SuperMiniPlugs into two sockets on the board.
124M3 × 8 pan head screwThreads into the base’s standoffs.
131Controller coverPrinted in ABS or ASA. Snaps on.
Controls and wiring
14110k pot with a click switch (B10K)The knob. Off at the click.
151Two-position switchDirection: exhaust or intake.
161Push button, optionalOpens and closes the lid.
1715 A inline fuse and holderOn the 12 V feed, at the supply.
181DS18B20 temperature probe, optionalThe three-wire waterproof kind.
191 set2.54 mm DuPont housings and crimps1×6 for the panel, 1×2 for the lid motor, 1×3 for the probe.
20Wire14 AWG pair for 12 V, 22 AWG for the lid motor, 24 AWG for the panel.
216Small zip tiesStrain relief on the base, and the motor leads on the bracket arm.
Wire clips
222Wire clip basePrinted in ABS or ASA. Sticks to the vent frame and holds the wires up in the cavity.
232Wire clip gatePrinted in ABS or ASA. Snaps over the base, so the wires’ weight hangs on hooks, not friction.
243M VHB LSE-110WF tapeFor the clips and the controller base. The LSE kind, because Maxxair doesn’t say what plastic the fan is.
Reused from the fan
AMotor earsPart of the fan’s frame. Open the holes to 6.4 mm if the M6 screws don’t pass.
BBladeGoes back on the dowel pin.
CLid motorNow driven by the board.

The plan, if you want to build one

  1. Check your fan. This was designed on my MaxxFan, one with the powered lid. The cage is drawn for motor ears 50 mm apart: measure yours before you print it.
  2. Get the parts on the parts list above. For the board, order it from JLCPCB or ask me for one of mine (below).
  3. Print the motor cage in PETG, and the controller base and cover and the two wire clips in ABS or ASA.
  4. Finish and test the board on the bench: solder the sockets, headers and screw terminals (a printed jig holds them), flash the ESP32-C3 from a browser, check the 5 V, then spin the motor before it goes anywhere near the fan.
  5. Swap the motor: blade and old motor off, new motor into the cage, the cage onto the ears, extend the shaft, blade back on.
  6. Wire it as on the wiring diagram: 12 V through the fuse, the three motor wires, the lid motor and the knob panel. Route the runs as on the layout, in the clips, with slack to lower the control plate.
  7. Set it up from your phone: join the van’s Wi-Fi, calibrate the lid, check that exhaust blows out, then save the knob fallback into the motor chip so the knob runs the fan even without the ESP32.

Where it stands

Work in progress. The first boards (rev A) are on order and the firmware for them is written, but it hasn’t run on the new board yet. I’ll update this page as it gets tested, and publish the board files and the printable parts with the first version that has run in my van.

Credit: Minuet

The motor tuning isn’t mine. The MCF8316D setup and the tuned profile for this exact motor come from Jeff Brown’s Minuet, and the chip’s register map from his esphome-mcf8316, both MIT licensed. Minuet is a complete open-source MaxxFan controller that replaces the stock circuit board and keeps the stock keypad and infrared remote: if that’s what you want, start there. This build is a different take on it, with a knob instead of the keypad and plain Arduino firmware with its own phone page.

Boards

Five boards was the minimum order, so I’ll have a few spare. Once mine has proven itself in the van, I’ll pass them on at what they cost me to anyone building one. Get in touch if you’re interested.

Not affiliated with MaxxAir or Airxcel. Changing the motor voids the fan’s warranty, and this is a work in progress: build it at your own risk.

Status

In progress: rev A boards ordered, November 2026

Fits

MaxxAir MaxxFan with the powered lid. Designed on one fan: measure yours first.

Motor

StepperOnline 57BYA54-12-01, 12 V 50 W brushless, sensorless FOC

Board

Rev A, 63 x 42 mm, 4 layers: MCF8316D, DRV8871, ESP32-C3 SuperMini

Power

12 V through a 5 A fuse

Downloads

  • Drawings: assembly, wiring, layout and motor

    maxxfan_bldc_drawings.pdf · 295 KB · PDF, 4 pages, letter landscape

    Download
  • Board schematic, rev A

    foc_board_rev_a_schematic.pdf · 149 KB · PDF, untested revision

    Download

Project Images

MaxxFan Brushless Retrofit — image 1
MaxxFan Brushless Retrofit — image 2