IntroductionWhile searching for a good backup solution for my files, I found my old Ready NAS Duo v2 and thought it would be perfect for this, as it supports up to 4 TB of storage with two 3.5 inch hard drives. The only problem was that the original firmware of this device was outdated already several years ago. This would be critical security-wise for a device that is used to store partly sensitive data. So I started searching for a custom firmware which could give me the freedom I wanted for the NAS. Luckily, I found the website of a guy who ported the latest Debian to the NAS and was kind enough to post a detailed description of it. After altering the built config a bit I build the firmware for the NAS based on Debian.
The NAS got a 128 MD NAND-Flash Chip in-built which is not enough to store full Debian on it. Luckily there are still several ways to work around this. The easiest for me was putting the OS on an external USB stick with enough storage and create a cmd to autoboot from it.
Tails - Tails 3.14 is out
Step by Step
Make sure to backup all your data before following this guide.
1. Enable UART on Raspberry PI (skip if not needed)
If you have a Serial Dongle or any UART device that can read the serial input you can skip this step. The RPi has a UART interface on the GPIO (pins 8 TX, 10 RX) with which you can communicate with the NAS. Before it can do that we have to enable those pins and disable its own console so it won't interfere. sudo raspi-config -> 5 Interfacing Options -> P6 Serial -> No (for serial console) -> Yes (for serial hardware) should do the trick. Now reboot and you should be able to open a connection with minicom or screen and speed 115200 (sudo screen /dev/ttyS0 115200).
2. Connect to the serial interfaceRemove the sticker from the backside of the NAS and connect TX->RX, RX->TX, GND->GND. When plugging in the power cable you should see something similar like this in the serial console:
__ __ _ _ | \/ | __ _ _ ____ _____| | | | |\/| |/ _` | '__\ \ / / _ \ | | | | | | (_| | | \ V / __/ | | |_| |_|\__,_|_| \_/ \___|_|_| _ _ ____ _ | | | | | __ ) ___ ___ | |_ | | | |___| _ \ / _ \ / _ \| __| | |_| |___| |_) | (_) | (_) | |_ \___/ |____/ \___/ \___/ \__| ** MARVELL BOARD: DB-88F6282A-BP LE U-Boot 1.1.4 (Jun 29 2012 - 16:06:40) Marvell version: 3.4.27 Netgear version: Uboot-1_1_4-NetgearDUOV3-V1009 U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006D0120 Soc: MV88F1155 Rev 1 (DDR3) CPU running @ 1600Mhz L2 running @ 533Mhz SysClock = 533Mhz , TClock = 200Mhz DRAM unknown CAL tRP = 8 tRAS = 20 tRCD=8 DRAM CS base 0x00000000 size 256MB DRAM Total size 256MB 16bit width Addresses 8M - 0M are saved for the U-Boot usage. Mem malloc Initialization (8M - 7M): Done NAND:128 MB Flash: 0 kB CPU : Marvell Feroceon (Rev 1) Streaming disabled Write allocate disabled USB 0: host mode PEX 0: PCI Express Root Complex Interface PEX interface detected Link X1 Plug On and Power down, Please Switch On !
Turn it on and press a key in the serial console to stop the autoboot. Then you will see something like this:
Switch On ! Net: egiga0 [PRIME] Hit any key to stop autoboot: 0 Marvell>>
3. Booting kernel and Debian installer
Build or download the latest kernel and the debian installer.
Put them both on an usb stick, plug it into the NAS' front port and restart it with the whole procedure. Then find which USB port it is connected to with
usb start usb storage
Now set the bootcmd to start from the usb and load the uImage to the location 0x1200000 and uInitrd to 0x2000000.
set bootcmd usb start;fatload usb 0:1 0x1200000 /uImage;fatload usb 0:1 0x2000000 /uInitrd;bootm 1200000 200000 boot
Now you should get a screen like the following:
Set up debian as you normally would and select your desired install location. I picked the USB stick itself as the location for the main OS. Your USB stick should have at least 1 GB of storage and preferably should be sacrificable. Now, wait for the installation to finish.
Problems and troubleshootingUSB stick is not recognized Plug it into the front USB port as this one is directly connected to the mainboard. Try another USB stick as the NAS is very picky and some newer ones may not work with it. Make it cleaner For esthetics, I directly soldered it to the board. In my case, it was a USB Stick 2.0 so I decided to attach it at the front USB to spare the two USB 3.0 ports on the back. I know, this is by far no perfect soldering and gluing job but it works.
Bricked device If you still get an output on the serial port you might be able to unbrick the NAS with re-flashing the uboot image. Especially when you get stuck at Net: egiga0 [PRIME]. Get the latest uboot from the Netgear download site by extracting the RAIDiator file. Get kwboot (on Linux apt install u-boot-tools) and run kwboot -b uboot.bin -t /dev/ttyS0 -p (/dev/ttyS0 for RPi). Now turn the NAS on and it should boot the uboot image. Now abort the boot process with any key, load the uboot image from e.g. USB and erase/write the NAND with the image. (be careful to not turn it off after erasing the NAND as this could lead to permanent damage)
nand erase 0 0x180000 nand write 0x2000000 0 0x180000
SourcesDebian and upstream kernel on NETGEAR ReadyNAS Duo v2, http://natisbad.org/NAS/index.html (last visited Dec. 23, 2019). How to unbrick the Netgear Ready NAS Duo v2, https://forum.doozan.com/read.php?3,74954 (last visited Dec. 27, 2019).
NV+ V2 stuck at booting, https://community.netgear.com/t5/Using-your-ReadyNAS-in-Business/NV-V2-stuck-at-booting/td-p/1008743 (last visited Dec. 28, 2019).