Goldilocks Analogue – Prototyping 3

The Prototype 4 has now been designed, read here for the next iteration. I’ve received the Prototype 4 back and now I’m testing them.

Following my initial design article, and the follow up design article, I’ve put quite a lot of thought into how I can make this Goldilocks Analogue device best achieve my stated goals. Pictured is the new 3rd Goldilocks Analogue Prototype

Goldilocks Analogue Prototype 3

The finished prototype boards are now in my hands, and testing of the PCB configuration the new SPI EEPROM and SRAM capabilities, together with MSPIM interface for the DAC begins. These two features contribute to making the Goldilocks Analogue great analogue synthesiser platform.


Combined with a Gameduino2 LCD and touch screen, it creates flexible sound touch controller, with quality analogue output.

Goldilocks Analogue - Prototype 3

Goldilocks Analogue – Prototype 3

This is the working design document. It will grow as I get more stuff done, and notes added here. I’ve pretty much finished the paper design now, and will let it settle for a few weeks over the 2014 holiday season. It is sometimes good to do things again, with a few weeks perspective from the original decisions.

Goldilocks Analogue - Prototype 2

Goldilocks Analogue – Prototype 2

Major Revision in Strategy

Over the past months I’ve been spending time writing code to go along with the latest revision of the Goldilocks Analogue. I have successfully implemented a version of the NASA EEFS simple flash file system, to use to buffer data either for acquisition or for analogue playback, and I’ve been working on streaming functions to get data off the SD card and off the EEFS flash file system. The outcome is that it is not possible to do everything with just one SPI bus, and keep generality when needed. The SD card is just too slow, and can’t be easily interrupted. The FRAM/SRAM/EEPROM doesn’t have enough storage to effectively stream GigaBytes of data, as a uSD card can achieve.

So, what to do? Adafruit uses a software bit-banged SPI outcome to drive their MCP4921 and doesn’t get close to the maximum speed I want to achieve. Fortunately, with the ATmega1284p there is a simple answer at hand. I have decided to move the MCP4822 off the standard SPI pins, and connect it to the USART1 TX and XCK pins, using the USART in its Master SPI mode.

This is a major revision in strategy. Previously I have been very adverse to putting anything on the standards Arduino pins, preferring to keep all of the Goldilocks extra features off the Arduino footprint. However, the outcome is well worth using the USART1 to drive the MCP4822, and nothing is compromised.

USART MSPI mode is available on any ATmega device. On the UNO platform, using the ATmega328p, there is only one USART and so of course it is reserved for serial communications. The Goldilocks ATmega1284p has two USART interfaces, and usually the second one (USART 1) goes unused. Therefore connecting its XCK and TX pins to the MCP4822 is the simplest and best outcome to achieve high throughput and regularity SPI output on a non-shared SPI interface. And, as the MCP4822 DAC has high impedence (~10kOhm) inputs, having the DAC sharing the pins won’t affect normal pin usage to any extent.

And, there’s more win. The USART MSPI has double buffering for the transmit function. This means that we can actually achieve a higher throughput using the USART MSPI than we can using the standard SPI bus! These logic traces demonstrate that the my best implementation of the SPI interface requires 4.58us to transmit a “frame” of information, consisting of two 12 bit samples. Using the USART MSPI interface we can achieve 4.25us per frame.

DAC control using SPI bus.

DAC control using SPI bus.

DAC control using SPI bus.

DAC control using USART MSPI bus.

Either way, achieving 44.1kHz stereo output is not an issue. This trace shows the time spent in the DAC-out interrupt for a simple function, with the samples being played out at 44.1kHz.

44.1kHz samples using USART MSPI output.

44.1kHz samples using USART MSPI output.

Guessing that this would be a great outcome, I ordered new PCBs from Seeed which implement the new pin assignments for the MCP4822. They will be here shortly.

My Revision Plans

Revert the uSD card 3V SPI bus drivers back to the quad and single buffers. The TXB/TXS story remains unresolved, and I can’t be bothered to work out why, when a simple answer is at hand. – DONE

Connect the uSD _CARD_DETECT to PC2 which has no other function except JTAG. – DONE

Remove the FTDI 6 pin for USART0. Or, better to move it to connect to USART1, so that USART1 can be addressed by an external FTDI device. Move it to the end of the board, so it doesn’t block Shield usage. Note the RTS/CTS Reset is not connected because this is replaced by a DAC A/B channel. – DONE

Remove the Analogue outputs from centre of board. Move them to the end of the board and integrate them into the FTDI USART1 socket on the RTS and CTS pin positions (obviously not on Tx or Rx pins, or on Vcc or GND either). – DONE

Connect the MCP4822 _LDAC pin to enable sychronisation of the A and B channels. Connect to PC3 which has no other function except JTAG. Remember the _LDAC is pulled to GND by default. – DONE

Have another look at the output filtering on the DAC, perhaps it could be a little stronger than the prototype with the corner at 23kHz. Single pole R1=68Ω C1=100nF. – DONE

This 2nd order filter is still linear, but filters significantly more (6dB rather than 3dB per decade) than the single pole version on the prototype.

2nd Order RC Low Pass Filter

Using standard Resistor and Capacitor values R1=47Ω C1=100nF R2=47Ω C2=100nF in a 2nd order CR Low-pass Filter Design Tool.

Extend the prototyping area by three columns. – DONE

Add a pin-out to allow the DS3231 RasPi module (battery or super capacitor) from Seeed Studio to be easily attached. Unfortunately, the devices I have don’t implement an _INT/SQW output, so alarms and wake on alarm won’t be possible. – DONE

Push the JTAG pads to the back of the board, without forgetting to flip the pin layout around. – DONE

Add SRAM or FRAM SPI storage. FRAM is non volatile storage, that has no delay. With a reasonable amount of storage we can use it to provide short audio samples, and get them back relatively easily, without file system and uSD card overheads. But FRAM is pretty expensive, and SRAM chips with same pin-out are available for much cheaper, that might fulfil the job of buffering or capturing samples.

MB85RS64V FRAM is the only reasonable device available for 5V supply. And it is a reasonable price of $1.80 per unit. But it is much too small to use as an analogue sample store. Need to use the 128kB MB85RS1MT FRAM version, but this required being driven from Vcc 3V3. At 8kHz sampling, 128kB gives us 16 seconds of sound, which is quite a lot. It costs around $6 which seems to be the sweet spot in pricing now. Will have to add another 3V3 to 5V MISO buffer. Use PC4 as the MB85RS1MT SPI _SS line.

Alternatively, just make the pinout for SPI 5V and implement SRAM using the Microchip 23LC1024 device, which is $2.50 each. We can choose FRAM or SRAM at assembly. Or even both, as there is a spare _SS available. So let’s do two devices at Vcc 5V supply.

Put 10kOhm pull-up resistors on all of these _SS lines, _CARD_DETECT and _HOLD. – DONE

Add 10kOhm pull-down resistors on _LDAC allowing active _LDAC control but not requiring it. – DONE

Convert the 3.3V regulator to AP1117 type in SOT89-3 package. No space for SOT223. Upgrades the 3.3V supply from 150mA to 1000mA. Heat spread on Layer 2 GND and on Layer 15. – DONE

Initial Board Layout

I’ve finished the schematic and the board layout, and now I just have the detailed work of checking all the things, again, and again. I’ve come back to this after letting it stew for a few days with the thought of changing just one component. But, as usual have made a host of minor adjustments that should make it better. These include further clearance of the ground plane under the analogue components, and untangling and straightening signals and vias where possible.

The Goldilocks Analogue Schematic  in PDF format.

Front of board (All Layers)

The board is now pretty tightly packed. But, there is still a large number of options for prototyping on the board, or to exit the board with 8-pin headers. Each of Port A, Port B and Port D can be taken off board with one header each. Alternatively, a 2×8 connector can be attached, with the pins assigned and connected as desired.

The DAC A (L) and DAC B (R) channels are integrated into the far right edge of the board, along with TX1 and RX1 pins in the form of a FTDI 6 pin interface (including 5V and GND).

The first 5 pins of Raspberry Pi IO are replicated, to allow DS3231 RTC modules (designed for RaspPi) to be connected. For permanent mounting, the module can be flipped on its back to show the battery, and be mounted over the DAC which keeps the prototyping area clear.

I have been able to fit 2x SPI SRAM (or FRAM or NVRAM or EEPROM) on the board, using the spare JTAG IO pins. It is very tight, but having the option to fit up to an extra 2Mbit of SRAM will be quite useful for buffering and storing large amounts of data (audio, or samples).

15th April

The finished boards are now in my hands, and testing of the new SPI EEPROM and SRAM capabilities, together with MSPIM interface for the DAC begins.

Goldilocks Analogue - Prototype 3

Goldilocks Analogue – Prototype 3

Of course, new features are coming to mind. I’ll be putting them into the fourth prototype, which should come soon.

9th March

The blue PCB are back. Everything looks in order. The board is almost identical to the previous one. Just the change to the SPI attachment of the MCP4822 DAC to use the second ATmega1284p USART in MSPI mode.

The boards are now being built, and should be finished by the end of March. Looking forward to testing. I’ve requested that the boards be build with 2Mbit EEPROM and 1Mbit EEPROM combined with 1Mbit SRAM options. I don’t think having FRAM will be useful as the storage capability will be too small and too expensive. The EEPROM option will allow up to 16 seconds of high quality audio samples to be stored (without using an SD card). The SRAM option will allow samples of audio to be stored, and then used to play back, but given quality will only be 8 or 10 bits because of the inbuilt ADC capability, up to about 16 seconds can again be recorded.

Goldilocks Analogue - 2x SPI Memory Devices

Goldilocks Analogue – 2x SPI Memory Devices

16th February

Major revision. Moved the DAC control to use the USART1 MSPI function. It will be connected to Arduino Pin 4 XCK1 and Pin 3 TX1. This will ensure that we can stream data from the uSD card or the FRAM/SRAM/EEPROM on the main SPI bus to the DAC on the USARTt1 MSPI bus with no contention issues.

PCB with the revised connections is on its way.

21st January

The boards are back. Everything looks in order. The concept of using the keep-out layer to write in silkscreen works as hoped, so the labels on the edge are legible.

Time to get to ordering the new components, and building.

Goldilocks Analogue - Prototype 3

Goldilocks Analogue – Prototype 3

31st December

Cleaned up the board to allow more labels to be applied, trying to make it self-documenting. Packed the analogue section a bit tighter, and improved the power routing.

Screenshot from 2014-12-31 15:47:28

21st December

Cleaned up many traces and cleared the Layer 2 GND plane even more. Discovered the DS3231 modules don’t implement the _INT/SQW function, but leaving the connection to PB2 (INT2) on the pin-out for the future.

Screenshot from 2014-12-21 17:36:10

16th December

Screenshot from 2014-12-16 22:12:43

Top Layer

Labels for the DAC A and DAC B and FTDI interface have been put into the keep-out layer in the silk screen on the edge. They will appear when the silk is printed.

Added Test Points for the 3.3V SPI signals, which are the only signals that can’t be tested off a pin-out somewhere.

31st December

Added labels for the I2C (Raspberry Pi IO1 through IO5) pin out, by moving the analogue section left.

Screenshot from 2014-12-31 15:45:41 Screenshot from 2014-12-31 15:45:55

21st December

Screenshot from 2014-12-21 17:22:27 Screenshot from 2014-12-21 17:22:52

16th December

Screenshot from 2014-12-16 22:10:31 Screenshot from 2014-12-16 22:12:18

Layer 2 – GND

The GND plane remains whole under the DAC and Amplifiers.

31st December

Moving the analogue section to the left and compressing it moves components more over the solid ground plane.

Screenshot from 2014-12-31 15:46:07 Screenshot from 2014-12-31 15:46:17

21st December

Improved the ground plane by moving traces out from under components, and re-routing AVCC line.

Screenshot from 2014-12-21 17:28:45 Screenshot from 2014-12-21 17:29:03

16th December

Screenshot from 2014-12-16 22:10:58 Screenshot from 2014-12-16 22:10:43

Layer 15 – 5V (and 3.3V)

The 5V layer, with the 3.3V and AVCC 5V supplies too.

31st December

Resolved the S-bend power to the I2C 5V pin out, and removed some dead traces.

Screenshot from 2014-12-31 15:46:30 Screenshot from 2014-12-31 15:46:44

21st December

Kept the 5V AVCC line on this layer which makes it longer, but avoids using vias. Tidied up some other power routing.

Screenshot from 2014-12-21 17:30:16 Screenshot from 2014-12-21 17:30:30

16th December

Screenshot from 2014-12-16 22:11:29 Screenshot from 2014-12-16 22:11:10

Bottom Layer

All the pin-outs are defined on the bottom. Unfortunately, there is no space on the top layer.

The JTAG is now pushed to the back of the board. This will make using the JTAG more difficult, but at least it will not interfere with shields, should the solution require testing when in a system.

9th March 2015

The back side is clean, and all of the labels are unchanged.

Goldilocks Analogue

Goldilocks Analogue – Prototype 3

21st January 2015

The back side is clean, and all of the labelling will ensure that the board is self documenting. I was unsure whether putting text in the keep-out layer would work, but it seems to work very well. That’s a win.

Goldilocks Analogue - Prototype 3

Goldilocks Analogue – Prototype 3

31st December

Added labels for the “FTDI like” pin out, combined with the DAC outputs, to improve self documentation.

Screenshot from 2014-12-31 15:47:01 Screenshot from 2014-12-31 15:47:15

21st December

Added more accurate descriptions, and tidied some routing.

Screenshot from 2014-12-21 17:33:28 Screenshot from 2014-12-21 17:34:33

16th December

Screenshot from 2014-12-16 22:11:57 Screenshot from 2014-12-16 22:11:43

Pin Mapping

This the map of the ATmega1284p pins to the Arduino physical platform, and their usage on the Goldilocks Analogue

328p Feature 328p Pin 1284p Pin 1284p Feature Comment
Analog 0 PC0 PA0
Analog 1 PC1 PA1
Analog 2 PC2 PA2
Analog 3 PC3 PA3
Analog 4 SDA PC4 PA4 PC1 I2C -> Bridge Pads
Analog 5 SCL PC5 PA5 PC0 I2C -> Bridge Pads
Reset Reset PC6 RESET Separate Pin
Digital 0 RX PD0 PDO RX0
Digital 1 TX PD1 PD1 TX0
Digital 2 INT0 PD2 PD2 INT0 / RX1 USART1
Digital 3 INT1 / PWM2 PD3 PD3 INT1 / TX1 USART1
-> MCP4822 MOSI
Digital 4 PD4 PD4 PWM1 / XCK1 16bit PWM
-> MCP4822 SCK
Digital 5 PWM0 PD5 PD5 PWM1 16bit PWM
Digital 6 PWM0 PD6 PD6 PWM2
Digital 7 PD7 PD7 PWM2
Digital 8 PB0 PB2 INT2 <- _INT/SQW
Digital 9 PWM1 PB1 PB3 PWM0
Digital 10 _SS / PWM1 PB2 PB4 _SS / PWM0 SPI
Digital 11 MOSI / PWM2 PB3 PB5 MOSI SPI
Digital 12 MISO PB4 PB6 MISO SPI
Digital 13 SCK PB5 PB7 SCK SPI
 (Digital 14) PB0  T0 -> SDCard SPI _SS 3V3
 (Digital 15) PB1  T1 -> MCP4822 SPI _SS
SCL PC0 SCL I2C – Separate
SDA PC1 SDA I2C – Separate
for uSD Card
PC6 TOSC1 <- 32768Hz Crystal
PC7 TOSC2 -> 32768Hz Crystal
 (Analog 6) PA6 -> Pad / Hole
 (Analog 7) PA7 -> Pad / Hole

Discussion on RTC

At the end of the day, the DS3232 / DS3231 device is around $8 best case to me. But modules are available complete with super capacitors from Seeed for around $6. There’s no win here. Stick to the crystal and existing solution, but make it easier to use the Seeed RasPi solution.

Digikey has the DS3231 at $8 per piece. This is pretty expensive, for what it delivers. And there are solutions available with super capacitor backing for under $6 from Seeed.

Design in the DS3232 on the TOSC1 input for the TCXO 32kHz clock and PC5 input for the INT/SQW line. Supply from 3V3 Vcc. Read that the I2C lines can run to 5V5 without issue. INT/SQW outputs are open drain and the INT/SQW can be disabled (high impedance). Let the ATmega1284p switch on its pull-ups for INT/SQW to function. Make sure 20kOhm pull ups on the SCL/SDA lines too.

The DS3232 has 236 Bytes of SRAM, and a push-pull output on TCXO 32kHz line so this is better as an asynchronous clock input.There is an accurate (0.25°C) thermometer function included. It comes in an 20SOIC package which is quite large. Having some SRAM will be very useful for storing configurations that change often (where EEPROM would wear out).

The DS3232M has 236 Bytes of SRAM, and a push-pull output on 32kHz line so this is better as an asynchronous clock input. Having some SRAM will be very useful for storing configurations that change often (where EEPROM would wear out). But, it doesn’t have 5.5V capability on its I2C lines. – Deselect

The DS3231 version comes in an 16SOIC package, which might be better, but it doesn’t have any SRAM, and the TXCO is open drain. – If we need smaller then this is where we go.

The DS3231M MEMS version comes in an 8SOIC package, which might be better, but it is only +-5ppm (rather than +-2ppm). – Don’t need the small package, so go for XTAL version DS3231 in the SOIC16 package.

Digikey has the DS3232 at $8.60 per piece. This is pretty expensive, for what it delivers.

Delete the 32kHz crystal, and capacitors.

Add on a 3V Lithium battery holder. Or a Super Capacitor and a charging diode

Leave the TOSC2 pin floating, as it is not useable when the Timer 2 Asynchronous Clock Input is enabled on TOSC1.

Remove pull-up resistors from RST, as the DS3231 has pull-ups as does the ATmega1284p. The DS3231 has a debounce and 250ms delay function to manage the MCU start up.

Design Input from Angus

IC6 is missing silkscreen marking for pin 1. – DONE

Designator layer needs a cleanup. I had to spend a lot of time in
EAGLE checking which components were which, and what orientations
they had. On such a full board with close-spaced components this is
very important – ideally place each designator between the pads it
refers to, with a consistent orientation relative to the pads. – DONE

Some 0603/0402 components seemed to have wrong pad sizes compared to
BOM output, ie R17 & C13. I placed according to what parts were
supplied. I know this has been revised further but it might be worth
checking BOM output for any remaining anomalies. – CHECKED

If possible move components away from IC bodies, for example C36 is
very close. Even for a pick & place machine I suspect this would be
hard. – DONE

Labels on silkscreens would be very helpful. For instance the power
selection & DTR jumpers, other pin breakouts. For Freetronics boards
we aim to have all of these connections self-documenting, ie each
option labelled somehow. This can be difficult but part of the
appeal of a development board is being able to easily make
customisations without requiring an external reference. – DONE

It’d be great if you could find a way to better convey the offset
pin numbering for pins 8-13. – NO BETTER ANSWER

The MCU 1284p solder stencil paste layer has too large of an
aperture for the thermal pad. If you look at the paste layer of IC1
and compare to IC2 then you’ll see what I mean. The aperture needs
to be cut down in this way or the central pad gets too much paste
and “floats” up, leading to the outer connections not forming
correctly. – OK Can’t change Library

Suggest adding test points for likely problem connections. ie
analogue section power rails, 3.3V SPI connections, raw DAC
outputs. These can just be bare SMD pads on top or bottom of
board. Label with a designator (at least) or a descriptive label if
possible. For an example of what I mean, the OpenVizsla boards have
a really nice set of 4 power test points near the bottom of the
board. – DONE Power is easy off pins. Added 3.3V SPI test points. Other pins all have pin-outs.

Design Input from Freetronics Forum

Keep the JTAG header, but also distribute the pins to the 2nd Non-Arduino shield pins. – Going to push the JTAG to the back of the board. It will be inconvenient to use, but won’t block the use of Shields when it is actually being used so this is better. This also frees more space for a RTC and battery option. – DONE

Add a RTC option. – Using the 32kHz crystal on Timer 2 the RTC is working fine. Battery and power options can be off board, and as comprehensive and accurate as needed. – DONE

Other RTC options include using the DS3231, which would be more accurate than a 32kHz crystal, and includes an integrated RST debounce timer. Can use the 32kHz output to feed the ATmega1284p Timer 2 and therefore have both devices locked to the same clock. Chronodot as an example for using this RTC. – DONE

Goldilocks Analogue – Testing 3


I’m still working (slowly) on a new development for my ATmega1284p platform, called Goldilocks.

My initial design for the Goldilocks Analogue was flawed in several ways, so I revised the design and produced a new prototype.

Following up on the initial testing matched against the Stanford Analog Shield, I’m now testing against the Open Music Labs Audio Codec Shield.

Goldilocks Analogue & OML Audio Codec Shield

Goldilocks Analogue & OML Audio Codec Shield

Both devices output excellent looking 43.1Hz sine waves, at 44.1kHz reconstruction rate, from the previous 16 bit 1024 sample Sine Wave.

The Goldilocks Analogue produces 0V to 4.096V 1:1 buffered signals from its DC outputs, and an AC amplified headphone output in parallel. The Audio Codec Shield produces 0V to +3V line level signals into 10kOhm, together with an amplified headphone signal.


OML Audio Codec Shield 43.1Hz Sine wave, one channel inverted.

OML Audio Codec Shield 43.1Hz Sine wave, one channel inverted.

Open Media Labs – Audio Codec Shield

The Audio Codec Shield uses a very capable Wolfson Audio WM8731 device to generate its output. The WM8731 has stereo 24-bit multi-bit sigma delta ADCs and DACs complete with oversampling digital interpolation and decimation filters. Digital audio input word lengths from 16-32 bits and sampling rates from 8kHz to 96kHz are supported. The WM8731  has stereo audio outputs which are buffered for driving headphones from a programmable volume control and line level outputs are also provided complete with anti-thump mute and power up/down circuitry.

Nominally, it is unfair to compare the MCP4822 12 bit DAC against the 24 bit 96kHz WM8731 DAC, but let us see how this looks, when both are driven with 44.1kHz 16 bit inputs. But, based on pricing information from Digikey, they are available at around the same price range, so this has to be a reasonable test.

Head to Head

Testing was done using a 16 bit 1024 sample Sine Wave file. Outputs were generated by a timer triggered to interrupt every 22.7us (44.1kHz), and produce a new output level. Testing should show only a main signal at 43.1Hz, and the reproduction frequency of 44.1kHz. The Goldilocks Analogue discards the lower 4 bits of the samples and only outputs the 12 most significant bits. The WM8731 could produce 24 bit audio from its DAC, but in this test it will be run at 16 bits only.

OML Audio Codec Shield & Goldilocks Analogue with Red Pitaya

OML Audio Codec Shield & Goldilocks Analogue with Red Pitaya

All outputs generated by a 1024 sample 16 bit Sine wave, generated with a 44.1kHz reconstruction sample rate, triggered by an interrupt timer.

The OML Audio Codec Shield produces very nice Sine waves.

OML Audio Codec Shield 43.1Hz Sine wave, one channel inverted.

OML Audio Codec Shield 43.1Hz Sine wave, one channel inverted.

The top of the wave form


and the bottom of the waveform. Show some high frequency noise. This could be removed by the on-board digital filters on the WM8731, but in this testing situation the have not been turned on.



Looking at the spectra generated by both implementations up to 953Hz it is possible to see harmonics from the Sine Wave, and other low frequency noise.


OML Audio Codec Shield – 43.1Hz Sine Wave – 953Hz Spectrum


Goldilocks Analogue – 43.1Hz Sine Wave – 953Hz Spectrum


The Audio Codec Shield has a significant noise present at 50Hz, which may be caused by noise leakage through the PC USB power supply not being completely filtered before the supply is provided to the WM8731. Other noise rises up to 80dB, and is present right across the spectrum.

OML Audio Codec Shield – 43.1Hz Sine Wave – 7.6kHz Spectrum

OML Audio Codec Shield – 43.1Hz Sine Wave – 7.6kHz Spectrum


Goldilocks Analogue – 43.1Hz Sine Wave – 7.6kHz Spectrum



And here.

OML Audio Codec Shield  – 43.1Hz Sine Wave – 61kHz Spectrum

OML Audio Codec Shield – 43.1Hz Sine Wave – 61kHz Spectrum – Harmonics around 44.1kHz reconstruction frequency

Goldilocks Analogue – 43.1Hz Sine Wave – 61kHz Spectrum

Goldilocks Analogue – 43.1Hz Sine Wave – 61kHz Spectrum


And here.


OML Audio Codec Shield – 43.1Hz Sine Wave – 976kHz Spectrum


Goldilocks Analogue – 43.1Hz Sine Wave – 976kHz Spectrum

Algorithmic Symphonies

I’ve added some algorithmic symphony code to both solutions.

Here’s a short clip of one 8 bit algorithmic symphony played by the Goldilocks Analogue.

Elekit TU-879S Stereo Valve Amplifier Kit Review

Update May 12, 2013

I was testing my Arduino powered voltage controlled oscillator, when I noticed that the Right channel was very soft. Almost, but not quite, inaudible. Immediately, I suspected that there was a problem with one of the valves but, no, it was something else. Read more at bottom of this post.

Choosing the Elekit TU-879S

Looking for a new project, I decided to build a valve (tube) amplifier kit. So, let’s follow the process and see where it takes us.

I was looking for something that around $100, as a toy to play with. But it seems that that price level is unachievable, so we have to pay more. But, as the purchase price goes up, this thing can no longer be just a toy. It must become a functional durable product, that can actually be used by anyone.

There are a couple of valve stereo amplifier kits on the market, such as this Stereo Tube Amplifier Kit for under US$200, or this Model 16LS Stereo Integrated Tube Amplifier for US$250. Both looked good, and are cost effective. But, both suffered from the problem that they are built on a breadboard, and leave 300V exposed on open wires. Ok for a toy, but unusable in the long run for family members, or even my own careless fingers.

Some further research on the Internetz turned up the Elekit TU-879S, which seems to fit the requirements exactly. Less than AU$1,000 so it can be imported to Australia with no GST issues. Kit looks very well made, and professionally presentable. No loose HV wires to electrocute anyone. And, most importantly a very strong user community who have built and use the Elekit TU-879S in their audio systems, and provide input on modifications and improvements.

Oh. Oh. Think I just hit the “BUY” button.

Victor Kung at VKMusic created the English instruction manual used by Tube Depot. I just learned that unfortunately, Victor is getting nothing for his translation and original market development work. I suggest that you buy the kit from him directly.

This kit uses three valves, one a single valve dual Triode voltage gain stage, and two power gain Pentodes driving the output transformers, to produce 8W per Channel. All of the valves are readily available using either New Old Stock (NOS), or new products equivalent manufactured in Russia, or China. My finished version is pictured below, wearing ’58 Telefunken 12AX7, modern production SED Winged “C” 6L6GC, and alternatively ’61 production GE 6L6GC.


Research while waiting (on back order)

There are a couple of excellent reviews of the Elekit TU-879S which I won’t reproduce here. Save to say that they provided some ideas for improving, or hacking, the Elekit TU-879S, and that even before I had built it.

The first noteworthy improvement is to substitute the decoupling capacitors between the input and the pre-amp stage, and then before the power-amp stage. The Positive Feedback review suggests using VCap capacitors in those locations, and raves about the results. Great, but I’m not about to spend 50% of the total purchase price on 4 components. Let’s look for some cost effective alternatives.

The Internetz seem to suggest that Mundorf has a good name and quality product, so an order was placed for 4x MCap Supreme capacitors at Madisound Speaker Components. These MCap capacitors have a musical heritage, with dual series counter-wound cores supposedly cancelling impedance effects, but don’t add too much to the project cost.

The second improvement is to replace the existing dual linear variable potentiometer with a higher grade unit. The provided unit is a $2 ALPS plastic film component. For a little more, with respect to the value of the end product, the TKD 2CP-601S 100K stepped dual log taper potentiometer provides a good alternative. One was ordered from HiFi Collective in the UK. At about $40 it bridges a logarithmic gap in price between the original $2 component, and the ultimate component being a $300 stepped resistor array.

So with these two modifications, we have effectively upgraded the “small signal” part of the amplifier, where noise and non-linearity have the most effect. There are a number of other modifications suggested, but they are more drastic than simple component selection and replacement, and can wait until after I’ve established what the base-line of performance is for the Elekit TU-879S.

Valve search

The 6moons review goes into some of the options available for the Elekit TU-879S. Really, there are so many options around that it is a lifetime of experimentation to find the best valve sound from this amplifier. In fact, half the fun of this kit is reading the Internetz opinions on which valve creates what sort of sound. Often, strong opinions on individual valves are expressed without reference to the rest of the signal chain (pre-amp, speakers, listening environment, etc) such that the argumentation takes on a religious air.

12AX7 (Voltage Gain)

There are many many reviews of this 12AX7 valve type. Within these reviews there is one type that stands alone at the pinnacle of sound reproduction, the 12AX7 / ECC83 Telefunken with smooth plates. Luckily TC Tubes has some (one only as I write this) in stock. These valves have a 40,000 hour life time, so there is no problem to buy a “premium new”  test device, with exactly matched triodes. The one that I received from TC Tubes was made in April 1958, and tests Gm 100%/100%, which is about perfect.

Also as an alternative, there are great reviews of the military version of the 12AX7 being the 5751 which has a lower gain (Mu of 70 vs. Mu100 for 12AX7), and is also extremely low noise. TC Tubes has these GE 5751 in stock too. TC Tubes shipped me a 1961 vintage GE 5751 with matched Gm 108%/108%.

There are many other alternatives of these valves, and as I mentioned, I think that they are all subject to a lore of selection.

6L6GC (Power Gain)

As the Elekit TU-879S accepts a variety of similar Pentode valves, it is difficult to determine which ones should be on the list to try. Cruising the forums, it seems that this amplifier works best with the 6L6GC, which is the same type that it ships with.

As the power valve has a limited (though long) life of around about 10,000 hours, I am not keen to spend a large amount of money on NOS for this position. So my ideal is to find the “best” modern valve and see what the service lifetime is in practice, before investing in a NOS alternative.

After looking at some reports at Watford Valves, I decided to get a matched set of SED Winged “C” 6L6GC valves, also from TC Tubes. These will complement the Electro Harmonix valves provided with the kit.

Once I’m sure that it is a good investment, in terms of sound quality and listening hours, I’ll certainly get some NOS power valves to use.

Update: I’ve decided to take the plunge on NOS Pentodes, and get some GE 6L6GC from TC Tubes. Reviews of these suggest that it has an excellent performance, exceeding any current production valve though possibly not the best available NOS.

The construction process

When you un-box the kit, with the components packed so neatly into 10 heat-sealed individual bags, and each piece of metal wrapped and separated by brown paper, you remember what the Japanese are famous for. OCD grade accuracy. Clearly, this kit is perfect.

The English translation of the instructions, and the inclusion of a 230V power transformer of the same type as the 100V original, are finesse added by Victor Kung at VKMusic. There is no need to add any further internal photographs of the process. Assembly, for someone who is used to soldering SMD and micro-electronic components, is a breeze. Absolutely everything is explained exactly, and everything is perfectly easily done.

The English translation has two small (tiny) typos in resistor numbering, which confused me for a minute (also OCD), but looking at the Japanese original instruction cleared up my confusion.

As the provided resistors are 5% accuracy specification, during the construction process I checked the actual resistance of all resistors before assembly using an accurate digital multimeter, and tried to match closest pairs of resistors to the same circuit position in both Left and Right channels. The thought behind that was that even if the circuit was very slightly off specification because of the tolerance in the resistor values, then at least Left and Right channels would be matched.

The modification process

With the Mundorf MCap Supreme capacitors being much larger than the standard polypropylene capacitors they have to be fitted onto the back of the PCB. No problem, there is plenty of space.


The TKD 2CP-601S potentiometer is a little more tricky. Fortunately, the pin-outs are identical to the supplied device, so the volume control PCB can be used. I just needed to kink the pins towards each other slightly to get a fit. The volume circuit PCB shows some minor flux damage, as I had to remove the provided volume potentiometer fitted first for testing.

The axle housing on the TKD 2CP-601S is slightly greater diameter than that provided, but rather than drilling out the top cover I decided to use a pocket knife to cut “flats” on the two sides of the threads since it almost fit. As the housing metal is aluminium, and it is cut into a fine thread, it is easy to remove enough metal from both sides with a knife to get the potentiometer to fit cleanly into the slot. This could alternatively be done (better) with a small flat file.

Secondly, the tab on the front face needs to be removed so that it will fit flush with the front panel. Snip with side cutters, and it is gone.

Finally, the axle is about 5mm longer than that on the provided pot. I used large pliers holding the end of the axle to hold it still, whilst using a small hacksaw, resting against the pliers as a guide, to cut through the soft brass. Easily done. Don’t hold the body of the potentiometer when cutting, otherwise the axle will turn, and you will surely damage it. Use a file to tidy up the cut edges on the axle.

Testing & listening

The initial testing and listening was done using the provided Chinese 12AX7 and Electro Harmonix 6L6GC valves. Everything worked well. The amplifier is amazingly quiet on idle. No audible hum at all. If a line level source is connected into one input, with the other input selected, some crosstalk can be heard at high volume. But generally this is not noticeable, and can be removed simply by switching off the alternative source.

Both the SED and Electro Harmonix valves produce the lovely blue aurora surrounding the valve, when viewed in the darkness. The pictures below try to capture it, but don’t do it justice. The GE valves don’t produce the blue aurora, but that doesn’t affect their excellent sound quality.


Once the proof testing was finished, I replaced the standard valves with the special NOS 1958 Telefunken 12AX7, and the matching 1961 GE 6L6GC valves. Amazing the difference in sound quality. After a few hours of burn-in, I started listening to the U2 War album, and I could swear that Bono started to sound incredibly like Elvis. Some of his spirit must be trapped inside the little glowing bottles.

Repair Update

Early May 2013, I was experimenting with a voltage controlled oscillator to see how sine waves would behave, and to test my speakers and my ears, when I noticed that the Right channel had become almost inaudible. I hadn’t previously noticed, or may be I had noticed but had put it down to my speakers being too old.

I did some standard trouble testing, and found all the valves to be good and also inputs and speakers to be good. It therefore had to be something inside the amplifier.

I gathered all my tools, slightly concerned that it would be hard to identify what was the problem. I needn’t have worried. The problem was obvious. Burnt black obvious.

Damage - Before

Electrically, R13 and R14 are 330 ohm 3W resistors, which provide the current load for the power valves. At idle they should present about 21V on Pin 8 of each of the power valves. In my measurements, the left channel was presenting at 28V and the Right channel at 58V. The significantly lowered current through the Right channel was causing the reduced amplification.

As soon as I turned the board over, the Right resistor sort of just fell off the board. Pretty well burnt out.

I have replaced the faulty pair R13 and R14 with 330 ohm 5W resistors, and have done a little bit of aerial bridging to try to support the weakened PCB tracks. The image below shows the result. It is not pretty, but it has returned the amplifier to working, with 22V showing on each of the valve’s Pin 8, and the volume level from each channel being similar.

My suggestion, use 5W resistors when you’re making this kit, and try to keep enough space around the resistors so that they don’t burn the nearby capacitors and sheathed wiring. In the photo the faulty resistors can be seen too, with the lower leg on the Right resistor almost turned to carbon powder.

Damage - After repair