BP10 DSP Controller is an independent ESP32-S3 USB host controller for selected MVSilicon BP10/BP1048 DSP devices.
It provides a local web interface for controlling the DSP functions commonly found on supported subwoofer boards. The controller communicates with the DSP through its USB ACP/HID interface, stores the selected configuration on the ESP32, and restores it after power-on or a DSP reconnect.
The project was originally developed for the AIYIMA A800X and now also includes experimental support for other compatible MVSilicon ACP devices.
Depending on the connected DSP and the functions discovered on it, the web interface provides:
- independent Music and Rec paths on compatible Generic ACP devices
- Pre EQ and Out EQ with confirmed-readback and local-preview response curves
- Noise Suppressor
- Virtual Bass and Virtual Bass Classic
- Phase and Delay/HQ
- mode-aware DRC with Full Band, Lower/Upper, crossover, and optional Q controls
- USB Out Gain
- Silence Detector, when available
- automatic device and effect discovery for supported Generic ACP devices
- automatic restoration of path-specific saved DSP settings
- fingerprint-bound multi-path DSP configuration export and import
- explicit reload of the current state from the DSP
- Wi-Fi setup with network scanning
- configurable device name
- factory reset
- firmware updates through the web interface
Only functions recognized on the connected device are displayed.
DSP settings are stored in the ESP32's non-volatile storage and are reapplied after:
- restarting the ESP32
- powering the DSP off and on
- disconnecting and reconnecting the DSP USB connection
The controller does not write configuration data to the DSP's internal flash.
For Generic ACP devices, Music and Rec settings are stored independently. Saved configurations are tied to the detected device profile and DSP schema. A stored configuration is restored only when the connected device matches the profile and schema for which it was saved.
Configuration export and import include all supported DSP paths in one versioned file. Import performs a complete apply, DSP readback verification, and ESP-NVS save. Configuration files contain DSP settings only; they do not include Wi-Fi passwords, network information, IP addresses, MAC addresses, or the ESP32 device name.
- USB ID:
0x8888:0x171E - fixed and fully tested device profile
- Music Pre EQ
- Music Noise Suppressor
- Virtual Bass
- Virtual Bass Classic
- Music Phase
- Music DRC through the shared schema-driven DRC implementation
- Silence Detector
- configuration persistence
- automatic restore
- configuration export and import
The AIYIMA A800X is currently the primary verified target.
- currently recognized USB ID:
0x8888:0x1719 - automatic ACP effect discovery for the tested compatible schema
- dynamic effect addresses instead of an A800X-specific fixed map
- only recognized and structurally compatible functions are enabled
- separate Music and Rec paths where published by the DSP
- Music/Rec Pre EQ, Out EQ, mode-aware DRC, Phase, Delay, Virtual Bass, and USB Out Gain when reported available
- device-profile- and schema-bound multi-path configuration persistence
- automatic restore on a matching device
- full configuration export, import, Apply/Verify, and save
Generic ACP support has been tested with a BP1048-based board exposing independent Music and Rec paths. The available cards are derived from the discovered effect catalog and validated wire schemas; unavailable modules remain hidden.
Other BP10/BP1048 devices may use different firmware, effect layouts or parameter structures. Detection of a USB device alone therefore does not guarantee compatibility.
The firmware target is an ESP32-S3 board with:
- 4 MB flash
- 2 MB Quad PSRAM
- USB host capability
- Wi-Fi
The release firmware and partition layout are built for this configuration.
The Pre EQ and Out EQ editors display the combined frequency response of the currently configured filters. Gray represents the latest confirmed DSP readback; green represents the local draft. After a successful Apply and Verify the curves overlap.
The easiest first installation method is Espressif's browser-based serial flasher.
- Download
bp10-dsp-controller-vX.X.X-full.binfrom the latest GitHub release. - Open the Espressif Web Flasher in Chrome or Edge:
https://espressif.github.io/esptool-js/ - Connect the ESP32-S3 to the computer using a USB data cable.
- Select the ESP32-S3 serial port.
- Add
bp10-dsp-controller-vX.X.X-full.binat flash address0x0. - Start programming.
- Restart the ESP32-S3 after flashing.
When the board is not detected, hold its BOOT button while connecting or resetting it to enter download mode.
Do not use the smaller OTA application image for the first installation. That file is intended only for firmware updates on an already installed controller.
- Connect to the open Wi-Fi network named
bp10-xxxx. - Open
http://192.168.4.1. - Scan for available networks.
- Select the home network and enter its password.
- After the ESP32 connects, open the displayed IP address or:
http://bp10-xxxx.local
The setup access point is disabled after a successful home-network connection.
It becomes available again when:
- no Wi-Fi configuration has been saved
- the saved network cannot be reached
- a factory reset has been performed
After the initial installation, firmware can be updated directly from the web interface.
Use the application-only image:
bp10-dsp-controller-vX.X.X-ota.bin
The controller validates the firmware before activating it. Wi-Fi settings and saved DSP profiles remain stored during a normal firmware update.
The full image is intended for initial serial flashing or complete recovery.
The tested toolchain is:
ESP-IDF 6.0.2
From a fresh checkout:
idf.py set-target esp32s3
idf.py build
idf.py merge-bin -o bp10-dsp-controller-full.binThe resulting application-only firmware is:
build/bp10_dsp_controller.bin
The merged image for first installation is:
build/bp10-dsp-controller-full.bin
Run the host regression tests with:
tests/host/run.shTwo tested build presets are provided:
- Product: 4 MB flash and 2 MB Quad PSRAM
- Devboard: 16 MB flash and 8 MB Octal PSRAM
Keep separate build directories when switching targets. Published release assets use the Product configuration.
The web interface is intended for use on a trusted local network.
It currently has no user login or authentication. Any device on the same network may be able to access the DSP control, configuration and firmware-update endpoints.
Do not expose the controller directly to the internet.
- Settings are changed on the live DSP.
- The project does not write settings to the DSP's internal flash.
- Import files are validated before they are applied.
- Generic ACP support remains experimental.
- Keep a known working configuration backup before testing unfamiliar hardware.
- Use the firmware at your own risk.
Copyright 2026 CobbyCode.
This project is licensed under the GNU General Public License v3.0 or later. See LICENSE.
This is an independent open-source project.
It is not affiliated with, endorsed by, or supported by MVSilicon, AIYIMA, or any other hardware manufacturer. Product and company names are used only to identify compatible or tested hardware.


