Build with OXRecorder: explore plugins, firmware APIs, mobile setup, and PSSP streaming. All guides are public and available without signing in.
Want to reuse this code in your own project? The
SDK & download page shows how to download the
managers as a ready-to-use PlatformIO SDK and wire it up.
Build your own OXRecorder plugins
Use AI Builder or write your own code to work with OX devices, recordings, transcripts, sensors, and automations. Read the complete plugin guide in English or Chinese without a portal account.
Android installation: Open the downloaded APK on your Android device. If prompted, allow your browser or file manager to install apps from this source, then complete the installation.
Set up your device
Power on your OX Device and keep it near your phone.
Open OXRecorder and sign in or create an account.
Enable Bluetooth and grant the permissions requested by the app to discover nearby devices.
Add your OX Device, select it from the scan results, and follow the app's instructions to configure Wi-Fi and device settings.
PSSP connects the OXRecorder system
PSSP provides communication between end devices and servers throughout the OXRecorder system. Learn how to install the broker, connect and authenticate clients, exchange application data and handle delivery and reconnection.
A self-hosted instance runs on your own Mac or Ubuntu server and keeps your recordings private: they stay on your server, never reach the OX cloud, and only the accounts you create can open them. You keep managing devices from the cloud portal.
Build 30 update: Checks the configured self-host service every two minutes while using cloud fallback. On authenticated recovery, closes the current clip, preserves pending audio, and restarts into self-host. Resumes recording once with its original stop time and keeps upload progress and schedules separate for each destination. The package compiled successfully and passed uploader package validation. Physical-device verification is pending.
Build 27 update: Raises the preferred SD-card SPI data clock to 40 MHz for faster local-recording replay, with automatic fallbacks through 26.67, 20, 16, 12, 8, 4, 2 and 1 MHz for cards or wiring that cannot sustain the higher rate. SD initialization remains at 400 kHz. The package compiled successfully and passed uploader package validation.
Build 23 update: Separates server commands from device reports while retaining one encrypted PSSP TCP connection. Device reports now use a dedicated report topic, and command subscriptions request broker-enforced noLocal delivery suppression to prevent replayed self-published control messages from disconnecting the device. This build requires PSSP broker 1.0.7 and the matching web-service report-topic deployment. The package compiled successfully and passed uploader package validation.
Build 5 update: Battery voltage measurement now uses a 100 kΩ top resistor and a 24 kΩ resistor to ground. Before installing, wire battery positive → 100 kΩ → GPIO7 → 24 kΩ → GND. This keeps the full-charge ADC input in range; the firmware maps approximately 4.20 V to 100%.
Download the USB firmware uploader for Windows x64, macOS Apple Silicon or Linux x64, then open an .oxfw package to update your recorder. Python and the upload tools are included.
Current downloads are development previews for the ESP32-S3 Super Mini N4R2. See the guide for platform requirements and validation status.
Hardware blueprint
The OXRecorder hardware is an ESP32-S3 Super Mini with three peripherals: an
INMP441 microphone (I2S), a microSD
adapter (SPI), and a WS2812 status LED, powered by a
3.7 V LiPo battery through a TP4056, plus
a battery-sense divider on GPIO7 and a
reset button on GPIO8. The full pin map is below —
anyone with this page can build the board. Each peripheral's detailed
wiring is on its How It Works page
(mic,
SD,
LED,
battery sense).
data clock / resistors power (5V / 3V3) ground
OXRecorder hardware blueprint — power: Battery → TP4056 (5 V) → ESP32-S3,
microSD & INMP441 on the ESP32's 3V3 output; GPIO7
senses the raw battery VCC/GND terminals through a 1k/1k divider,
not the TP4056 output rail; 10uF across microSD VCC/GND; 330 Ω and a
level shifter on the WS2812 data line if the LED runs at 5 V.
Signal pins are the firmware defaults and can be overridden in each
manager's begin(). Internal flash storage (LittleFS) needs no
wiring.
Power topology
The 3.7 V LiPo feeds a TP4056 module, which charges the
cell and boosts its output to 5 V. That 5 V rail powers
the ESP32-S3 Super Mini (5V pin). The INMP441 and a 3.3 V-compatible
microSD adapter run from the ESP32-S3's regulated
3V3 output, not the 5 V rail.
From
To
Rail
Notes
Battery 3.7 V (+/−)
TP4056 B+ / B−
3.7 V
Charge + protect the cell.
TP4056 OUT 5 V
ESP32-S3 Super Mini 5V
5 V
Boosted output powers the MCU board.
ESP32-S3 3V3 out
microSD VCC
3.3 V
Use an adapter with 3.3 V MISO; place 10uF from VCC to GND near the adapter.
TP4056 OUT 5 V
WS2812 5V
5 V
Use a 3.3 V-to-5 V level shifter between GPIO9 and DIN.
Battery cell + / −
GPIO7 through 1k/1k divider
ADC sense
Top resistor goes to raw battery VCC; bottom resistor goes to raw battery GND. Do not connect this divider to TP4056 OUT 5 V.
ESP32-S3 3V3 out
INMP441 VDD
3.3 V
Mic runs on the MCU's regulated 3.3 V only.
Common GND
all devices
—
TP4056, MCU, mic, SD, and LED share ground.
The ESP32-S3 GPIOs are not 5 V tolerant. Keep the SD bus at 3.3 V, and
add a 3.3 V-to-5 V level shifter after the 330 Ω series resistor when the
WS2812 runs at 5 V. The SD adapter should have a local 10uF capacitor from
VCC to GND to absorb card current spikes. The
INMP441 is kept on 3.3 V because it is a 1.8–3.6 V part.