Linkstation LS220D

Stock Firmware Installation
Restoring_Stock_Firmware_without_TFTP

Install from built in NAND
The diskless (LS220DE) has a copy of the firmware stored in its NAND-flash* The firmware can be loaded following the Quickstart Guide for this model.

Custom Firmware/Operating System installation
Installing Debian on Armada-370 Devices

Device Notes
Many of the Linkstation models only include the NAND Flash for the diskless models, I have not yet been able to confirm whether this is the case for the LS220

Serial Console
To access the 3.3v UART serial console resistor R150 and R115 must be removed. The location of the connections can be seen in the picture below.



Credit: @squarecode

Disassembly
Remove the 3 screws on the bottom of the device and the two screws on the inside right side, then carefully pry the pieces apart. This is not easy.

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 Wed Dec 20 15:00:32 JST 2017 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 07:f4:7f:43:50:00 >>>>>>>Tag MAC 26:2d:51:ec:af:84 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 mtdparts=armada-nand:0x2000000( boot),0x1e000000(rootfs) 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-- JSMT370 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  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) SGI XFS with ACLs, security attributes, large block/inode numbers, no debug enabled 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 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
 * BUFFALO Disable Command Queuing Function [sata_mv sata_mv.0] **

SPI Serial flash detected @ 0xf0000000, 1024KB (16sec x 64KB) armada-nand armada-nand.0: Initialize HAL based NFC in 8bit mode with DMA Disabled using BCH 4bit ECC NAND device: Manufacturer ID: 0x98, Chip ID: 0xdc (Toshiba NAND 512MiB 3,3V 8-bit) Bad block table found at page 262080, version 0x01 Bad block table found at page 262016, version 0x01 2 cmdlinepart partitions found on MTD device armada-nand Creating 2 MTD partitions on "armada-nand": 0x000000000000-0x000002000000 : "boot" 0x000002000000-0x000020000000 : "rootfs" 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 2007-11-01 07:36:51 UTC (1193902611) ata1: SATA link up 3.0 Gbps (SStatus 123 SControl F300) ata1.00: ATA-8: KINGSTON SNV425S264GB, C091126a, max UDMA/100 ata1.00: 125045424 sectors, multi 16: LBA48 ata1.00: configured for UDMA/100 scsi 0:0:0:0: Direct-Access    ATA      KINGSTON SNV425S C091 PQ: 0 ANSI: 5 sd 0:0:0:0: [sda] 125045424 512-byte logical blocks: (64.0 GB/59.6 GiB) sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sda: sda1 sda2 sda3 sda4 sda5 sda6 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): mounted filesystem with writeback data mode md: md2 stopped. md: bind bio: create slab  at 1 md/raid1:md2: active with 1 out of 2 mirrors md2: detected capacity change from 0 to 1023410176 md: md1 stopped. md: bind md/raid1:md1: active with 1 out of 2 mirrors md1: detected capacity change from 0 to 5114888192 md: md0 stopped. md: bind md/raid1:md0: active with 1 out of 2 mirrors md0: detected capacity change from 0 to 1023868928 md0: unknown partition table kjournald starting. Commit interval 5 seconds EXT3-fs (md0): using internal journal EXT3-fs (md0): mounted filesystem with writeback data mode md1: unknown partition table kjournald starting. Commit interval 5 seconds EXT3-fs (md1): using internal journal EXT3-fs (md1): mounted filesystem with writeback data mode kjournald starting. Commit interval 5 seconds EXT3-fs (md1): using internal journal EXT3-fs (md1): mounted filesystem with writeback data mode md2: unknown partition table Adding 999420k swap on /dev/md2. Priority:-1 extents:1 across:999420k kjournald starting. Commit interval 5 seconds EXT3-fs (md0): using internal journal EXT3-fs (md0): 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 md: md101 stopped. md: bind md/raid1:md101: active with 1 out of 2 mirrors created bitmap (1 pages) for device md101 md101: bitmap initialized from disk: read 1/1 pages, set 6 of 668 bits md101: detected capacity change from 0 to 44798181376 md101: unknown partition table XFS (md101): Mounting Filesystem XFS (md101): Ending clean mount 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 udevd[3997]: 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 eth1: stopped eth1: link up eth1: started

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 ethaddr=00:50:43:7f:f4:07 ethmtu=1500 ethprime=egiga1 failbootcmd=bootfail 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 mtdids=nand0=armada-nand mtdparts=mtdparts=armada-nand:0x2000000(boot),0x1e000000(rootfs) mvNetConfig=mv_net_config=1,(00:50:43:11:11:11,0:1:2:3:4),mtu=1500 nandEcc=1bit nandbootcmd=ubi part boot; ubifsmount boot; ubifsload 0x1200000 /$kernel; ubifsload 0x2600000 /$initrd; setenv bootsystem nandboot=yes; run bootcommon netbsd_en=no netmask=255.255.255.0 netretry=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="2014/01/28" 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 eth1addr=84:AF:EC:XX:XX:XX deviceid=DZObJJMXXXXXXXXXXXXXXXXX SerialNo=XXXXXXXXXXXXXXX EnableNandBoot=1

Buffalo Resources

 * Product Description
 * Manuals, Firmware, etc