Luckily, the hardware is open source and somebody has brought out an alternative firmware (although if you know where to look, you can find the official firmware).
This is the story of my trials and successes while making a much more affordable unit. (There seemed to be more trials than successes)
I am in no way an expert on this sort of thing and I did a lot of research along the way. I will be linking to the different sources that I used and lessons that helped me along the way.
This was partially made possible by Jimthree and his fantastic Ghetto Pixels. http://www.instructables.com/id/Ghetto-Pixels-Building-an-open-source-BlinkM/ I wanted a more robust unit with the possibility of removing the attiny for other projects if required. Thanks Jimthree!
Before we get into it, here's a little taster of what we're going to be making today...
So... (Deep breath) Here goes!
Step 1: First things first. Gather your weapons!
You will need;
RGB leds. I get mine from Hong Kong and if you buy in enough amounts, they are pretty cheap. (MUCH CHEAPER THAN MAPLIN).
Resistors to suit the above leds. A good calculator for finding suitable resistors can be found here. http://led.linear1.org/1led.wiz
attiny45 or attiny85. The original BlinkM used the 45 and the latest version uses the 85, so both should work.
8 pin dip socket. This is not strictly necessary (it makes a higher profile board, but at least you can remove the chip to use in another project if you need).
Header pins. This will make your board removable from your circuit, but you could hard wire them into your circuit if you wish.
Copper clad circuit board. Pretty self explanatory.
A suitable programmer. Personally, I use my Arduino board along with the Arduinoisp sketch and a little shield that I knocked together in half an hour.
You will need;
Some sort of PCB production program. I use Eagle, but use what you know. http://www.cadsoftusa.com/download-eagle/
Something to calibrate your Attiny. When you get your factory fresh chips, they are clocked at 1Mhz. They need to be 8Mhz. I use my trusty Arduino as an ISP. You'll therefore need the arduino software. http://arduino.cc/hu/Main/Software
You will also need to get your Arduino talking to your Attiny, so head here http://hlt.media.mit.edu/?p=1695 and have a bit of a read and download the required files.
Something to program your Attiny. As above, I use my Arduino as an ISP, but you can't upload the firmware with the Arduino software, so We're going to use Winavr. http://sourceforge.net/projects/winavr/files/
Firmware for your Attiny. This is in the form of some clever guys who made an open source firmware for the BlinkM. http://code.google.com/p/codalyze/wiki/CyzRgb This will need to be put in a specific folder in your computer (on my laptop it goes into C:\Users\Flip.) The easiest way to find where it goes, is to open a command prompt ( Open your start menu and type cmd then enter) and see what it says just before the cursor. That is where it needs to be.
Something to test your new toys out with. ThingM have Arduino sketches for testing and playing about with. There is also Communicator software available for controlling and uploading code to the lights. You will find these on the right hand pane of the page. http://thingm.com/products/blinkm
BlinkM datasheet. http://thingm.com/fileadmin/thingm/downloads/BlinkM_datasheet.pdf
Attiny85 Datasheet. http://www.atmel.com/Images/doc2586.pdf