Skip to main content

Replace the OS on ReadyNAS Pro

What

ReadyNAS Pro Pioneer edition RNDP600E from NETGEAR is a SOHO NAS device. It's also a standard, Intel-based PC.

Why

The default operating system on the device (the queen of cheesy naming) RAIDiator is Debian Etch, discontinued in February 2010.

There are three major issues with that:

  • Security updates provided by the vendor are 'patchy' at best
  • Power management (cooling) has been implemented in a sub-optimal, kludgy way
  • Performance of the ancient kernel is below what the hardware can deliver
  • The device is 'locked-in' and any changes done outside of the Web GUI can make the device unbootable or malfunctioning; requiring restore to factory defaults
  • Netgear differentiates their products (Pioneer/Business) solely on software (iSCSI/AD/VLAN/Ethernet Failover) thus replacing the firmware on Pioneer Edition allows the owner to restore the artificially limited functionality.

Since I've been mostly unhappy with the way RAIDiator was put together, I decided to replace it with something more sustainable, namely CentOS 6.

How

ReadyNAS Pro is a bog-standard PC. It can and will run any modern operating system. You will need a small list of pre-requisites to replace the OS:

  • A USB keyboard (and optionally, a USB mouse)
  • A way to boot the installer -- USB optical drive (or a PXE boot infrastructure)
  • A VGA breakout cable

VGA Breakout cable

If you look closely, there is a breakout panel in shape of a D-15 VGA connector on the back of the unit. This corresponds with the 16-pin connector on the motherboard. Accidentally, it has the same pinout as the cheap nVidia graphics cards with so called TurboCache and a VGA connector on a little cable. If you don't own one (in a box, under the stairs), you can order one (XFX part: MA-BK01-LP1K) or make one:

You'll need a D-Sub 15pin female connector (VGA) and a 16-pin, 2-row motherboard connector. To reach the back of the unit mounting plate, you'll need at least 20cm of cable. Preferably a 14- or 16-wire ribbon that came with the motherboard connector. If adventurous enough, you should be able to hack one end off a 40-wire IDE cable.

Here's how a VGA breakout cable looks like, taken off a dud nVidia card:

ReadyNAS Pro VGA cable

Click on the picture to enlarge.

Updated layout from PC Cables (thanks to Stefan van der Eijk for the tip).

Pin Wiring
IDC16-Female HDDB15-Female 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 (Sometimes Blocked) 10 10 11 11 12 12 13 13 14 14 15 15 16 Open

BIOS Upgrade

To upgrade the CPU and memory, the unit needs to be running at least BIOS FLAME6-MB v2.0 (07/26/2010). This will allow for 8GB of RAM (2x4GB PC6400) and an Intel® Core™2 Duo Processor E7600. The binary provided by NetGear comes wrapped in their proprietary 'addon' format. Fortunately, it's easy to extract the original tarball.

Download the BIOS file (local copy):

# wget http://www.readynas.com/download/addons/x86/4.2/BIOS_Update_Package_0.5-x86.bin
--2014-03-01 12:31:35--  http://www.readynas.com/download/addons/x86/4.2/BIOS_Update_Package_0.5-x86.bin
Resolving www.readynas.com... 206.16.42.227
Connecting to www.readynas.com|206.16.42.227|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3026944 (2.9M) [application/octet-stream]
Saving to: `BIOS_Update_Package_0.5-x86.bin'

100%[===========================================================>] 3,026,944   1.25M/s   in 2.3s    

2014-03-01 12:31:37 (1.25 MB/s) - `BIOS_Update_Package_0.5-x86.bin' saved [3026944/3026944]

Extract it and check the md5sum:

# head -n 1 BIOS_Update_Package_0.5-x86.bin 
addon::name=BIOS_Update_Package,version=0.5,time=1336699935,size=3010560,md5sum=1a72de0097d80cf3838c391fb053b0b2,skipreboot=1,unencrypted=1,arch=x86,api=1
# ls -l BIOS_Update_Package_0.5-x86.bin 
-rw-r--r-- 1 root root 3026944 May 11  2012 BIOS_Update_Package_0.5-x86.bin
# dd if=BIOS_Update_Package_0.5-x86.bin of=BIOS_Update_Package_0.5-x86.tar bs=1 skip=$[ 3026944 - 3010560 ]
3010560+0 records in
3010560+0 records out
3010560 bytes (3.0 MB) copied, 5.0357 s, 598 kB/s
# md5sum BIOS_Update_Package_0.5-x86.tar 
1a72de0097d80cf3838c391fb053b0b2  BIOS_Update_Package_0.5-x86.tar

Unpack it:

# mkdir BIOS
# cd BIOS
# tar xvf ../BIOS_Update_Package_0.5-x86.tar
install.sh
remove.sh
addons.conf
files.tgz
# tar xzvf files.tgz
# mv opt/biosflash /opt/

Time to have a look at relevant bits of the install script (only the first line is your input, rest is the output of grep):

# grep -B2 biosflash install.sh 
#   - Todo: add check to only flash if newer.

ULTRA2BIOS=/opt/biosflash/RN_Ultra2_110211.ROM
ULTRA4BIOS=/opt/biosflash/RN_Ultra4_082311.ROM
ULTRA6BIOS=/opt/biosflash/RN_Ultra6_061010.ROM
NV6BIOS=/opt/biosflash/RN_NV6_072610.ROM
--

# // pre-flight checks
if [ ! -d /opt/biosflash ]; then
        echo " * missing BIOS images"; exit
fi
if [ ! -x /opt/biosflash/flashrom ]; then
--
if [ $DMI_BOARD = "ReadyNAS-NVX-V2" ]; then
        echo " * found Ultra 4 board, date: $DMI_DATE"
        /opt/biosflash/flashrom -c SST25VF016B -w $ULTRA4BIOS > /tmp/bios.flash
--
elif [ $DMI_BOARD = "FLAME6-2" ]; then
        echo " * found Ultra 6 board, date $DMI_DATE"
        /opt/biosflash/flashrom -c W25Q80 -w $ULTRA6BIOS > /tmp/bios.flash
--
elif [ $DMI_BOARD = "FLAME6-MB" ]; then
        echo " * found NV6 board, date $DMI_DATE"
        /opt/biosflash/flashrom -c W25x80 -w $NV6BIOS > /tmp/bios.flash
--
        echo " * found Ultra 2 board, date $DMI_DATE"
        # -c SST25VF016B | -c MX25L1605
        /opt/biosflash/flashrom -w $ULTRA2BIOS > /tmp/bios.flash

Check what version is installed:

# cat /sys/devices/virtual/dmi/id/product_version|cut -f2 -d" "
FLAME6-MB
# cat /sys/devices/virtual/dmi/id/product_version|cut -f1 -d" "
10/03/2008

Looks like for FLAME6-MB we need to install NV6BIOS (see extract from the install.sh above), here it is:

# ls -l /opt/biosflash/RN_NV6_072610.ROM
-rw-r--r-- 1 root root 1048576 Jul 27  2010 /opt/biosflash/RN_NV6_072610.ROM

This is when you want to be connected to a UPS:

# /opt/biosflash/flashrom -c W25x80 -w /opt/biosflash/RN_NV6_072610.ROM
flashrom v0.9.3-r1205 on Linux 3.7.5-1.el6.elrepo.x86_64 (x86_64), built with libpci 2.2.4-pre4, GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21), little endian
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
No coreboot table found.
Found chipset "Intel ICH8/ICH8R", enabling flash write... OK.
This chipset supports the following protocols: FWH,SPI.
Found chip "Winbond W25x80" (1024 KB, SPI) at physical address 0xfff00000.
Flash image seems to be a legacy BIOS. Disabling checks.
Writing flash chip... Erasing flash before programming... Erasing flash chip... SUCCESS.
done.
Programming flash... done.
COMPLETE.
Verifying flash... VERIFIED. 

Almost done, just reboot and check if everything's working. The fans may spin up to full speed on boot, just enter BIOS and adjust CPU fan management from Manual back to Thermal/55deg. Once the machine restarted, log in and check the BIOS date:

# cat /sys/devices/virtual/dmi/id/product_version|cut -f1 -d" "
07/26/2010

Notes

ReadyNAS is equipped with a 128MB, USB-connected (/dev/disk/by-path/pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0) boot drive. If you can keep your kernels down to 2-4 at a time, this is a perfect candidate for a /boot partition. Just don't let it overfill with old kernels.

Don't worry if your first SATA disk isn't detected by the BIOS at boot time. It works fine once the OS loads.

Using the built-in flash for /boot has another advantage. You can create arbitrarily-sized RAID6 for the OS (or multi-disk RAID1) next to the large RAID5 dedicated to bulk storage.

I strongly recommend XFS as the filesystem for bulk storage.

A reasonable partitioning scheme should look like this:

/dev/md0               /
/dev/sda1              /boot
/dev/readynas/bulk     /storage

/dev/sda is the built-in, bootable 128MB USB flash disk. /dev/md0 is a RAID6 of six 4GB partitions (16GB system space), there's a /dev/md1, a RAID6 or RAID10 comprising of six 1GB partitions (4-6GB swap) and /dev/md2 -- a RAID5 of six partitions spanning remaining space on all the drives for the actual bulk storage. A Physical Volume is then created on top of it with pvcreate /dev/md2 and later used for the LVM2 Volume Group / Logical Volume setup.

With regular GNU/Linux distributions, expansion can be achieved by replacing the disks one-by-one and rebuilding the array every time.

Steps to replace disks with larger ones (no downtime required!):

  1. Pull one disk out, cat /proc/mdstat will report it as faulty.
  2. Insert a new, unpartitioned replacement disk, dmesg will tell you what device (/dev/sdY) just got attached.
  3. Partition with gdisk (use GPT!) replicating your current setup but make the last partition maximum available size. Use type FD00 instead of the old FD.
  4. Depending on the number of md devices you have:
    1. mdadm -a /dev/mdX /dev/sdYZ
    2. repeat incrementing X and Z to re-add all partitions and so all arrays are made whole
  5. Wait for the arrays to rebuild monitoring it with watch -n 1 cat /proc/mdstat
  6. Repeat from 1 until you have replaced all drives.
  7. If you are using bitmap (you should!) remove it with mdadm --grow /dev/mdX -b none
  8. Extend md to use the free space on the partitions with mdadm --grow /dev/mdX --size max
  9. Wait for the newly allocated space to resync, re-add the bitmap with mdadm --grow /dev/mdX -b internal
  10. Extend the physical volume with pvresize /dev/mdX
  11. Extend the logical volume with lvextend -l100%VG /dev/your/logicalvolume
  12. Extend the filesystem with xfs_growfs /dev/your/logicalvolume

Note that the Volume Group does not require resizing as it will pick up the new size from the PV.

Memory can be upgraded using DDR2 667MHz, 240pin, PC6400, non-ECC DIMM (two slots). 2x2GB tested, 2x4GB reported to work on ReadyNAS forums. Standard configuration comes with a single, 1GB DIMM.

Unit-specific hardware

The front panel display and the 'Backup' buttons are accessible by means of a kernel module. They will build with make -C /usr/src/linux M=`pwd` modules but won't insert into any recent distribution kernels as they use sys_open and sys_write symbols which are not (and should not be!) exported. Patches welcome.

Power management works exceptionally well. ACPI takes care of the hysteresis loops of the fans and everything works quietly and cool.

CPU swap addendum

The following CPU upgrades have been tested:

* Dual Core, 65W, Intel(R) Core(TM)2 Duo CPU E7600 @ 3.06GHz

* Quad Core, 95W, Intel(R) Xeon(R) CPU X3230 @ 2.66GHz

Both with stock CPU cooler, the latter requires small tweaks to PWM2:

echo "2" > /sys/class/hwmon/hwmon1/device/pwm2_enable        # Temperature cruise mode
echo "1" > /sys/class/hwmon/hwmon1/device/pwm2_mode          # PWM mode
echo "50000" > /sys/class/hwmon/hwmon1/device/pwm2_target    # Try to cruise at this altitude
echo "52000" >/sys/class/hwmon/hwmon1/device/temp2_max
echo "50000" >/sys/class/hwmon/hwmon1/device/temp2_max_hyst
echo "6000" > /sys/class/hwmon/hwmon1/device/pwm2_stop_time
echo "2000" > /sys/class/hwmon/hwmon1/device/pwm2_tolerance
echo "32" > /sys/class/hwmon/hwmon1/device/pwm2_start_output
echo "1" > /sys/class/hwmon/hwmon1/device/pwm2_step_output
echo "32" > /sys/class/hwmon/hwmon1/device/pwm2_stop_output
echo "255" > /sys/class/hwmon/hwmon1/device/pwm2_max_output

Disclaimer

THIS INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. All trademarks mentioned herein belong to their respective owners. I do not warrant the accuracy or completeness of the information, text, graphics, links or other items on this page. I will accept no responsibility for damage to your equipment. The information is provided for educational purposes only. Follow at your own risk. By using this information for any purpose you acknowledge the above and agree not to hold me responsible for any damage, loss, or complication that may arise from its use.

Hardware information

PCI:

00:00.0 Host bridge: Intel Corporation 82Q963/Q965 Memory Controller Hub (rev 02)
00:02.0 VGA compatible controller: Intel Corporation 82Q963/Q965 Integrated Graphics Controller (rev 02)
00:1a.0 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4 (rev 02)
00:1a.1 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 02)
00:1a.7 USB controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 02)
00:1d.0 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 02)
00:1d.7 USB controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev f2)
00:1f.0 ISA bridge: Intel Corporation 82801HB/HR (ICH8/R) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02)
01:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 22)
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 22)

USB:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

CPU:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Pentium(R) Dual  CPU  E2160  @ 1.80GHz
stepping        : 13
cpu MHz         : 1795.816
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 
                  clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm 
                  constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor 
                  ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm dts
bogomips        : 3591.63
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Pentium(R) Dual  CPU  E2160  @ 1.80GHz
stepping        : 13
cpu MHz         : 1795.816
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 
                  clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm 
                  constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor 
                  ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm dts
bogomips        : 3590.82
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

DMI Decode:

SMBIOS 2.4 present.
27 structures occupying 1435 bytes.
Table at 0x000FCBF0.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: American Megatrends Inc.
        Version: 080014 
        Release Date: 07/26/2010
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 1024 kB
        Characteristics:
                ISA is supported
                PCI is supported
                PNP is supported
                APM is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                ESCD support is available
                Boot from CD is supported
                Selectable boot is supported
                BIOS ROM is socketed
                EDD is supported
                5.25"/1.2 MB floppy services are supported (int 13h)
                3.5"/720 kB floppy services are supported (int 13h)
                3.5"/2.88 MB floppy services are supported (int 13h)
                Print screen service is supported (int 5h)
                8042 keyboard services are supported (int 9h)
                Serial services are supported (int 14h)
                Printer services are supported (int 17h)
                CGA/mono video services are supported (int 10h)
                ACPI is supported
                USB legacy is supported
                LS-120 boot is supported
                ATAPI Zip drive boot is supported
                BIOS boot specification is supported
        BIOS Revision: 8.14

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: To Be Filled By O.E.M.
        Product Name: To Be Filled By O.E.M.
        Version: 07/26/2010 FLAME6-MB V2.0
        Serial Number: To Be Filled By O.E.M.
        UUID: 00020003-0004-0005-0006-000700080009
        Wake-up Type: Power Switch
        SKU Number: To Be Filled By O.E.M.
        Family: To Be Filled By O.E.M.

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
        Manufacturer: To be filled by O.E.M.
        Product Name: To be filled by O.E.M.
        Version: To be filled by O.E.M.
        Serial Number: To be filled by O.E.M.
        Asset Tag: To Be Filled By O.E.M.
        Features:
                Board is a hosting board
                Board is replaceable
        Location In Chassis: To Be Filled By O.E.M.
        Chassis Handle: 0x0003
        Type: Motherboard
        Contained Object Handles: 0

Handle 0x0003, DMI type 3, 21 bytes
Chassis Information
        Manufacturer: To Be Filled By O.E.M.
        Type: Desktop
        Lock: Not Present
        Version: To Be Filled By O.E.M.
        Serial Number: To Be Filled By O.E.M.
        Asset Tag: To Be Filled By O.E.M.
        Boot-up State: Safe
        Power Supply State: Safe
        Thermal State: Safe
        Security Status: None
        OEM Information: 0x00000000
        Height: Unspecified
        Number Of Power Cords: 1
        Contained Elements: 0

Handle 0x0004, DMI type 4, 35 bytes
Processor Information
        Socket Designation: CPU 1
        Type: Central Processor
        Family: Core 2 Duo
        Manufacturer: Intel            
        ID: 7A 06 01 00 FF FB EB BF
        Signature: Type 0, Family 6, Model 23, Stepping 10
        Flags:
                FPU (Floating-point unit on-chip)
                VME (Virtual mode extension)
                DE (Debugging extension)
                PSE (Page size extension)
                TSC (Time stamp counter)
                MSR (Model specific registers)
                PAE (Physical address extension)
                MCE (Machine check exception)
                CX8 (CMPXCHG8 instruction supported)
                APIC (On-chip APIC hardware supported)
                SEP (Fast system call)
                MTRR (Memory type range registers)
                PGE (Page global enable)
                MCA (Machine check architecture)
                CMOV (Conditional move instruction supported)
                PAT (Page attribute table)
                PSE-36 (36-bit page size extension)
                CLFSH (CLFLUSH instruction supported)
                DS (Debug store)
                ACPI (ACPI supported)
                MMX (MMX technology supported)
                FXSR (FXSAVE and FXSTOR instructions supported)
                SSE (Streaming SIMD extensions)
                SSE2 (Streaming SIMD extensions 2)
                SS (Self-snoop)
                HTT (Multi-threading)
                TM (Thermal monitor supported)
                PBE (Pending break enabled)
        Version: Intel(R) Core(TM)2 Duo CPU     E7600  @ 3.06GHz     
        Voltage: 1.3 V
        External Clock: 267 MHz
        Max Speed: 3066 MHz
        Current Speed: 3066 MHz
        Status: Populated, Enabled
        Upgrade: Socket LGA775
        L1 Cache Handle: 0x0005
        L2 Cache Handle: 0x0006
        L3 Cache Handle: 0x0007
        Serial Number: To Be Filled By O.E.M.
        Asset Tag: To Be Filled By O.E.M.
        Part Number: To Be Filled By O.E.M.

Handle 0x0005, DMI type 7, 19 bytes
Cache Information
        Socket Designation: L1-Cache
        Configuration: Enabled, Not Socketed, Level 1
        Operational Mode: Write Back
        Location: Internal
        Installed Size: 64 kB
        Maximum Size: 64 kB
        Supported SRAM Types:
                Other
        Installed SRAM Type: Other
        Speed: Unknown
        Error Correction Type: Parity
        System Type: Data
        Associativity: 8-way Set-associative

Handle 0x0006, DMI type 7, 19 bytes
Cache Information
        Socket Designation: L2-Cache
        Configuration: Enabled, Not Socketed, Level 2
        Operational Mode: Write Back
        Location: Internal
        Installed Size: 3072 kB
        Maximum Size: 3072 kB
        Supported SRAM Types:
                Other
        Installed SRAM Type: Other
        Speed: Unknown
        Error Correction Type: Single-bit ECC
        System Type: Unified
        Associativity: Other

Handle 0x0007, DMI type 7, 19 bytes
Cache Information
        Socket Designation: L3-Cache
        Configuration: Disabled, Not Socketed, Level 3
        Operational Mode: Unknown
        Location: Internal
        Installed Size: 0 kB
        Maximum Size: 0 kB
        Supported SRAM Types:
                Unknown
        Installed SRAM Type: Unknown
        Speed: Unknown
        Error Correction Type: Unknown
        System Type: Unknown
        Associativity: Unknown

Handle 0x0008, DMI type 5, 24 bytes
Memory Controller Information
        Error Detecting Method: 64-bit ECC
        Error Correcting Capabilities:
                None
        Supported Interleave: One-way Interleave
        Current Interleave: One-way Interleave
        Maximum Memory Module Size: 4096 MB
        Maximum Total Memory Size: 16384 MB
        Supported Speeds:
                Other
        Supported Memory Types:
                DIMM
                SDRAM
        Memory Module Voltage: 3.3 V
        Associated Memory Slots: 4
                0x0009
                0x000A
                0x000B
                0x000C
        Enabled Error Correcting Capabilities:
                None

Handle 0x0009, DMI type 6, 12 bytes
Memory Module Information
        Socket Designation: DIMM0
        Bank Connections: 0 1
        Current Speed: Unknown
        Type: DIMM SDRAM
        Installed Size: 2048 MB (Double-bank Connection)
        Enabled Size: 2048 MB (Double-bank Connection)
        Error Status: OK

Handle 0x000A, DMI type 6, 12 bytes
Memory Module Information
        Socket Designation: DIMM1
        Bank Connections: 2 3
        Current Speed: Unknown
        Type: DIMM SDRAM
        Installed Size: Not Installed
        Enabled Size: Not Installed
        Error Status: OK

Handle 0x000B, DMI type 6, 12 bytes
Memory Module Information
        Socket Designation: DIMM2
        Bank Connections: 4 5
        Current Speed: Unknown
        Type: DIMM SDRAM
        Installed Size: 2048 MB (Double-bank Connection)
        Enabled Size: 2048 MB (Double-bank Connection)
        Error Status: OK

Handle 0x000C, DMI type 6, 12 bytes
Memory Module Information
        Socket Designation: DIMM3
        Bank Connections: 6 7
        Current Speed: Unknown
        Type: DIMM SDRAM
        Installed Size: Not Installed
        Enabled Size: Not Installed
        Error Status: OK

Handle 0x000D, DMI type 13, 22 bytes
BIOS Language Information
        Language Description Format: Abbreviated
        Installable Languages: 1
                en|US|iso8859-1
        Currently Installed Language: en|US|iso8859-1

Handle 0x000E, DMI type 15, 35 bytes
System Event Log
        Area Length: 4 bytes
        Header Start Offset: 0x0000
        Header Length: 2 bytes
        Data Start Offset: 0x0002
        Access Method: Indexed I/O, one 16-bit index port, one 8-bit data port
        Access Address: Index 0x046A, Data 0x046C
        Status: Invalid, Not Full
        Change Token: 0x00000000
        Header Format: No Header
        Supported Log Type Descriptors: 6
        Descriptor 1: End of log
        Data Format 1: OEM-specific
        Descriptor 2: End of log
        Data Format 2: OEM-specific
        Descriptor 3: End of log
        Data Format 3: OEM-specific
        Descriptor 4: End of log
        Data Format 4: OEM-specific
        Descriptor 5: End of log
        Data Format 5: OEM-specific
        Descriptor 6: End of log
        Data Format 6: OEM-specific

Handle 0x000F, DMI type 16, 15 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: None
        Maximum Capacity: 4 GB
        Error Information Handle: Not Provided
        Number Of Devices: 4

Handle 0x0010, DMI type 19, 15 bytes
Memory Array Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000FFFFFFFF
        Range Size: 4 GB
        Physical Array Handle: 0x000F
        Partition Width: 4

Handle 0x0011, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x000F
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 2048 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM0
        Bank Locator: BANK0
        Type: SDRAM
        Type Detail: Synchronous
        Speed: Unknown
        Manufacturer: Manufacturer0
        Serial Number: SerNum0
        Asset Tag: AssetTagNum0
        Part Number: PartNum0

Handle 0x0012, DMI type 20, 19 bytes
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x0007FFFFFFF
        Range Size: 2 GB
        Physical Device Handle: 0x0011
        Memory Array Mapped Address Handle: 0x0010
        Partition Row Position: 1
        Interleaved Data Depth: 1

Handle 0x0013, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x000F
        Error Information Handle: Not Provided
        Total Width: Unknown
        Data Width: Unknown
        Size: No Module Installed
        Form Factor: DIMM
        Set: None
        Locator: DIMM1
        Bank Locator: BANK1
        Type: Unknown
        Type Detail: Unknown
        Speed: Unknown
        Manufacturer: Manufacturer1
        Serial Number: SerNum1
        Asset Tag: AssetTagNum1
        Part Number: PartNum1

Handle 0x0014, DMI type 20, 19 bytes
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000000003FF
        Range Size: 1 kB
        Physical Device Handle: 0x0013
        Memory Array Mapped Address Handle: 0x0010
        Partition Row Position: 1
        Interleaved Data Depth: 1

Handle 0x0015, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x000F
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 2048 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM2
        Bank Locator: BANK2
        Type: SDRAM
        Type Detail: Synchronous
        Speed: Unknown
        Manufacturer: Manufacturer2
        Serial Number: SerNum2
        Asset Tag: AssetTagNum2
        Part Number: PartNum2

Handle 0x0016, DMI type 20, 19 bytes
Memory Device Mapped Address
        Starting Address: 0x00080000000
        Ending Address: 0x000FFFFFFFF
        Range Size: 2 GB
        Physical Device Handle: 0x0015
        Memory Array Mapped Address Handle: 0x0010
        Partition Row Position: 1
        Interleaved Data Depth: 1

Handle 0x0017, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x000F
        Error Information Handle: Not Provided
        Total Width: Unknown
        Data Width: Unknown
        Size: No Module Installed
        Form Factor: DIMM
        Set: None
        Locator: DIMM3
        Bank Locator: BANK3
        Type: Unknown
        Type Detail: Unknown
        Speed: Unknown
        Manufacturer: Manufacturer3
        Serial Number: SerNum3
        Asset Tag: AssetTagNum3
        Part Number: PartNum3

Handle 0x0018, DMI type 20, 19 bytes
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000000003FF
        Range Size: 1 kB
        Physical Device Handle: 0x0017
        Memory Array Mapped Address Handle: 0x0010
        Partition Row Position: 1
        Interleaved Data Depth: 1

Handle 0x0019, DMI type 32, 20 bytes
System Boot Information
        Status: No errors detected

Handle 0x001A, DMI type 127, 4 bytes
End Of Table

Note that only two DIMM slots are accessible.