• 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

I'm using the DSPi through a USB switch so I don't have to unplug it every time I need to program it. I use it connected to Daphile before the s.m.s.l. SU-1 DAC. The cables are one meter long. Very rarely I get a brief glitch when changing tracks, but it's an issue with my Daphile + DAC combination, since it happened even before introducing the DSPi into my system.
 
During my observations I was questioning USB cable quality and length along with pico DC requirement

I have several usb cables types and lengths and connected a few different ones, although I was always connected directly to USB on windows PC but the cable is 10 feet that I'm using now. - I have never used a hub-

Once when connecting Pico to Ipad(battery power only) pico light was unstable until I plugged in charger but I also suspected the cable or usb connection as possible issue

In my main listening room I prefer long usb cable over long RCA cables to reach three different systems. Hopefully new firmware helps
 
Last edited:
Can we use a Fiber Optic USB Cable for Pico? Will it be suitable for PICO?

I just had a similar experience with my projector. I'm finishing construction of my music room with acoustic treatment and covering the walls with fabric.
I ran a 25foot HDMI cable in the wall/ceiling for the projector and tested it and its completely non functional.(10 foot MDMI functions Perfectly)
4K projectors/monitors require a fiber optic HDMI cable for lengths over 10 feet- I'm replacing the cable before walls are sealed off
 
Last edited:
Can we use a Fiber Optic USB Cable for Pico? Will it be suitable for PICO?

I just had a similar experience with my projector. I'm finishing construction of my music room with acoustic treatment and covering the walls with fabric.
I ran a 25foot HDMI cable in the wall/ceiling for the projector and tested it and its completely non functional.(10 foot MDMI functions Perfectly)
4K projectors/monitors require a fiber optic HDMI cable for lengths over 10 feet- I'm replacing the cable before walls are sealed off
I recommend this 35feet HDMI cable. Connected to a receiver. Work with 4K-HDR-Atmos. And is not fiber optic. Before this one, I have two fiber optic cables and both of them broke.
49 feet or longer are fiber optic.
 
Last edited:
I recommend this 35feet HDMI cable. Connected to a receiver. Work with 4K-HDR-Atmos. And is not fiber optic. Before this one, I have two fiber optic cables and both of them broke.
49 feet or longer are fiber optic.
Thanks. I just ordered one.
I need one for front and back of the room.
Fiber optic cable arrived today. Works perfect, picture is sharp. but yeah if the end fails then its scrap and stuck in the wall.
 
Last edited:
What's the status of https://github.com/WeebLabs/DSPi-Console-Linux? The rust core library seems to build, but the Qt GUI fails because of a missing dspi_core.h included at line 12 of DSPiBridge.h but not present in the repo.
I'll sort this out shortly.

One important function which I have implemented tonight is the ability to reboot the DSPi into bootloader mode for firmware flashes without the need to disconnect, hold the BOOTSEL button and reconnect.

This should be quite a timesaver and a prerequisite to the upcoming automated firmware update functionality.

1775000881896.png
1775000919915.png


Alt-clicking the menu item performs the operation immediately without confirmation.

Following tonight's release, the next major enhancement will be to transition the SPDIF output library from the current multi-buffer pool to a new ring buffer architecture. This will require a rewrite of my SPDIF library's DMA path but will greatly simplify the output sample handling. Crucially, it will enable sample-level fill tracking for the feedback servo and immensely smoother feedback as a result.

At the moment we are relying upon integer (1-8) buffer fill level tracking for the servo, which produces a stairstepped value that requires smoothing. Moving away from this will provide fill tracking that is accurate to within just a few samples; effectively locking the device latency even more tightly than its current 1ms tolerance.
 
Last edited:
Amir, this may have been mentioned before, if so I apologise, but please consider this young man for 'technical expert'. This is very impressive work.
 
I2S output appears to be working well. Bit clock, word clock, data and master clocks are all present and correct.

I don't have the ability to test the actual audio output at the moment, so this release is going to be a beta until output can be practically verified.

1775008809150.png
1775008827595.png
1775008849182.png


While working on this, I became aware of the fact that it is possible to make use of the RP2350/2040's hardware clock outputs in order to perform single integer division. This would enable jitter-free master clocks for 48KHz at both 128xFs and 256xFs while saving a PIO state machine.
 
I am delighted to announce the release of DSPi Firmware v1.1.3-beta and DSPi Console v1.1.3 for macOS. This release introduces some major new functionality and architectural changes. :)

Here are the changes, all of which are applicable to both RP2350 and RP2040:
  • I2S output with master clock: 128x (jitter-free) and 256x multipliers, with user assignable BCK, LRCK and MCK pins
  • Assignable output type slots: Four output type slots that can be individually configured live as I2S or SPDIF
  • Reboot into bootloader mode: A new vendor command enables the user to reboot DSPi directly into firmware upload mode
  • Pipeline overhauled: All heavy DSP moved out of the USB IRQ context, resulting in a major processing headroom increase
  • DMA starvation statistics: Debugging facility for DMA issues on a per-output basis (increment at playback start is normal)
1775017085477.png
1775018283248.png

As mentioned previously, this release is currently in beta. I2S output appears correct in measurements but is not field tested. Feedback regarding its performance is greatly appreciated.

It may be the 1st of April here in Ireland at the time of posting but I assure you that this is no April Fools' joke!
 
Last edited:
I2S output works on out 1/2 (pin GPIO11) on pico2w (rp2350) with cheap pcm5102 dac from temu, till self reset on GPIO6 after 3 to 5 minutes. Selecting again GPIO11 continues playback, but after 5 minutes it reset again.
On pico w (rp2040) i can not commit i2s selection.
 
I've observed that this happens when buffer fill levels are filling to 100% for spdif outs that are disabled in this case, BUT only when i select 16bit/44.1 output.
Selecting 24bit/48 buffer levels are constant at 50% and no self reset

Screenshot 2026-04-01 at 09.52.05.png
 
Some questions regarding I2S. If MCLK is disabled, does its pin become an input? And is it still assignable?
Is LRCK always fixed to BICK + 1?
 
Some questions regarding I2S. If MCLK is disabled, does its pin become an input? And is it still assignable?
Is LRCK always fixed to BICK + 1?
In this revision, pin assigned on MCK can not be assigned on anything else regardles if MCK is enabled or disabled.
Yes, LRCK is fixed +1 on BCK.


Maybe OT, but could I use two of these for I2S ? I currently have the Tinysine TSA1702B which also has I2S Input but I am unsure of the quality of the DAC on it.
They should work, but i think they need i2c protocol to control them, like volume, input, filter, gain, mute/unmute, but description on this particular link says:
does not need any MCLK signal, or I2C configuration. Literally just pipe some I2S audio in and it'll just work.
 
I2S output works on out 1/2 (pin GPIO11) on pico2w (rp2350) with cheap pcm5102 dac from temu, till self reset on GPIO6 after 3 to 5 minutes. Selecting again GPIO11 continues playback, but after 5 minutes it reset again.
On pico w (rp2040) i can not commit i2s selection.
I've figured out that pin resets when "Include Pin Configuration" is not enabled in presets, maybe it should be enabled by default :)
So, only filling buffer level bug is real bug report here for RP2350
 
Back
Top Bottom