What I really needed to know about the Dockstar

The Seagate Dockstar is the lowest-end PogoPlug device, a tiny low-power ARM server which runs Linux. Devices like this are ubiquitous now, but when the PogoPlug came out it was extremely unusual. It also cost substantially more than it does today, when a Rev.2 PogoPlug (not the new-new one, the old new one) is only $20. The only cheaper ARM-based server I know of is the Dockstar, which can be had for as little as $14 through Amazon today. Regardless of which PogoPlug you might have, you probably want to run Debian Squeeze with a recent kernel featuring LED support, which is not that difficult — but finding all the information you need is.

The first thing to do is Install Debian. I won't go into this in detail save to say that I had to install wheezy and upgrade to squeeze, simply installing squeeze was a no-go. Next, you will want to upgrade the kernel (at the moment this is about as new as it gets, as far as I can tell) and in order to do that you'll need to upgrade u-Boot. I went ahead and ran this more "official" upgrade and then used the included tools to perform the final u-Boot upgrade, which is the easiest path by far. If you don't have the tools from somewhere else already you will need to aptitude install uboot-envtools after installing squeeze, which will get you fw_printenv and fw_setenv.

These are the commands you'd want today for the u-Boot upgrade; it's probably wisest for you to see if time has marched on since I wrote this article, but they may work.

wget http://dl.dropbox.com/u/1015928/Kirkwood/uboot/newer-uboots-nonEFI_GPT-TESTED/uboot.mtd0.kwb-2011.12-dockstar-L2Coff.tar.gz
tar xvfz uboot.mtd0.kwb-2011.12-dockstar-L2Coff.tar.gz
fw_setenv arcNumber 2998
flash_erase /dev/mtd0 0 4
nandwrite /dev/mtd0 uboot.mtd0.kwb-2011.12-dockstar-L2Coff

After that you can upgrade the kernel as per directions linked above:

wget http://dev.shyd.de/dockstar/linux-image-3.3.3-dockstar-shyd_1.1_armel.deb
dpkg -i linux-image-3.3.3-dockstar-shyd_1.1_armel.deb
/usr/bin/mkimage -A arm -O linux -T kernel  -C none -a 0x00008000 -e 0x00008000 -n Linux-3.3.3 -d /boot/vmlinuz-3.3.3-dockstar-shyd /boot/uImage
/usr/bin/mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /boot/initrd.img-3.3.3-dockstar-shyd /boot/uInitrd

And now the bit that's had me tearing my hair out; booting from one device, mounting another, and having it all work out correctly. For a long time I had to plug in my HDD after booting because no matter where I plugged it in, the system would attempt to boot it. Here's how I solved that:

fw_setenv usb_rootdelay=10
fw_setenv bootdelay=8

Apparently I only had to wait for devices to settle after the USB reset, or device initialization, or whatever is happening there. My boot device is plugged in nearest the network port (uSD card in an el cheapo reader) and my storage device (GoFlex) is plugged in to the port next to it. I imagine that the boot device is the first storage device detected, which is why I have increased delays. I may mess with this and find that I can remove the rootdelay. I changed too many things at once to know what worked. Since the boot is not unacceptably long I consider this to be a working solution, but advice is appreciated.

My dockstar is now booting reliably, with meaningful status LEDs (flashing green during POST and IPL, slow-flashing orange during boot, solid green when boot is complete, LED goes off when system halts) and without me having to plug and unplug anything.