A couple of years ago I managed to get a quite unknown NAS from Linksys: the MediaHub.
This device is available in 4 versions:
NMH-300: No disks
NMH-305: 1 x Seagate 500 GB disk
NMH-310: 2 x Seagate 500 GB disks
NMH-400: No disks
NMH-405: 1 x Seagate 500 GB disk
The only general difference between the 300 and 400 models is the little LCD screen and the cardreader which the 400 series have.
The system specs are:
CPU: Marvell Orion 88F5182 running at 400 MHz (ARMv5)
RAM: 128 Mb (2 x 64 Mb)
LAN: Marvell 88E1116 Gigabit
ROM: 1 x SST 39VF040 512 Kb holding uBoot and 1 x Samsung K9F1208U0C 64 Mb holding the filesystem / settings / kernel
USB: 1 x front and 1 x back
HDD: 2 x SATA300 connectors for a maximum of 4 Tb (2 x 2 Tb disks)
EXTRA: The NAS has a RTC and RTC battery installed, therefore it will keep track of the system date and time, even when the device is turned off, that is a luxury thing you don’t see much on a NAS! Also, the LED’s are controllable via GPIO. It also has a fan that is controlled by uBoot.
The bootloader used is uBoot as is always the case with Marvell boards. This one is identified as a NMS300 and running uBoot 1.1.9.
Modifications to uBoot are possible, but limited as with the LaCie version, you cannot alter the boocmd variable and there is no good way to get this device booting your own OS with the stock settings.
As the uBoot will check for a specific kernel image on a partition that may not be larger than 300MB (and holds the filesystem as well), modifications are limited. Also, if uBoot cannot locate the uImage on disk, it will start the setup script hold in the 64MB NAND chip and will wipe all contents from the disk.
While the limitation of the 2nd partition remains at 300MB, it’s possible to set the boot parameters hardcoded in the kernel and therefore bypassing the cmdline uBoot handles over to the kernel. This means that uBoot by default will still load the kernel from the 2nd partition, but since that partition only has to be used to store the uImage file, the size of 300MB would be enough!
Running Debian on this box is therefore no big issue anymore, but would still require serial access, because you have to finish the installation on the device itself. Also, a custom kernel has to be built, another post will be covering this soon.
The performance on the NAS is (for a device with this SoC) rather bad when using the stock Linksys software as it uses dm-raid to configure and setup the disks which is a cpu killer. The SoC is supposed to have a XOR engine for this kind of task, but it still seems to slow down the system as this engine is only used to speed up RAID5 calculations which this NAS cannot use.
Stock performance is about 8MB/sec for writing and around 11MB/sec for reading based on a reiser filesystem. Using RAID0 (softraid), this will go up around 2 / 3 MB/sec for the array.
When running the current Debian unstable the performance was cranked up to 13MB/sec for writing and 16MB/sec for reading on reiser as well, a great improvement! Using ext3 seemed to slow down the NAS to the speeds stated on stock software so it’s best not to use ext3 on this device. Using dm-raid on Debian has been tested, but did not result in a performance boost, so using RAID on a non-RAID optimized platform, especially for a slow CPU like this one, is not advised to use.