(Created page with "The TeraStation TS5400 is a network attached storage (NAS) unit manufactured by Buffalo from around 2012. It falls under the TerraStation 5000n series of products and appears...")
 
m
Line 1: Line 1:
 
The TeraStation TS5400 is a network attached storage (NAS) unit manufactured by Buffalo from around 2012. It falls under the TerraStation 5000n series of products and appears to still receive updates.
 
The TeraStation TS5400 is a network attached storage (NAS) unit manufactured by Buffalo from around 2012. It falls under the TerraStation 5000n series of products and appears to still receive updates.
  
{| class="wikitable"
+
[[File:BuffaloTS5400-Board1.jpg|thumb|Buffalo TerraStation TS5400 Motherboard Front]]
 +
[[File:BuffaloTS5400-Board2.jpg|thumb|Buffalo TerraStation TS5400 Motherboard Back]]
 +
 
 +
This unit has the following hardware specs:
 +
{| class="wikitable " style="width: auto;"
 
! CPU  
 
! CPU  
 
| Intel Atom D2550 @ 1.86GHz
 
| Intel Atom D2550 @ 1.86GHz
Line 24: Line 28:
 
|}
 
|}
  
[[File:BuffaloTS5400-Board1.jpg|thumb|Buffalo TerraStation TS5400 Motherboard Front]]
+
The memory appears to be upgradable. Disks are limited to 3GBit/s because it is only SATA II. You can boot from either disk or USB using the selector switch on the back of the unit. I was able to boot CentOS 8 from a SD card using a USB SD card reader.
[[File:BuffaloTS5400-Board2.jpg|thumb|Buffalo TerraStation TS5400 Motherboard Back]]
+
 
 +
== Performance ==
 +
Using CentOS 8 with ZFS 0.8.2, write speeds to a striped 2x 8TB SATA ZFS pool was about 200mb/s.
 +
 
 +
Samba write speeds were at ~83mb/s. Samba read speeds maxed out the gigabit connection at 108MB/s.  NFS write speeds were slightly better at almost 90mb/s.
 +
 
 +
The slower write speeds might be due to the under powered CPU.
 +
 
 +
== GPIO ==
 +
See: https://github.com/1000001101000/Debian_on_Intel_Terastations
 +
 
 +
Utilizes IT8721 but kernel module needs to be patched for it to function. BIOS appears to disable power if no drives are connected on start up and GPIO control is required to enable power afterwards.
 +
 
 +
== Front LCD Display ==
 +
The front LCD display is controlled using the second serial port at 38400 baud. It seems like the BIOS actually communicates with the LCD in order to control messages that appear during POST.
 +
 
 +
There is a [https://github.com/1000001101000/Python_buffalo_libmicon python library] that can interface with the LCD display but the documentation is lacking.
 +
 
 +
LCD messages are controlled by writing an 8-bit value to {{code|lcd_set_dispitem}} ({{code|0x32}}), where each bit corresponds to:
 +
{{highlight|lang=text|code=
 +
1  link speed
 +
2  disk status
 +
4  hostname + ip
 +
8  Unknown (all dashes)
 +
16 date time
 +
32 boot message
 +
64 Custom Message?
 +
128 Unknown (blank)
 +
}}
 +
 
 +
The example code from the Python library sets the bitmask to {{code|0x3F}} to show everything except the boot message. I use {{code|0x34}} to only show hostname, date, and a custom message.
 +
 
 +
== Sensors ==
 +
Install {{code|lm_sensors}} and run {{code|sensors-detect}}. It should detect both {{code|it8721-isa-0a10}} and {{code|coretemp-isa-0000}}.
 +
 
 +
{{highlight|lang=terminal|code=
 +
root@bnas:~# sensors
 +
coretemp-isa-0000
 +
Adapter: ISA adapter
 +
Core 0:      +45.0°C  (crit = +100.0°C)
 +
Core 1:      +44.0°C  (crit = +100.0°C)
 +
 
 +
it8721-isa-0a10
 +
Adapter: ISA adapter
 +
in0:          +3.04 V  (min =  +0.74 V, max =  +2.88 V)  ALARM
 +
in1:          +2.80 V  (min =  +2.32 V, max =  +0.64 V)  ALARM
 +
in2:          +1.99 V  (min =  +1.54 V, max =  +0.01 V)  ALARM
 +
+3.3V:        +3.26 V  (min =  +2.02 V, max =  +0.89 V)  ALARM
 +
in4:          +1.19 V  (min =  +2.33 V, max =  +0.12 V)  ALARM
 +
in5:          +2.22 V  (min =  +2.66 V, max =  +1.32 V)  ALARM
 +
in6:          +1.45 V  (min =  +2.32 V, max =  +0.78 V)  ALARM
 +
3VSB:        +3.26 V  (min =  +3.41 V, max =  +0.31 V)  ALARM
 +
Vbat:        +2.83 V
 +
fan1:        2076 RPM  (min =  10 RPM)
 +
fan2:          0 RPM  (min =  14 RPM)
 +
fan3:          0 RPM  (min =  31 RPM)
 +
fan4:          0 RPM  (min =  -1 RPM)
 +
temp1:        -70.0°C  (low  =  +0.0°C, high = +61.0°C)  sensor = thermal diode
 +
temp2:        -70.0°C  (low  = +111.0°C, high = -82.0°C)  ALARM  sensor = thermal diode
 +
temp3:       +28.0°C  (low  = +54.0°C, high = -42.0°C)  ALARM  sensor = thermal diode
 +
intrusion0:  ALARM
 +
}}
 +
 
 +
All voltages appear to be out of range for some reason.
 +
 
 +
=== Fan Control ===
 +
Run {{code|pwmconfig}} to set up the fan configuration.  Note that {{code|hwmon0}} temperatures correlate to the CPU temperatures.
 +
 
 +
Once configured, use {{code|fancontrol}} to manipulate the fan speed. Use the {{code|fancontrol.service}} to have systemd automatically start {{code|fancontrol}}.
 +
 
 +
{{highlight|lang=terminal|code=
 +
# pwmconfig
 +
# cat /etc/fancontrol
 +
INTERVAL=10
 +
DEVPATH=hwmon0=devices/platform/coretemp.0 hwmon1=devices/platform/it87.2576
 +
DEVNAME=hwmon0=coretemp hwmon1=it8721
 +
FCTEMPS= hwmon1/pwm1=hwmon0/temp2_input
 +
FCFANS= hwmon1/pwm1=hwmon1/fan1_input
 +
MINTEMP= hwmon1/pwm1=45
 +
MAXTEMP= hwmon1/pwm1=65
 +
MINSTART= hwmon1/pwm1=60
 +
MINSTOP= hwmon1/pwm1=50
 +
 
 +
# systemctl enable fancontrol
 +
# systemctl start fancontrol
 +
}}
  
The memory appears to be upgradable. Disks are limited to 3GBit/s because it is only SATA II. You can boot from either disk or USB using the selector switch on the back of the unit. I was able to boot CentOS 8 from a SD card using a USB SD card reader.
+
== See Also ==
 +
* Python Library to drive the LCD - https://github.com/1000001101000/Python_buffalo_libmicon
 +
* Debian Image Information - https://github.com/1000001101000/Debian_on_Intel_Terastations

Revision as of 13:35, 1 December 2019

The TeraStation TS5400 is a network attached storage (NAS) unit manufactured by Buffalo from around 2012. It falls under the TerraStation 5000n series of products and appears to still receive updates.

Buffalo TerraStation TS5400 Motherboard Front
Buffalo TerraStation TS5400 Motherboard Back

This unit has the following hardware specs:

CPU Intel Atom D2550 @ 1.86GHz
RAM 1x 2GB DDR3 1066MHz SODIMM
Chipset Intel I/O Controller Hub 10 (ICH10) family
Disk 4x SATA II (revision 1.0a), AHCI
Network 2x Intel 82574L Gigabit
USB 2x USB 2.0, and 2x USB 3.0
Serial 1 serial port

The memory appears to be upgradable. Disks are limited to 3GBit/s because it is only SATA II. You can boot from either disk or USB using the selector switch on the back of the unit. I was able to boot CentOS 8 from a SD card using a USB SD card reader.

Performance

Using CentOS 8 with ZFS 0.8.2, write speeds to a striped 2x 8TB SATA ZFS pool was about 200mb/s.

Samba write speeds were at ~83mb/s. Samba read speeds maxed out the gigabit connection at 108MB/s. NFS write speeds were slightly better at almost 90mb/s.

The slower write speeds might be due to the under powered CPU.

GPIO

See: https://github.com/1000001101000/Debian_on_Intel_Terastations

Utilizes IT8721 but kernel module needs to be patched for it to function. BIOS appears to disable power if no drives are connected on start up and GPIO control is required to enable power afterwards.

Front LCD Display

The front LCD display is controlled using the second serial port at 38400 baud. It seems like the BIOS actually communicates with the LCD in order to control messages that appear during POST.

There is a python library that can interface with the LCD display but the documentation is lacking.

LCD messages are controlled by writing an 8-bit value to lcd_set_dispitem (0x32), where each bit corresponds to:

1  link speed
2  disk status
4  hostname + ip
8  Unknown (all dashes)
16 date time
32 boot message
64 Custom Message?
128 Unknown (blank)

The example code from the Python library sets the bitmask to 0x3F to show everything except the boot message. I use 0x34 to only show hostname, date, and a custom message.

Sensors

Install lm_sensors and run sensors-detect. It should detect both it8721-isa-0a10 and coretemp-isa-0000.

root@bnas:~# sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +45.0°C  (crit = +100.0°C)
Core 1:       +44.0°C  (crit = +100.0°C)

it8721-isa-0a10
Adapter: ISA adapter
in0:          +3.04 V  (min =  +0.74 V, max =  +2.88 V)  ALARM
in1:          +2.80 V  (min =  +2.32 V, max =  +0.64 V)  ALARM
in2:          +1.99 V  (min =  +1.54 V, max =  +0.01 V)  ALARM
+3.3V:        +3.26 V  (min =  +2.02 V, max =  +0.89 V)  ALARM
in4:          +1.19 V  (min =  +2.33 V, max =  +0.12 V)  ALARM
in5:          +2.22 V  (min =  +2.66 V, max =  +1.32 V)  ALARM
in6:          +1.45 V  (min =  +2.32 V, max =  +0.78 V)  ALARM
3VSB:         +3.26 V  (min =  +3.41 V, max =  +0.31 V)  ALARM
Vbat:         +2.83 V
fan1:        2076 RPM  (min =   10 RPM)
fan2:           0 RPM  (min =   14 RPM)
fan3:           0 RPM  (min =   31 RPM)
fan4:           0 RPM  (min =   -1 RPM)
temp1:        -70.0°C  (low  =  +0.0°C, high = +61.0°C)  sensor = thermal diode
temp2:        -70.0°C  (low  = +111.0°C, high = -82.0°C)  ALARM  sensor = thermal diode
temp3:        +28.0°C  (low  = +54.0°C, high = -42.0°C)  ALARM  sensor = thermal diode
intrusion0:  ALARM

All voltages appear to be out of range for some reason.

Fan Control

Run pwmconfig to set up the fan configuration. Note that hwmon0 temperatures correlate to the CPU temperatures.

Once configured, use fancontrol to manipulate the fan speed. Use the fancontrol.service to have systemd automatically start fancontrol.

# pwmconfig
# cat /etc/fancontrol
INTERVAL=10
DEVPATH=hwmon0=devices/platform/coretemp.0 hwmon1=devices/platform/it87.2576
DEVNAME=hwmon0=coretemp hwmon1=it8721
FCTEMPS= hwmon1/pwm1=hwmon0/temp2_input
FCFANS= hwmon1/pwm1=hwmon1/fan1_input
MINTEMP= hwmon1/pwm1=45
MAXTEMP= hwmon1/pwm1=65
MINSTART= hwmon1/pwm1=60
MINSTOP= hwmon1/pwm1=50

# systemctl enable fancontrol
# systemctl start fancontrol

See Also