I got an email this morning from someone named Hadley Rich from NZ. He’s made a kit based upon the same design I made my USB Cube that I made a few years ago.

He reused the code I wrote and he has blogged about the OrBlink on his site.



I’ve made a little tool to help me when I’m developing Windows Services. It’s an icon that sits in the Notification area/System tray and allows you to start, stop and debug services. I find Services.msc a bit of a pain; it has a really long list of services making the one you’re interested in hard to find. This tool allows you to filter down to what you’re interested in. Debugging services can also be inconvenient; the executable names can be the same (for example, svchost.exe is listed thirteen times in my system) making it difficult to find which one you’re looking for.

The code and executable are available on Google Code.

Yet another USB RGB LED

ThingM, are launching a new product, the blink(1). It looks like it has gone well through the kickstarter goal with $42,535 pledged at the time of writing. There are no details of the design yet, but I would bet the design is pretty similar to my Mail Notifier cube. At $45 shipped its a bit expensive – particularly as my design is less than £2, even buying the components individually.

ThingM have another LED controller project, the BlinkM, that might make a cheaper alternative. It could easily be converted to USB controlled as it uses the same microcontroller (ATTiny) as my Mail Notifier. The firmware I made should be compatible and you only need three components: two zener diodes and a USB connector.

Wire the zener diodes in series to connect from USB V+ to V+ on the BlinkM. Connect the i2c data pin that goes to pin 7 to D+ and the other one to D-. Finally, connect the PWR – on the Blink M to the USB ground pin.

Upgrading Sheevaplug to Squeeze

I bought a cheap Wifi dongle (Edimax EW-7811UN) that I knew would work on the RaspberryPi and I had hoped that it would work on the Sheevaplug. Unfortunately, I couldn’t get it to install.

Instead of fighting it, I decided to upgrade. The drivers that the dongle needs are included in the linux kernel from 3.0. I decided to upgrade to Debian Squeeze, which is the same OS my Raspberry Pi uses.

Also, the OS, Ubuntu Jaunty, I’m currently using is long past its end of life.

I decided to upgrade using one of the NewIt images using these instructions.

Writing the image seems like its going to take hours. I found a method for checking the progress of dd on OS X: kill -SIGINFO <PID> will make the dd process print its progress.

Edit: This didn’t really work. I’m going to start again.

Raspberry Pi initial software install

I’ve finally received a Raspberry Pi. No doubt it will end with the other junk I don’t use.

I then downloaded Debian Squeeze, as that’s what I’m most familiar with. Installed that on a spare memory card and powered it via USB despite the warnings (I’ve found before that my laptop has over-current protection).

Tried to log in over ssh, and annoyingly discovered it is not running an SSH server. I had to get a keyboard and plug it in. Logged in, the best way to get new software is to install it via the package manager.

Instructions for wifi dongle http://www.raspberrypi.org/phpBB3/viewtopic.php?f=26&t=6256

Update it:
sudo apt-get update
To search for the package:
apt-cache search ssh server | less
Buried in all that, I spotted:
openssh-server - secure shell (SSH) server, for secure access from remote machines
To Install it:
sudo apt-get install openssh-server
Need to sort out the users before putting this on the internet, probably change the certificates too.

Use startx to get the window manager running. The default web browser is Midori. I prefer Chrome, but there is no official build, so I install the Chromium open source version. The package is: chromium-browser and I then remove the default web browser icon.

I also want a web server, Apache is the most obvious choice (package apache2). It installed:

Starting web server: apache2apache2: bad group name www-data
Action 'start' failed.
The Apache error log may have more information.
invoke-rc.d: initscript apache2, action "start" failed.

Found others have had the same problems. To fix:

sudo groupadd www-data
sudo usermod -a -G www-data www-data

restart apache

sudo apache2ctl restart and now when you point your browser at it you should get the “It Works!” page.

I also disabled overscan to get rid of the big black borders and add the line disable_overscan=1 to /boot/config.txt


I bought myself a new toy for xmas from NewIt, a Sheevaplug. It’s a low power, ARM linux device. I plan to use it as a network attached storage maybe backup. The SheevaPlug has Ubuntu 9.04 pre-installed. Apparently its only draws 4 watts. I’m adding this to remind me of the basic setup I did if I ever have to do it again.

You can use the USB cable it comes with the get tty access, but I couldn’t be bothered, I’m happy enough to use the provided OS filesystems etc. Just plugged it in, waited a couple of minutes and use the standard root password.

The device was called UBUNTU on my routers config.

The forum at NewIt recommends regerating keys.

As I want to use it for a storage I attached my usb hard drive, typed in ls /dev/ expecting to see an entry for a hdd something like sda1. The drive was lighting up; I could hear it spinning up repeatedly.

Nothing there, so I swapped it for a memory stick, which seems to work fine. I’m guessing that the drive is drawing more than the 500ma that USB are supposed to draw. I installed lsusb and checked for the device, which didn’t appear. I added a hub, with external power supply, and attached the USB drive via that and it worked fine. Now its easy to mount the drive (my drive happens to be a WD Passport:

mkdir /media/WDPassport/
sudo mount /dev/disk/by-label/WD\\x20Passport /media/WDPassport/

Added a new user so that I don’t have to log in as root.

adduser daveh

and add to sudoers list to stop me from making stupid mistakes


annoyingly it uses vi, add the line with i

daveh ALL=(ALL) ALL

then :wq to write the file and exit

Do an apt-get update so that apt has the correct locations to get packages from.

I changed the MOTD for so I know I’m definitely booting from the SD card.

I’d also like to use it to serve my music up, so I’ve installed mt-daap. This was pretty straight forward.

Using LED command line without root

A few of the people who tried to build the LED cube had problems getting it to run. Several people didn’t realise that you needed root. I’ve now had to solve this problem for my self as I’m now trying to use it from my ubuntu plug. I found the solution here and have adapted it for the cube. The solution to this is too use udev, which allows devices to be run from user space.

Create new rule for udev

sudo emacs /etc/udev/rules.d/60-objdev.rules

Edit new rule in emacs and add following:

SUBSYSTEM!=”usb_device”, ACTION!=”add”, GOTO=”objdev_rules_end”

SYSFS{idVendor}==”16c0″, SYSFS{idProduct}==”05df”, GROUP=”users”, MODE=”666″

For other devices replace the vendor and product id with values you can get from lsusb. For example:

daveh@mbp:~$ lsusb

Bus 001 Device 005: ID 16c0:05df VOTI

Restart udev

sudo /etc/init.d/udev restart

Plug in the cube, and try the command.