Hello DiyAudio community,
I wanted to share my audio transport module project called York.
Original Concept:
I personally used the Amanero modules for my audio devices and never had any problems with drivers or it's hardware, so I bought licenses for integration in my projects a while ago.
The main disadvantage was lack of possibility to communicate from PC to, for example I2C port, for sending configuration to audio DSP. There was only I2S audio stream. So my first idea was just to have USB hub on board to connect VCP IC. As the ESP-ADF was released, the idea evolved into creating a versatile audio data transport module with wireless interfaces, aligning perfectly with the ESP32 module configuration.
So, this architecture was born:
Hardware Features:
USB Audio interface (44.1-384kHz stereo)
BT AptX Audio input (in I2S slave mode)
FPGA reconfiguration (by ESP32 - no need for external programmer)
Amanero compatible interface
The device includes a module for AptX Bluetooth audio, addressing the ESP32's lack of support for high-quality codecs.
While the hardware might seem overkill with an 8K FPGA, it provides ample room for experimentation and DSP capabilities. It is very nice for experiments and hardcore DSP fun! 🙂
Photo of the first revision:

The BT module is underneath:

Currently Implemented Features:
Web interface
mDNS service
MP3 stream playback (Web radio)
CLI for ESP control, FPGA, and external DSP register access
OTA firmware update (both FPGA and ESP32)
Analog Devices SigmaStudio support for ADAU DSP (configuration/control via Wi-Fi)
Later I've discovered ESP32-Squeezelite project, and it is a perfect fit for this hardware, adding Squeezelite, AirPlay and Spotify playback capabilities to all of the above.
I had to do some modifications to original project to include all the nice features that were developed separately for this module.
Hardware Evolution:
It is clear that the current hardware does not make much sense cost-wise: it needs an MCU for Amanero, an Amanero license, USB HUB and USB-UART chips.
Amanero MCU also requires an FPGA. Yes, the FPGA handles all stuff related to I2S multiplexing and clock generation, but all these functions can be implemented with one chip.
So for future version I'm going to use PIC32MZ MCU for as USB-I2S transport combined with VCP. That will consolidate four ICs into one MCU and expanding USB audio to support 8 channels (it can support both In and Out, maybe for future evolution)
I have a prototype of PIC32MZ module based on firmware developed by Alexey (Dortonyan) posted on Vegalab forum.

Here's a photo of the hardware in my 4 (8ch) Class-D amp with ADAU1452 DSP (probably worth another topic)

As there are so many features, I'd like to hear on which are the most interesting ones for the community, I can expand more on them.
I'm eager to hear your thoughts and suggestions as I continue refining and expanding this project.
My vision for now is to make a new revision of the PCB with ESP32 + PIC32 + BT AptX module.
As for the firmware I'm going to fork ESP32-SqueezeLite.
Best regards,
Vladislav
I wanted to share my audio transport module project called York.
Original Concept:
I personally used the Amanero modules for my audio devices and never had any problems with drivers or it's hardware, so I bought licenses for integration in my projects a while ago.
The main disadvantage was lack of possibility to communicate from PC to, for example I2C port, for sending configuration to audio DSP. There was only I2S audio stream. So my first idea was just to have USB hub on board to connect VCP IC. As the ESP-ADF was released, the idea evolved into creating a versatile audio data transport module with wireless interfaces, aligning perfectly with the ESP32 module configuration.
So, this architecture was born:
Hardware Features:
USB Audio interface (44.1-384kHz stereo)
BT AptX Audio input (in I2S slave mode)
FPGA reconfiguration (by ESP32 - no need for external programmer)
Amanero compatible interface
The device includes a module for AptX Bluetooth audio, addressing the ESP32's lack of support for high-quality codecs.
While the hardware might seem overkill with an 8K FPGA, it provides ample room for experimentation and DSP capabilities. It is very nice for experiments and hardcore DSP fun! 🙂
Photo of the first revision:

The BT module is underneath:

Currently Implemented Features:
Web interface
mDNS service
MP3 stream playback (Web radio)
CLI for ESP control, FPGA, and external DSP register access
OTA firmware update (both FPGA and ESP32)
Analog Devices SigmaStudio support for ADAU DSP (configuration/control via Wi-Fi)
Later I've discovered ESP32-Squeezelite project, and it is a perfect fit for this hardware, adding Squeezelite, AirPlay and Spotify playback capabilities to all of the above.
I had to do some modifications to original project to include all the nice features that were developed separately for this module.
Hardware Evolution:
It is clear that the current hardware does not make much sense cost-wise: it needs an MCU for Amanero, an Amanero license, USB HUB and USB-UART chips.
Amanero MCU also requires an FPGA. Yes, the FPGA handles all stuff related to I2S multiplexing and clock generation, but all these functions can be implemented with one chip.
So for future version I'm going to use PIC32MZ MCU for as USB-I2S transport combined with VCP. That will consolidate four ICs into one MCU and expanding USB audio to support 8 channels (it can support both In and Out, maybe for future evolution)
I have a prototype of PIC32MZ module based on firmware developed by Alexey (Dortonyan) posted on Vegalab forum.

Here's a photo of the hardware in my 4 (8ch) Class-D amp with ADAU1452 DSP (probably worth another topic)

As there are so many features, I'd like to hear on which are the most interesting ones for the community, I can expand more on them.
I'm eager to hear your thoughts and suggestions as I continue refining and expanding this project.
My vision for now is to make a new revision of the PCB with ESP32 + PIC32 + BT AptX module.
As for the firmware I'm going to fork ESP32-SqueezeLite.
Best regards,
Vladislav
Last edited:
Hi Vladislav,
nice project you got there.
I want to share some thoughts with the FreeDSP-Octavia in mind.
SInce version 1.0 of the octavia board does not have the I2C connected on the Amanero header it might be nice to have the I2C bus on a seperate header (if this is not already the case). This way one could have a little flat band cable connecting the York to the USBi header of the board.
I was also wondering how you switch for example between USB und BLE input. In case of the octavia for example, we have multiple inputs, where the amanero header is one of them, and already implement some kind of input selection. So it would be nice to have a way of telling the York which input it should provide on the i2s, maybe with a signal on the header. Or do you provide all inputs on the i2s at the same time and you just pick the channels of the desired input?
Best Regards,
Ludwig
nice project you got there.
I want to share some thoughts with the FreeDSP-Octavia in mind.
SInce version 1.0 of the octavia board does not have the I2C connected on the Amanero header it might be nice to have the I2C bus on a seperate header (if this is not already the case). This way one could have a little flat band cable connecting the York to the USBi header of the board.
I was also wondering how you switch for example between USB und BLE input. In case of the octavia for example, we have multiple inputs, where the amanero header is one of them, and already implement some kind of input selection. So it would be nice to have a way of telling the York which input it should provide on the i2s, maybe with a signal on the header. Or do you provide all inputs on the i2s at the same time and you just pick the channels of the desired input?
Best Regards,
Ludwig
Hello Ludwig,
1. Good point. I was also thinking about this during debug of the board. There are several I2C bus masters available in the MCU, so it is possible to have one routed to Amanero header and another to the connector on the side. I checked and unfortunately in the current revision I2C pins are not routed to side connector. At the moment of schematic design I was only thinking about UART and couple GPIOs. But I will definitely fix that in next revision.
2. There are two versions of the module exist right now:
One of the questions I have: should the next version include BT and WiFi modules? Or only BT?
Best Regards,
Vladislav
1. Good point. I was also thinking about this during debug of the board. There are several I2C bus masters available in the MCU, so it is possible to have one routed to Amanero header and another to the connector on the side. I checked and unfortunately in the current revision I2C pins are not routed to side connector. At the moment of schematic design I was only thinking about UART and couple GPIOs. But I will definitely fix that in next revision.
2. There are two versions of the module exist right now:
- Let's call first one York-ESP. It is built with WiFi, BT module, Amanero MCU. Here I used web interface running on ESP32 to switch inputs.
- York-Pico, prototype to replace 4 chips by one PIC32 MCU, one I proposed to be used in FreeDSP. This prototype does not include BT and WiFi modules. Hence, cheaper. However, WiFi+BT can be added and the selection of the input can be done by, let's say, toggling one of the GPIO pins.
One of the questions I have: should the next version include BT and WiFi modules? Or only BT?
Best Regards,
Vladislav
Hi Vladislav,
Very good here,
Maybe you can do a PCB with BT and WiFi as assembly options and the MCU detects if a BT or WiFi cheap is soldered and then their functions are unlocked/available.
BR Ludwig
Very good here,
So for my usecacse my dream would be a device with multichannel USB audio (preferably input and output like the amanero) and BT with a good codec. I don't really need wifi since I already got that covered with the raspberry pi. Can you do TDM stream with the MCU?One of the questions I have: should the next version include BT and WiFi modules? Or only BT?
Maybe you can do a PCB with BT and WiFi as assembly options and the MCU detects if a BT or WiFi cheap is soldered and then their functions are unlocked/available.
BR Ludwig
No news for a long time 🙂 Quick project update:
I've been working on the firmware and cross-platform configuration tool.
The tool would allow to customize device (change name, PID/VID, number of in/out channels, etc) as well as update the firmware.
As for the hardware I decided to go with three options:
1. York-pico: USB only audio interface: UAC2 (PCM up to 384kHz input/output), 2 channels. Compatible with Amanero, provides optional HID and/or CDC (serial) interface for custom user controls. (can be used as PC-I2C bridge, for example)
2. Multichannel version: multichannel in/out interface (up to 8 channel total)
3. USB + WiFi + BT (AptX) interface. Compatible with Amanero, additionally provides web interface, Spotify and AirPlay playback (uses squeezelite-esp project)
All these versions will support firmware update and configuration using the GUI configuration tool and can be integrated with SigmaStudio for ADAU DSP programming: Post in FreeDSP Octavia thread
If you would like to create a custom GUI App for you device, say, to control DAC/DSP under Windows/MacOS/Linux, it will be possible as well.
I am going to release library for C/Python/Matlab and a code examples.
Screenshots will follow in next couple of weeks.
Best Regards,
Vladislav
I've been working on the firmware and cross-platform configuration tool.
The tool would allow to customize device (change name, PID/VID, number of in/out channels, etc) as well as update the firmware.
As for the hardware I decided to go with three options:
1. York-pico: USB only audio interface: UAC2 (PCM up to 384kHz input/output), 2 channels. Compatible with Amanero, provides optional HID and/or CDC (serial) interface for custom user controls. (can be used as PC-I2C bridge, for example)
2. Multichannel version: multichannel in/out interface (up to 8 channel total)
3. USB + WiFi + BT (AptX) interface. Compatible with Amanero, additionally provides web interface, Spotify and AirPlay playback (uses squeezelite-esp project)
All these versions will support firmware update and configuration using the GUI configuration tool and can be integrated with SigmaStudio for ADAU DSP programming: Post in FreeDSP Octavia thread
If you would like to create a custom GUI App for you device, say, to control DAC/DSP under Windows/MacOS/Linux, it will be possible as well.
I am going to release library for C/Python/Matlab and a code examples.
Screenshots will follow in next couple of weeks.
Best Regards,
Vladislav
That is great progress, I am looking forward to it.
Is there a hardware difference between option 1 and 2? I suppose you use TDM to transmit all 8 channels?
BR Ludwig
Is there a hardware difference between option 1 and 2? I suppose you use TDM to transmit all 8 channels?
BR Ludwig
Hi Ludwig,
Yes, there is difference in hardware: for option 2 (multichannel) there will be 4 I2S ports available as inputs/outputs and a flexible clock generation circuit to support simultaneous audio input and output streams at different sampling frequencies.
TDM is possible even in option 1, however because of MCU peripheral speed limitations it will limit max Fs as a consequence.
For example, option 1 at MCLK = 49.152MHz max Fs for 2 channels thru I2S will be 384kHz, for 8 channels in TDM - 96kHz. In theory, I still need to test it in hardware.
Option 2 will be capable to output 8 channels thru 4xI2S at max Fs of 384kHz.
Best Regards,
Vladislav
Yes, there is difference in hardware: for option 2 (multichannel) there will be 4 I2S ports available as inputs/outputs and a flexible clock generation circuit to support simultaneous audio input and output streams at different sampling frequencies.
TDM is possible even in option 1, however because of MCU peripheral speed limitations it will limit max Fs as a consequence.
For example, option 1 at MCLK = 49.152MHz max Fs for 2 channels thru I2S will be 384kHz, for 8 channels in TDM - 96kHz. In theory, I still need to test it in hardware.
Option 2 will be capable to output 8 channels thru 4xI2S at max Fs of 384kHz.
Best Regards,
Vladislav
Hi Vladislav,
thanks for the explanation. For the Octavia DSP 96kHz is probably the sweet spot anyway, so if 8 channels on option one with that frequency work that would be great.
How is the USB channel support on option 3?
BR
Ludwig
thanks for the explanation. For the Octavia DSP 96kHz is probably the sweet spot anyway, so if 8 channels on option one with that frequency work that would be great.
How is the USB channel support on option 3?
BR
Ludwig
Same as option 1: because of the PCB format there will be only 1 I2S available externally, plus 2 will be used internally to interface ESP and BT module.How is the USB channel support on option 3?
Alright, it is converging to something. At some point I should just stop putting new features and release it 🙂
As I said, I was working on the configuration tool and on the firmware side as well to support all these configuration options.
There are several tabs: general, audio interface, clocking, i2c, gpio, serial interface (UART), DSP support (for ADAU) and firmware.
Firmware update mechanism is already in place as well as many other features, currently I'm stiching everything with the user interface.
Screenshots attached.
I'm going to release some source-code and a library so that users could build their own custom apps for Windows/Linux/MacOS.
As I said, I was working on the configuration tool and on the firmware side as well to support all these configuration options.
There are several tabs: general, audio interface, clocking, i2c, gpio, serial interface (UART), DSP support (for ADAU) and firmware.
Firmware update mechanism is already in place as well as many other features, currently I'm stiching everything with the user interface.
Screenshots attached.
I'm going to release some source-code and a library so that users could build their own custom apps for Windows/Linux/MacOS.
Attachments
Second HW revision is ready for production. There are some important changes done to be compatible with FreeDSP projects and to enable TDM8 output. I also managed to implement SPDIF output.
IO0, IO1 can be remapped as GPIO/UART/I2C/SPDIF.
Also, a second I2S is available on pads F0-F3. Can be used as I2S input, for example. So the module could handle input and output streams.
IO0, IO1 can be remapped as GPIO/UART/I2C/SPDIF.
Also, a second I2S is available on pads F0-F3. Can be used as I2S input, for example. So the module could handle input and output streams.
Hi @eclipsevl I'm following the topic and the project looks very interesting, Is it possible to get 1 piece for my FreeDSP Octavia?
Many Thanks, Tom
Many Thanks, Tom
Hello Tom,
Thank you!
Sure, once they arrive I need to test them and then I'll create a separate thread in swap meet/vendor bazaar forum.
I'll take a note and pm you as well.
Thank you!
Sure, once they arrive I need to test them and then I'll create a separate thread in swap meet/vendor bazaar forum.
I'll take a note and pm you as well.
It's alive 🙂
Basic functions are tested, need to double check input+output operation, TDM8 and S/PDIF.
The main thing for now is to release the config tool.
Basic functions are tested, need to double check input+output operation, TDM8 and S/PDIF.
The main thing for now is to release the config tool.
Alright, finally a first release 🥳
I've implemented and tested following modes:
2ch I2S output
2ch I2S input
2ch I2S input + 2ch I2S output
2ch I2S output + 2ch I2S output
2ch I2S output + SPDIF output
8ch TDM output
8ch TDM output + 2ch I2S input
To test the assembled boards I've build a test setup: York -> 8 channel audio to adau1452 -> 2 channels from adau back to York.
+ SigmaStudio->York->I2C to configure ADAU. However, I still need to test I2S input in different modes.
In case of any issues the firmware could be updated remotely.
I'm going to vacation for 2 weeks so not going to create separate thread to sell the boards now, will do after I come back. Please PM me if interested.
Good opportunity to write some documentation thought 🙂
I've implemented and tested following modes:
2ch I2S output
2ch I2S input
2ch I2S input + 2ch I2S output
2ch I2S output + 2ch I2S output
2ch I2S output + SPDIF output
8ch TDM output
8ch TDM output + 2ch I2S input
To test the assembled boards I've build a test setup: York -> 8 channel audio to adau1452 -> 2 channels from adau back to York.
+ SigmaStudio->York->I2C to configure ADAU. However, I still need to test I2S input in different modes.
In case of any issues the firmware could be updated remotely.
I'm going to vacation for 2 weeks so not going to create separate thread to sell the boards now, will do after I come back. Please PM me if interested.
Good opportunity to write some documentation thought 🙂
I've created a separate thread in Vendor Bazaar forum:
https://www.diyaudio.com/community/...tichannel-input-output-interface-york.413504/
A small update: on this weekend I added one more output option for old DAC's and tested with PCM1702 connected directly to York:
Needs a bit more work to add configurability into the GUI for 16/18/20 bit versions. But it works 🙂
https://www.diyaudio.com/community/...tichannel-input-output-interface-york.413504/
A small update: on this weekend I added one more output option for old DAC's and tested with PCM1702 connected directly to York:
Needs a bit more work to add configurability into the GUI for 16/18/20 bit versions. But it works 🙂
Really cool project @eclipsevl !!
Any progress on the version including bluetooth?
Also how powerfull are the 3v outputs? I'm building a small "octavia-like" adau1452 dsp. Would be really cool if the whole thing could be powered, programmed and stream audio only via the usb-c connector.
I understand if this isn't implemented, but would be cool!
Any progress on the version including bluetooth?
Also how powerfull are the 3v outputs? I'm building a small "octavia-like" adau1452 dsp. Would be really cool if the whole thing could be powered, programmed and stream audio only via the usb-c connector.
I understand if this isn't implemented, but would be cool!
So far no, not yet.Any progress on the version including bluetooth?
I actually did that but would not recommend. I use TPS7A2033PDBVR as LDO for MCU supply and it is rated for 300mA max, ~100 goes to MCU, 50 for margin and the max external load would be ~150mA. But ADAU needs up to 400mA (depends on the program but you should consider worst case):Also how powerfull are the 3v outputs? I'm building a small "octavia-like" adau1452 dsp. Would be really cool if the whole thing could be powered, programmed and stream audio only via the usb-c connector.
What I'd recomment is to use the "nano" version, it has 5V USB line routed to header, so you can connect LDO or DC-DC fo ADAU and have everything powered from USB:
Got first "nano" board. Can serve as pic32mz eval board as well 🙂
Okay, I somehow didn't see that nano version, it sounds exactly like what I need!
Is the 5V USB buss just a standard 1,5A minus 150mA for the MCU?
Any downsides compared to the bigger module?
I should probably readt that thread to end before I ask other stupid questions 😛
Is the 5V USB buss just a standard 1,5A minus 150mA for the MCU?
Any downsides compared to the bigger module?
I should probably readt that thread to end before I ask other stupid questions 😛
- Home
- Source & Line
- PC Based
- Audio Transport Module York