User Tools

Site Tools


This is an old revision of the document!

Extending U-Boot support for Orion SoC


The Orion family of SoCs includes the following machines:

  • Buffalo/Revolution Kurbox Pro
  • Buffalo/Revolution Linkstation Mini
  • Buffalo/Revolution Terastation Pro II/Live
  • Lacie ED Mini V2
  • Lacie Internet Space V1 (V2 uses kirkwood)
  • Lacie 2Big
  • Lacie 5Big
  • Lacie d2 Network
  • Lacie Big Disk Network
  • Marvell Orion-2 Development Board, Marvell Orion-VoIP FXO, Marvell Orion-VoIP GE, Marvell Orion-NAS Reference Design, Marvell Orion-1-90 AP GE Reference Design
  • Maxtor Shared Storage II
  • QNAP TS-109/TS-209
  • QNAP TS-409
  • Technologic Systems TS-78xx

The u-boot-lacie git repo

This repo provides two branches:

  • master is kept up-to-date by merging the master branches of custodian repo that have orion5x-related commits.
  • testing is master plus patches that have not yet made it into any custodian's u-boot repo.

WARNING: testing is volatile: it may roll back on a patch that eventually proved bad, or move sideways from one version of a patch to another. Its history will be shaky. Hey, this is a testing branch. On the other hand, master will only be a merge of custodian trees, so you can reasonably expect it to contain commits that will end up in mainline u-boot.

Update from LaCie to mainline

           _           ____ _
          | |    __ _ / ___(_) ___
          | |   / _` | |   | |/ _ \
          | |___ (_| | |___| |  __/
 _   _     ____              _
| | | |   | __ )  ___   ___ | |_
| | | |___|  _ \ / _ \ / _ \| __|
| |_| |___| |_) | (_) | (_) | |_
 \___/    |____/ \___/ \___/ \__|  ** LOADER **
Hold rear button - long :  FAIL

U-Boot 1.1.4 (Jan 17 2011 - 21:48:29) Marvell version: 3.4.16  LaCie 1.5.9 256MB

U-Boot code: 06000000 -> 060701D0  BSS: -> 060BDAA0

Soc: 88F6281 A0 (DDR2)
CPU running @ 800Mhz L2 running @ 400Mhz
SysClock = 200Mhz , TClock = 166Mhz

DRAM CAS Latency = 3 tRP = 3 tRAS = 9 tRCD=3
DRAM CS[0] base 0x00000000   size 256MB
DRAM Total size 256MB  16bit width
[512kB@f8000000] Flash: 512 kB
Addresses 98M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (98M - 97M): Done
*** Warning - bad CRC, using default environment

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

USB 0: host mode
PEX 0: interface detected no Link.
Net:   egiga0 [PRIME]
Waiting for LUMP (3)

no lump receive; continuing

The LaCie stock U-Boot comes with a huge limitation. The boot sequence is hardcoded within the U-Boot binary. At reset, U-Boot reinitialize the boot environment variables with the built-in ones. As a consequence, the LaCie system layout (or partition map) can't be changed. By default, U-Boot will load the Linux kernel from partition 10 (update) or from partition 6 as a fallback (default).

This section present step by step how to update the stock U-Boot with a mainline version. Both a serial or a network console can be used to connect to U-Boot. For this how-to, the netconsole way is preferred because the user don't have to build/buy a serial cable.

  • Run clunc and connect to the LaCie U-Boot console.
$ ./clunc -i <NAS_IP>
  • Setup a tftp server and install the new u-boot image in the tftp directory (could be /var/tftpboot).
$ wget -O /var/tftpboot/u-boot-netspace_v2.kwb
  • Configure some U-Boot network environment variables. In the following example, replace ${serverip} with the tftp server IP address and replace ${ipaddr} with a valid and free IP address.
Marvell>> setenv ipaddr ${ipaddr}; setenv serverip ${serverip}
  • Flash the new U-Boot image.
Marvell>> bubt u-boot-netspace_v2.kwb
Using egiga0 device
TFTP from server; our IP address is
Filename 'u-boot-new.kwb'.
Load address: 0x2000000
Loading: ##########################################
Bytes transferred = 214220 (344cc hex)
Un-Protect Flash Monitor space

If U-Boot Endiannes is going to change (LE->BE or BE->LE), Then Env parameters should be overriden..
Override Env parameters? (y/n) n
Erase 0 - 125 sectors...
Copy to Flash... done
Protect Flash Monitor space
  • Restart.
Marvell>> reset
  • Install the U-Boot netconsole tool.

Note that U-Boot mainline don't provide a magic packet mechanism to configure the IP address. It means that clunc becomes useless from this point. The netconsole configuration rely on some environment variables: ipaddr, ncip, stdin, stdout and stderr (for more information, please refer to the file README.NetConsole included in U-Boot sources). After the update, this variables will be initialized with the default (or built-in) values: the IP address is and the netconsole is configured to broadcast messages. As a consequence, the server IP must belong to the subnetwork Moreover netcat don't handle the broadcast messages. Instead, the U-Boot tools netconsole and ncb must be used.

  • Connect to U-Boot via netconsole and interrupt boot process (Ctrl-C).
$ ./tools/netconsole

U-Boot 2010.12-00216-g5bbbf69 (Jan 24 2011 - 21:38:00) LaCie Network Space v2

SoC:   Kirkwood 88F6281_A0
DRAM:  256 MiB
SF: Detected MX25L4005A with page size 256, total 512 KiB
SF: disable write protection
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
Hit any key to stop autoboot:  3
ubootfororionsocs.1310547184.txt.gz · Last modified: 2011/07/13 08:53 by