Disclaimer: the information provided on this page is given as is, i.e. without warranty that you will not break your system following it. Additionally, do not expect to get support and warranty from NETGEAR if this happens.

Debian and grsec kernel on NETGEAR ReadyNAS 2120

After my work on the Duo v2 and 102 and , NETGEAR was kind enough to provide me with a ReadyNAS 2120 to play with. This page documents the work done in order to get mainline kernel support for the device and its various hardware parts, in order to be able to run a standard Debian and a grsec kernel on it. If you were interested in the RN104 but would have like a 1U version with more RAM and more horse power, then the RN2120 may be of interest.

On the contrary to the Duo v2 which is based on a Marvell Kirkwood SoC (88F6282 single core ARMv5TE @1.6GHz) and the RN102 and RN104 which are both based on the Marvell Armada 370 SoC (single core ARMv7 @1.2GHz), the ReadyNAS 2120 is based on the Marvell Armada XP (MV78230 dual core ARMv7 @1.2GHz). Nonetheless, it shares some hardware with its little brothers:

but also has

Here is the main table of contents for the page, with links to the various sections of the page.


Changelog i.e. work done

Work in progress, i.e. TODO list

Hardware Specs

This section is dedicated to the hardware specs of the NETGEAR ReadyNAS 2120. It is based on visual inspection of RN2120 main board (and LED/daughter board), completed with reading of NETGEAR 3.0.48 kernel sources and publicly available (read Google-gathered) information .

When available, additional information and software handling details are given for each hardware part. For instance, if you are looking for informations related to the fan controller, simply click the link above to get the details of what is used and how support is provided.

Each picture available on this page is a thumbnail of a larger picture. The larger one can be accessed by clicking the thumbnail.

If you are in a hurry looking for a specific info, you can use this table of contents to directly access information on a specific hardware part of the system or get an overview of what a NETGEAR ReadyNAS 2120 is made of.

Marvell Armada XP mv78230 - Dual core @1.GHz

Unlike its little brothers, the ReadyNAS 2120 is powered by a Marvell Armada XP mv 78230 SoC. This Armada XP flavour is a dual core running @1.2GHz. The SoC block diagram extracted from the product brief is reproduced below:

Also extracted from the datasheet is a

Hynix H5TQ2G83DFR_H9C 2GB RAM

The RN2120 comes with 2GB of soldered RAM, more specifically four Hynix H5TQ2G83DFR_H9C modules, as depicted below:

Here is a closer look at one of the Hynix chip:

CR2032

The RTC chip (Intersil ISL12057) is powered via a CR2032 battery, which is this time stored vertically.

Fresco Logic FL1009 XHCI Controller

The two USB 3.0 rear ports are connected to a Fresco Logic FL1009 XHCI controller. The controller is connected to the PCIe bus of Marvell Armada XP SoC.

GMT G751 Temperature Sensor and thermal watchdog

The RN2120 includes a GMT G751 Temperature sensor. It is connected on the I2C bus. The chip datasheet is identical to the one of the National Semiconductor LM75 chip. Both datasheets are provided here and here if you want to look for differences. Anyway, after a first submission of a complete driver for the G751, I ended only pushing changes to LM75 driver. In the end, G751 support will be in kernel 3.14.

GMT G762 Fan controller

The RN2120 includes 3 fans. Each of those is driven via a dedicated G762 fan controller connected to the I2C bus. This device was already on Duo v2, RN102 and RN104. I pushed support upstream a while ago now; it is fully supported.

Intersil ISL12057 RTC chip

As the RN102 and RN104, the RN2120 includes an Intersil ISL12057 RTC chip. It is connected on I2C bus. At time of writing, it is still not in upstream kernel, even though I have written and submitted a driver for it. The main reason it was not accepted is due to the fact that I am unable to test the IRQ handling part associated with the alarm, as the IRQ line of the chip is not connected to the SoC but to a power component of the NAS, in order to power it on when alarm rings.

Front button/LED daughter board

On the front of the NAS, from left to right, are a USB 2.0 port, the reset button, 4 LEDs (system error, ethernet interfaces status and activity) and the power button. Only the system error LED can be controlled from userland via the corresponding GPIO. The other ones are not connected to the SoC and provide their function w/o any outside interactions. The 2 buttons are connected to GPIO lines on the SoC, so that they can generate input events.

Marvell 88E1318 GbE PHY

The two GbE PHY connected to the SoC are Marvell 88E1318:

Four SATA disks front LEDs

At the bottom on the right of each disk tray is a red error LED. In practice, the associated LED is in fact located on the motherboard and the light is relayed via a guide/conduit. The LEDs are only available when a disk is present, and can be controlled via the usual GPIO interface, i.e. they are connected to GPIO lines of the SoC.

Marvell 88SE9170 SATA Controller

The ReadyNAS 2120 includes two Marvell 88SE9170 SATA Controllers. They each handle two of the four disks the device can host. Each of those chips are connected on the PCIe bus. One of the chip is depicted below.

Note that each controller gets its configuration from a SPI flash, described below.

If you wonder, the two eSATA ports at the rear of the device are provided by the two SATA ports of the SoC.

Macronix 25L4006E 4Mbit SPI Flash

The device has 2 Macronix 25L4006E 4Mbit SPI Flash. Each of those is directly connected to one of the Marvell 88SE9170 SATA Controller. It holds the controller configuration. The flash is not accessible from the SoC, i.e. its content cannot be read or modified.

Protechnic MGT4012XB-O20 40mmx40mm fans

Unlike all othe ReadyNAS model which inclde a single 92mmx92mm fan, the thickness of the RN2120 has made NETGEAR switch to 40mmx40mm fans. They put three of them in the device, each of those been controlled by a dedicated G762 fan controller. Thes Protechnic MGT4012XB-O20 fans have a macimum speed rotation of 8000RPM.

Here are a closer look at the fan:

And a view of the three, connected to their fan controllers:

128MB SKhynix H27U1G8F2BTR_BC NAND

The system boots on a 128 MB NAND. It finds there its u-boot and associated environment. This flash is also used to host the kernel image (uImage) and an uInitramfs or a rootfs.

Configuring custom actions for buttons

If you want to trigger custom actions using the power, backup and reset buttons, you can probably use this script as a basis.

Configuring alarm for poweroff and automatic reboot

Alarm IRQ pin (IRQ#2) of ISL12057 RTC chip is not directly connected to the SoC on RN102, RN104 and RN2120, but to a PMIC (TPS65251), handling powering of the device. The PMIC does not provide a way to report the status of the IRQ#2 pin. This is not a common design pattern on Linux and requires some specific kernel adaptation. This is the reason why alarm support (1a67e256dbd8, 298ff0122ab1, fd71493d6797) for those NAS took a bit longer than expected. If you are interested by the details, the commit messages and the code provides more information.

As also documented in alarm support commits, using the alarm feature now available on the device is very simple. Here is a straightforward example of how this can be done:

# echo `date '+%s' -d '+ 1 minutes'` > /sys/class/rtc/rtc0/wakealarm
# shutdown -h now

After having configured the alarm one minute in the future, and then having powered off the system, you should see it come back to life after a minute. Now, if you want to poweroff the device each night and have it come back say in the morning or in the afternoon, you simply need to create a crontab. This is left as an exercise for the reader.