• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Introducing DSPi | A powerful, user friendly and open source DSP for less than a cup of coffee

Hi @Weeb Labs

Thank you for your Great project, I'm planning to build one for my system and wanted to sanity-check my config before I start.

My plan setup: WiiM Ultra (USB out) → DSPi (Pico 2) → Topping D90 III (via S/PDIF coax) + SVS PB-1000 subwoofer (via I2S → PCM5102A DAC module).

A few questions:

1. WiiM Ultra USB audio out → DSPi: is this straightforward? I assume DSPi presents itself as a standard USB Audio Class device so the WiiM doesn't care what's downstream.

2. Wiring: does this look correct?

S/PDIF out (Slot 0 → D90 III):
GPIO 6 → 75Ω resistor → RCA center pin
GND → RCA shield

I2S out (Slot 1 → PCM5102A → sub):
GPIO 7 → PCM5102A DIN
GPIO 14 → PCM5102A BCK
GPIO 15 → PCM5102A LRCK
3.3V → PCM5102A VCC
GND → PCM5102A GND
PCM5102A LOUT → RCA → SVS PB-1000 L input

Since I'm not using PDM, Core 1 should run in EQ Worker mode and all Out 1–8 stay available — is that right?

3. PEQ allocation — my plan is:
- Master L/R (PASS 2): room correction filters from REW
- Out L/R (PASS 5): LR24 HPF @ 80Hz (2× HP biquad Q=0.707 cascaded)
- Sub (PASS 5): LR24 LPF @ 80Hz + sub-specific room mode cuts

Does applying crossover at the output stage (PASS 5) rather than Master make sense here, or is there a better approach?


I’d advise using a Toslink S/PDIF output to your Topping D90 III; it’s much cleaner for using USB as an input. I’m using Toslink out to my DX5 II and a purple board PCM5102 for my subwoofer, so it’s a very similar setup to yours, and I couldn’t be happier with the results.
 
The measured performance of the common purple boards is excellent, so I would only recommend spending the additional money on a 5122 if the slightly lower noise floor is needed for some specific reason.

View attachment 537746



Claude's plan is generally correct but one consideration here is the volume control. Claude recommends using the WiiM as your sole volume control and while this will certainly work, it means that you won't be able to make use of the loudness compensated volume control available on DSPi. My suggestion would be to treat User Volume on DSPi as your primary volume control, unless you don't intend to use the loudness compensation.

Additionally, I would question Claude's decision to "immediately set master volume to 0dB" upon first boot. The purpose of master volume is to function as a safety net that prevents you from accidentally destroying speakers with sudden loud noises. This is especially important during the initial setup, as it is not necessarily a given that your wiring will be correct on the first attempt.

Claude also did not mention External Mute Control, which is quite important when using an I2S output. The EMC output needs to be connected to your DAC's mute pin so that it can be muted automatically during system state transitions that might otherwise produce loud pops or clicks.
Thank you for the detailed feedback:

1. Volume control and loudness compensation

I understand the suggestion, but DSPi Console isn't practical as a daily volume control in my chain WiiM is the primary interface. My question is whether WiiM Ultra sends USB host volume position messages (UAC volume control) when the user adjusts volume, or whether it only attenuates the digital signal internally. If DSPi receives the USB volume position from WiiM, loudness compensation should track correctly without me touching DSPi Console at all. Do you know if this is the case?

2. Master volume safety

That's a fair point and I'll follow your advice, keep the default -20 dB during initial wiring verification, and only raise it once I've confirmed the signal is going to the right outputs.

One clarification: my plan to eventually set master volume to 0 dB is simply to avoid double attenuation (WiiM already handles volume).

3. External Mute Control

This is new to me, thank you for flagging it. I understand the mechanism: DSPi EMC output goes low during state transitions, and connecting it to PCM5102A XSMT prevents pops and clicks when sample rate changes or USB events occur.

Could you tell me the default EMC GPIO on RP2350? I want to add this wire to my build and update my wiring diagram accordingly.
 
Hi @longts : A couple of thoughts:

1) You might consider using an Adafruit PCM51xx dac. They are a great small company and have three different PCM dacs - and for another $2 you can get the PCM5122 which is noticeably higher quality. I like Adafruit and have tested their PCM5102 and PCM5122 dacs and while the capacitor part quality isn't outstanding it's competent and probably better than random Aliexpress. Also, they spec the DAC at 3.3V usable, which is what I used to test with.

2) SPDIF is relatively high frequency and unless you build a PCB I would avoid having the SPDIF output pin right next to the I2S pin. There are lots of alternative pins available in DSPi that are physically farther away from the output data.

3) Raspberry Pi usually recommend the Vsys 5V output pin rather than the VBus 5V pin for peripherals since it adds some protection.
Thank you for the suggestions.

On the PCM5122: I’m based in Vietnam so Adafruit isn’t really accessible here, otherwise I’d go for the 5122 without hesitation. I’ll stick with a local PCM5102A module for now.

The GPIO separation point and VSYS vs VBUS are both new to me, I’m total new to electronics so I appreciate you flagging these. I’ll move the S/PDIF output to a pin farther from the I2S cluster and switch the power supply to VSYS.
 
I’d advise using a Toslink S/PDIF output to your Topping D90 III; it’s much cleaner for using USB as an input. I’m using Toslink out to my DX5 II and a purple board PCM5102 for my subwoofer, so it’s a very similar setup to yours, and I couldn’t be happier with the results.
Thank you for your advice. As a diagram, the USB is as the input from the Wii Ultra to the DSPI. The output is then transmitted via coaxial cable to the Topping D90 III D.
I will try to complete it soon!
 
Hi, does anyone know this detail? When setting up the subwoofer channel in a matrix router, the L/R channel signals are usually summed. Does the DSPi automatically adjust the signal level when summing the L/R channel signals to avoid overload?
 
Hi, does anyone know this detail? When setting up the subwoofer channel in a matrix router, the L/R channel signals are usually summed. Does the DSPi automatically adjust the signal level when summing the L/R channel signals to avoid overload?

No you need to reduce the gain. L + R - mono sub: reduce gain by −6 dB
 
Thank you for the detailed feedback:

1. Volume control and loudness compensation

I understand the suggestion, but DSPi Console isn't practical as a daily volume control in my chain WiiM is the primary interface. My question is whether WiiM Ultra sends USB host volume position messages (UAC volume control) when the user adjusts volume, or whether it only attenuates the digital signal internally. If DSPi receives the USB volume position from WiiM, loudness compensation should track correctly without me touching DSPi Console at all. Do you know if this is the case?

2. Master volume safety

That's a fair point and I'll follow your advice, keep the default -20 dB during initial wiring verification, and only raise it once I've confirmed the signal is going to the right outputs.

One clarification: my plan to eventually set master volume to 0 dB is simply to avoid double attenuation (WiiM already handles volume).

3. External Mute Control

This is new to me, thank you for flagging it. I understand the mechanism: DSPi EMC output goes low during state transitions, and connecting it to PCM5102A XSMT prevents pops and clicks when sample rate changes or USB events occur.

Could you tell me the default EMC GPIO on RP2350? I want to add this wire to my build and update my wiring diagram accordingly.
You are correct regarding the loudness compensation. User volume is driven by UAC volume, so if your WiiM implements UAC volume control of connected devices, then loudness compensation will work properly.

The default EMC pin should be GPIO 0 but I will verify this shortly.
 
No you need to reduce the gain. L + R - mono sub: reduce gain by −6 dB
Well, that very much depends on the sensitivity of your mains and your sub.
Your sub very likely will have its own volume control. I personally would feed it with max level and reduce volume at the sub to get best S/N ratio. Theoretically....
 
Well, that very much depends on the sensitivity of your mains and your sub.
Your sub very likely will have its own volume control. I personally would feed it with max level and reduce volume at the sub to get best S/N ratio. Theoretically....
Reducing the crosspoint gain by 6dB is necessary when summing left and right channels. Otherwise, the input of the DAC connected to the subwoofer will be clipping.
 
Reducing the crosspoint gain by 6dB is necessary when summing left and right channels. Otherwise, the input of the DAC connected to the subwoofer will be clipping.
I assumed the sub output to be analog?!?
Sorry if I a am being a noob...
 
This is fun. Pico 2 appeared > put uf2 > rebooted > pc now only detects it from usb 2. Well my mobo only have usb 3.0 on the rear panel. Front panel usb is full so good thing i bought a separate usb2 pcie rear panel. It works normally tho.
1781173036618.png
 
The measured performance of the common purple boards is excellent, so I would only recommend spending the additional money on a 5122 if the slightly lower noise floor is needed for some specific reason.

View attachment 537746
Those are excellent results. Noise is in line to less than a dB with the data sheet values. THD is much better than I expected. May I ask at what output voltage and with what load impedance you measured this?

According to the data sheets, the 5122 has the exact same THD+N of -93 dB as the 5202. Same story for SNR and DR (112 dB). The difference is that the 5122 has software control and the 5102 hardware control. So where does the statement come from that the 5122 has better audio performance?

The versions with lower audio spec are the 5121, 5100 and 5102.
 
Have some issues with DSPi. It takes multiple device selection in VoiceMeeter before it starts to work. After restarting pc the DSPi gets recognised as new device as selected sampling rate and hardware out in VM resets. The default -20dB safeguard doesn't save to disk and have to set it to 0dB every start.

Not an issue but annoying, when playing warthunder or other EAC games it have issues with DSPi Console being open.
 
Have some issues with DSPi. It takes multiple device selection in VoiceMeeter before it starts to work. After restarting pc the DSPi gets recognised as new device as selected sampling rate and hardware out in VM resets. The default -20dB safeguard doesn't save to disk and have to set it to 0dB every start.

Not an issue but annoying, when playing warthunder or other EAC games it have issues with DSPi Console being open.
The setting drop down tab has Save Master Volume.
 
Last edited:
The setting drop down tab has Save Master Volume.
It didn't save thats why i wrote it. Its solved after trying a few DSPi console versions.

On the other hand i squashed the usb bug so no more new device every time the pc starts. The insanely long time before VM recognizes it is still there. The console sees the pi instantly but VM needs good 3-4 audio engine restarts and 10-20 seconds of waiting before it does.

Still waiting on the 7.1 input so i can ditch HeSuVi for a full hardware solution.
 
Amazing project, thanks for sharing (and continuing to engage here)

PSA: if anyone in the USA needs a Pico 2, the cheapest place currently is https://vilros.com/products/raspberry-pi-pico-2. It's $5, but with free shipping. That makes it half as expensive as the next best option for a single Pico 2. Unfortunately the 2 W is out of stock

I'm not affiliated with Vilros in any way, nor the link above is an affiliated link. I just ordered a couple of Pico 2 and was surprised by how cheap it was. So, I thought people here might be interested
 
Amazing project, thanks for sharing (and continuing to engage here)

PSA: if anyone in the USA needs a Pico 2, the cheapest place currently is https://vilros.com/products/raspberry-pi-pico-2. It's $5, but with free shipping. That makes it half as expensive as the next best option for a single Pico 2. Unfortunately the 2 W is out of stock

I'm not affiliated with Vilros in any way, nor the link above is an affiliated link. I just ordered a couple of Pico 2 and was surprised by how cheap it was. So, I thought people here might be interested
Afaik there's in the plans of allowing DSPi to have three PDM outputs with quite respectable performance, which with that kind of price would give us an insanely cheap 2.1 (or whatever three channel thing you have in mind) DSP!
 
I am delighted to announce that I2S input is now fully functional and currently being tested. :)

This weekend's v1.1.5 beta release will include not only the complete suite of crossover filters but I2S input as well.

1781395645119.png
 
Last edited:
I am delighted to announce that I2S input is now fully functional and currently being tested.
Nice work. Now its time to justify to buying a DDC to make an abomination. Any info on native AES/EBU output?
 
Back
Top Bottom