Terastation TS-RXL

From Buffalo NAS Wiki


Terastation TS-RXL

CPU 800MHz
Memory 512MB
Bays 4
Network 2x 10/100/1000 Mbps
Sata 4x SATA II Marvell 88SX7042
NAND Flash 512MB
SPI Flash
USB 2.0 1x Front, 2x Back
Fan Yes
Power Internal AC 100-240V, universal 50/60Hz

Stock Firmware Installation

Install Firmware from NAND

If blank drives are inserted the device will boot from it's internal NAND and eventually go into EM mode. Once the device is in EM mode the firmware can be installed using tsupdater in debug mode, see Enable Debug mode for LSUpdater/TSUpdater.

Other Methods

This device is much less flexible about what partitions/filesystems it will attempt to boot from. I recommend installing from NAND so that the device will build appropriate partitions for you. It is possible to install via TFTP or loading files directly if desired.

Custom Firmware/Operating System installation

See Installing Debian on MV78100 Devices (TS-WXL, TS-XL,TS-RXL)

Device Notes

The headphone jack on the front appears to be a serial console, I have not yet tried using it.

Although it's possible to change uboot environment variables from within the stock firmware, changing the bootcmd does not seem to affect the boot process for some reason. I attempted to change the location that uboot loads the initrd image and confirmed the change persisted through a reboot but the console output shows that it still loads from the default address. see below for a workaround.

U-boot max file sizes

The stock U-boot will crash if you try to load a kernel image larger than (somewhere between 4-6MB, still looking for actual limit).

The stock U-boot loads the initrd after the kernel but earlier in memory. this means that if the initrd is larger than 23mb it will overlap the kernel. If you create an initrd uboot image with 23mb of padding at the beginning followed by a copy of the kernel (to re-write it in the proper location) you can then append a larger initrd image (provided you hardcode the new offset into your kernel's cmdline).

Partition table notes

The stock firmware partitions the disks using GPT partition tables. It writes the MAC address of eth0 to 0x28 of the beginning of the disk when formatting a disk, it then checks this at boot time to determine whether the disk is "owned" by this device. The boot loader does not seem to do anything differently if this doesn't match or is missing but I have not tested it extensively.

00000000  01 00 00 00 00 00 00 00  20 00 00 00 00 00 00 00  |........ .......|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  30 30 3a 31 64 3a 37 33  |........00:1d:73|
00000030  3a 66 66 3a 34 66 3a 66  62 00 00 00 00 00 00 00  |:ff:4f:fb.......|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

boot partition requirements

The boot files are loaded using u-boot's ext2load function with hardcoded parameters. To boot successfully the boot partition must be:

  • the first partition on the disk
  • either a regular partition or part of a raid1 array using metadata version 0.9
  • formatted using the ext2 or ext3 filesystem
  • have an inode size of 128 bytes (newer distros have started using 256 as the default)
  • relatively small, 1GB is usually more than enough for /boot (I have not yet experimented to determine the max allowable size)

The filesystem can be created with:

mkfs.ext3 -I 128 /dev/sdx1


DMESG output

U-Boot env

Buffalo Resources