Keebio, a manufacturer of mechanical keyboard parts, recently had a problem with a production run of small keyboard controller boards. Here’s what it can teach us about electronics manufacturing.
Keebio is a manufacturer and distributor of mechanical keyboards and mechanical keyboard accessories. You can get mechanical key switches, switch plates, circuit boards, and carefully crafted USB cables from Keebio, and of course they’re always innovating on the landscape that encompasses mechanical keyboards.
- In the interests of disclosure, I would like to state this article was written on a keyboard with an insurance appraisal value greater than one thousand dollars.
Of these products, a very popular recent trend in mechanical keyboard builds is the split keyboard. The keyboard is split down the middle and connected via a small cable. This requires two microcontrollers per keyboard, one per side, with one acting as the master and the other acting as a slave.
Also on Keebio’s docket is a replacement for the Arduino Pro Micro used in so many keyboard builds. The Arduino Pro Micro (and similar clones) are very capable of controlling a keyboard, the firmware is very mature, and everything just works. However, the Pro Micro is a bit long in the tooth, and it would be nice to have a USB-C port and a few more pins. This has led to the development of the Elite-C, a drop-in replacement for the Pro Micro with just a few more features.
The Problem With One Diode
The Elite-C worked, but after a bit of experimenting with the v3 version, a weird problem was found when using this microcontroller board in a split-keyboard, master-slave configuration. The slave half didn’t work sometimes. This is an exceptionally hard problem to troubleshoot.
There is a single pin on the microcontroller of each Elite-C board to detect if it should act as a master or a slave. When this pin is a master, it should be about 5 Volts. As a slave, this pin should be set to 0V. This pin is connected to a Schottky diode to ground, and if everything is wired up correctly, it should just work.
The problem turned out to be a slight change in this Schottky diode made during the revision from the V2 board to the V3 board. The diode used in the V3 board had a much higher reverse current (5uA in the V2 board compared to 40uA in the V3 board), resulting in a much higher voltage seen on the master/slave pin. This was just barely enough to set the slave board as a master, regardless of how it was wired.
With the problem found, there were two solutions: either replace the diode, or figure out a firmware fix. Either will work, but Keebio’s experience in debugging this problem is a valuable lesson for us all.
Too often, we think of electronic components as ‘jellybean parts’; all parts with the same general properties are identical and interchangeable. No one will criticize you for changing the BOM line on a standard, 1/8th Watt 20 Ohm resistor on the basis of cost. However, this presents problems when you assume any part can be a jellybean part.
In Keebio’s case, the problem was assuming any ‘ol Schottky diode would work in this one specific part of the circuit. This obviously was not the case, and resulted in an entire batch of failed boards. The lesson is simple: you need to read the datasheet of every part on your BOM. If you need to replace a part during the assembly process, you better make sure it will work.