Geht nicht, gibts nicht!

Seagate Dockstar mit OpenWRT

Ahoi,
da ich ja bekannter Weise viel mit OpenWRT rumbastel, kam ich nicht drum herum die Seagate Dockstar als Platform zu testen.
Die Dockstar ist eine kleine NAS mit 4*USB 2.0 und 1Gig Ethernet. Das Beste ist, dass man sie schon für wenig Geld (ca. 25€) kaufen kann. Ich habe meine z.B. von Atelco. So weit, so gut… Nun ist man es ja als OpenWRT Nutzer gewohnt mit schwacher Hardware aus zu kommen. Ein WRT54GL hat z.B. 200MHz 4MB Flash (je nach Version) und kostet ca. 54€. Verwunderlicher ist da dann doch, dass die Dockstar mit 1,2GHz ARM CPU, 256MB Flash und 128MB Ram daher kommt.
Aktuell ist der OpenWRT Status für die Dockstar noch auf WIP (Work in Progress) gestellt und deshalb bietet es sich an die FW direkt aus deḿ aktuellen Subversion Trunk zu bauen. Eine gute Einleitung zum “Selberbauen” findet ihr hier. Da dies Howto schon etwas älter ist (aber die Grundlagen immer noch super erklärt, auch die benötigten Pakete und Quellen sind aufgelistet) hier der korrekte Link zum SVN.

svn co svn://svn.openwrt.org/openwrt/trunk/

Hat man diesen heruntergeladen und alle benötigten Pakete installiert (das man zum Bauen einen Linuxsystem benötigt setze ich jetzt mal als bekannt voraus…) gelangt man durch ein,

make menuconfig

in die Einstellungen. Hier kann man nun einstellen, für welche Plattform das ganze gebaut werden soll und welche Pakete man alles mit in die FW bauen möchte. Die Pakete kann man mit der Leertaste auswählen, ein M bedeutet, dass nur das entsprechende .ipk File gebaut wird. Bei einem * wird das .ipk File gebaut und ebenfalls wird das Paket direkt mit in die fertige Firmware integriert. Als Grundlage stellen wir erstmal alles so ein, dass uns ein Image für die Dockstar erzeugt wird. Dazu wählen wir folgende Punkte aus:

Target System -> Marvell Kirkwood
Target Profil -> Seagate Dockstar
Target Image -> jffs2

Nun haben wir unser OpenWRT so eingestellt, dass es uns ein Image für die Dockstar kompilieren würde. Möchte man nun die USB Schnittstellen auch anständig nutzen, muss man bei den Kernel Modules einstellen das die entsprechenden Treiber mit einkompiliert werden. Zu finden sind die Module unter:

Kernel Modules -> USB Support

Möchte man die Dockstar auch mit OpenWRT als NAS nutzen benötigt man vor allem das USB Storage Modul, was in dem eben genannten Untermenü zu finden ist. Einen entsprechenden Filesystem Support könnte man hier finden:

Utilities -> Filesystems

Würde man nun kompilieren hätte man kein Webinterface und es wäre einem aufgefallen, dass man das aktuelle LUCI Interface auch nirgends auswählen konnte. Dies liegt u.a. daran, dass LUCI wie viele andere Programme auch über einen Feed verfügbar ist und man diesen Feed erst zur Buildumgebung hinzufügen muss. Dies funktioniert wie folgt:

./scripts/feeds update -a # Definitionen ziehen
./scripts/feeds install -a -p luci # alles von LuCI + Depends holen
./scripts/feeds install tcpdump nano openvpn # ein paar andere dazu
make package/symlinks # erzeugt symlinks in package/feeds/x/y auf feeds/x/y

via FreiFunk

Hat man diesen Feed (oder auch einen anderen) installiert kann man nun in der Menuconfig die entsprechenden Pakete auswählen.
Mit einem

make world

starten wir nun den Build Prozess. Dies kann je nach Internetverbindung und Rechenpower auch mal 1-2 Stunden dauern
–> lasst uns ein kühles Blondes köpfen oder einen Kaffee trinken :)
Edit: Meine .config findet ihr hier http://matze.efreun.de/dockstar/config
Sollte es Probleme geben, kann man mit

make world V=99

das Debugging einschalten und schauen was es für einen Fehler gab. Häufig ist einfach nur ein Download in einen Timeout gelaufen. Dies kann man umgehen indem man das entsprechende Source tar.gz von Hand herunter lädt und in das Unterverzeichnis ./dl kopiert. Bei anderen Fehlern ist Google oder #openwrt im Freenode Netz dein Freund. Gute Englischkenntnisse sind in beiden Fällen Pflicht.

Wenn man dieses Image nun installiert muss man beachten, dass die Default Einstellung (zumindest Aktuell) für die Netzwerkschnittstelle DHCP ist. Möchte man dies ändern, so kann man OpenWRT vorgeben, dass er die Standard Netzwerkkonfig, welche später in der Datei /etc/config/network zu finden ist, mit einer eigenen überschreibt.
Hierzu erstellt man einfach im Buildroot ein Unterverzeichnis ./files in dem man das spätere Rootdateisystem “nachbauen” kann. In diesem Verzeichnis kann man nun alle Dateien angeben welche später vom Default abweichen (z.B. auch Konfigdateien oder Initscripte für andere Programme)
Man fängt also an und bildet das Dateisystem nach indem man ein Verzeichnis ./files/etc/config erstellt und in dieses die folgenden Datei network hinzufügt

config 'interface' 'loopback'
option 'ifname' 'lo'
option 'proto' 'static'
option 'ipaddr' '127.0.0.1'
option 'netmask' '255.0.0.0'
config 'interface' 'lan'
option 'ifname' 'eth0'
option 'proto' 'static'
option 'netmask' '255.255.255.0'
option 'ipaddr' '192.168.0.2'

Die IP Einstellungen sind natürlich jedem selber überlassen. Lassen wir uns nun den Inhalt von ./files/etc/config anzeigen sollten wir folgendes sehen:

mbeckert@ThinkHawk:~/Bastelkram/Dockstar$ ls -l ./files/etc/config/
insgesamt 12
-rw-r--r-- 1 mbeckert mbeckert 332 2010-09-23 21:06 network

Ist der Build nun erfolgreich durchgelaufen (nach dem Ändern von irgendwelchen Sachen nicht das obligatorische make world vergessen;)), sollte das Verzeichnis ./bin/kirkwood/ diverse Dateien enthalten.

Nun muss man dieses Image noch auf die Dockstar bekommen. Ich hatte bei meinem ersten Flashversuch via SSH Probleme, aus diesem Grund habe ich bis jetzt immer nur noch via Seriell geflasht. Es sollte über SSH ebenfalls problemlos funktionieren, die entsprechende Anleitung findet man hier http://wiki.openwrt.org/toh/seagate/dockstar#installing.without.serial
Edit: Hier nun auch die Anleitung vom XChris für die SSH Variante

Um via Seriell das Image zu installieren muss man das Gerät öffnen. Dies geht u.a. mit den Fingernägeln oder einem Gitarrenplek recht gut da das Gehäuse nicht verschraubt sondern nur eingerastet ist. Hat man das Gehäuse offen (Netzwerkschnittstelle zeigt von uns weg) sieht man unten Links einen 10 poligen Pinheader über diesen man an die serielle Schnittstelle kommt. Die Belegung ist wie folgt:

[ ] [ ] [ ] [ ] [ ]
[ ] [ ] [RX] [TX] [GND]

Ein paar Bilder dazu findet man auch hier http://www.yourwarrantyisvoid.com/2010/07/21/seagate-dockstar-add-an-accessible-serial-port/
Die serielle Schnittstelle hat 3,3V Pegel. Wenn man also mit einem normalen RS232 mit 5V arbeitet sollte man dem RX der Dockstar einen kleinen Schutzwiderstand verpassen. Als passende Einstellungen der seriellen Schnittstelle wählt man 115200 8 N 1
Um das Image zu installieren benötigt man einen TFTP Server. Der Linux User kann den Server seiner Wahl nehmen, für Windows User bietet sich Pumpkin an. Nun kopiert man folgende Dateien aus ./bin/kirkwood/ in das Rootverzeichnis des TFTP Servers:

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

Als IP für den TFTP Server wird von der Dockstar die 169.254.254.254 erwartet.
Startet man das Gerät nun, sollte man die Rückmeldung des Bootloaders bekommen. Klappt dies nicht, sind in 99% der Fälle die RX und TX Leitungen vertauscht ;)
Sieht man nun den Bootloader kann man ihn durch Tastendruck unterbrechen und gelingt in die Commandline. Hier führt man nun die folgenden Befehle aus um den 2-stage Bootloader zu installieren.

mw 0x800000 0xffff 0x40000
tftpboot 0x800000 openwrt-kirkwood-dockstar-u-boot.bin
nand erase 0x100000 0x80000
nand write.e 0x800000 0x100000 0x40000
setenv bootcmd nand read.e 0x800000 0x100000 0x40000\; go 0x800000
saveenv

Sollte er beim herunterladen der Datei (tftpboot…) in einen Timeout laufen, ggF. mal die IP überprüfen welche er anfragt. Diese steht direkt am Anfang wenn man den Befehl ausführt.
Mit dem Befehl

boot

startet man das Gerät nun neu und gelangt hier auch wieder auf Tastendruck in die Commandline des “neuen” 2-stage Bootloaders. Hier kann man nun das Kernel und das Rootfs Image installieren. Dies funktioniert mit folgenden Befehlen:

mw 0x6400000 0xffff 0x300000
tftpboot 0x6400000 openwrt-kirkwood-uImage
nand erase 0x200000 0x300000
nand write.e 0x6400000 0x200000 0x300000

Dies war der Kernel und nun folgt das Rootfs. Hierbei ist darauf zu achten, dass man sich die Größe des Rootfs merkt. Diese gibt einem der tftboot Befehl am Ende des erfolgreichen Downloads als Hexwert zurück. Hat man diesen Wert, führt man die folgenden Befehle aus:

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

Nun tippen wir noch einmal

boot

ein, um das Gerät neu zu starten und freuen uns hoffentlich darüber, dass das Gerät nun in unser OpenWRT Image bootet :)

Ich habe hier http://matze.efreun.de/dockstar/ meine aktuellen Bastelimages mit Samba, SVN, HTTP (mit php5) und OpenVPN Server hier mal hochgeladen. Die Default IP ist die 192.168.0.2

Nun viel Spaß beim Basteln!

Stay Tuned

Der Matze

Oktober 3rd, 2010 at 13:48


10 Responses to “Seagate Dockstar mit OpenWRT”

  1. More OpenWRT image building for the Dockstar - Hack a Day Says:

    [...] wrote in to let us know about a guide to building OpenWRT images for the dockstar (translated). What they end up with is a nice little network attached storage device that runs [...]

  2. arbonne5 Says:

    Hi, danke fuer den inspirierenden Artikel.
    Ich habe auch eine Seagate Dockstar und versuche nun OpenWRT fuer diese zu kompilieren. Allerdings sind die Einstellungen in make menuconfig ueberwaelltigend und ich bin mir nicht sicher was ich alles fuer ein funktionierendes System brauche (welche USB Hardware, welche LUCI komponenten, welche libraries). Waere es moeglich, dass du deine .config Datei hier reinstellen koenntest als Startpunkt fuer Newbies?
    Vielen Dank schonmal.

  3. Matze Says:

    Ahoi,
    ich hab die .config mal hochgeladen. Sie ist unter http://matze.efreun.de/dockstar/config zu erreichen.
    Der XChirs von http://www.helsic.de hat (nachdem ich ihm von der Dockstar vorgeschwärmt habe;) seine Installation via SSH hier dokumentiert http://www.helsic.de/?p=1345

    LG Matze

  4. balou1974 Says:

    Hi, ist es zwingend erforderlich den bootloader zu flashen? Ich bin da etwas vorsichtig :)

  5. Matze Says:

    Nach meinen Informationen ja. An sich kann da auch nicht so viel bei falsch laufen, sofern man nicht mitten im Flashen den Strom abzieht.

  6. balou1974 Says:

    Na, Wir wollen es mal hoffen. Der Build läuft jetzt zum 2ten Mal, diesmal mit Deiner Config :)

  7. balou1974 Says:

    Sieht ganz so aus als würde es funktionieren! Debian wäre vielleicht auch ganz cool – mal sehen erstmal OpenWRT strapazieren :) SUPER HOWTO! Danke!

  8. hackaholicballa » Blog Archive » More OpenWRT image building for the Dockstar Says:

    [...] wrote in to let us know about a guide to building OpenWRT images for the dockstar (translated). What they end up with is a nice little network attached storage device that runs [...]

  9. j-zero.de « j-zero Says:

    [...] habe seit geraumer Zeit eine Seagate Dockstar, auf die ich mit der Hilfe eines guten Freundes ein OpenWRT mit Samba und NFS gezogen habe. Es lief auch alles ganz gut. Auch das mounten der [...]

  10. alklecks Says:

    Besten Dank Matze, ich suche schon seit geraumer Zeit nach vernuenftiger Hardware und einer klaren Anleitung um mein verkabeltes Haus und Garten sensormaeszig zu erfassen. Dockstar steht noch jungfraeulich vor mir und ich suche mir gerade ein paar sinnvolle Packages zusammen um die Dockstar nicht nur zum Datensammeln einzusetzen sondern auch gleich noch zum Aufbereiten und Praesentieren zu verwenden.

    Eigentlich koennte man ja auch mal probieren, auf dem Teil einen vernuenftigen Gateway mit Firewall, WWW-Proxy, … a la Endian zu installieren, aber es fehlen leider die 3-4 Ethernet Schnittstellen (waere aber wahrscheinlich per USB realisierbar). Gibt es da schon ein Gateway/Firewall Projekt in dem die Dockstar/Sheevaplug die Hauptrolle spielt? Waere Klasse — dann koennte ich ev. meinen kleinen PC mit 23W im 24/7 Dauerlauf abloesen…

Leave a Reply

You must be logged in to post a comment.