Documentation
Start with the product, not the toolchain.
EMWaver turns your phone or computer into the working surface for hardware control. Plug in a supported board, open the app, and start interacting with peripherals, signals, and scripts without firmware builds or IDE setup.
Quick start
- Get a supported board — start with an ESP32-family dev board (ESP32, ESP32-S2, or ESP32-S3), an ESP8266 board, or open the EMWaver hardware lineup and build files.
- Install the app — use the native app where it fits: iOS, Android, macOS, Windows, or Linux preview.
- Flash fixed firmware — use the bundled EMWaver firmware image for your board class (ESP32, ESP32-S2, ESP32-S3, ESP8266, or STM32F042). No user build loop.
- Run a script — use built-in examples, write your own JSX-based
.emwscript, or enable desktop MCP so an MCP client can assemble the flow.
What you can do
- Infrared and signal work — capture and replay remote signals, inspect waveforms, zoom through samples, and retransmit from supported IR-capable boards.
- Buses and peripherals — drive SPI, I2C, UART, ADC, PWM, and GPIO from scripts to talk to sensors, displays, motor drivers, RFID modules, and board-level interfaces.
- Sub-GHz and RFID — work with CC1101-based radio setups and MFRC522-style RFID modules without leaving the same scripting model or app surface.
- Desktop MCP flows — when you enable the desktop MCP bridge, an external MCP client can list scripts, run them on real hardware, inspect device state, and call SPI/GPIO/analog tools.
How it works
Everything runs through scripts using local JavaScript files that define both hardware logic and JSX UI in one place. When you run a script, the app renders controls, plots, and inputs directly on your device. Edit the file and run again for immediate feedback.
The board handles the physical I/O. Your phone or computer handles rendering, storage, script execution, and local device transport.
Quick start details
- Choose hardware from the build catalog or start with a supported ESP32-family dev board (ESP32, ESP32-S2, or ESP32-S3), or an ESP8266 board. Purpose-built hardware is also available in the EMWaver Shield repository.
- Install the app through the App Store, Google Play internal test, Android APK, macOS DMG, Windows download, or Linux DEB.
- Flash the fixed EMWaver firmware if your board is not already pre-flashed. Use the bundled target image for your board class (ESP32, ESP32-S2, ESP32-S3, ESP8266, or STM32F042) rather than building firmware manually.
- Plug in locally. EMWaver runs supported scripts directly through the native app and connected board.
- Open a script such as
sampler.emw,cc1101.emw, orrfid.emw, then adapt it or create a new one.
Apps
- iOS on the App Store
- Android through the Google Play internal test or direct APK download
- macOS direct DMG download for development and advanced use
- Windows EXE installer and ZIP downloads
- Linux native preview app for Ubuntu-style systems
What to read next
Connect desktop MCP
Enable the local MCP server, copy the endpoint/token, and expose EMWaver tools to an MCP client.
Learn the scripting model
JavaScript scripts, JSX-style UI syntax, imported device modules, and built-in examples.
Browse supported boards and repos
Board families, pinout details, open hardware files, and current build resources.
Follow step-by-step hardware walkthroughs
Windows ESP32-family firmware flashing, CC1101 433 MHz setup, and practical script-driven hardware tests.
Get support and discuss builds
Join Continual Society on Discord for troubleshooting, ideas, and EMWaver discussion.
