Wiimu A31 module in combination with ADAU1401/1701 DSP

Hi everyone, I’m getting into this ‘club’ with a up2stream pro v3 and a dayton version of the JAB3.

I’ve been looking at the ADAU1701 datasheet and it looks like it has 2 onboard oscillators already. What is the purpose of removing the one from the board? Can’t you just use the clock from the i2s header on the arylic itself and have the ADAU1701 board as a slave?

I haven’t hooked anything up yet, but this seems too easy to be true. Haha
 
I’ve been looking at the ADAU1701 datasheet and it looks like it has 2 onboard oscillators already.
You won't find any documentation on which oscillator the manufacturer of the dsp board used in the datasheet auf the adau1701...

You need to replace the onboard oscillator to switch sampling base from 48 to 44.1 kHz. When a board like the Sure/Wondom dsp board is used, you need to desolder the osc if you want to supply external clocks because it is hard-wired to mclki pin of the dsp.
 
It looks to me that it is possible to disable the internal oscillator, but I see now what you mean about the pin being occupied.

I see different opinions around the forums as to how to best get the 11.2896mhz clock. Do you know which works best? I'm fine installing a new clock, but not if it isn't needed.
 
For anyone who's interested in connecting an ADAU1701 DSP to a desktop computer or laptop, I have been able to get the DSP working with a cheap PCM2706 USB to I2S board. The connection is essentially the same as with an Arylic Up2Stream module. I desoldered the crystal on the bottom of a sure dsp module, see attached picture, after which I simly connected the clock and data signals between the two boards. In this case the setup is limited to 16bit 48kHz which is not quite high-res but it sounds fine. In Windows 10 the volume slider does not function though, only software volume control works for instance in Spotify.

Hi,

which one is the mclki pin on the wondom/sure board? The crystal had 4 pins....

I want to use the up2stream board with my sure adau1701 dsp and some pcm5102 dac.

Best regards,Tomas
 
If i connect the mclk of the ayrilic-board with the mclk at the jumper of the adau1701 sure dsp i can get sound on the analog out side of the sure dsp. But i dont get a digital out.

I use a pcm5102 as dac. Before the ayrilic i only connected the lrck and bck of the dsp (mp10 and mp11) and a data pin (mp6-9) to the dac and there was no problem.

What do i have to do to connect a pcm5102 to the ayrilic adau1701 dsp combination?
 
I haven't wrapped my head around i2s however could different DACs be used that wouldn't pose an issue; I have a cheap es9023. I'm wishing to upgrade the the DAC on my board.

If the A31 is generating the clock signal but operating in slave mode can the signal still be fed to DACs with no onboard clock?
 
Member
Joined 2004
Paid Member
I'm curious whether anyone has tried using one of those low-cost CS8421 modules to convert from the 44.1KHz stream to 48KHz? I ordered one last night, but it won't be in for a few weeks. From a quick look at the data sheet, it should do the job. The best answer is to use a ADAU1466 core board with the built-in ASRC's, and I'll do that eventually, but first I'd like to see what can be done with the ADAU1701.
 
Dear DIYers,
My post is about outputting an I2S signal from up2stream Mini/Pro v3 board to the Wondom adau1701 dsp module.
It is clear that the Mini/Pro boards work as MASTER, then the adau1701 should be set to slave, oscillator desoldered and so on...

I found a topic on the Arylic forum and the autor claims that it is possible to do it in the following configuration. I will quote part of the topic (The images are from his original post as well).

"This is how to connect to the Wondom ADAU1701 Dsp board and chain it to the PCM5102. The PCM5102 in not neccesery if only Analog output is used.
Masterclock is required (MCLK). Power (VCC) leaves unconnected.
Pro v3/Mini v3 to ADAU1701:
MCLK - Mclk
GND - GND
LRCK - MP4
BCLK - MP5
IIS_DATA- MP0

ADAU1701 to PCM5102 (Masterclock is not required (MCLK/SCK):
MP11 - BCK
MP10 - LCK
MP6 - DIN
GND - GND
3,3V - 3.3V"

See picture:
1.jpeg

2.jpeg


This setup should not work, since the adau1701 is set to MASTER as well, and the MCLK is connected to the MCLK of the up2stream board. But the author assured me that it is working fine. Can you give your opinion on how is it possible?

Another image from the same post got me puzzled. It is from the ACPworkbench sofwtware (sold separately by Arylic for approx 20euro)
arylic.jpeg

There is a dropdown menu called "MODE" where Master is selected. Is it possible to set it as a slave? And then from the Settings -> MCLK source (Global) menu to select MCLK IN0 (11.2896/12.288MHz).
If this is possible, in theory the Mini/Pro v3 will accept the external MCLK from the ADAU1701 (set as master) making the desoldering/replacing the oscillator not necessary.

I would be happy to hear your opinion!
Kind regards,
Stanislav
 
Member
Joined 2004
Paid Member
When you say "the adau1701 is set to MASTER", it looks like you are only referring to the Serial Output. That means the DAC on the output will get its clocks from the ADAU1701. However, the ADAU1701 is a slave on the Serial Input, as the clocks are generated by the Linkplay module on the Mini/Pro v3 board. The master clock for the ADAU1701 is also generated by the Linkplay module, so you will need to disable/desolder/cut the trace from the oscillator on the ADAU1701 board. The ADAU1701 will be sampling at 44.1KHz, so you will need to set up SigmaStudio to use that frequency vs the default 48KHz (that will affect your filter coefficients).

I can't answer your questions about the Arylic software, except that you would want to select 11.2896MHz as the MCLK IN0, since that is what will be coming from the Linkplay module. And you should double-check the ADAU1701 board to make sure that the original oscillator was 12.288MHz and not 24.576MHz--otherwise, you would need to change the PLL pins as well.

I've got a board coming tomorrow that will allow using a CS8421 module between the Linkplay module and the ADAU1701 board. I think that will be a better solution than clocking the ADAU1701 from the Linkplay module. I've still got to order some more parts for this board, so I'm still at least 2 weeks away.
 
Dear Neil, thanks for your reply!
Okay, lets remove the PCM dac from the equation and discuss only Mini/Pro <=> Wondom ADAU1701

When you say "the adau1701 is set to MASTER", it looks like you are only referring to the Serial Output. That means the DAC on the output will get its clocks from the ADAU1701. However, the ADAU1701 is a slave on the Serial Input, as the clocks are generated by the Linkplay module on the Mini/Pro v3 board.
To be honest I did not think about it. You're right. In this example The ADAU1701 is master only to the output (to the external DAC).
To be master for the Serial Input MP4 and MP10 should be paralleled as well as MP5 and MP11, thus providing the LRCLK and BCLK to itself. And the MCLK should be provided by the adau1701. Is that correct?
The master clock for the ADAU1701 is also generated by the Linkplay module, so you will need to disable/desolder/cut the trace from the oscillator on the ADAU1701 board.
Indeed! But in the OP example (take a look at his topic) he connects the MCLK of the Mini/Pro 3 with the MCLK of the adau1701 module. He does not mention anything about removing the adau oscillator and claims it is working. I don't understand how is it possible.

I can't answer your questions about the Arylic software...
The OP promised to conduct some tests during the weekend and post the results.

Good luck with your experiments with the CS8421 reclocker. Hope you'll share your experience!
Have a lovely weekend!
 
OK, the OP shared a video showing his setup working.
I'm not a guru in the field. This is how I interpret his results:

The Arylic module MCLK is 11.289MHz, 44.1kHz sampling rate (it is always master)
The Wondom board:
-The MCLK pin (pin20 on expansion port J4) is connected to MCLKI (pin 32 of the microcontroller)
-If the oscillator is not removed, the dsp sampling rate is still 48kHz (256*48kHz=12.288Mhz)
Capture.PNG


I assume there’s no effect by connecting the two MCLK pins (arylic to wondom)
I also assume that the serial communication is somehow still working, but the input (wondom) is not 100% synchronized to the output (arylic) since there’s no unified MCLK for the entire “system”. This should cause some jitter (even though it may not be audible).

To make sure the system is "politically correct" we should remove the crystal and feed the MCLKI pin with 11.289Mhz from the Arylic MCLK pin. In sigma studio we can set the system sampling rate for the dsp to 44.1kHz and redo the program so that our filter coefficients are also fine.

Do you approve the above said?

One last question. With the oscillator removed, the adau1701 board will not have its own source of MCLK, meaning to say it's not an autonomous device any more. It will not boot until it receives the external MCLK signal. What would happen if I want to make adjustments to the sigma studio program and upload it to the 1701? May I use the external MCLK to make it run while programming?

regards,
Stanislav
 
Member
Joined 2004
Paid Member
Sorry--I had forgotten the circuitry. That's a crystal, not an external oscillator, with the amplifier inside the ADAU1701. Apparently, driving the MCLKI input from an external oscillator at a lower frequency than crystal resonance will simply cause the ADAU1701 internal oscillator to not work. Somebody with a good crystal model could probably analyze this circuit to assess whether the design is "guaranteed" to work with an externally applied 11.289Mhz clock, but experimentally, it seems to work OK. There is probably some degradation of the MCLK signal with the extra capacitance in the oscillator circuit, but it looks like that is not a problem.

With the 11.289Mhz external oscillator applied to MCLKI, the ADAU1701 will run at the 44.1Khz rate. If you disconnect the external oscillator, the internal oscillator will "take over" and the DSP will run at 48KHz. Either way, the ADAU1701 will have a clock and it will work. The EEPROM programming and real time control aren't synchronized to the clock--that is all done via I2C.
 
With the 11.289Mhz external oscillator applied to MCLKI, the ADAU1701 will run at the 44.1Khz rate. If you disconnect the external oscillator, the internal oscillator will "take over" and the DSP will run at 48KHz. Either way, the ADAU1701 will have a clock and it will work. The EEPROM programming and real time control aren't synchronized to the clock--that is all done via I2C.
Awesome! I learn every day! Thank you for sharing your knowledge.

By the way, I just finished my conversation with the guy on the other forum. So he finally desoldered the crystal on the ADAU board and fed the MCLK from the Mini/Pro directly to MCLK pin of the dsp. According to him there is an audible difference and the sound improved.

He also tried to change his up2stream Pro 3 to slave mode using the APCworkbench software - it is not possible.
So with all that in mind, I can say that the finest solution was already discovered long ago - removing the crystal. Thanks to all of you who shared your experience with these boards, because the information given by the manufacturers is not really detailed.

Cheers!
 
  • Like
Reactions: 1 user
I've got a board coming tomorrow that will allow using a CS8421 module between the Linkplay module and the ADAU1701 board. I think that will be a better solution than clocking the ADAU1701 from the Linkplay module. I've still got to order some more parts for this board, so I'm still at least 2 weeks away.
If you get the CS8421 working please indicate what settings you used (manual programming). I’m excited to hear your progress. I looked at this chip some time ago and assumed you would need to run the input of the CS as master to generate the clocks for the link play which means the the output is again a slave device and the ADAU would need to be master? I wasn’t sure if the onboard clock also needed to match both the input and output clocks.
 
Member
Joined 2004
Paid Member
I wanted to try the CS8421 in slave mode (no external master clock). But you are right--the Linkplay module needs an external clock. I misspoke in a prior post, suggesting that the Linkplay module provides the clocks--it doesn't. It's the Arylic board that provides those clocks. The clocks generated on the Arylic board are needed for both the Linkplay module and the A/D and D/A on the Arylic board. As a result, the Arylic board is going to be a master.

As noted in previous posts in this thread, the Linkplay A31V04 module itself is a slave, and you can run the Linkplay module using the 12.228MHz clock from the ADAU1701 (48KHz sampling). However, the renderer software in the Linkplay module is expecting the data at a 44.1KHz rate and playing it with the 12.228-derived clock causes the output to be played 9% faster (48KHz vs 44.1KHz).
 
ommendation, I had looked at the Khadas, it seems to perform well according to ASR, it’s a bit pricey though so I had discounted it in

To move the discussion concerning the Linkplay A28/31 modules from this Thread, I copied the last two relevant posts:




Hi Neil,

a while ago I tested to output data which was sampled at 44,1 kHz at 48 kHz. In most cases you won't hear any difference compared to the correct output rate (just the pitch and playtime of a track will slightly change).
But just because it somehow works, doesn't mean it's correct :)

So, if the Linkplay module outputs the data with fixed lrclk of 44,1 kHz and bclk of 2,8224 MHz, it's a fact that we need to deliver the suitable clocks.
Another question is how the high quality audio material is handled (192 kHz / 24 bit).
I think, the module is able to read/decode that sort of high quality sound material. When I remember correct, I read that somewhere in the device specs. But that doesn't mean the module is able to transmit/output the data at the native rates.

What I found out yesterday:
The linkplay A31 module sends the meta data of the stream via uart (volume, play, pause etc.) when a parameter changes.
It might be possible, that the module also sends the samplerate and bitdepth via uart if the input changes. But I think that is too complicated. I think the whole audio material from the linkplay a31 is delivered at a fixed rate and therefore is resampled if neccessary.
Hi Neil,

https://developer.arylic.com/httpapi/#playback-status

for the Sample rate and Bit depth data, I doubt you will see it. need to check the HTTP API get command, there is a webpage for A31 with all sorts of API commands - you will be able to see what is being played and that song name will be output as HEX, and the rest of the table will be in ASCII ( weird I know ).

there is UART output but the UART command sending keyword is not available yet, I know its there otherwise how will the Arylic min v3 send commands and display the status LEDs

Does anyone have an Arylic's Mini V3 or any other board and can you trace where the Wifi Led are connected ie which pin is on the Module?
 
UART Commands - Found them online, Arcylic Forum. sharing it here, not sure if it works (again Firmware Dependent.)
UART config​
115200,8,N,1,no flow control​
{param}​
this is a field for a param, you should replace it with a specified text in the actual message to send​
[ ]​
optional​
NA​
not available​
message​
normally query current state when execute with no param, and normally set the value when continued with param​
execution​
UART (some model)​
message need to be terminated with ;​
uart passthrough tool​
message need to be sent in this format: MCU+PAS+RAKOIT:{message}&​
ACPWorkbench​
send via Tag button without response. And need to close the window for each execution​
message
api
response
param
description
Example
VER​
3​
VER:{firmware}-{commit}-{api}​
{firmware} firmware version
{commit} git commit when building
{api} api version​
get firmware version information​
VER​
STA​
3​
MCU+PAS+STA:{source},{mute},
{volume},{treble},{bass},{net},
{internet},{playing},{led},
{upgrading}​
{source} NET/USB/USBDAC/LINE-IN/
LINE-IN2/BT/OPT/COAX/I2S/HDMI
{mute} 0/1
{volume} 0~100
{treble} -10~10
{bass} -10~10
{net} 0/1
{internet} 0/1
{playing} 0/1
{led} 0/1
{upgrading} 0/1​
get system running state​
STA​
SYS:{cmd}​
3​
NA​
{cmd} REBOOT/STANDBY/RESET/RECOVER​
system control, reboot device, enter standby, factory reset, recover all data​
SYS:REBOOT​
WWW​
3​
WWW:{onoff}​
{onoff} 0/1​
get internet state​
WWW​
AUD[:{onoff}]​
3​
AUD:{onoff}​
{onoff} 0/1​
get/set audio output​
AUD:0​
SRC[:{source}]​
3​
SRC:{source}​
{source} NET/USB/USBDAC/LINE-IN/
LINE-IN2/BT/OPT/COAX/I2S/HDMI​
get/set current input source​
SRC:BT​
VOL[:{volume}]​
3​
VOL:{volume}​
{volume} 0 ~ 100​
get/set volume​
VOL:50​
MUT[:{onoff}]​
3​
MUT:{onoff}​
{onoff} 0/1/T, off/on/toggle​
get/set mute​
MUT:1​
BAS[:{bass}]​
3​
BAS:{bass}​
{bass} -10 ~ 10​
get/set BASS value​
BAS:0​
TRE[:{treble}]​
3​
TRE:{treble}​
{treble} -10 ~ 10​
get/set TREBLE value​
TRE:0​
POP​
3​
NA​
only available in BT/NET/USB mode (*1)​
play or pause​
POP​
STP​
3​
NA​
only available in NET/USB mode​
stop​
STP​
NXT​
3​
NA​
only available in BT/NET/USB mode (*1)​
next​
NXT​
PRE​
3​
NA​
only available in BT/NET/USB mode (*1)​
previous​
PRE​
BTC[:{onoff}]​
3​
BTC:{onoff}​
{onoff} 0/1​
get current bt connection state, or reconnect/disconnect current device.
only available in BT mode and device with no external bt module.
Control will have no return​
BTC:1​
PLA​
3​
PLA:{playing}​
{playing} 0/1, wifi playing status​
get current network playback state​
PLA​
CHN​
3​
CHN:{channel}​
{channel} L/R/S​
get current channel state​
CHN​
MRM​
3​
MRM:{mode}​
{mode} S/M/N, slave/master/none​
get current multiroom state​
MRM​
LED[:{onoff}]​
3​
LED:{onoff}​
{onoff} 0/1/T, off/on/toggle​
get/set LED state​
LED:0​
BEP[:{beep}]​
3​
BEP:{beep}​
{beep} 0/1, off/on​
get/set beep key sound, enabled or disabled.​
BEP:0​
PST:{preset}​
3​
NA​
{preset} 0 ~ 10​
get/set PRESET value​
PST:1​
VBS[:{onoff}]​
3​
VBS:{onoff}​
{onoff} 0/1/T, off/on/toggle​
get/set virtual bass​
VBS:1​
WRS​
3​
NA​
wifi reset​
WRS​
LPM[:{loopmode}]​
3​
LPM:{loopmode}​
{loopmode} REPEATALL/REPEATONE/
REPEATSHUFFLE/SHUFFLE/SEQUENCE​
set/get loopmode for network playback​
LPM:REPEATALL​
NAM[:{name}]​
3​
NAM:{name}​
{name} hexed string with UTF8 encoding
eg: 536F756E6453797374656D5F39383235 = SoundSystem_9825​
set/get current device name. Remains after factory reset​
NAM:48454C4C4F​
ETH​
3​
ETH:{onoff}​
{onoff} 0/1​
get ethernet state​
ETH​
WIF​
3​
WIF:{onoff}​
{onoff} 0/1​
get wifi state​
WIF​
PMT[:{onoff}]​
4​
PMT:{onoff}​
{onoff} 0/1​
set/get current prompt voice state, enabled or disabled. Remains after factory reset​
PMT:0​
PRG[:{onoff}]​
4​
PRG:{onoff}​
{onoff} 0/1​
set/get pregain before tone, enabled or disabled​
PRG:0​
DLY[:{mute_delay}]​
4​
DLY:{mute_delay}​
{mute_delay} 1~60​
set/get delay time before system output control, default 30​
DLY:5​
MXV[:{max_vol}]​
4​
MXV:{max_vol}​
{max_volume} 30~100​
set/get system max volume. Remains after factory reset​
MXV:70​
ASW[:{auto_swith}]​
4​
ASW:{auto_switch}​
{auto_switch} 0/1​
enable/disable the auto switch to previous source after playback stopped (network)​
ASW:0​
POM[:{source}]​
4​
POM:{source}​
{source} system source​
set the input mode when power on, NONE for keeping last source.​
POM:BT​
ZON:{zone}:{msg}​
4​
related to {msg} sent​
{zone} zone index, or use ALL to all zones
{msg} detailed API message​
send API message to specified zone, and will reply with the response message
only available on model M400, zone index can be set by 7 PINs on right side​
ZON:1:VOL:50​
TIT​
4​
TIT:{title}​
{title} hexed string with UTF8 encoding​
now playing title, will send this message when song changed also​
ART​
4​
ART:{artist}​
{artist} hexed string with UTF8 encoding​
now playing artist, will send this message when song changed also​
ALB​
4​
ALB:{album}​
{album} hexed string with UTF8 encoding​
now playing album, will send this message when song changed also​
VND​
4​
VND:{vendor}​
{vendor} text​
now playing source, will send this message when song changed also​
ELP​
4​
ELP:{elapsed}/{total}​
{elapsed} {total} integar​
elapsed and total seconds of now playing song​
VOS:{sync}​
5​
VOS:{sync}​
{sync} 0/1​
if adjust the volume in sync when in group mode​
BAL:{balance}​
5​
BAL:{balance}​
{balance} 0~200​
adjust balance, 100 is middle, and 0~100 for left, 100~200 for right.​
VOF:{fixed}​
5​
VOF:{fixed}​
{fixed} 0/1​
If use fixed volume for the device (will have no effect when trying to adjust volume)​
 
I tried calling PE but couldn't get through to the right product manager. The person I talked to was going to get the information and email me back, so I'm in wait mode. I asked about availability of the A98, the A118 and A97L, plus whether there was some additional application data other than the "User Manual".

As far as I know, those apps for the A28/A31 are all the same functionality with different branding skins. You can use the Dayton Hi-Fly app, AudioCast, iDea Home, Muzo Player and probably others to control the modules. I hadn't tried the 4stream app, but it looks the same as all of these others, which I have tried. A couple of years ago there were frequent updates, but I don't think there has been any new development for several years.

The question I have is whether that app still works with the new modules. According to the User Manuals, the A76, A88 and A98 are all Alexa-enabled, and there are connector pins dedicated to PDM microphones. So, does the old app still work and Alexa is just an alternate way of controlling the module? Also, the reference circuit for these newer boards shows a connection to a PCM5121 DAC, which is one of those new DAC's with DSP: IIR filters, DRC, mixers, etc. The diagram shows an I2C connection to the DAC, but can the CPU on these modules control those DSP resources, and if so, what GUI is available for that control?

Another question I have is whether the new modules still support slave mode. I believe the A28 and A31 in slave mode uses whatever clock is provided and the module simply requests audio from the network as needed to output data at that rate. So, for the A28 and A31, the "stock" 48K sample rate from an ADAU1701 board will work just fine. That's how I'm using the module right now, and the audio is excellent. However, the new modules don't mention a slave mode, and the reference diagram shows the module as a master. Also, unless I'm missing something, there aren't pins for BCLK or LRCLK, which implies no slave mode. If that is the case, then the A31 looks like the best fit for the ADAU1701. The newer modules could be used with the ADAU1452, which has the ASRC to convert the sample rate, but might not work with the ADAU1701 unless you converted to analog...:dunno:

Correction: it's just the A98 that doesn't have the I2S BCK and LRCLK pins.
I am trying a different approach to get input on Linkplay Firmware and more details to use it by trying to reach out to people via Linkedin.
Maybe if have a larger pool ( know we are a few ) then they might help out. It's a long shot at hope.

After going through the documents on PE for A97 it seems it might work as a master to the DAC but has a fancy interface connector like an M.2 Wifi module connector.

I wonder how PS Audio is using the A28 or A31 module in the streaming class d amp -
https://www.audiophilia.com/reviews/2021/7/16/ps-audio-stellar-strata