Seagate Dockstar

Supported Versions

Version/Model S/N Launch Date OpenWrt Version Supported Model Specific Notes
all - trunk,WIP - -

Highlights

CPU Ram Flash Network USB Serial JTag
Marvell Kirkwood@1200MHz 128 MiB 256 or 512 MiB 1 gigE 4x 2.0 Yes Yes

Before the Installation

  1. Before you install OpenWrt on your Dockstar, you could read this page: Alternative operating systems for the Seagate Dockstar.

Installation

either by generating it yourself or searching. [note: include how to do this and where it can be found already precompiled]

Note that using this guide will replace the original firmware found on the Dockstar. If you ever plan to restore the original firmware please take a backup. One OpenWrt install procedure will place a 2nd stage bootloader. The original U-Boot in mtd0 will be retained and will chainload the 2nd one. The Ethernet address of your device is set by the original U-Boot. The 2nd stage bootloader shows a bogus ethaddr. OpenWrt will use a different flash layout than the original one.

Flash Layout

flash.layout for explanations!

Original FlashLayout
mtd# mtd0 mtd1 mtd2 mtd3
start 0x000000 0x100000 0x500000 0x2500000
size 0x100000 0x400000 0x2000000 0xdb00000
in MiB 1 4 32 219
name u-boot uImage root data
file system none ??? JFFS2 ??
OpenWrt FlashLayout 1
mtd# mtd0 mtd1 mtd2 mtd3 mtd4
start 0x000000 0x100000 0x200000 0x500000 0x2500000
size 0x100000 0x100000 0x300000 0x2000000 0xdb00000
in MiB 1 1 3 32 219
name u-boot second_stage_u-boot kernel rootfs data
file system none none none JFFS2 JFFS2
OpenWrt FlashLayout 2
mtd# mtd0 mtd1 mtd2 mtd3
start 0x000000 0x100000 0x500000 0x2500000
size 0x100000 0x400000 0x2000000 0xdb00000
in MiB 1 4 32 219
name u-boot kernel rootfs data
file system none none JFFS2 JFFS2

Installing with console access via serial connection

Here we describe howto install OpenWrt on the Dockstar with the help of a serial connection to access the console.

You'll also need a tftpserver on your host computer. Make sure that the following files from the bin/kirkwood folder are accessible through the tftpserver.

  • openwrt-kirkwood-dockstar-u-boot.bin
  • openwrt-kirkwood-Dockstar-jffs2-128k.img
  • openwrt-kirkwood-uImage

The Dockstar expects the tftp server to have the IP address 169.254.254.254. You can modify this using setenv or blparam, just set 'serverip' to your tftp server IP address.

As mentioned above, you can install the 2-stage bootloader or the single stage one. The process is pretty much the same; the only thing that changes are the locations (addresses) in the Dockstar NVRAM; we will point out when we are dealing with the single or the 2-stage booloader.

Installing bootloader

These instructions use 0x40000 as the length of bootloader. The current u-boot image is 0x594c8 bytes long, so the instructions seem be out of date.
Even with corrected size, the 12.02beta2 bootloader does not work as a second stage loader and bricks as a first stage loader.

Connect your Dockstar and reset the device

Now execute the following commands to retrieve and install the bootloader:

2-stage bootloader
mw 0x800000 0xffff 0x40000
tftpboot 0x800000 openwrt-kirkwood-dockstar-u-boot.bin
nand erase 0x100000 0x80000
nand write.e 0x800000 0x100000 0x80000
setenv bootcmd nand read.e 0x800000 0x100000 0x80000\; go 0x800000
saveenv
single stage bootloader
mw 0x800000 0xffff 0x80000
tftpboot 0x800000 openwrt-kirkwood-dockstar-u-boot.kwb
nand erase 0x000000 0x80000
nand write.e 0x800000 0x000000 0x80000
setenv bootcmd nand read.e 0x2000000 0x100000 0x400000\; go 0x2000000
saveenv

Where: * nand erase X Y means "Erase from Y (in Hex) MiB starting from X location (also in hex) * nand write.e X Y Z means "Go to the RAM location X (in hex) and grab the first Z MiB of data and then put it in Y NVRAM location."

If everything succeeded without errors the bootloader was installed successfully and you can now continue to install the kernel and rootfs. Enter 'boot' in your Dockstar u-boot command prompt. This will load and execute the second stage bootloader. Press enter to get a command prompt at the bootloader.

Installing Kernel and rootfs

To install the kernel and rootfs enter the following commands into the command prompt of the 2-stage bootloader.

# Install kernel

2-stage bootloader
mw 0x6400000 0xffff 0x300000
tftpboot 0x6400000 openwrt-kirkwood-uImage
nand erase 0x200000 0x300000
nand write.e 0x6400000 0x200000 0x300000
single stage bootloader
mw 0x6400000 0xffff 0x300000
tftpboot 0x6400000 openwrt-kirkwood-uImage
nand erase 0x100000 0x400000
nand write.e 0x6400000 0x100000 0x400000

# Install rootfs. Location is the same for both single and 2-stage bootloaders.

mw 0x6400000 0xffff 0x200000
tftpboot 0x6400000 openwrt-kirkwood-Dockstar-jffs2-128k.img
nand erase 0x500000 0xfb00000
nand write.e 0x6400000 0x500000 0x200000

Note here: 0x200000 is the size of your rootfs in hex. 0x200000 means 2MiB. If you have selected many packages to be integrate into rootfs, it may be bigger than 2MiB. E.g. if your rootfs image has ~4.5MiB you have to replace 0x200000 with 0x500000 in the code example above.

Note: 2-stage bootloader tftpboot command asks the tftp server to use a 4168 block size but seems unable to handle fragmentation properly. This would lead to being unable to install kernel and rootfs. Most legacy tftp servers would never honor the 4168 block size request and use default 512 blocksize and no problem arise, but tftpd-hpa would, so beware! In this latter case simply set –blocksize 512 in /etc/defaults/tftpd-hpa.

OpenWrt should now be successfully installed on you Dockstar.

To continue enter 'boot' in the 2-stage bootloader prompt or reset the device. Your Dockstar should now boot Openwrt.

Installing without serial

Then copy images to the device:

# Combined 2-stage bootloader and kernel image

(dd if=bin/kirkwood/openwrt-kirkwood-dockstar-u-boot.bin conv=sync bs=1M; dd if=bin/kirkwood/openwrt-kirkwood-uImage bs=2048 conv=sync) > openwrt-kirkwood-dockstar-uboot-uImage.bin
scp openwrt-kirkwood-dockstar-uboot-uImage.bin root@169.254.206.33:/tmp

# Rootfs image

scp bin/kirkwood/openwrt-kirkwood-Dockstar-jffs2-128k.img root@169.254.206.33:/tmp

# blparam

wget http://dockstar.googlecode.com/files/blparam
scp blparam root@169.254.206.33:/tmp

Return to your ssh session on the Dockstar. The first set commands modifies the stock bootloader to load our second stage bootloader. This is done by using blparam to modify the 'bootcmd'.

cd /tmp
chmod +x blparam
./blparam "bootcmd=nand read.e 0x800000 0x100000 0x80000; go 0x800000"

Now it's time to flash the OpenWrt images. Note that the last two commands will erase and overwrite the running system. It is a bit risky. But since the file system is read-only and `nandwrite` is in the fs-cache it should work.

flash_eraseall /dev/mtd1
nandwrite /dev/mtd1 openwrt-kirkwood-dockstar-uboot-uImage.bin
flash_eraseall /dev/mtd2
nandwrite /dev/mtd2 openwrt-kirkwood-Dockstar-jffs2-128k.img

Press the reset button or power cycle your Dockstar. Your Dockstar should now boot into OpenWrt. If it does not something went wrong and you'll need to gain serial access to recover it.

Reinstall

To reflash from an existing openwrt-installation read the following. You need the package mtd-utils installed.

# Erase kernel partition and write new kernel image

flash_eraseall /dev/mtd2
nandwrite -p /dev/mtd2 /tmp/openwrt-kirkwood-uImage

# Erase rootfs partition and write new rootfs image

flash_eraseall /dev/mtd3
nandwrite -p /dev/mtd3 /tmp/openwrt-kirkwood-Dockstar-jffs2-128k.img

Now reboot your router

echo b > /proc/sysrq-trigger

Your Dockstar should now boot into OpenWrt. If anything went wrong and you'll need to gain serial access to recover it.

Overlay with SquashFS

It is also possible to use the SquashFS image (ro filesystem). OpenWRT will create a jffs2 overlay on the mtd partition named rootfs_data. Eventually, you have to configure the 2nd stage bootloader to try SquashFS as rootfstype and rename the mtdpart 4 from "data" to "rootfs_data".

Basic configuration

Since this part is identical for all devices, see Basic configuration.

Connect stuff to the USB port

To connect stuff to the USB port, please see Connect stuff to the USB port.

Specific Configuration

Interfaces

The default network configuration is:

Interface Name Description Default configuration
eth0 Ethernet port DHCP

Failsafe

The DockStar cannot be put into failsafe mode by pressing the button.

It can however be put in failsafe mode using serial console and pressing 'f' and <enter> when prompted during boot-up

Buttons

The DockStar's only button is not configurable and inevitably performs a hard reset when pressed.

Crypto Hardware Acceleration

The mv_cesa driver allows you to utilize the Cryptographic Engines and Security Accelerator (CESA) which can be found on the Marvell Orion and Kirkwood SoCs. Currently the driver supports AES in ECB and CBC mode without DMA[1]. This can be used for example to accelerate I/O on a dm-crypted harddrive.

You need the kmod-crypto-mv-cesa package installed and mv_cesa loaded. If you see a message like:

mv_cesa: Unknown symbol crypto_aes_expand_key (err 0)
Make sure to have the aes-module installed, too (Kernel modules→Crypto). 'ps' should list a [mv_crypto]-kernelthread.

The dm-crypted harddrive could be made like this:

cryptsetup luksFormat --cipher aes --hash sha1 --verify-passphrase /dev/sda1

Now when you read or write to the disk, 'top' should show the [mv_crypto]-kernelthread.

For some numbers see http://smorgasbord.gavagai.nl/2010/02/sheevaplug-hardware-crypto/. It states that you’ll get about 19 MB/s writing to an encrypted USB HDD.

[1] TDMA support for mv_cesa is tracked in this ticket

Hardware

Info

Architecture: armv5te (big endian, runs also with little endian)
Vendor: Marvell
Bootloader: U-Boot
System-On-Chip: Marvell MV88F6281 A0 (DDR2) with ARM926EJ-S CPU (Marvell Feroceon)
CPU Speed: 1200 Mhz
Flash-Chip: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron NAND 256MiB 3,3V 8-bit)
Flash size: 256 MiB (PartNo 100576825C, 100576827B) or 512 MiB (PartNo 100576825B)
RAM: 128 MiB / 1x Nanya NT5TU64M16DG-AC
Wireless: n/a
Ethernet: 1x GigE port / Marvell "Alaska" 88E1116R
USB: 3x USB 2.0 ports, 1x mini USB 2.0 port for harddisk
Serial: Yes
JTAG: Yes

Photos

Frontview without HD Click to enlarge

Opening the case

There are no screws - the bottom cover is held by eight plastic snap on clips, two on each side. To open the case, place 2 thin screwdrivers or expired credit cards at either side of a front corner of the Dockstar into the join between the top cover and the base and gently pry it open.

The upper case part is connected with a five pin cable to the PCB, carefully unplug it to remove the casing. The serial pins are accessible without unplugging the top usb connector.

Serial

A 2x5 pin pad (J1) is located left of the LED at the front side of the PCB. The row the three pins ([RX] [TX] [GD]) you are interested on are close to edge of the board. To the right of pin 1 (the one above [GD]) is a small white arrow pointing to it.

[ ] [ ] [ ] [ ] [ ] [ ] [ ] [RX] [TX] [GD]

Serial port settings are 115200@8n1. The signal level is 3.3V (TTL). PC standard hardware uses 12V. So make sure to have a signal level converter in between (e.g. a CA-42 Cable with 3,3V signal level). Here is another example of how to obtain a serial connection on the Dockstar: here. Connect to the Dockstar from your linux workstation using "screen":

user@host ~ $ screen /dev/ttyUSB0 115200

Alternatively you can use PuTTY on Windows.

SSH

Connect device to Ethernet port. To prevent automatic updates by cloud engines (which may disable ssh access), use a separate switch or disconnect your router from the internet. If the ssh access was disabled by the automatic cloud engine update service, you need to login there and re-activate ssh.

Find IP address, BE and EF are the last two bytes of the MAC of your device (printed on the bottom of the Dockstar)

root@host ~ # ifconfig eth0 169.254.1.0 
root@host ~ # nmap -e eth0 -sP $(printf "169.254.%d.%d" 0xbe 0xef)

Connect to IP address via ssh (root / stxadmin) to see if it works.

Backup

If you want to restore the original firmware at a later point use this guide to make a backup. You need to login to the original firmware via ssh first. Another method beside using "dd" is nanddump. To be on the safe side, you should take a 2nd backup with the nanddump method. Assuming you have a USB Stick or other USB drive mapped via sda - you can try this:

cd /tmp
mkdir backup
mount /dev/sda1 /tmp/backup
wget http://plugapps.com/os/pogoplug/uboot/nanddump
chmod +x nanddump
./nanddump -nf backup/mtd0 /dev/mtd0
./nanddump -nf backup/mtd1 /dev/mtd1
./nanddump -nf backup/mtd2 /dev/mtd2
umount /dev/sda1

Recovery

There are many recovery images out in the wild. Some have requirements on the version of U-Boot that your boot-strapping from. Information regarding recovery on older version of U-Boot can be obtained in this thread. To bypass a bug in U-Boot, it might be required to specify the Machine ID to 0x831 in the U-Boots enviroment.

setenv machid 831

Here is details of the post from Johannes and the required RAM based rescue system here: (The md5 hash of the zip file is 7f225435709cd0ffbb3619f86af42986)

"Booting the rescue system is accomplished by using uBoot to load the kernel and the root filesystem into RAM and calling bootm with the two addresses. For example, the following sequence will load the rescue system from the root directory of an ext2 (or ext3) formatted USB stick (in position 1):

setenv machid 831
usb start
ext2load usb 0:1 0x800000 uImage-rescue
ext2load usb 0:1 0xe00000 uInitrd-rescue
setenv bootargs console=$console netconsole=6666@10.0.0.3/eth0,6666@10.0.0.2/12:23:34:45:56:67 $mtdparts
bootm 0x800000 0xe00000

These files can also be loaded from a TFTP server (tftp-hpa).

setenv ipaddr 10.0.0.2
setenv serverip 10.0.0.1
setenv machid 831
tftpboot 0x800000 uImage-rescue
tftpboot 0xe00000 uInitrd-rescue
setenv bootargs console=$console netconsole=6666@10.0.0.3/eth0,6666@10.0.0.2/12:23:34:45:56:67 $mtdparts
bootm 0x800000 0xe00000
or to set it as a script:
setenv recovery 'setenv serverip 10.0.1 ; setenv ipaddr 10.0.0.2 ; machid 831 ;tftpboot 0x800000 uImage-rescue ; tftpboot 0xe00000 uInitrd-rescue ; setenv bootargs console=$console $mtdparts ; bootm 0x800000 0xe00000
run recovery

The L/P are: root/root

Newer uBoot as workaround to 3.2 kernel problem

Please see this post by davygravy as it will give you the steps and files required to upgrade U-Boot to boot newer kernels ( 3.2.x >= ).

JTAG Recovery

Here are a few links for JTAG recovery: Debricking w/ BusPirate Debricking w/ Parallel JTAG

U-Boot Mods

Hardware Mods

SD Card and I2C Support

The first page of this thread documents the pin-out for attaching a SD Card reader to the Dockstar. Also, there's information about the I2C interface.

RTC Clock

The Dockstar has no built-in RTC clock, but it can be added back.

Overclocking and Underclocking

According to this page (German), the Dockstar has jumpers to set the multipliers for the CPU, RAM and AHB, and there are three selectable CPU speed: 1.0 GHz, 1.2 GHz and 1.5 GHz. To switch from 1.2 to 1.5 GHz, three surface-mounted resistors have to be resoldered. Please note that according to the author of the page, the Dockstar is not 100% reliable at full speed, and may require further modifications to achieve stability. Underclocking to 1.0 Ghz is also possible, but the decrease in power consumption is likely not worth the hassle

External Installation Guides

Tags

Back to top

toh/seagate/dockstar.txt · Last modified: 2013/12/16 10:03 (external edit)