Project update 2 of 14
Well, our goal was only $1 for a few reasons, but we also surpassed all the other goals we considered.
There was no doubt in our mind that we were going to manufacture Tigard. We need it for SecuringHardware.com’s training classes as well as our own work. The question we wanted to know is who else might need it - and whether we should have them made in larger quantity. We already have the first production run in hand, but at this rate we’ll need a second production run to fulfill all pledges.
For this update, I have an overview of the Design process we went through for Tigard, but you should also check out a technical review of the design from Tom Fleet at Hackster.io
As I mentioned previously, Tigard was designed based on years of brainstorming and experience with using other I/O boards. For a long time, the Bus Pirate was the tool of choice for hacking low-speed protocols. On the one hand - it can do almost anything. On the other - it’s excellent at almost nothing. Over the past few years I’ve phased out my use of a Bus Pirate in favor of a logic analyzer + I/O device combo - specifically a Cypress FX2 based logic analyzer and an FT232H based I/O device.
I’ve used Adafruit’s FT232H breakout board for 5 years now. It’s affordable, reliable, and simple - but I’ve wished for a few ease-of-use features:
Previously, I also used separate, standalone USB-to-TTL serial cables. These were inexpensive and readily available for barely a dollar for a long time, but in the past 2 years, I’ve had a difficult time sourcing inexpensive reliable ones - my last batch had over 40% failure, and those that did work were very sensitive to baud rate jitter. Rather than switch to more expensive, reliable cables - incorporating it into one tool made more sense. Tigard has one port of the FT2232H dedicated for UART use, complete with level shifting and activity LEDs.
TIMEP served as a proof-of-concept for lots of these ideas. @Matir worked through a few revisions, incorporating some ideas from other FTDI boards. (If you’re looking to hand-assemble a board, TIMEP is likely a better choice than Tigard).
The first Tigard prototype took the core concepts from TIMEP and reimplemented them, optimizing for a small size and high volume automated assembly. Several mode jumpers were replaced in favor of switches for only the most common modes. A square board allowed placing all the headers on the outer edge for ease of use.
Testing revealed three major issues:
The FT2232H doesn’t support open-drain or bidirectional I/O, but the additional components interfered with other components using those pins. The components were removed, sacrificing better I2C support for more reliable use of other protocols. The separate 8-pin I2C header was removed in favor of sharing with the SPI header.
There’s no single standard for JTAG or UART headers. V0.0 kept compatibility with TIMEP, but we decided that for future versions, we’d leave pins in the order defined by FTDI so that Tigard would be pin-compatible with basic breakout boards like the Adafruit and CJMCU.
There was a minor design mistake and missing component causing the VTGT LED to illuminate without being connected.
The second prototype for Tigard worked well enough that it has been used in production and multiple training classes successfully. In addition to fixing the issues from V0.0, there were a few enhancements:
There were two minor issues discovered:
This was the production candidate. In addition to minor and aesthetic fixes, two low-risk features were added (and later tested good):
While we were lucky to have all our prototypes work on the first try, the odds were in our favor because Tigard is fundamentally a simple design. There’s no software or firmware to bring up, and the necessary circuitry are well documented. Next week, we’ll share more about the manufacturing and assembly adventure.
Until then, here’s a quick demo of using Tigard to speak to a serial console: