Site Navigation:

Modular Synth (Eurorack) - Notes

DIY Construction Notes

Through Hole

Bung all the components in, starting with the lowest in height eg diodes, then resistors, etc. Check for shorts at the power terminals, turn it on and test it !

SMT - Mutable Instruments


I look in Eagle and create a pdf/image version of:
  • The schematic (print to pdf from the schematic)
  • The board (turn off lots of layers in layer settings and save as high res image)
  • BOM from schematic (export BOM, tick values)
  • I then thoroughly clean the board with IPA to remove grease

    Order of Build

  • I look at (usually) the last page in Eagle to see the power section and build that first. I then test for shorts at the power connector, then plug in and check all reference voltages are correct.

  • I then place the MCU and associated decoupling caps. I also usually place the crystal but that isn't usually necessary. I then flash the MCU.

  • Usually I'll then solder all the other ICs as it makes it a bit easier having more space around them to drag solder. I'll carefully inspect all the solder joints under high magnification.
  • I'll then place all the rest of the components, testing all the passives with a multimeter to ensure they are the correct values. It's a bit tedious testing each resistor and capacitor but it's quite fast when you get into a rhythm. It's also a lot faster to test them now than try to debug an incorrect or faulty component in a completed build (I once had a dead resistor in a Ripples build which was a pain to track down - never again !) I empty them into a tub to stop them flying away.
  • Once all components are soldered, I clean everything with IPA and a toothbrush to remove flux.
  • I then push fit the jacks, pots, switches, LEDs, etc. (It is far easier to sort out any issues on the boards if these are not soldered !) I then test for shorts again at the power terminals and power up.

  • I then test every pot, switch, jack using an oscilloscope. I'll use a function generator and the Mutable Module tester.

  • I only power the module from a sacrificial power supply (from Frequency Central) that only costs about 5 in parts if I fry anything. I don't use the power supply from the module tester as a short on the module could fry the tester!

    Flashing the MCU

    I use an STLink V2 on a Mac from the Mutable Dev Environment. The Mutable modules need an adapter from the large JTAG connector on the STLinkV2 to the mini JTAG port on the module. Olimex sell one for a couple of quid. You need to make sure the connector is plugged in in the correct orientation - check Eagle! (I have the red stripe on my adapter oriented towards pin 1, which is usually marked with a small stripe on the PCB).

    The module needs to be powered from a power supply.

    I have tried using the ST software which worked perfectly well under Windows but I just prefer using the dev environment (a virtual Linux machine that is fully cross-platform) as it means I can build and debug the firmware. Flashing the MCU is a simple "make" command.

    I have needed to edit the source code a few times - eg the Braids encoder that is commonly available eg from Mouser, results in a reversed direction of travel compared to the factory module. A simple two line code change corrects this.

    I have also used the on-chip debugger (debug-client and debug-server) to sort out the calibration issues on a couple of Peaks modules. This would have been impossible using the software GUI from ST.

    Note that on the newer modules (plaits, stages, marbles so far as of Oct 2018) MI now use SWD to program the MCUs rather than jtag. I jumper the pins of the STLink V2 to the SWD pins on the board. With the STLinkV2 pin 1 (target voltage) needs to be jumpered to pin 19 (3.3v *from* the programmer. Here is how I wired the jumpers to flash marbles:

    To make life easier (and to save the hassle of connecting fragile jumpers, I knocked up a quick connector board to connect from the STLink to the SWD pins of mutable modules:

    I use an Olimex AVRISP mkII. You need a 6-pin ICSP adapter to connect to the 10-pin ISP port on the programmer to program the Mutable modules.

    I use the Mutable dev environment to program the modules. I have used Atmel Studio (Windows based GUI) but find the command line environment much faster and more straight forward. It is less prone to error (as you don't need to transcribe the fuse settings from the makefile to the GUI, you just type "make"!).

    There are a few hoops to jump through to get this to work. You need to use the "Flip" software to change the firmware on the programmer to use avrdude. There is an issue with avrdude 6.x and the avrisp mkII. You can either patch this or install 5.x. I use 5.x and specify the version of avrdude on the make command line with "AVDUDE=". To compile 5.x you need to install the dependencies (eg yacc, libusb etc - can do it manually or with sudo apt-get avrdude-dependencies). Once setup it all works seamlessly.

    Most of the MI modules use the ICSP connector, but Edges uses PDI - so make sure to use the right connector and output from the programmer.

    I install the crystal as well as decoupling caps. I power the MCU from the main eurorack power connector, rather than from the programmer (I set the power jumpers on that to off).

    Kinetis (eg TINRS Tuesday)
    I use a cheap (3.00) JLink clone from aliexpress.

    For software, I use the Mutable dev environment (need to add the JLink clone in the usb port settings for it to be seen by the virtual machine). I use openocd with the following commands:

    sudo openocd -/usr/local/share/openocd/scripts/interface/jlink.cfg -c "transport select swd" -c "set WORKAREASIZE 2048" -f /usr/local/share/openocd/scripts/target/klx.cfg

    In other window:

    telnet localhost 4444

    In the openocd session I used the following commands:

    kinetis mdm mass_erase
    reset halt
    flash probe 0
    flash write_image erase /vagrant/AJH_Tuesday/AJHTues.hex 0x00000000 ihex
    verify_image /vagrant/AJH_Tuesday/AJHTues.hex

    (where /vagrant/AJH_Tuesday/AJHTues.hex is the combined bootloader and firmware).