Bus Ninja vs. Bus Pirate
Editor’s Note: This draft post was discovered tonight. It was probably written in 2012.
I recently wrote about my first experience with the Bus Pirate. I’ve been thinking more about the interactive menu-driven interface. I’m starting to come around to the idea that it’s the best approach. Not a great approach, but the best. Consider the alternatives.
First choice: no UI at all. Hook up your logic analyzer or oscilloscope like a real engineer. This is the default UI, because it exists even in the absence of anything else. But as competition with a low-cost hacker tool, it’s not really even in the same category (though it is, of course, incredibly powerful).
Second choice: blinkenlights. Works well, but (a) they’re expensive, (b) they take time to wire up, and © you still have to build and debug the lights without blowenfusen.
Third choice: a custom desktop tool like I wrote for the JTAG Whisperer. Having tried as an exercise to get this running on a pristine Windows machine, I now recognize that this is a crappy solution. Yes, it’s better than requiring someone to find a toolchain to compile a C program, but you can’t get around the fact that desktop software is a pain to install and configure.
Fourth choice: a desktop “browser,” if you will, that displays content sent from the device, allowing the user to send commands using desktop input devices like a keyboard.
Choice #4 sounds nice… but that’s what the Bus Pirate is! The “browser” is a terminal program (one that already exists and doesn’t have to be developed for this tool), and it’s a simple menu-driven interface. Yes, Ian made the right decision. I’m convinced.
But I’m still not satisfied. Here’s what I’d like:
- A device based on an open toolchain. Or whatever criterion lets me keep working with AVRs.
- Just a little more eye candy. Don’t most serial terminals do VT100?
- A way to upload files to the device without ditching the terminal program. Hmmm… why, that’s ZMODEM! Supported by Minicom, probably hackable into screen, and YES! I just checked and Hyperterminal has it.
- An option to have a reduced-functionality version running on an Arduino.