Michael Walle | 43730ba | 2015-02-13 18:45:57 +0100 | [diff] [blame] | 1 | Intro |
| 2 | ----- |
| 3 | The Buffalo Linkstation Pro/Live, codename LS-XHL and LS-CHLv2, is a single |
| 4 | disk NAS server. The PCBs of the LS-XHL and LS-CHLv2 are almost the same. |
| 5 | The LS-XHL has a faster CPU and more RAM with a wider data bus, therefore |
| 6 | the LS-XHL PCB has two SDRAM chips. Both have a Kirkwood CPU (Marvell |
| 7 | 88F6281). The only on-board storage is a 4 Mbit SPI flash which stores the |
| 8 | bootloader and its environment. The linux kernel and the initial ramdisk |
| 9 | are loaded from the hard disk. |
| 10 | |
| 11 | |
| 12 | Rescue Mode |
| 13 | ----------- |
| 14 | These linkstations don't have a populated serial port. There is no way to |
| 15 | access an (unmodified) board other than using the netconsole. If you want |
| 16 | to recover from a bad environment setting or an empty environment, you can |
| 17 | do this only with a working network connection. |
| 18 | |
| 19 | Therefore, on entering the resuce mode, a random ethernet address is |
| 20 | generated if no valid address could be loaded from the environment variable |
| 21 | 'ethaddr' and a DHCP request is sent. After a successful DHCP response is |
| 22 | received, the network settings are configured and the ncip is unset. Thus |
| 23 | all netconsole packets are broadcasted and you can use the netconsole to |
| 24 | access board from any host within the network segment. To determine the IP |
| 25 | address assigned to the board, you either have to sniff the traffic or |
| 26 | check the logs/leases of your DHCP server. |
| 27 | |
| 28 | The resuce mode is selected by holding the push button for at least one |
| 29 | second, while powering-on the device. The status LED turns solid amber if |
| 30 | the resuce mode is enabled, thus providing a visual feedback. |
| 31 | |
| 32 | Pressing the same button for at least 10 seconds on power-up will erase the |
| 33 | environment and reset the board. In this case the visual indication will |
| 34 | be: |
| 35 | - blinking blue, for about one second |
| 36 | - solid amber, for about nine seconds |
| 37 | - blinking amber, until you release the button |
| 38 | |
| 39 | This ensures, that you still can recover a device with a broken |
| 40 | environment by first erasing the environment and then entering the rescue |
| 41 | mode. |
| 42 | |
| 43 | Once the rescue mode is started, use the ncb binary from the tools/ |
| 44 | directory to access your board. There is a helper script named |
| 45 | 'restore_env' to save your changes. It unsets all the network variables |
| 46 | which were set by the rescue mode, saves your changes and then resets the |
| 47 | board. |
| 48 | |
| 49 | The common use case for this is setting a MAC address. Let us assume you |
| 50 | have an empty environment, the board comes up with the amber LED blinking. |
| 51 | Then you enter the rescue mode, connect to the board with the ncb tool and |
| 52 | use the following commands to set your MAC address: |
| 53 | |
| 54 | setenv ethaddr 00:00:00:00:00:00 |
| 55 | run restore_env |
| 56 | |
| 57 | Of course you need to replace the 00:00:00:00:00:00 with your valid MAC |
| 58 | address, which can be found on a sticker on the bottom of your box. |
| 59 | |
| 60 | |
| 61 | Status LED |
| 62 | ---------- |
| 63 | blinking blue |
| 64 | Bootloader is running normally. |
| 65 | |
| 66 | blinking amber |
| 67 | No ethaddr set. Use the `Rescue Mode` to set one. |
| 68 | |
| 69 | blinking red |
| 70 | Something bad happend during loading the operating system. |
| 71 | |
| 72 | The default behavior of the linux kernel is to turn on the blue LED. So if |
| 73 | the blinking blue LED changes to solid blue the kernel was loaded |
| 74 | successfully. |
| 75 | |
| 76 | |
| 77 | Power-on Switch |
| 78 | --------------- |
| 79 | The power-on switch is a software switch. If it is not in ON position when |
| 80 | the bootloader starts, the bootloader will disable the HDD and USB power |
| 81 | and stop the fan. Then it loops until the switch is in ON position again, |
| 82 | enables the power and fan again and continue booting. |
| 83 | |
| 84 | |
| 85 | Boot sources |
| 86 | ------------ |
| 87 | The environment defines several different boot sources: |
| 88 | |
| 89 | legacy |
| 90 | This is the default boot source. It loads the kernel and ramdisk from the |
| 91 | attached HDD using the original filenames. The load addresses were |
| 92 | modified to support loading larger kernels. But it should behave the same |
| 93 | as the original bootloader. |
| 94 | |
| 95 | hdd |
| 96 | Use this for new-style booting. Loads three files /vmlinuz, /initrd.img |
| 97 | and /dtb from the boot partition. This should work out of the box if you |
| 98 | have debian and the flash-kernel package installed. |
| 99 | |
| 100 | usb |
| 101 | Same as hdd expect, that the files are loaded from an attached USB mass |
| 102 | storage device and the filename for the device tree is kirkwood-lsxhl.dtb |
| 103 | (or kirkwood-lschlv2.dtb). |
| 104 | |
| 105 | net |
| 106 | Same as usb expect, that the file are loaded from the network. |
| 107 | |
| 108 | rescue |
| 109 | Automatically activated if the push button is pressed for at least one |
| 110 | second on power-up. Does a DHCP request and enables the network console. |
| 111 | See `Rescue Mode` for more information. |
| 112 | |
| 113 | You can change the boot source by setting the 'bootsource' variable to the |
| 114 | corresponding value. Please note, that the restore_env script will the the |
| 115 | bootsource back to 'legacy'. |
| 116 | |
| 117 | |
| 118 | Flash map |
| 119 | --------- |
| 120 | 00000 - 5ffff u-boot |
| 121 | 60000 - 6ffff reserved, may be used to store dtb |
| 122 | 70000 - 7ffff u-boot environment |
| 123 | |
| 124 | |
| 125 | Compiling |
| 126 | --------- |
| 127 | make lsxhl_config (or lschlv2_config) |
| 128 | make u-boot.kwb |
| 129 | |
| 130 | |
| 131 | Update your board |
| 132 | ----------------- |
| 133 | Just flash the resulting u-boot.kwb to the beginning of the SPI flash. If |
| 134 | you already have a bootloader CLI, you can use the following commands: |
| 135 | |
| 136 | sf probe 0 |
| 137 | bootp ${loadaddr} u-boot.kwb |
| 138 | sf erase 0 +${filelen} |
| 139 | sf write 0 ${fileaddr} ${filesize} |