Why we use a separate MCU instead of RPI GPIO / IR (lircd for rpi).

Our initial plan was to use lirc-rpi (lircd) for Remote and Poll gpio of RPI to
handle the front panel Buttons and rotary Encoder. When we developed the software and looked at the CPU usage we found that polling the GPIO pins frequently for
Buttons and Rotary Encoder and using lircd was taking up decent amount of
CPU cycles. Our design philosophy is always to have as many CPU cycles as possible for audio decoding instead of ancillary tasks. If the audio player
is CPU starved it can lead to degradation of sound quality.
To allow the most CPU headroom for the player , we offload all Input handling tasks like polling Input keys, decoding IR remote etc to a independent MCU board. Since we have a MCU Board that is powered separately, power management and muting also is handled by the MCU.

Reducing Audio Noise During Playback.

When we measured the audio noise during playback we found some
non repeating random noises , when we investigated this , we found
it was from the Ethernet port when the player app was downloading data,
we also noticed noise when using WiFi while streaming data.
We explored various options to reduce it , One to shield it the analog section,
the second would be to reduce as much unnecessary
stuff from running when we are playing back a track. For example
the UPNP server if running answers to any device on the network
querying for it (SSDP).

Our software stack does not run any unnecessary BG daemons till
the user starts it. So unless you are in the UPNP player mode the
daemon is not running in the background. Same for other Player
daemons too.

Second important thing we found that reduced the noise during playback
of network content (NAS/UPNP Stream) or even USB content, is to download it to
a RAM disk and play it from there. There is a small delay during startup for
downloading the track but more than makes up for much better listening
experience. There are No IO operations , no buffering etc, that happen when we playback from the RAM disk so much cleaner sounding playback.
We have an Option to turn on “Download Before Play” in Settings menu.

Finally we have taken great care to isolate the power supplies and
shield transformers from analog sections etc.

Pre Amplifier

When we connected just the DAC to power amplifiers , we found that in some cases due to mismatches in impedances’ ,transparency was affected ,some frequencies were attenuated , noise and distortion were also noticed . To alleviate this issue we decided to add a PreAmp between the DAC and the Power amp. We also noticed that when we use the digital volume control in the DAC using the ALSA mixer the control was as smooth and detailed as using an analog volume pot.

We are using two stage amplification using audiophile grade
Burr Brown OPA2134 opamp, resistors and capacitors . The first stage is a fixed gain stage which feeds to the pot this feed the second stage. Since it a dual mono stage we were able to achieve very low cross-talk.

Chassis and Front Pannel

After trying various options we settled on a 10 mm thick aluminium plate for the front panel. The Chassis would be made from 1 mm steel plate. We went thru many iterations to finally settle on the design that everyone liked.

Here are some of the iterations.

Previous Iterations

Sliver Version
Panel with BW LCD
With Monochrome Display
Silver version
Version With Color TFT LCD.

Machined Aluminium Push Buttons

Machined Aluminium Feet

Machined Aluminium Knobs
Laser Cut Chassis
3D Printed Front Panel USB Holder.
3D Printer for Prototypes
Engraver, for Logo Engraving.

Bluetooth, Google Chrome Cast Support,

After going thru internal discussion about if we
need to include BT audio receiver we found that in the
last 5 years BT has changed so much and will continue to change.
If we include it inside the chassis we would most
defiantly obsolete our hardware in the next 3 years when
better BT technology like BT HD or the next version APTx
comes along. So we decided to include BT as a plugable external
component. This way when a better BT module comes along
we can always easily replace it.

We decided to do the same with google chrome cast audio too.
This is also available as an external component.

The Player uses its preamp switching circuit to seamlessly switch
between the internal digital transport and external devices
like BT module, Chrome cast Module, Airplay etc.

From the end-user perspective all these modules are integrated
into a seamless software interface.

The added benefit of using external modules is that we don’t
have ugly antennas poking out and we get very good WiFi and
Bluetooth signals.

How to Choose Power supply for your media streamer.

How well a system performs depends a lot on how well you feed it, this is true for living organisms , automobiles and electronics. When We started exploring the best way to power our Player, we had to choose between SMPS and Linear power supplies. Linear power supplies use large transformers and an elaborate rectification and filtering circuit which allows the pre and power amps to perform well. Noise in the power supply will eventually trickle into the audio signal and will become audible. For example if there is a 100mv power supply ripple noise in the power supply on a 1v Peak to Peak audio signal that is 10% of the signal and will get amplified by the power amplifier just as much as the audio signal.

The advantages of Switch mode power supplies is that they are small and efficient so for a given amp rating, the power supply is much smaller. The downside is that it is pretty noisy.

On the other hand linear power supplies can be very quiet but if the current requirement
is large then we need large heavy transformers and big filtering circuits. Large
transformers come with their own problems of noise and EMI interference in sensitive pre-amp circuits if they are wired too close.

We stared testing and measuring various power supplies to evaluate the performance and found that SMPS was pretty noisy , linear power supplies were quiet but even their noise level started increasing when we increased the current draw (power).

We needed about 5v 3 amp for the SBC , 5V 50ma for the DAC and about +/- 15 100ma for the preamp. We initially wanted to use a single linear power supply but found that whenever the SBC’s power consumption increased when WIFI was active or when a large file was being downloaded, it increased the noise floor of the Linear Power supply. This introduced the noise into our pre-amp circuits.

So we decided to use two power supplies one for SBC and one for the DAC and the Preamp, we ended up using two transformers one with a 5A rating and one with a 1A rating, this created additional headaches of EMI HUM noise from the transformers. So we decided we needed a simpler solution.

We are using a 5v 10A SMPS for the SBC, MCU for Remote, Front panel,
protection circuits, Input and speaker Switcher Relays,where the audio signal never travels.

We have a separate  Linear power supplies with a torroidal transformer to supply power for the DAC and the Preamp. Thiese power supplies have CRC filter ,CLC filters and large power caps to ensure extremely low noise (less than 5mv and full power draw).

We have taken extreme care to ensure the transformers are as far away as possible from our sensitive audio circuits.

This is the Power supply board for the DAC with +5V 

This is the +12 / 0 / -12 Supply for the Preamp. We can adjust the voltage up to +/- 18 V based on the opamps used.

Here we can see the measurements , This is the Noise in SMPS, this about 216mV . The frequency displayed is of the switching frequency of the SMPS.

Closer Look at the Waveform (250nS).

This is using a Linear PSU where the Noise is reduced and is around 17.2mV. and you can see the frequency is more closer to the AC Supply Freq.

This is the Noise level after CRC and CLC Filters. at just 6.4mV.

Raspberry PI , RPI I2S DAC Measurements.

To evaluate the performance of various DACs and AMPs we decided to  measure them. Our Measurements are not extremely accurate,but accurate enough to give us relative performance numbers in our setup so that we could make an informed decision. We knew the manufactures had provided the numbers but we wanted to ensure that we chose the right combination for our player.

RPI Board Direct









ESS ES9028






Deciding on a DAC

Once we finalized the SBC the next important thing was the DAC. Choosing a DAC was not as easy as choosing the SBC, it is very subjective selection process. DAC Sound quality changes between DAC chips and Analog front ends and some are liked by some and some are hated, So we had quite a complex task ahead of us.

We took a non scientific approach of doing listening tests with people from all age groups and backgrounds (audiophile/casual/ipod listeners). We played music from all genres like Rock ,Pop ,Classical, Ilayaraja , AR Rehman etc and got their feed back.

The DACs we tested were

Burr Brown PCM PCM5122 in Slave Mode. (Allo Piano )

PCM5122 Based Master DAC (BOSS Allo)

Low Cost PCM5102a



Asahi Kasei Microdevices  AK4490EQ



PCM Dacs were smoother and warmer.
The best sounding PCM DAC was the Allo BOSS.
The Piano and the PCM Module did not sound as good on
Hires and 44.4 FLAC files. For MP3 it sounded good enough.

The BOSS DAC had the warmth and depth we were looking for without compromising on the clarity. It was also non fatiguing.

ESS DAC had the best hi frequency resolution , the highs were very clear
and crisp but was fatiguing after a few songs. The younger listeners hated it
since they were very sensitive to the Highs and thought it sounded too harsh.
We could tame the harshness with the analog filters.  The high freq characteristic is something we have seen in other ESS DAC like the SABRE DAC from Youlong. ESS felt like it had some unfiltered HF artifacts.

AK DAC This had the best audio quality but needed I2S input with clock which the RPI3 did not have so we used a XMOS USB to I2S converter to get the I2S. This DAC had the warmth ,clarity and had the best tonal reproduction.


So we decided to go with the Allo BOSS for our Rasa Player and AK4490EQ for our reference player.