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} 
 |