I lost yesterday evening to the happy distraction that usually follows a little red box showing up in the mail – The Bus Pirate and cables I ordered from Sparkfun with my Free Day winnings arrived.
It is a very cool little tool, and the accessories all work nicely – with the slight caveat that the Sparkfun cable is the reverse of the seedlabs/adafruit layout. There is a handy guide, but there are references to the colors in the firmware which don’t match… neither layout has any intrinsic advantage, although I do like that the Sparkfun model has GND on the black conductor. The test hooks I got with it have EXCELLENT grabby little tips, and are small enough to attach to adjacent pins of an SOIC, but do have an occasional problem with the jacket/part you press to extend the tip sliding back too far. That said, they are overall better than the ones on the expensive old logic analyzers on campus, so no complaints.
As for set up, the BusPirate just presents itself as a 115200/8/n/1 USB serial device, with a simple textual interface, so it will work on any machine with a USB port and serial terminal software (I like gtkterm on Linux and PuTTY on Windows). The developers offer regular firmware upgrades, and the SparkFun model ships with woefully out of date firmware and bootloader, to the point that the upgrade process is now mildly nontrivial (follow the instructions carefully). I did end up booting a machine into Windows for the update because the python update script was being problematic, and I wasn’t especially keen on bricking brand new hardware, but I got up to the current v4.3 bootloader and 5.10 firmware without too much fuss.
For a quick test, I grabbed my wiimote nunchuck and connected it up to the BusPirate. Wii accessories just speak slightly-obfuscated I2C among themselves, and there is a handy example for the process of reading one with a bus pirate. That whole process only took maybe half an hour, including plenty of time to explore the bus pirate’s features. The only slight hangup was that the BusPirates’ pullup line needs to be EXTERNALLY connected to a power source, even though the resistors can be software enabled. It would be nice to be able to connect (jumper block style) it to the on-board Vregs without extra loops in the wire harness.
One of the first things I want to do with it is tinker with the PIONIER Button that I have lying around from a conference giveaway a few years ago. The hold-up on that little project was getting access to the 24c64-type EEPROM which (presumably) holds at least the written string it writes, and probably the code it runs. I’m hoping for obvious “string preceded by length in bytes” type encoding. The 24c64 speaks two wire serial (which *usually* means not-quite-compliant I2C) with some external address lines, and the address lines are pre-grounded on the board, so at least reading the thing out shouldn’t be too hard, even if I may have to lift pins to separate it from the uC and enable writes…