Bus Ninja, an Arduino Bus Pirate a-like

Bus Ninja is a Bus Pirate clone for the Arduino.

Like Bus Pirate, Bus Ninja lets you quickly protoype with I2C and SPI devices without writing any code. Just wire up a device to your board and start talking to it directly from the Bus Ninja console.


(The project is in plain-old-C. A precompiled .hex file is provided for the Arduino Diecemilia).

That looks very cool. I’ve got a couple of realtime clock modules and eeproms I’ve not got around to playing with - this would make it easier to get started.


Erm, I have to say that I have done the same project a few weeks ago, hahahaha, as its said, "Great minds think alike"


I only had time to add I2C capabilities before starting exams, but now that parsers are fully working it's easy to expand it.

You can dowload the code from Google Code: http://code.google.com/p/i2c-wushu/

Also, the word 'Wushu' means in Chinese: martial art, hahaha I might change the name to ArduBus, don't know, wushu seems diffcult to remember.

I2C Wushu looks great. It's cool that it's all in an Arduino sketch. Looks like you've copied the Bus Pirate syntax just like I did.

One of the nice things about my Bus Ninja is that it's got USB support (on the right AVR chips), meaning that there's no need for the external FTDI USB chip. Also, it can emulate other USB devices, eg. mass storage/HID.

There's also a mini cooperative multitasking OS under the hood, so it can run background tasks while handling user commands.

Yep, why bother creating a new syntax when that one is working perfectly? And the people that have already used the 'Bus Pirate' will be working in no time.

The I2C Wushu is my first C project (would be dead if I had done this in assembler) and I don't know much of it, so Arduino functions help a lot, hehehe.

Yours has cooler features, like the USB mode, can it be done on the Arduino?

Yes, it could be done on the Arduino. You could implement a bit banging USB 1.1 in software, add in a USB Communications Device Class driver, then add in the Bus Piratey stuff. You'd just need a small USB adapter board with the connector and passives.

It's definitely possible and it would have massive hack value. But, I suspect that you'd quickly run out of resources on the standard Arduinos to do anything useful with it.

For example, USBasp (http://www.fischl.de/usbasp/) is an AVR programmer implemented similarly (no CDC) and I doubt it's got room for much more.

V-USB (http://www.obdev.at/products/vusb/index.html) is a GPL licensed soft USB stack for AVR which will get you most of the way there...

That would be interesting, but having other usb capable chips it’s not worth it, altough hacks are done because they can be done.

The ardubus program just made me very happy. My first smt soldering was a succes after all. I tought I had fried the chip but it was just my sketch and me not understanding the datasheet at first. The ardubus was pretty easy to use with a dedicated terminal program (putty), the serial window from the ide doesn't seem to work.

I've managed to solder a tssop MAX7315 and blinked a led with it.

Thanks for the info wortelsoft!! You are the first person that gives me feedback since I released it. Thats what ardubus is for, it eliminates coding errors when you are not familiar with the I2C bus or the chip.

Ironically, I first developed it using the IDE terminal and then modified it so it worked with true terminals like putty, but something might have been broken in the process. The IDE terminal isn't a true one, so it is a bit special.

Yesterday I have been tinkering with lighting LEDs methods and the MAX7315 seems to be an interesting chip, but being smd I dont think I could solder it. Did you soldered it by hand?

Thanks for the feedback

Yes I soldered it by hand on a dip adapter print. I used soldering paste (solder + flux in a sticky paste) and a digital soldering station with a very fine point. I've done three chips now. My third attemp was the best. The second failed. Best method so far put a bit of paste on two oposit pads, place the component and just tough the paste not toughing the component. When it turns into liquid solder move your tip towards the chip to cover the lead. After doing the two first leads the chip should be fixed in the right spot. Then do the other leads one by one. I use a wooden tootpick to apply the paste.

This is the paste I use:


After all its quite simple.

I nice extra for you program would be a scanner to search for a device.

Yep, I have that on the ToDo list in Google Code

And thanks for the tips, I buy lots of stuff at DX, but I didn't know if solderpaste had a decent quality (I have been tempted several times to buy that same solder paste), but now that you say it works, I will buy some.


Just checked the bug of the Arduino IDE serial monitor.
ArduBus expects a carriage return at the end of the line, so you have to change the serial monitor option from ‘No line ending’ to ‘Carriage return’

A that's an easy fix. Allthough I use putty also, just opening the serial monitor is so easy.

There are no instructions to rebuild the project. Do we just use the AVR IDE to rebuild? latest version? (edit: I found winavr, just the tools like I like it. avr ide is too fat I will try over the weekend to build this project)

Thanks, I have a teensy2 and teensy2++.