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