Update on 05.06.2013: Due to a still high interest in this post I added “USB device partitioning” and other small things …
After using my Seagate Dockstar more than one year, a friend moved into town and wanted something similiar for home uses… Now as the pogoplugs are too pricy and old Dockstar’s are pretty rare in Europe (and even then around 60€ used…) I ran into the Seagate GoFlex Net.
On the hardware side, nothing much has changed there. The GoFlex has just only one USB Port – which is in fact not much. So you shouldn’t use too many USB Hubs and/or devices with much wattage or bandwidth at it. But on the bright side, there is a SATA port on the top which is really useful when you are trying some sort of backup/webserver or download machine…
Another fun part is the nice black case and the 8 LED’s built into the front. They are stacked on each side, so 2×4 LEDs which are fully programmable through the kernel/sysfs. They are used in the Pogoplug software to display the amount of data which is currently lockated on the docked hdds in the top. But who wants to use that crappy software…
So next step was to get debian on that thingy – and again Jeff Doozan is there to help. His scripts, created over a year ago, were fine tuned and loads of other Pogoplug devices are supported now. And they come in very handy even for those who don’t hack hardware every day.
So if you need any help or if you’re running into problems, just visit the forum there: http://forum.doozan.com/index.php
IMPORTANT: I take no guarantee/warranty for this how to, so live with a possibly bricked device. Don’t blame me! (There are some ways and cases, where unbricking is possible, like using a UART/JTAG cable)
It might be also very useful, to rescue a print out of your U-Boot environmental settings as soon as you can play with them – just in case!
Part one: Prepare SSH Connection
To get started, power your GoFlex up, connect it into your LAN with web access. The first goal now is to get access to the device via SSH. It is currently booting the PlugOS software and there is atm no direct way to get access to it.

As I bought this device I read across some german forum and found out, that the PlugOS closes the SSH access with GoFlex Net Build dates around july/august 2012. So, yay, I got a pretty new one with no acces. Bad luck, anyway:
http://knowledge.seagate.com/articles/en_US/FAQ/214571en?language=en_US
Seagate themselves are pointing out here how to get access to the device…
So go the the pogoplug website and create yourself an account if you don’t already have one.
After logging in, your pogoplug device should appear on the website. Find the settings tab (well hidden – I needed my girlfriend to find it for me…)

and active the SSH access remotely:

Important: IF this option (enable SSH) does NOT appear on the website, there is potentially something wrong with your routers firewall. (blocking ports, no uPNP – depends). If the SSH port 22 is blocked, its blocked. (found here: GoFlex net missing from LAN
After that, you should be able to SSH into the device:

The Username should be “root” and the password should be “root” or “stxadmin” (i.e. on classic dockstars) here.
So Jeff has written scripts for different things:
Installing Debian and Updating U-Boot: http://projects.doozan.com/debian/
Just Updating U-Boot: http://projects.doozan.com/uboot/
There are tutorials, so you should at least take a look at it.
To be up-to-date, I’m using the newest Debian called “Wheezy”. There are also scripts available for bootstraped “Squeeze”. These scripts also automatically update the U-Boot bootloader to the latest version.
Part two: Prepare Boot device (USB)
First you should create yourself a root device (i.e. USB memory stick) where the rootfs should be placed with:
fdisk /dev/sda
You can see all available partitions on that device with the “p” command. Be sure to remove all old partitions from the stick/disk with “d”.
I’m using a 16GB USB 3.0 USB stick from Lexar, which then looks like:
Command (m for help): p Disk /dev/sda: 16.0 GB, 16022241280 bytes 237 heads, 17 sectors/track, 7767 cylinders Units = cylinders of 4029 * 512 = 2062848 bytes Device Boot Start End Blocks Id System
Now you need to add two primary partitions.
n p 1 1 +15000M n p 2 [enter] [enter]
“n” and “p” add a new primary partitiion, the first number is the number of the partition (here 1 and 2), the second number is the start cylinder and the last is the wanted size. So here I’m creating the first primary partition with 15GB space and the second primary partition with the rest of it (default values used then).
t 2 82
Another step is to change the file system id of the second partition to swap. The last step is to look at everything again with “p”:
Device Boot Start End Blocks Id System /dev/sda1 1 7500 15108741+ 83 Linux /dev/sda2 7501 7767 537871+ 82 Linux swap / Solaris
Save everything with “w” and exit.
Part three: Install on USB Disk with workaround
Now you need to make everything ready for the script and start it:
export PATH=$PATH:/usr/sbin:/sbin
cd /tmp
wget http://projects.doozan.com/debian/kirkwood.debian-wheezy.sh
chmod +x kirkwood.debian-wheezy.sh
./kirkwood.debian-wheezy.sh
Now it’s taking some time…
... # Validating existing uBoot... Block size 131072, page size 2048, OOB size 64 Dumping data starting at 0x00000000 and ending at 0x00080000... Connecting to jeff.doozan.com (50.116.34.13:80) valid-uboot.md5 100% |*******************************| 1133 --:--:-- ETA ## Valid uBoot detected: [goflexnet original] killall: hbwd: no process killed ...
The installer will ask you if you want to disable pogoplug services, which is appreciated and normal:
... DISABLE POGOPLUG SERVICES The pogoplug service includes an auto-update feature which could be used to cripple or disable your device. It is recommended that you disable this service. Would you like to disable the pogoplug services? [Y/n] ...
But after installing packages I ran into following error:
... Connecting to cdn.debian.net (195.71.68.86:80) xz-utils_5.1.1alpha+ 100% |*******************************| 232k 00:00:00 ETA Connecting to cdn.debian.net (195.71.68.86:80) zlib1g_1%3a1.2.7.dfs 100% |*******************************| 87460 00:00:00 ETA FATAL: kernel too old
Obviously the standard running kernel from GoFlex Net
uname -a Linux Pogoplug 2.6.22.18 #81 Tue Oct 19 16:05:00 PDT 2010 armv5tejl unknown
is too old to compile/install some of the packages correctly.
This is a huge problem, because at this point the U-Boot Bootloader got updated, but no working debian filesystem was installed, so rebooting the GoFlex will either end in no boot of the debian device nor getting access via SSH – because of the disabled pogoplug services.
To fix this I needed to download an version of Jeff’s/Dave’s Rescue System, available in Version 3 here.
Download it, copy it to the first non-swap partition (ext2) on the usb drive and untar it there. After that, plug the usb drive back into the GoFlex USB Slot and poweroff/poweron. Wait some time until the LED turns off and then, wait some time again and SSH will be back online. You should be now running the rescue system, a stripped down debian version, from the plugged USB drive.
But that is not our goal, just a workaround to get a newer kernel/environment. So the next step is to install the Rescue System to the NAND memory inside the GoFlex, so that we can always use it.
Some explanations and the full story can be found in Jeffs Forum Rescue Thread.
To install the rescue system do:
cd /tmp
wget http://jeff.doozan.com/debian/rescue/install_rescue.sh
chmod +x install_rescue.sh
./install_rescue.sh
Now the rescue system will be hard written into the GoFlex, so after finishing that, reboot and unplug the USB stick. Delete all files from the second ext2 partition (the old rescue system) and plug it back in. Make a reboot and you now should be running the hardcoded Rescue OS in combination with a clean USB stick.
Now we are following the already known procedure from Jeff which is documented here
cd /tmp
wget http://projects.doozan.com/debian/kirkwood.debian-wheezy.sh
chmod +x kirkwood.debian-wheezy.sh
export PATH=$PATH:/usr/sbin:/sbin
Next step is to start the install script which will download and install everything
./kirkwood.debian-wheezy.sh
Doing so brings us the following error:
touch: /sbin/01011970001622: Read-only file system Your perl subsystem does not have support for $ENV{} and must be disabled for debootstrap to work Please disable perl by running the following command chmod -x /usr/bin/perl After perl is disabled, you can re-run this script. To re-enable perl after installation, run: chmod +x /usr/bin/perl Installation aborted.
The rescue rootfs is mounted read only, as easy be checked by:
chmod -x /usr/bin/perl chmod: /usr/bin/perl: Read-only file system
So you need to make it writable, too:
mount -o remount,rw /
Now we need to remove the debootstrap, as Jeff mentioned in this Thread
rm /usr/sbin/debootstrap
rm -rf /usr/share/debootstrap
chmod 666 /usr/bin/microperl
mount -o remount,ro /
Now start the script again by
./kirkwood.debian-wheezy.sh
and get some coffee. Depending on your internet connection and the speed of your USB drive, it may take a while…
After a lot of this and that
... I: Unpacking libtext-wrapi18n-perl... I: Unpacking lsb-base... ... I: Configuring libkeyutils1:armel... I: Configuring iproute... ... I: Base system installed successfully. Image Name: Linux-3.2.0-3-kirkwood Created: Thu Jan 1 01:07:31 1970 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1599648 Bytes = 1562.16 kB = 1.53 MB Load Address: 00008000 Entry Point: 00008000 Image Name: initramfs-3.2.0-3-kirkwood Created: Thu Jan 1 01:07:32 1970 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 6741832 Bytes = 6583.82 kB = 6.43 MB Load Address: 00000000 Entry Point: 00000000
we finally get
Installation complete You can now reboot your device into Debian. If your device does not start Debian after rebooting, you may need to restart the device by disconnecting the power. The new root password is 'root' Please change it immediately after logging in. Reboot now? [Y/n]
Now you’re nearly ready.
Part four: Reboot and setup
Reboot and change the root password with:
passwd root
To print out your U-Boot environmental settings, you can use the command
fw_printenv
If you have also overwritten your old uboot config, you should set your MAC address to the old value or just choose a new one
fw_setenv ethaddr 00:10:75:26:69:15
and you if you are using the Seagate GoFlex Net you can also enable the main LED-control for the kernel by changing
fw_setenv arcNumber 3089
This should be also valid for the Seagate Flex Home. Additionally, the original oldschool Dockstar/Sheevaplug use the arcNumber 2097.
Last step should be to update and upgrade your current package list (and reboot):
apt-get update apt-get upgrade reboot
Part five: Finish
A couple of things you should possibly think of:
- Instal some useful programs (from my point ov view)
apt-get install apt-utils cron tzdata ntp psmisc vim sudo
- match system timezone to yours
dpkg-reconfigure tzdata
- As there is no RTC (time-module) on the dockstar, the time offset will grow larger over the time, so you should make a cronjob which corrects the time. Start “crontab” and add the line for a every 15min check:
crontab -e 0-59/15 * * * * ntpdate -u pool.ntp.org
- Add another normal user (i.e. admin):
adduser admin
To give him super user rights, add him to the “sudoers” file using “visudo”:
visudo admin ALL=(ALL) ALL
Thanks for reading!