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}