The ProtoFrenz controller is an LED face system for protogen fursuits and helmets. This is your complete guide — from first power-on to making it entirely yours. Your current firmware version is shown in the System tab of the WebUI.
Follow these steps in order — by the end your face will be glowing, reacting to your voice, and ready to customise.
192.168.4.1 in your browser.
Boot sequence on a MAX7219 dot-matrix display — scrolling animation then face fade-in
Your ProtoFrenz controller supports three different kinds of LED face display. You choose which type you're using in the app — no rewiring, no reflashing the firmware.
Full color. Every single pixel is individually lit and colored. This is the default display type and the one most builds use.
Two large 64×32 RGB panels for a smooth, high-resolution look. Uses a "procedural" face engine — shapes are drawn mathematically for super-clean curves.
The original protogen look — monochrome white dots on black. Simple, crisp, and extremely low power. Great for builds where battery life is the priority.
Nine connectors, all labeled on the board. Here's the full map — click any numbered connector on the diagram to jump to its description.
The large circular component on the board — this is the built-in microphone. It drives the voice-reactive mouth animation, Music Mode spectrum analysis, and Dance Mode beat detection. Permanently soldered — no wiring needed. Mic sensitivity is adjustable in the Options tab.
Reserved for a future magnetometer or IMU sensor for head-tracking and tilt features. Not used in current firmware — nothing needs to be plugged in here.
The capacitive boop sensor — mount this on the outside of your suit's face. When someone touches it, the eyes squint. Works through thin fabric or foam so you can hide it completely.
Connects to a standard normally-open momentary push button — route it to the exterior of your helmet for hands-free expression switching and mode control. Any small tactile button works. Keep wire length under a meter.
Connects to two chained 64×32 P3 RGB panels via a standard HUB75 ribbon cable. Panel 1 INPUT → Panel 1 OUTPUT → Panel 2 INPUT. Panel 2 mirrors Panel 1 automatically — no extra configuration needed.
Provides 5V power output — use this to power a non-PWM cooling fan or supplement power to your HUB75 panels. Pass-through from your USB power bank; no regulation or boost.
Connects to your chain of monochrome 8×8 LED matrix modules. Pin 1 carries 5V to the whole chain. Data, clock, and chip-select lines drive all modules in sequence from this one connector.
Data output for the WS2812B-2020 color LED matrix — the flagship display type. Connects to the first module in the chain; data flows through each module automatically.
Drives a PWM-controlled cooling fan inside your helmet. Fan speed is adjustable via button hold or the speed slider in the System tab. Suited for standard 5V 3-wire PWM fans. For fixed-speed 2-wire fans, use connector 5 (5V OUT) instead.
Your primary power connection. Plug any 5V USB-C power bank in here — this powers the controller, display, fan, and everything else. Also used for firmware flashing via computer if needed.
The small RGB LED on the PCB surface — your window into what the controller is doing without touching your phone.
During normal use it glows the color assigned to your active expression. During button holds it cycles through colors at each threshold (magenta=Music 2s, red=Dance 4s, blue=Fan 6s, white=Brightness 8s) — release when you see the one you want.
Every color and behavior is configurable in Button Config. Can be disabled entirely in System settings to eliminate light bleed.
Your face has four expression slots. Each one has its own eye, nose, and mouth design, its own color scheme, and its own personality. They're named by default, but you can rename them anything you want.
The colored dots represent the onboard status LED color for each expression — so even inside the suit, you always know which expression you're in. All of this is fully customizable in the WebUI.
A few automatic behaviors make the face feel alive without you doing anything:
Two physical inputs — both fully configurable, and both usable while fully suited up.
This is a capacitive touch sensor mounted on the face of your suit. It doesn't click — it just senses when someone (or you) is touching it. While you're holding it, the eyes squint. Release and they spring back to normal. It's purely about the hold — no tapping behavior.
The sensor can work through a thin layer of fabric or foam, so you can hide it invisibly in your suit's exterior.
Tapping the button switches expressions. The system counts how many times you tap in quick succession (you have about 700ms between taps before it locks in your count).
These are the defaults. Every tap count — including which expression each number triggers and the Glitch Mode threshold — is fully reassignable in the Button tab of the WebUI.
Holding the button activates a different set of actions — modes and settings changes. The onboard LED changes color as you hold longer to tell you what you're about to trigger. Release when you see the color you want.
When you're in Music or Dance mode, just hold the button for 3 seconds. The face returns to normal. You can change that 3-second exit duration in Button Config too — anywhere from 1 to 10 seconds.
Three special modes that transform how the face behaves — all triggered hands-free from the button.
Hold the button for 2 seconds. The face stops showing expressions and becomes a live audio visualizer — responding to music, voices, or any sound the microphone picks up. Exit by holding the button for 3 seconds.
Showing all display types. Select a display above to see only what's relevant to yours.
The whole matrix becomes a full-color spectrum analyzer. Five visualizer styles available in the Options tab:
The full 128×32 RGB canvas becomes a spectrum analyzer with the same five styles as NeoPixel, rendered at higher resolution across both panels.
No color display, so the reaction happens through brightness. Three layered effects — each independently toggleable in Options:
The whole color matrix becomes a full spectrum analyzer. Five visualizer styles are available in the Options tab:
The visualizer colors follow your active expression gradient, so the color palette shifts with whatever you've configured.
The full 128×32 RGB panel canvas becomes a spectrum analyzer rendered at high resolution across both panels. Same five styles as NeoPixel:
Monochrome dot-matrix can't do a color spectrum, so Music Mode reacts through brightness instead. Three layered effects — enable whichever combination you like in Options:
All three can run simultaneously for maximum impact, or you can dial it down to just one for a subtler effect.
Music Mode — audio spectrum visualizer reacting to sound in real time
Hold the button for 4 seconds. The face keeps showing expressions, but everything gets more reactive and energetic — gradient colors shift faster, brightness pulses with the beat, background effects go into overdrive.
On color matrix builds, connected LED strips also sync up if you have them. On dot-matrix builds, beat-reactive brightness slams on every detected hit.
Three beat effects layer together on dot-matrix displays:
You can mix and match these — all three at once, or just the ones you like. Each has its own toggle in Options.
Tap the button 10 times really quickly. The face goes haywire — expressions cycle randomly, pixels corrupt, brightness flickers. It looks like your suit just had a digital breakdown. It lasts a few seconds and then returns to normal automatically.
This can also trigger if the boop sensor physically disconnects — which is an intentional feature for dramatic effect if you want it. If you don't want that, you can turn Glitch Mode off entirely in Options and it won't trigger from anything.
You can also choose whether Glitch Mode ends with the dramatic black-screen reboot sequence, or just snaps straight back to your normal face. Toggle "Show reboot sequence" in Options under Glitch Mode.
Glitch Mode — the full sequence, from chaos to fake reboot
Everything about how your face looks is configurable from your phone — no cables, no software, no technical knowledge needed. Just connect to your suit's WiFi and open a browser.
Editor tab — face drawing canvases for eyes, nose, and mouth with preset navigation
The Editor tab has three drawing canvases — one for eyes, one for nose, one for mouth. Below each canvas are left/right arrows that let you flip through the built-in preset library. There are 52 eye designs, multiple mouth and nose shapes, plus 11 animated eye presets.
Hit Update to preview any preset on your face live before committing. Hit Save when you're happy with it.
Round
Angled
Sharp
Narrow
X Eyes
Oval
Arch
Arrow
Slit
9 of 52 built-in eye presets — use the ◀ ▶ arrows in the Editor to browse the full library
Closed
Wave
Smirk
Flat
Thin
Frown
Slight
Bumpy
Slice
Zigzag
10 of 33 built-in mouth presets — browse the full library with ◀ ▶ in the Editor
The presets are just a starting point. Every canvas is fully editable — tap any pixel to toggle it on or off. On NeoPixel and HUB75 builds, you can also set a color for each pixel you draw — choose between Gradient (follows the expression gradient) or a fixed solid color.
You can save your own custom designs as personal presets — 8 eye slots, 6 nose slots, 10 mouth slots. They appear alongside the built-in presets in the navigation so everything's in one place.
NeoPixel editor — gradient color mode with per-pixel color visible on all three canvases
Alongside the 52 static eye designs, there are 11 animated eye presets that cycle through frames automatically. You'll see them in the preset list with small symbols in front of the name.
Animation speed is a single global setting in the Options tab — adjust the Eye Animation Speed slider anywhere from very snappy (60ms per frame) to slow and dramatic (800ms per frame).
This is where the display types diverge most dramatically. Color displays can overlay animated gradients and particle effects on top of your face design. Dot-matrix is monochrome — clean, sharp, and classic.
Select a display above to see only what applies to yours. Or read on for the full comparison.
Gradient color overlay — each expression gets its own animated color gradient that flows across the face pixels. Up to 6 color stops, 16 flow directions, adjustable speed, saved presets.
Background effects (8 total) — layered on top of the gradient, these sit behind the face shape, adding depth without covering the expression:
Gradient editor
Effects overlay
Full-panel gradient — same gradient system as NeoPixel but rendered across the full 128×32 canvas, not constrained to the face shape. The gradient fills the entire panel and the face floats on top of it.
Same 8 background effects, rendered at full panel resolution. At this scale effects like Fire and Matrix Rain are particularly striking.
Monochrome dot-matrix has no color layer — the face looks exactly as you draw it: sharp white pixels on black. No gradients, no effects overlay.
What it does have is a global brightness slider, and in Dance/Music mode the brightness reacts dynamically to audio. The aesthetic is clean, readable, and legible from distance — a different kind of appeal entirely.
Each expression has its own animated color gradient that flows across the face pixels. Configure it per-expression in the Editor tab.
Gradient editor
Effects overlay
Layered on top of the gradient, these sit behind the face shape and add depth and movement. One effect active at a time per expression.
The gradient fills the entire 128×32 canvas — not just the face pixels. Same configuration options as NeoPixel: up to 6 color stops, 16 flow directions, adjustable speed, and the same 16 built-in presets (Rainbow, Fire, Ocean, Neon, Pastel, Pan, Trans, Lesbian, Nonbinary, Ace, Bi, White, Cyan, Purple, None, Custom). The color wash covers the whole panel and the face floats on top.
All 8 effects available, rendered at full panel resolution. At 128×32, effects like Fire and Matrix Rain use the whole canvas for an immersive result.
Dot-matrix is monochrome — no color gradients, no effects overlay. The face looks exactly as you've drawn it: sharp white pixels on black. Clean, readable, and legible from a distance.
What you do control is brightness — a global slider in the Options tab, and in-suit adjustment via the button hold. The whole display scales up or down uniformly, which is useful for low-light environments or battery conservation.
In Dance and Music modes, brightness becomes dynamic — reacting to audio beats with the Slam, Ripple, and Shake effects. This is how a monochrome display still manages to feel alive in a music-reactive way.
No app to install. Connect to your suit's WiFi, open any browser, and you're in. Here's what each tab does.
NeoPixel Effects Overlay — all nine effects available, applied on top of the gradient
Options tab — brightness, fan, mic, mouth mode, eye animation speed, Glitch Mode
Button Config tab — tap counts, hold actions with LED colors, mode exit duration
The controller broadcasts its own wireless network. No router, no home internet, no app install. Just connect and go.
Your device's WiFi network is called ProtoFrenz followed by a unique 4-character code — something like ProtoFrenz-A1B2. That suffix is generated from your specific board's hardware ID, so it's unique to your device. At a convention with ten ProtoFrenz suits in the same room, everyone connects to their own network without any confusion.
ProtoFrenz-XXXX where XXXX is yours.192.168.4.1
http://192.168.4.1
By default the network has no password — anyone nearby could connect to it. If you want to protect it, set a password in the System tab (minimum 8 characters). Just make sure you remember it, because if you forget it, you'll need to do a reset to clear it.
You don't need WiFi on while you're actually wearing the suit — only when you're configuring it. You can disable it in System tab → Auto-start WiFi on boot, or assign a button hold action to toggle it on and off while you're suited up.
Firmware updates bring new features, display improvements, and bug fixes. The preferred path is fully automatic — takes about two minutes and touches nothing you've configured.
This requires your controller to be connected to your home network. If you haven't done that yet, see the WiFi section first.
If automatic update isn't available — for example, your controller isn't connected to a home network — you can upload a firmware file manually.
192.168.4.1..bin file.
System tab — Firmware Update section
If your controller's WiFi update isn't working, or you're setting up a fresh / blank board for the first time, you can install the firmware directly from this page using your computer's USB port and a Chrome or Edge browser. This works on Windows, Mac, and Linux.
USB Serial (Paired) COM3).If you can't reach the WebUI through the controller's built-in WiFi network — most commonly with iPhones, iPads, or Macs — you can add the controller directly to your home network over USB instead. After this one-time setup, your Apple device (or any device on your home network) reaches the WebUI through the home network at a regular IP address, and the controller's built-in WiFi quirks become irrelevant.
This uses the same green install button as the firmware update above. When the browser detects your controller, it offers a Configure Wi-Fi option in addition to Install.
USB Serial (Paired) COM3).http://192.168.1.42. Click that link to open the WebUI in your browser.If you ever need to start completely fresh, the Factory Reset option is in the System tab. Before it resets, it gives you a choice:
Most issues have a fast fix. Start here before anything else.
This usually means a module wiring direction is off. On color matrix displays, run the Wiring Orientation test in the Diagnostics tab — it lights the four corners of each module a specific color so you can see if anything's rotated wrong. On dot-matrix builds, high device-number modules should be on the left when you're looking at the display.
On color matrix displays, run the Color Fill tests in Diagnostics — they test red, green, blue, and white separately. A pixel that shows as cyan instead of white means its red subpixel is dead. If an entire module is out, check the solder connections on the data wire leading to it.
White pixels draw much more power than other colors. This is a power supply issue — your bank either can't deliver enough current, or there's a long run of wire between the bank and the display causing a voltage drop. Try reducing brightness, or using a higher-output power bank. The controller caps brightness automatically in diagnostic modes, but if you're using all-white fills in your custom design at high brightness, you can hit this limit.
Open the WebUI, go to the Options tab, and nudge the Mic Sensitivity slider one notch in either direction. That triggers a fresh calibration and usually fixes it immediately. The mic calibrates on startup for the ambient noise level it hears first — if you powered on somewhere very quiet and then moved somewhere louder, the calibration will be off.
The visualizer needs more audio input than normal mouth animation. Increase mic sensitivity and make sure music is playing at a reasonable volume nearby. Bars and Mirror visualizer styles respond more visibly to quieter input than Waterfall or Pulse.
Check that the expression is enabled in the Button Config tab — each expression has a checkbox that can disable it. Also check that you're tapping fast enough: taps more than 700ms apart reset the counter and the system waits for a new sequence.
Watch the onboard LED — it should change color as you hold longer. If it's not changing at all, check that the action is enabled in Button Config. If it's changing color but not triggering, you might be releasing before you hit the right threshold. Hold a beat longer than you think you need to.
Make sure the controller is fully powered on — wait about 10 seconds after turning it on before looking for the network. If you changed the AP name in System settings, look for that custom name plus the 4-character suffix. If you don't know what name you set, a factory reset restores the default ProtoFrenz-XXXX.
Work through these in order — they fix the vast majority of cases:
192.168.4.1.http:// → http://192.168.4.1. Some browsers silently switch to https://, which won't load.This almost always means the firmware was flashed with mismatched settings in Arduino IDE. The fix is to re-flash using the correct partition scheme (8M with spiffs (3MB APP/1.5MB SPIFFS)) with Erase All Flash enabled. This is a one-time technical fix — if you bought a completed build and this happens, contact us at protofrenz.com and we'll sort it out.
If the page starts to load and then vanishes — and the suit's face keeps running normally (a brief freeze while it talks to your browser is normal and expected) — your phone is dropping the suit's hotspot because it has "no internet."
This step puts the suit on your home Wi-Fi. The suit's chip is 2.4 GHz only — it physically cannot join a 5 GHz network, and many routers broadcast 2.4 GHz and 5 GHz under the same name.
You don't actually need this step to use your suit — it only adds the suit to your home network. You can do everything from the control panel over the suit's own hotspot at http://192.168.4.1.
Still stuck? The controller can tell you exactly what's happening over USB. Plug the suit into a computer, open the browser installer, click the green button, and choose Logs & Console. Then click Reset Device — the suit prints a plain-English status.
You'll see its firmware version, board type, and why it last restarted. After that, just press a letter in the console (no Enter needed):
d — show full diagnostics now (version, power, Wi-Fi status)p — pause / resume the automatic status updates (every 15 seconds)w — log each web request as your browser makes it (use this when the control panel loads blank or sticks on "Connecting…")? — show the command list againQuick test — is your phone actually reaching the suit? Press w to turn on web logging, then try to open http://192.168.4.1 on your phone and watch the console. What you see tells you exactly what's wrong:
GET / and then GET /api/status repeating. Your phone and the suit are talking fine. If the page still looked stuck, just refresh it.
GET / once, then nothing more. The page opened, but your browser is being blocked from finishing. Fix: close the "Sign in to network" pop-up and open http://192.168.4.1 in a normal browser (Chrome or Safari), with mobile data off.
GET / at all (maybe only "other request" lines). Your browser isn't reaching the suit. Fix: turn off mobile data, tap "Stay connected" when your phone warns about no internet, and try again — or use a laptop.
When you try to join your home Wi-Fi, the console says why it failed — for example "network not found … make sure it's 2.4 GHz" or "wrong password." Share those lines with us at protofrenz.com or on Discord and we can pinpoint it fast.
The diagnostics console needs firmware 3.0.9a or newer. On older firmware this console shows no readable text — update via the green Install button first.