Enteronova Controller
A web-based BLE testing console built for Enteronova's IBS/IBD neuromodulation device. One screen to replace five tools — from device connection through oscilloscope testing to exportable reports.
TL;DR
Built a single-page web app that replaced a fragmented firmware testing workflow — BLE connection, real-time ADC readback, oscilloscope waveform guides, and exportable test reports — so engineers could test medical hardware from one screen instead of five tools.
Overview
Role
Design Technologist
Company
Enteronova
Stack
HTML/CSS/JS, Web Bluetooth API, BLE NUS
The Problem
Five tools, zero flow
Testing firmware on a medical neuromodulation device was a fragmented mess. Engineers had to flash firmware via J-Link, connect BLE through nRF Connect, run RTT logs from the command line, set up an oscilloscope with the right probes and settings, then manually note readings on paper. Each context switch broke concentration, and reproducing a bug meant reassembling this entire toolchain from scratch.
Key Insights
The Solution
One webapp. Full hardware control.
A single-file HTML webapp that connects to the device over BLE and provides everything a firmware engineer needs: treatment controls, raw hardware register access, live ADC readback, oscilloscope waveform guides, and a structured test report builder — all from a browser tab.
Simple Mode — treatment controls for routine testing
Raw Mode — direct hardware register access
Architecture
Single file, zero install
The entire tool is a single HTML file — no build step, no dependencies, no server. Engineers open it in Chrome, click Connect, and they're testing. The Web Bluetooth API handles device communication over BLE using Nordic's UART Service (NUS), with a custom structured command protocol for reliable two-way control.
Features
Built for the bench
ADC Live Readback — real-time 4-channel telemetry
Device Log — color-coded with module filters
Scope Tools
Oscilloscope testing, built in
Instead of referencing separate documentation, the tool embeds everything needed for oscilloscope verification: ASCII wiring diagrams, per-test scope settings (V/div, timebase, trigger mode), expected waveform shapes, and automated sweep tests.
Oscilloscope sweep tools with progress tracking
Expected waveforms with measurement reference
Setup Guide
No more flipping to the docs
Oscilloscope setup was the most error-prone part of testing — wrong probe settings, wrong ground connections, wrong V/div. So I embedded a full tabbed setup guide directly in the tool: wiring diagrams, per-test scope settings, expected waveforms, and a troubleshooting table. Everything the tester needs without leaving the page.
Built-In Troubleshooting
Embedded setup guide with wiring, settings, waveforms, and troubleshooting tabs
Reporting
Structured test reports
The tool includes a full test report builder with pre-loaded test suites, expected vs. measured comparisons, pass/fail/skip tracking, and one-click export to Markdown or PDF. Testers see expected values inline while testing — no more flipping between a spec document and their readings.
Each report captures device serial number, firmware version, oscilloscope model, load resistance, tester name, and environmental notes — so every export is a complete, traceable test record.
Test report with pre-loaded suites, live ADC capture, and MD/PDF export
Results
From five tools to one tab
The tool collapsed a fragmented workflow — flashing firmware, connecting BLE via nRF Connect, running RTT from CMD, setting up the scope from documentation, and writing results on paper — into a single browser tab. Testing became a flow state, not a context-switching exercise.
5 → 1
Tools consolidated into one interface
Faster cycles
Rapid test iterations without workflow fragmentation
Bugs caught
Reproducible states made bug reports actionable
Reflections
What I learned
Building this tool reinforced something I've believed for a while: the best developer tools don't add features — they remove friction. The Web Bluetooth API was the key enabler, letting me build a zero-install tool that connects directly to hardware from a browser. The biggest design challenge was serving two audiences — firmware engineers who want raw register access, and testers who just want to run treatments and log results. The dual-mode approach (Simple + Raw) solved this cleanly without compromising either experience.








