This is for anyone whose interested in building a compact wifi enabled speaker with DSP functionality. I particular have looked around for a long time to find a suitable solution. A raspberry pi is an obvious choice for a wifi enabled media streamer but its cost effectiveness is limited and also the software is often buggy. Moreover, it is difficult to realize whole house audio with multiple synchronous nodes.
A little while ago I stumbled upon the Up2Stream module which is sold by Arylic on Aliexpress and can be had for less than $30,-. The module promises similar functionality to a Sonos system with a wide variety of different sources including airplay via dnla which is a useful function that is in fact missing on sonos. Besides the module can support high-ress playback of 24bit files of up to a 192kHz sample-rate.
Sadly the module has some limitations with respect to the audio output. Only an analogue output is available with limited audio quality due to the low-cost audio processor that is used on-board of the Up2Stream module. Besides the on-board audio processor is not easily reprogrammable. However, the daughter PCB (A31 module) that is placed on top of the Up2Stream board has a I2S interface which allows for transmission of a digital audio signal to an external DSP without signal degradation.
From some help of the support staff from Arylic I was able to figure out that the A31 module is operating in slave mode with bclk and lrclk being generated by the onboard audio processor of the Up2Stream module. The I2S output of the A31 module is 16-bit with a sample rate of 44.1kHz. All of the audio is thus resampled to this sample rate which is an inherit limitation of the module although I don't think this will be very noticeable. The A31 module can thus be interfaced directly to a ADAU1701/1401 DSP as long as the correct bclk and lrclk signals can be generated.
The ADAU1701/1401 DSP has to act as a master in the i2s protocol which can be done by enabling master mode and feeding back the bclk and lrclk output signals of the DSP to its inputs by connecting MP4 to MP10 and MP5 to MP11. But here’s a bit of a problem, available boards with ADAU1701/1401 DSP chips feature master clocks of 12.288MHz which cannot be broad down to a lrclk of 44.1kHz and bclk of 2.8224MHz that is necessary for the A31 module due to the non-fractional clock divisions of the i2s interface.
I was able to solve this issue on a cheap aliexpress DSP module with a ADAU1401 chip by desoldering the SMD 12.288MHz crystal and replacing it by a through-hole component of 11.2896MHz. With some hot-glue additional support was provided preventing the crystal from falling of due to vibrations or accidental drops. Best of all, it sounds great, much better in my opinion compared to using the analogue interface of the Up2Stream module in combination with the analogue inputs of the ADAU1401 DSP. It does require a slight bit of hacking but it is pretty simple. Best of all, it is cheap to obtain. A DSP solution such as the Hifiberry DAC +DSP can cost about $75,- on its own which does not include the costs of a raspberry pi + sd card. Also, in my experience this solution has much more solid playback functionally without any weird behaviour such as skipping parts of a song. Besides, the power consumption is much lower with an average supply current of just 170mA for the A31 module at 5V.
There is however one slight caveat. With this implementation the software volume control on the source will not work and instead the output volume must be controlled via the DSP. For my use case this is an acceptable trade off but your mileage may vary.
A little while ago I stumbled upon the Up2Stream module which is sold by Arylic on Aliexpress and can be had for less than $30,-. The module promises similar functionality to a Sonos system with a wide variety of different sources including airplay via dnla which is a useful function that is in fact missing on sonos. Besides the module can support high-ress playback of 24bit files of up to a 192kHz sample-rate.
Sadly the module has some limitations with respect to the audio output. Only an analogue output is available with limited audio quality due to the low-cost audio processor that is used on-board of the Up2Stream module. Besides the on-board audio processor is not easily reprogrammable. However, the daughter PCB (A31 module) that is placed on top of the Up2Stream board has a I2S interface which allows for transmission of a digital audio signal to an external DSP without signal degradation.
From some help of the support staff from Arylic I was able to figure out that the A31 module is operating in slave mode with bclk and lrclk being generated by the onboard audio processor of the Up2Stream module. The I2S output of the A31 module is 16-bit with a sample rate of 44.1kHz. All of the audio is thus resampled to this sample rate which is an inherit limitation of the module although I don't think this will be very noticeable. The A31 module can thus be interfaced directly to a ADAU1701/1401 DSP as long as the correct bclk and lrclk signals can be generated.
The ADAU1701/1401 DSP has to act as a master in the i2s protocol which can be done by enabling master mode and feeding back the bclk and lrclk output signals of the DSP to its inputs by connecting MP4 to MP10 and MP5 to MP11. But here’s a bit of a problem, available boards with ADAU1701/1401 DSP chips feature master clocks of 12.288MHz which cannot be broad down to a lrclk of 44.1kHz and bclk of 2.8224MHz that is necessary for the A31 module due to the non-fractional clock divisions of the i2s interface.
I was able to solve this issue on a cheap aliexpress DSP module with a ADAU1401 chip by desoldering the SMD 12.288MHz crystal and replacing it by a through-hole component of 11.2896MHz. With some hot-glue additional support was provided preventing the crystal from falling of due to vibrations or accidental drops. Best of all, it sounds great, much better in my opinion compared to using the analogue interface of the Up2Stream module in combination with the analogue inputs of the ADAU1401 DSP. It does require a slight bit of hacking but it is pretty simple. Best of all, it is cheap to obtain. A DSP solution such as the Hifiberry DAC +DSP can cost about $75,- on its own which does not include the costs of a raspberry pi + sd card. Also, in my experience this solution has much more solid playback functionally without any weird behaviour such as skipping parts of a song. Besides, the power consumption is much lower with an average supply current of just 170mA for the A31 module at 5V.
There is however one slight caveat. With this implementation the software volume control on the source will not work and instead the output volume must be controlled via the DSP. For my use case this is an acceptable trade off but your mileage may vary.
Attachments
Last edited: