Linkstation LS210D

From Buffalo NAS Wiki

Specs

Linkstation LS210D

CPU 800 MHz dual issue ARM (Marvell 88F6707)
Memory 256 MB DDR3
Bays 1
Network 1x 10/100/1000 Mbps (Marvell 88E1518) *labeled as 88EC048
Sata 1x SATA II (SoC)
NAND Flash None
SPI Flash 1 MB (MX25L8006E)
USB 2.0 1 (Rear)
USB 3.0 None
Fan Yes
Power 12V - 4A

Variations

LS210D0201 2TB
LS210D0301 3TB
LS210D0401 4TB

Stock Firmware Installation

Restoring_Stock_Firmware_without_TFTP

Custom Firmware/Operating System installation

Installing Debian on Armada-370 Devices

Disassembly

The device's cover is held in place by a number of plastic tabs, it can be removed by carefully prying it apart.

see https://web.archive.org/web/20200920233124/https://y-naito.ddo.jp/index.php?id=1419753361

https://www.youtube.com/watch?v=nyzRDuuskIU

Serial Console

The data lines of the serial header are not connected by default. There are pads hidden under the SPI chip which would normally be used to reconnect them. For this device those connections are also accessible on the opposite side of the board and can be bridged by small wires or in my case conductive paint.

Pictures

DMESG output

Booting Linux on physical CPU 0
Initializing cgroup subsys cpu
Linux version 3.3.4 (root@nasbuild) (gcc version 4.6.2 (Linaro GCC branch-4.6.2. Marvell GCC 201201-883.01c949de) ) #1 Thu Jul 26 21:06:52 JST 2018
CPU: Marvell PJ4Bv7 Processor [561f5811] revision 1 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
Machine: Marvell Armada-370
Using UBoot passing parameters structure
>>>>>>>Tag MAC bf:3c:cb:43:50:00
>>>>>>>Tag MAC cf:46:57:ee:57:88
Memory policy: ECC disabled, Data cache writealloc
On node 0 totalpages: 65536
free_area_init_node: node 0, pgdat c05789e4, node_mem_map c05b2000
  Normal zone: 512 pages used for memmap
  Normal zone: 0 pages reserved
  Normal zone: 65024 pages, LIFO batch:15
pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
pcpu-alloc: [0] 0 
Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 65024
Kernel command line: console=ttyS0,115200 root=/dev/sda2 rw initrd=0x2600040 panic=5 BOOTVER=0.36 UBOOT_DATE=2016/12/13
PID hash table entries: 1024 (order: 0, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 256MB = 256MB total
Memory: 236148k/236148k available, 25996k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    vmalloc : 0xd0800000 - 0xff000000   ( 744 MB)
    lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc0524f3c   (5236 kB)
      .init : 0xc0525000 - 0xc054a000   ( 148 kB)
      .data : 0xc054a000 - 0xc05797c0   ( 190 kB)
       .bss : 0xc05797e4 - 0xc05b1910   ( 225 kB)
NR_IRQS:256
axp_time_init
Calibrating delay loop... 795.44 BogoMIPS (lpj=3977216)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
hw perfevents: no hardware support available
Setting up static identity map for 0x3cf6a0 - 0x3cf6e4
devtmpfs: initialized
xor: measuring software checksum speed
   arm4regs  :   766.800 MB/sec
   8regs     :   544.000 MB/sec
   32regs    :   765.200 MB/sec
xor: using function: arm4regs (766.800 MB/sec)
NET: Registered protocol family 16
L0 cache Enabled
Speculative Prefetch Disabled
aurora_l2_init 
Aurora: Enabling L2
AuroraL2: System L2 cache support initialised
Support IO coherency.
Enable DLB and DRAM write coalescing
        
CPU Interface
-------------
SDRAM_CS0 ....base 00000000, size 256MB 
SDRAM_CS1 ....disable
SDRAM_CS2 ....disable
SDRAM_CS3 ....disable
DEVICE_CS0 ....base f2000000, size  32MB 
DEVICE_CS1 ....no such
DEVICE_CS2 ....no such
DEVICE_CS3 ....no such
PEX0_MEM ....base e0000000, size  32MB 
PEX0_IO ....base f1100000, size   1MB 
PEX1_MEM ....base e2000000, size  32MB 
PEX1_IO ....base f1200000, size   1MB 
INTER_REGS ....base d0000000, size   1MB 
DMA_UART ....no such
SPI_CS0 ....base f0000000, size  16MB 
SPI_CS1 ....no such
SPI_CS2 ....no such
SPI_CS3 ....no such
SPI_CS4 ....no such
SPI_CS5 ....no such
SPI_CS6 ....no such
SPI_CS7 ....no such
BOOT_ROM_CS ....no such
DEV_BOOTCS ....base f5000000, size  16MB 
PMU_SCRATCHPAD ....no such
CRYPT0_ENG ....base c8010000, size  64KB 
        
  Marvell Armada370 Board-- ISMT370  Soc: MV6710 A1 LE
  LSP version: Armada370_LSP_3.1.0_p15_NQ
        
        
 Detected Tclk 200000000, SysClk 533000000, FabricClk 533000000
gpiochip_add: registered GPIOs 0 to 64 on device: mv_gpio
hw-breakpoint: debug architecture 0x4 unsupported.
Marvell USB EHCI Host controller #0: c804c400
PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
pci_bus 0000:00: root bus resource [mem 0xe0000000-0xe1ffffff]
PCI: bus0: Fast back to back transfers enabled
PCI host bridge to bus 0000:01
pci_bus 0000:01: root bus resource [io  0x100000-0x1fffff]
pci_bus 0000:01: root bus resource [mem 0xe2000000-0xe3ffffff]
PCI: bus1: Fast back to back transfers enabled
bio: create slab <bio-0> at 0
raid6: int32x1    106 MB/s
raid6: int32x2    157 MB/s
raid6: int32x4    143 MB/s
raid6: int32x8    167 MB/s
raid6: using algorithm int32x8 (167 MB/s)
vgaarb: loaded
SCSI subsystem initialized
libata version 3.00 loaded.
Switching to clocksource armada370_clocksource
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
PCI: CLS 0 bytes, default 32
Trying to unpack rootfs image as initramfs...
Freeing initrd memory: 11720K
cesadev_init(c052cc88)
mvCesaInit: channels=1, session=640, queue=64
Armada XP hwmon thermal sensor initialized.
Initializing Armada-XP CPU power management  (DISABLED)
MICON ctrl (C) BUFFALO INC. V.1.00 installed.
Buffalo Gpio Control Driver (C) BUFFALO INC. Ver.1.00 installed.
Buffalo CPU Inerupts Driver (C) BUFFALO INC. Ver.0.01 alpha1 installed.
Kernel event proc (C) BUFFALO INC. V.1.00 installed.
initial_polarity_val = 0x00018000
initial_polarity_val_high = 0x00000000
Buffalo GPIO SATA Hotplug Event Driver (C) BUFFALO INC. Ver.1.00 installed.
VFS: Disk quotas dquot_6.5.2
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
JFFS2 version 2.2. (NAND) \xffffffc2\xffffffa9 2001-2006 Red Hat, Inc.
fuse init (API version 7.18)
led     with ACLs, security attributes, large block/inode numbers, no debug enab--More--
SGI XFS Quota Management subsystem
msgmni has been set to 484
async_tx: api initialized (async)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
mv_xor_shared mv_xor_shared.0: Marvell shared XOR driver
mv_xor_shared mv_xor_shared.1: Marvell shared XOR driver
mv_xor mv_xor.0: Marvell XOR: ( xor )
mv_xor mv_xor.1: Marvell XOR: ( xor )
mv_xor mv_xor.2: Marvell XOR: ( cpy )
mv_xor mv_xor.3: Marvell XOR: ( fill cpy )
Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xd0012000 (irq = 41) is a 16550A
console [ttyS0] enabled
brd: module loaded
loop: module loaded
sata_mv sata_mv.0: version 1.28
** BUFFALO Disable Command Queuing Function [sata_mv sata_mv.0] **
sata_mv sata_mv.0: slots 32 ports 2
scsi0 : sata_mv
scsi1 : sata_mv
ata1: SATA max UDMA/133 irq 55
ata2: SATA max UDMA/133 irq 55
SPI Serial flash detected @ 0xf0000000, 1024KB (16sec x 64KB)
ed using BCH 4bit ECCnd.0: Initialize HAL based NFC in 8bit mode with DMA Disabl--More--
armada-nand armada-nand.0: mvNfcInit() failed.
mv_eth_probe: port_mask=0x3, cpu_mask=0x1 
0 - Base 0x00000000 , Size = 0x10000000.
4 - Base 0xf2000000 , Size = 0x02000000.
8 - Base 0xe0000000 , Size = 0x02000000.
9 - Base 0xf1100000 , Size = 0x00100000.
10 - Base 0xe2000000 , Size = 0x02000000.
11 - Base 0xf1200000 , Size = 0x00100000.
12 - Base 0xd0000000 , Size = 0x00100000.
14 - Base 0xf0000000 , Size = 0x01000000.
23 - Base 0xf5000000 , Size = 0x01000000.
25 - Base 0xc8010000 , Size = 0x00010000.
  o 2 Giga ports supported
  o NETA acceleration mode 1
  o RX Queue support: 1 Queues * 128 Descriptors
  o TX Queue support: 1 Queues * 512 Descriptors
  o GSO supported
  o GRO supported
  o Receive checksum offload supported
  o Transmit checksum offload supported
  o Driver ERROR statistics enabled
  o Switch support enabled
        
  o Loading network interface(s)
        
  o Port 0 is connected to Linux netdevice
        giga p=0: mtu=1500, mac=c8029eec
    o eth0, ifindex = 2, GbE port = 0
        
  o Port 1 is connected to Linux netdevice
        giga p=1: mtu=1500, mac=c8029eec
    o eth1, ifindex = 3, GbE port = 1
        
rtc-mv rtc-mv: rtc core: registered rtc-mv as rtc0
md: linear personality registered for level -1
md: raid0 personality registered for level 0
md: raid1 personality registered for level 1
md: raid10 personality registered for level 10
md: raid6 personality registered for level 6
md: raid5 personality registered for level 5
md: raid4 personality registered for level 4
cpuidle: using governor ladder
cpuidle: using governor menu
mmc0: mvsdio driver initialized, lacking card detect (fall back to polling)
TCP cubic registered
NET: Registered protocol family 17
VFP support v0.3: implementor 56 architecture 2 part 20 variant 9 rev 6
rtc-mv rtc-mv: setting system clock to 2018-10-18 10:39:47 UTC (1539859187)
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl F300)
ata1.00: ATA-8: KingDian S100 16GB, 20141224, max UDMA/133
ata1.00: 30932992 sectors, multi 0: LBA48 
ata1.00: configured for UDMA/133
scsi 0:0:0:0: Direct-Access     ATA      KingDian S100 16 2014 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 30932992 512-byte logical blocks: (15.8 GB/14.7 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
 or FUA :0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO--More--
 sda: sda1 sda2 sda3 sda4 sda5
sd 0:0:0:0: [sda] Attached SCSI disk
ata2: SATA link down (SStatus 0 SControl F300)
Freeing init memory: 148K
kjournald starting.  Commit interval 5 seconds
EXT3-fs (sda1): using internal journal
EXT3-fs (sda1): mounted filesystem with writeback data mode
kjournald starting.  Commit interval 5 seconds
EXT3-fs (sda2): using internal journal
EXT3-fs (sda2): mounted filesystem with writeback data mode
kjournald starting.  Commit interval 5 seconds
EXT3-fs (sda2): using internal journal
EXT3-fs (sda2): mounted filesystem with writeback data mode
Adding 999992k swap on /dev/sda5.  Priority:-1 extents:1 across:999992k SS
kjournald starting.  Commit interval 5 seconds
EXT3-fs (sda1): using internal journal
EXT3-fs (sda1): mounted filesystem with writeback data mode
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci_marvell ehci_marvell.0: Marvell Orion EHCI
ehci_marvell ehci_marvell.0: new USB bus registered, assigned bus number 1
ehci_marvell ehci_marvell.0: irq 45, io base 0xfbb50100
ehci_marvell ehci_marvell.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver usblp
pool #1: pkt_size=1536, buf_size=1632 - 256 of 256 buffers added
eth1: link up
eth1: started
udevd[2756]: starting version 174
Extra Features Reg[0] = 0x60000100
Extra Features Reg[1] = 0x101a7
Control Reg = 0x10c5387d
Main ID Reg = 0x561f5811
Cache Type Reg = 0x8003c003
L2 Control Reg = 0x1
L2 Auxilary Control Reg = 0x12086302
Extra Features Reg[0] = 0x60000100
Extra Features Reg[1] = 0x101a7
Control Reg = 0x10c5387d
Main ID Reg = 0x561f5811
Cache Type Reg = 0x8003c003
L2 Control Reg = 0x1
L2 Auxilary Control Reg = 0x12086302
Extra Features Reg[0] = 0x60000100
Extra Features Reg[1] = 0x101a7
Control Reg = 0x10c5387d
Main ID Reg = 0x561f5811
Cache Type Reg = 0x8003c003
L2 Control Reg = 0x1
L2 Auxilary Control Reg = 0x12086302

U-Boot env

CASset=min
MALLOC_len=5
autoload=n
baudrate=115200
bootargs_end=:10.4.50.254:255.255.255.0:KW40:eth0:none
bootargs_root=root=/dev/sda2 rw initrd=0x2600040 panic=5
bootcmd=for i in $bootorder; do run ${i}bootcmd; done
bootcommon=setenv bootargs $console $bootargs_root $bootargs_func $buffalo_ver $uboot_date $mtdparts $bootsystem; ;sf protect off; bootm 0x1200000 0x2600000
bootcommon-u=setenv bootargs $console $bootargs_func $buffalo_ver $uboot_date $mtdparts $bootsystem; ;sf protect off; bootm 0x1200000
bootdelay=0
bootorder=ide fail usb1 usb2 tftp
buffalo_ver=BOOTVER=0.20
cacheShare=no
console=console=ttyS0,115200
disL2Cache=yes
disaMvPnp=no
eeeEnable=no
enaAutoRecovery=yes
enaClockGating=no
enaFPU=no
enaWrAllo=no
eth1mtu=1500
ethact=egiga1
ethaddr=00:50:43:cb:3c:bf
ethmtu=1500
ethprime=egiga1
failbootcmd=bootfail
hdddelay=7
idebootcmd=ext2load ide 0:1 0x1200000 /$kernel; ext2load ide 0:1 0x2600000 /$initrd; setenv bootsystem hddboot=yes; run bootcommon
image_name=uImage
initrd=initrd.buffalo
initrd_name=uInitrd
ipaddr=192.168.11.150
kernel=uImage.buffalo
loadaddr=0x02000000
loads_echo=0
mvNetConfig=mv_net_config=1,(00:50:43:11:11:11,0:1:2:3:4),mtu=1500
netbsd_en=no
netmask=255.255.255.0
netretry=no
pcieTune=no
pexMode=rc
pxe_files_load=:default.arm-armada370-db:default.arm-armadaxp:default.arm
pxefile_addr_r=3100000
rcvrip=169.254.100.100
rootpath=/srv/oneiric
sata_delay_reset=0
sata_dma_mode=yes
serverip=192.168.11.1
standalone=fsload $load_addr $image_name;setenv bootargs $console $mtdparts root=/dev/mtdblock0 rw ip=$ipaddr:$serverip$bootargs_end; bootm $load_addr;
stderr=serial
stdin=serial
stdout=serial
tftpbootcmd=tftp 0x1200000 $kernel; tftp 0x2600000 $initrd; setenv bootsystem tftpboot=yes; run bootcommon
uboot_date=UBOOT_DATE="2013/11/05"
usb0Mode=host
usb1Mode=host
usb1bootcmd=setenv usbActive 0;usb start;fatload usb 0 0x1200000 /boot/uImage370;sf protect off;run bootcommon-u
usb2Mode=device
usb2bootcmd=fatload usb 0 0x1200000 /boot/uImage.buffalo;fatload usb 0 0x2600000 /boot/initrd.buffalo;setenv bootsystem usbboot=yes;run bootcommon
usbActive=0
vxworks_en=no
yuk_ethaddr=00:00:00:EE:51:81
EnableNandBoot=1
eth1addr=88:57:EE:XX:XX:XX
deviceid=XXXXXXXXX
SerialNo=4016958XXXXXXXX

Buffalo Resources