Intro
-----
The Buffalo Linkstation Pro/Live, codename LS-XHL and LS-CHLv2, is a single
disk NAS server. The PCBs of the LS-XHL and LS-CHLv2 are almost the same.
The LS-XHL has a faster CPU and more RAM with a wider data bus, therefore
the LS-XHL PCB has two SDRAM chips. Both have a Kirkwood CPU (Marvell
88F6281). The only on-board storage is a 4 Mbit SPI flash which stores the
bootloader and its environment. The linux kernel and the initial ramdisk
are loaded from the hard disk.


Rescue Mode
-----------
These linkstations don't have a populated serial port. There is no way to
access an (unmodified) board other than using the netconsole. If you want
to recover from a bad environment setting or an empty environment, you can
do this only with a working network connection.

Therefore, on entering the resuce mode, a random ethernet address is
generated if no valid address could be loaded from the environment variable
'ethaddr' and a DHCP request is sent. After a successful DHCP response is
received, the network settings are configured and the ncip is unset. Thus
all netconsole packets are broadcasted and you can use the netconsole to
access board from any host within the network segment. To determine the IP
address assigned to the board, you either have to sniff the traffic or
check the logs/leases of your DHCP server.

The resuce mode is selected by holding the push button for at least one
second, while powering-on the device. The status LED turns solid amber if
the resuce mode is enabled, thus providing a visual feedback.

Pressing the same button for at least 10 seconds on power-up will erase the
environment and reset the board. In this case the visual indication will
be:
- blinking blue, for about one second
- solid amber, for about nine seconds
- blinking amber, until you release the button

This ensures, that you still can recover a device with a broken
environment by first erasing the environment and then entering the rescue
mode.

Once the rescue mode is started, use the ncb binary from the tools/
directory to access your board. There is a helper script named
'restore_env' to save your changes. It unsets all the network variables
which were set by the rescue mode, saves your changes and then resets the
board.

The common use case for this is setting a MAC address. Let us assume you
have an empty environment, the board comes up with the amber LED blinking.
Then you enter the rescue mode, connect to the board with the ncb tool and
use the following commands to set your MAC address:

  setenv ethaddr 00:00:00:00:00:00
  run restore_env

Of course you need to replace the 00:00:00:00:00:00 with your valid MAC
address, which can be found on a sticker on the bottom of your box.


Status LED
----------
blinking blue
  Bootloader is running normally.

blinking amber
  No ethaddr set. Use the `Rescue Mode` to set one.

blinking red
  Something bad happend during loading the operating system.

The default behavior of the linux kernel is to turn on the blue LED. So if
the blinking blue LED changes to solid blue the kernel was loaded
successfully.


Power-on Switch
---------------
The power-on switch is a software switch. If it is not in ON position when
the bootloader starts, the bootloader will disable the HDD and USB power
and stop the fan. Then it loops until the switch is in ON position again,
enables the power and fan again and continue booting.


Boot sources
------------
The environment defines several different boot sources:

legacy
  This is the default boot source. It loads the kernel and ramdisk from the
  attached HDD using the original filenames. The load addresses were
  modified to support loading larger kernels. But it should behave the same
  as the original bootloader.

hdd
  Use this for new-style booting. Loads three files /vmlinuz, /initrd.img
  and /dtb from the boot partition. This should work out of the box if you
  have debian and the flash-kernel package installed.

usb
  Same as hdd expect, that the files are loaded from an attached USB mass
  storage device and the filename for the device tree is kirkwood-lsxhl.dtb
  (or kirkwood-lschlv2.dtb).

net
  Same as usb expect, that the file are loaded from the network.

rescue
  Automatically activated if the push button is pressed for at least one
  second on power-up. Does a DHCP request and enables the network console.
  See `Rescue Mode` for more information.

You can change the boot source by setting the 'bootsource' variable to the
corresponding value. Please note, that the restore_env script will the the
bootsource back to 'legacy'.


Flash map
---------
00000 - 5ffff   u-boot
60000 - 6ffff   reserved, may be used to store dtb
70000 - 7ffff   u-boot environment


Compiling
---------
make lsxhl_config (or lschlv2_config)
make u-boot.kwb


Update your board
-----------------
Just flash the resulting u-boot.kwb to the beginning of the SPI flash. If
you already have a bootloader CLI, you can use the following commands:

 sf probe 0
 bootp ${loadaddr} u-boot.kwb
 sf erase 0 +${filelen}
 sf write 0 ${fileaddr} ${filesize}
