Wiimu A31 module in combination with ADAU1401/1701 DSP

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.

Did you have to modify the Arylic board so the audio processor wasn't supplying BCLK and LRCLK? Otherwise it appears to me that both the Arylic and DSP boards would be trying to drive the BCLK and LRCLK lines.

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

Hi,
you can use the ADAU1701 with the Arylic Up2Stream/Linkplay A31 like you would use it with any other I2S source.
You habe 2 possibilities to do so:
1)
Use the whole Arylic Up2Stream module as Master. This module has an 32bit ARM M3 under the Linkplay module, which creates the clocks (lrclk, bclk and mclk) from it's integrated fractional pll.
To use it with the ADAU1701 e.g. the Wondom module, you have to desolder the crystal oscillator on the DSP board or cut the pcb traces.
Then you can input the mclk on the mclki pin and the other clocks on the lrclk and bclk inputs.

That is the easiest way, because you don't have to solder a new crystal oscillator.
Another advantage is the ability to change the volume on the source device. That is a question I am working on right now.
The linkplay module outputs it's data over i2S at 100% digital volume (I tested that a few mins ago). So the data_out wire of the linkplay must be routed through the uC on the Arylic base board (I checked that with the multimeter) to do the scaling auf the digital data. There must be some communication going on from the linkplay module to the arylic uC when the volume changes. Probably over i2c?

2)
Use the ADAU1701 as Master and combine it just with the linkplay module without the arylic base board.
Therefore you have to exchange the 12.288 MHz crystall with one at 11.2896 MHz (PLL settings stay the same). The adau1701 can now operate at 44,1 kHz sampling rate.
Then do it like you would do with any other digital source, when the dsp is the clock master (mentioned in the adau1701 datasheet):
Take the output clocks (lrclk and bclk) and loop them back to the clock inputs of the adau1701
--> connect MP10 with MP4 and MP11 with MP5.
Also connect the clocks to the linkplay module (the linkplay doesn't need a mclk).

Option 2 is exactly what PA5cAL1 did in the mentioned thread.

They don't have separate clock sources. That is technically not possible, because they wouldn't be in sync. All clocks have to be derived from one oscillator.

The 192kHz/24bit is more like a marketing gag. I think the data must be resampled to 44,1 kHz/16bit on the Linkplay module.

Kind regards,
Markus

I don't think that is correct, at least for the A28 module. I'm using a 3.072MHz oscillator for a custom ADAU1701 board, with PLL mode = 00. The ADAU1701 provides a 48KHz clock to I2S_WS and 3.072MHz to I2S_CLK for the A28 on my board, and I right now I am listening to Spotify through the A28 and it sounds fine. So there shouldn't be any reason to swap out the crystal or oscillator with one of those commercial ADAU1701 boards.
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.
 
Member
Joined 2004
Paid Member
Unfortunately, the user manual that is readily available lacks detail and has at least one error (it shows I2S_WS as "O" when we know for a fact that it should be "I/O"). I'm going to see if I can sign up with Linkplay or get some additional data from PE. Tired of learning the hard way with these things.

The A28 and A31 modules are still pretty cool, but they are no longer listed on Linkplay's website. They are replaced by the A98, A97 and A118. And PE has the A28 on sale for $10.63. It's probably time to start experimenting with the new modules, but the lack of detailed information is too frustrating.
 
I want to use the whole Arylic Up2stream module so option 1 looks good. Once I de-solder the existing 1701 crystal I should have access to the 1701's MCLKI pin via one of the crystal pads. The other signals are available on headers.

I did find out (new to me at least) that in SigmaStudio you can set "non-standard" sample rates such as 44.1 KHz. Here's the LINK. I looked at the output from the link command and the sample rate appears to be passed to the controls. So the controls (e.g. crossover and Auto-EQ) hopefully work as expected at 44.1 KHz.

Waiting for my Up2stream module to arrive….
 
The A28 and A31 modules are still pretty cool, but they are no longer listed on Linkplay's website. They are replaced by the A98, A97 and A118. And PE has the A28 on sale for $10.63. It's probably time to start experimenting with the new modules, but the lack of detailed information is too frustrating.

No longer listed, does that mean they will disappear from the market soon?
Would you recommend to use the newer modules regarding availability, software updates, new functions etc. ?
I don't want to waste my time with a module, which won't get any updates within a few months.
Where did you find the A28 on PE for that price? I just found the module with price on demand.
Is there some products on the market using the newer modules already? Is there a possibility to order one of the newer modules?
I checked the specs of the A97L module. Airplay 2 would be a really nice feature.

I'm searching for an alternative to the raspberry pi as a digital streaming and multi-device/room solution which is easier to use (software) and only provides the audio functionality. The raspberry has so much functions and overhead I don't want and don't need. I just want a simple module which delivers the audio data via i2s.
The Arylic devices seem to match my needs perfectly. My thought was, the wireless update function and the 4stream app will do the whole software thing and I can concentrate on the dsp and speaker development in my multiroom and multidevice project at home.

The poor documentation of the modules from china is really annoying.
 
This is probably why Arylic has its current products on sale and has a "Buy 2 Get One Free" offer. Flushing inventory before introducing new products. The A31 is still listed on the Linkplay site on page 2 of the "WiFi Modules" section, but it's probably on the way out too. That's today's electronics life cycle, here today and gone tomorrow. At least I didn't buy any early gen Sonos products. :)
 
Member
Joined 2004
Paid Member
Duh--didn't see the "Page 2" button. The A31 was described on the Linkplay site as an updated version of the A28, and they appear to be pin-compatible, so I guess they just dropped the older variant. It looks like the A31 will still be around a while longer. For applications with a good home network, it's still a nice product

You can buy the Linkplay modules at PE by noting the part number and then entering that part number directly on the shopping cart page where it says "Express Ordering". They usually want you to go through their OEM sales to buy these, but just putting in the part number (321-111) will work. The part number for the A31 is 321-110. The A76D is 321-113. I don't think PE carries any other Linkplay modules, but I'll call tomorrow and ask. They have their own version of the Arylic board for $38 (321-120).

That A108 module looks interesting. It's got a built-in display driver for stand-alone Internet radio products. I know some of the newer modules needed a faster CPU for the voice commands--see the Alexa integration pages at the Linkplay site. Not sure that the extra processing power of the newer modules buys you much for audio streaming, but it's nice having the Bluetooth audio built in. It's probably worth considering the newer modules for that capability alone.

Another reason for considering the newer modules is that these modules use the mesh router technology, and you can use them to extend your home network. I know that works with the A28/A31, but they only use the older 802.11n standard. Some of the newer modules have 802.11ac and the fast CPU's that you would need for a high performance mesh router.
 
Last edited:
Duh--didn't see the "Page 2" button. The A31 was described on the Linkplay site as an updated version of the A28, and they appear to be pin-compatible, so I guess they just dropped the older variant. It looks like the A31 will still be around a while longer. For applications with a good home network, it's still a nice product

You can buy the Linkplay modules at PE by noting the part number and then entering that part number directly on the shopping cart page where it says "Express Ordering". They usually want you to go through their OEM sales to buy these, but just putting in the part number (321-111) will work. The part number for the A31 is 321-110. The A76D is 321-113. I don't think PE carries any other Linkplay modules, but I'll call tomorrow and ask. They have their own version of the Arylic board for $38 (321-120).

That A108 module looks interesting. It's got a built-in display driver for stand-alone Internet radio products. I know some of the newer modules needed a faster CPU for the voice commands--see the Alexa integration pages at the Linkplay site. Not sure that the extra processing power of the newer modules buys you much for audio streaming, but it's nice having the Bluetooth audio built in. It's probably worth considering the newer modules for that capability alone.

Another reason for considering the newer modules is that these modules use the mesh router technology, and you can use them to extend your home network. I know that works with the A28/A31, but they only use the older 802.11n standard. Some of the newer modules have 802.11ac and the fast CPU's that you would need for a high performance mesh router.

Thank's for the tip with the option of express ordering. Prices on PE:
A31: 26 $
A76D: 54 $

In my use case the integrated bluetooth would be nice to have, but not a must have. Therefore paying twice the price of the A31 is not really an option for me. The A97/98 modules would match my needed features perfectly.
Would be interesting to know, when they will be available on PE. Did you already call the sales at PE and did you get some info?

Do we know if all Linkplay modules are compatible in the 4stream app?
 
Member
Joined 2004
Paid Member
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.
 
Last edited:
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".
Would be great if you keep us up to date :)

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.
I don't think it is that easy. This method would be new to me.
Have you tried to use a totally different sample rate to check if the A31 resamples the data to the lrclk which is connected to the input pins?
I think that might be possible. I don't think the module requests another sample rate from the source. E.g. Airplay is fixed to 44,1 kHz and multiples of that.
 
Member
Joined 2004
Paid Member
The A28/A31 doesn't do resampling. It is a renderer, and the server is what does the formatting and packages the audio for the right sample rate. Once the renderer specifies the audio format, the server keeps providing data packets as requested, and the renderer outputs it at the negotiated sample rate.

The Whitebear DMR Analyser lets you read back the supported formats and data rates and number of channels from the renderer, and it turns out the A28/A31 supports a wide range of formats and sample rates. The Whitebear tools lets you send data at different rates and various formats, and a lot of these can be played back by the A28/A31. However, there is a problem using the device as I described. The A28/A31 tells the server--whether it is Spotify or a DLNA server that it is outputting the data at 44.1KHz with 16 bits and 2 channels, but it has no idea what clock it is using. So if you provide a 48KHz word clock with a 3.072MHz bit clock, it will tell the server that it needs 44.1KHz audio but it will actually clock it out at 48KHz--about 9% faster.

So, there is a problem here--I either need to provide the expected clock rate or else change the "negotiated rate" by changing the information that gets sent back to the server.

I had been listening using my wife's Spotify account and she had Billy Eilish queued up. Stupidly enough, Billy Eilish sounds pretty good when sped up by 9%, but she's not my type either way. I finally got around to some critical listening and it was clear that something was wrong.

The easy answer is to change the oscillator or crystal (not sure which is used on that ADAU1701 board) and then generate a new SigmaStudio program designed for the lower sample rate. But I'm curious whether the firmware on the A28 can be changed to tell the server that it needs to format the data as 48KHz 24bit data. I'll need to see if that data can be written to via the I2C interface. So this isn't done yet--drat.
 
The A28/A31 doesn't do resampling.
Yes you are right. I thought about that again. I know how Airplay does it:
No matter which format should be played on the source, if the data doesn't fit the 44,1 kHz it will be resampled. Then the data is transmitted over Airplay. In our case the sink (A31) just receives the data an transmits it via i2s. So the sample rate conversion is done by the source.
(...) but it has no idea what clock it is using. So if you provide a 48KHz word clock with a 3.072MHz bit clock, it will tell the server that it needs 44.1KHz audio but it will actually clock it out at 48KHz--about 9% faster.

So, there is a problem here--I either need to provide the expected clock rate or else change the "negotiated rate" by changing the information that gets sent back to the server.
I had been listening using my wife's Spotify account and she had Billy Eilish queued up. Stupidly enough, Billy Eilish sounds pretty good when sped up by 9%, but she's not my type either way. I finally got around to some critical listening and it was clear that something was wrong.
That is exactly what I mentioned here:
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.
-------------------------

The easy answer is to change the oscillator or crystal (not sure which is used on that ADAU1701 board) and then generate a new SigmaStudio program designed for the lower sample rate.
Yes, that is the easy hardware way.

But I'm curious whether the firmware on the A28 can be changed to tell the server that it needs to format the data as 48KHz 24bit data. I'll need to see if that data can be written to via the I2C interface. So this isn't done yet--drat.
That would be the elegant software way. I found out, that the i2c lines are not connected to the arylic base board of the up2stream module. The whole communication is happening on uart. I threw a quick look on the communication with the scope but did't decode it yet (maybe I find some time tomorrow). But that is just an outgoing transaction, otherwise the A31 wouldn't be working without the arylic base board. The renderer just sends the current status (play, pause, volume).
 
  • Like
Reactions: 1 user
Member
Joined 2004
Paid Member
That would be the elegant software way. I found out, that the i2c lines are not connected to the arylic base board of the up2stream module. The whole communication is happening on uart. I threw a quick look on the communication with the scope but did't decode it yet (maybe I find some time tomorrow). But that is just an outgoing transaction, otherwise the A31 wouldn't be working without the arylic base board. The renderer just sends the current status (play, pause, volume).

I was expecting to use the I2C connection on the module to program the 25L128 EEPROM that is on the underside of the A28 module. The thought was that the list of supported audio formats would be in text and that by rummaging through the EEPROM I could find that data and then change it.

Someone had already done some investigations on the A31 software at this link. That site has the links to the images on the Linkplay site (http://s000.linkplay.com:8020/wifi_audio_image_7688/). I tried looking at a couple of the images using Binary Viewer but couldn't find the data I was looking for. Plus, this trick would probably only work with the older modules that use an external EEPROM, so it's probably not a good idea, anyway. *sigh*
 
Member
Joined 2004
Paid Member
If you need an A31 module, there is an eBay seller who has the FABRIQ Chorus for $17. I was hoping that it used the A76D module because it is Alexa enabled and has Bluetooth. Unfortunately, it is just the A31 v3 module mounted to another board that provides the Bluetooth and Alexa capability.

So I was disappointed at not getting an A76D module, but even so, it's a good price for the A31. Shipping was free and it came in 3 days.

Just "unscrew" the top panel and pull it up, and the module is right at the top of the speaker, easy to get to. It's in a socket with a little bit of hot melt glue securing it, but really easy to remove.

And how does the speaker sound? It's not very good. Really nice technology went into this, but I won't have any second thoughts about saving the good part (the Wiimu module) and discarding the rest.
 
Has anyone found a good 24-32V to 5V DC to DC converter for the Arylic board? I’ll have either a 24 or 32 VDC power source for my amps and the Arylic docs state that their product needs 5 VDC @ 1 amp. I first tried a couple of converters I had laying around, a Drok LM256 Immersion Gold converter (5V, 3A) and a Meanwell SPBW06F-05 PCB mount type converter (5V, 1.2A). Both of these produced a background thumping sound that could be heard when no signal was present. I then tried a Meanwell SD-15B-5 which works fine. The only problem with the SD-15B-5 is the price ($15) and more importantly, its size (~ 92 X 55 mm). I’m hoping to find a smaller PCB based converter.
 
Both of these produced a background thumping sound that could be heard when no signal was present. I then tried a Meanwell SD-15B-5 which works fine. The only problem with the SD-15B-5 is the price ($15) and more importantly, its size (~ 92 X 55 mm). I’m hoping to find a smaller PCB based converter.

I have had similar issues. Regular USB chargers work fine though and I have also been successful when using a cheap HLK-PM01 converter from aliexpress. You might need to put some additional effort in proper decoupling of the power supply.

Btw, Arylic has made a second version of the Up2stream module with a connector for the I2S output including a master clock output. This is very useful for synchronization between the WiFi module and a DSP. A sure Adau1701 DSP board could be hooked up to it with only some minor modifications removing the crystal from the board such that the master clock output from the Up2stream module can be connected to the DSP board. I am not sure yet of the clock frequency of the MCLK output. With this new configuration the DSP can run in slave mode and does not have to generate any of the clocks. An onboard PLL on the Up2stream board will generate the BCLK and LRCLK corresponding to the MCLK. A big benefit of the new Up2stream module is the volume control of the I2S output via either the 4stream app or optional IR remote which solves one of the biggest issues with the original setup of my first post. I still have to determine if any of this works.

Connecting the DSP board and Up2stream board requires just a simple interconnection cable that you can easily fabricate yourself although I'd recommend to keep the length to a minimum to preserve signal integrity. I'll post some more information when I have fully investigated this idea.