WeebLabs has posted DSPi v1.1.6-beta5, dated 17 October, the newest beta of its open-source audio DSP firmware for the Raspberry Pi Pico (RP2040) and Pico 2 (RP2350). The firmware makes the board show up on a computer as a USB sound card, then runs equalisation, active crossovers, time alignment and other processing before the audio leaves through digital outputs. The source is on GitHub under the GPL-3.0 licence. There is no hardware product to buy. Users flash the firmware onto their own Pico board and add the external audio parts themselves. The most recent stable release is v1.1.5 from 4 August; every release since then carries a beta tag.
The project's repository calls DSPi "A fully featured audio DSP firmware for the Raspberry Pi Pico (RP2040) and Pico 2 (RP2350)" and says "Both platforms are fully tested and production-ready." CNX Software wrote the project up on 7 October and Electronics For You followed on 9 October.
What the firmware does
DSPi sits between an audio source and an amplifier or DAC. It takes stereo audio over USB or S/PDIF and routes it through a matrix mixer to several outputs. Each output can have its own filtering, delay and level control. The feature set includes parametric EQ, active crossovers, time alignment, loudness compensation based on ISO 226:2003 and BS2B-based headphone crossfeed, with 10 user preset slots. Both chips run at 307.2 MHz, but they use different signal paths: the RP2040 build uses Q28 fixed-point maths in hand-optimised ARM assembly, while the RP2350 build uses single-precision floating point on the chip's hardware FPU.
The repository and CNX Software's breakdown give these figures:
| Pico (RP2040) | Pico 2 (RP2350) | |
|---|---|---|
| Total channels | 7 | 11 |
| Output slots | 2 stereo | 4 stereo |
| Matrix mixer | 2x5 | 2x9 |
| EQ bands | 10 per channel (70 total) | 10 per channel (110 total) |
| S/PDIF or I2S output channels | 4 | 8 |
| DSP arithmetic | Q28 fixed-point | Single-precision float |
The two builds share the rest of the feature set:
- USB input: 16/24-bit PCM at 44.1/48/96 kHz, on macOS, Windows, Linux and iOS
- S/PDIF input: 24-bit PCM stereo at 44.1/48 kHz
- Outputs: each stereo slot set to 24-bit S/PDIF or 24-bit I2S at runtime, plus a mono PDM subwoofer output driven by a 2nd-order delta-sigma modulator
- 11 filter types, and up to 4 crossovers per output in Linkwitz-Riley, Butterworth and Bessel families, up to 8th order (48 dB/oct)
- Delay of up to 85 ms on each output
- RMS-based volume leveller with optional 10 ms lookahead and a -6 dBFS safety limiter
- Master volume from -128 to 0 dB, with -128 acting as a true mute
The PDM subwoofer output needs an RC low-pass filter to turn it into an analogue signal. The board is controlled through a graphical application, DSPi Console, or a command-line tool, DSPi Terminal. Firmware updates can go over USB: a vendor USB command reboots a running board into the UF2 bootloader, which DSPi Console uses for one-click updates.
What changed in recent releases
Each release below is dated as WeebLabs posted it on its releases page:
- v1.1.5, stable (4 August): closed out the v1.1.5 beta series with ADAT input and output (RP2350 only), I2S input with a slave clock mode, up to four selectable S/PDIF inputs, USB input of 2, 4, 6 or 8 channels, IR remote control, and UART and I2C control interfaces.
- v1.1.6-beta3 (12 September): added a subharmonic synthesiser on each output modelled on the dbx 120A, a 1024-point FFT spectrum analyser and auxiliary GPIO outputs.
- v1.1.6-beta4 (28 September): added a Tube Modeller with 16 selectable vacuum tube models on each output, and a brickwall peak limiter on each output that can be grouped. The release also freed 17 KB of RAM.
- v1.1.6-beta5 (17 October): added a soft VCXO that adjusts the system clock in slave mode instead of changing PIO dividers. It also brought a redesigned S/PDIF receiver with a ring input buffer, ring buffers on each S/PDIF and I2S output, 4-channel 24-bit USB input on the RP2350, and a fix for distortion in I2S slave mode.
Changes in the 1.1.6 betas have not yet reached a stable release.
What It Means for Makers
The firmware is only part of a build. Electronics For You lists the external parts: an I2S DAC such as the PCM5102 for analogue output, an optical transmitter for S/PDIF output, and a low-pass circuit for the PDM subwoofer output. S/PDIF input needs an added receiver circuit. On the Pico 2, a PCM1808 ADC can provide analogue input over I2S. The repository has the connection details. Read them before buying parts.
Room correction depends on outside measurement. Electronics For You notes that the firmware does not measure the room itself and suggests a tool such as Room EQ Wizard, with the resulting filters applied in DSPi. Installation works like other Pico firmware: hold BOOTSEL while connecting the board and copy the UF2 file for that board to the drive that appears. Keep the DSPi Console version matched to the firmware version, because the two share a control protocol that changes between releases.
Choose your board based on the feature list. ADAT and 4-channel USB input are RP2350-only, and the Pico 2 build has more channels and EQ bands. v1.1.5 is the stable build; the tube modeller, the per-output limiters and the reworked S/PDIF receiver are only in the v1.1.6 betas. Builds for both boards are on the GitHub releases page. Compiling the firmware yourself takes CMake, the Arm GNU toolchain and pico-extras, with a separate configuration for each board.