Important: rare hardware problem with v0.5 digital board

In spite of all the efforts I have dedicated to testing, and all the units I have built before releasing the kits in the wild, there seems to be a rare hardware problem occurring on some digital boards. I have personally seen it only once in the 17 digital boards I have assembled, and two people have independently reported it, so it is worth letting you know.

Symptoms

The Shruthi-1 resets itself or freezes when there’s MIDI data coming in. The freeze/crash occurs on average within 10 minutes (or less) of playing, or within a couple of seconds while doing a MIDI transfer. Anything that sends a lot of MIDI data (such as heavy pitch-bend action) very quickly triggers the problem. If you have spent more than 10 minutes of intense soloing with your unit, it’s probably fine :slight_smile:

I am not 100% sure of what’s going on, but the problem is caused by the sharp transients at the output of the 6N137 - on a faulty board they somehow bleed on the RST and power line, causing a CPU reset (either through the brown-out detector or because the RST line has been pulled too low). It’s not clear if this is a corner case of the PCB manufacturing process (some traces being a bit larger on some boards, or having a higher resistance), or if this is due to parts tolerance.

Solutions

Anything that slows down the edges of the MIDI signal…

  • Option 1: replace the 6N137 by a 6N138. The 6N138+1k pull-up is not the fastest combination around, but it should work with a very large number of MIDI sources.
  • Option 2: replace the 1k resistor by a 6.8k or 10k resistor. This will soften a bit the MIDI signal, but not by much.

Those are mutually exclusive. A 6N138+10k pull-up is the opto-isolation equivalent of this.

This looks like a “corner case” rather than a common problem, but to be on the safe side, the next batch of kits are going to be shipped with a 10k resistor.

Let me know if you have experienced this (or not) - I have a tube of 6N138 and 10k resistors at your disposal.

Absolutely no Problem here with the original configuration even when bombing Shruthi with loads of SysEx + CCs. If in doubt while assembling your Shruthi you should use Option 2, im shure Olivier will provide you with an appropriate resistor with a new kit.

Maybe the RXD pin has the pull-up enabled? What if just disable pull-up?

The internal pull-ups are around 30k and are not enabled in the firmware. Even if they were, this would give a total pull-up of 30k // 1k = 970, which is not a big change. I played with one of those “faulty” board, swapped everything that could be swapped (MCU, opto, eeprom) and could not find anything abnormal with it.

Very strange. So you swapped everything but the board itself. And how about conditioning the reset signal by a 100n and a diode?
I will build 2 Shruthis at the weekend. If I experience problems I will replace the optos with PC900s.

A 100nF cap on the reset line removed some of the noise - I haven’t tested it enough to know whether this totally annihilated the problem, but it’s a more complex fix than swapping in an opto or changing a resistor since there’s no room for it.

I am not sure how a PC900 is supposed to solve anything - if it’s slower than a 6N137, you might as well try a 6N138 which is pin-compatible. If it’s faster or equally fast, the transients problem won’t go away.

And don’t forget: if it ain’t broke don’t fix it :slight_smile: No need to freak out - I’ve already done all the freaking-out for all of you.