This is an automated archive made by the Lemmit Bot.

The original was posted on /r/homelab by /u/CivilizationPhazeIII on 2024-12-29 18:55:10+00:00.


Following up on the little disaster from my previous post, I’ve successfully migrated an old Synology NAS (216+II) and RPi4 to a very low powered little server. The NAS itself will be used as an offsite backup, replacing an even older Synology NAS (which I convinced myself was in need for replacement so I could live with the money I’ve just spent on this build).

Goal

The main goal was to replace both NAS and RPi4 into one system with roughly the same power usage but with some upgrades as well:

  • I wanted to move away from Synology Hybrid Filessytem to ZFS
  • Use of ECC memory (I know, some people might get emotional over this ;-) )
  • Equally low or even lower power usage (this became somewhat of an obsession)
  • Mirrored SSD disk for hosting Nextcloud (it is now a single SSD in the Pi but arguably the most used in my current home network)
  • Barebones Ubuntu server with a GUI (serving as a low powered desktop if I don’t want to startup the waaaay to power-hungry gaming PC standing next to it)
  • Silent

Finding the parts

Building an ultra low powered NAS / Server with ECC is not an easy task. Or at least not if you’re going Intel based. And to my knowledge that still gives me the best reasonable chance to go into sub 10W figures for an idling system. I’ve used to get some inspiration.

Since intel has a strange relation with consumer CPU’s that have ECC enabled, I ended up searching for an I3-9100 and motherboard with C246 Chipset. This is plenty enough powerful for our use case. Best part is that there are still some new C246 LGA1151 boards available.

I’ve opted for the industrial Fujitsu / Kontron D3641-S board, which has 6 SATA ports, an NVMe slot, multiple PCIe slots and 2xGb NIC’s (different chips). All these extra’s are nice but most important are the 6 SATA ports.

The rest of the components were relatively easy to find. The case is a little uATX case (InterTech IM-1) that I specifically picked because it was not as high since the PSU (if used) is placed inside the case. All components used:

  • Kontron D3641-S uATX industrial motherboard
  • Intel i3 9100 (reused)
  • DC to DC ATX powersupply (Bicker DC161W)
  • Samsung 870 EVO SSD’s (2 mirrored, 1 for Linux boot, more on that later)
  • Samsung 16GB DDR4 ECC RAM
  • WD Red Plus 6TB HDD’s (reused from synology)
  • Inter-Tech IM-1 case

The build

First of all: nice looking case! I’ve changed the blue and red LED’s for green and yellow (i cannot stand blue lights in electronics :-) )

Computer case

The inners of the case. Note the little DC-DC converter I’ve added on the top right corner. This is a custom design from a German company called Bicker. Has some high-end components and high enough power capacity (160W).

Inners

The HDD’s are mounted on some 3D printed brackets to offset the stack of HDD’s to the side. Although I do like the case, the included mounting points are kinda all over the place. The drives themselves are supported using a bracket from printables (HDD stackers).

HDD stack

Oh and I prefer WAGO connectors over the MOLEX connector for powering these drives. Might redo that wiring but for now it’s good.

System

I mainly use it for SMB / NFS shares, Nextcloud instances, some docker containers, streaming etc. Really not that impressive. I figured I could just install barebones Ubuntu (server) with a Desktop Environment. That makes this a perfect little computer to use instantly since it is already powered on all the time. The DE doesn’t give any significant overhead in memory or power usage.

The system has two ZFS pools: one HDD pool for static data like photo’s and video’s etc. and an SSD pool for Nextcloud. I’ve could have opted for a caching disk for the HDD’s but for now this is how I have set this up (would that be something to reconsider?)

All important information is encrypted using native ZFS encryption with automatic mounting on startup. I’m not too worried about storing plain encryption keys on the system since these are all on the (encrypted) boot volume. The thing isn’t exposed to the internet.

Power tuning and C-states

First of all, the CPU must be enabled to use packaged C-states. Luckily, this setting was available in the bios. Powering for the first time already gave me an idea about the efficiency of the system. Without any tuning, I managed to idle at 20 to 30 watts on the outlet (including some older Samsung disks). The system didn’t go into lower powerstates than C3, which was kinda disappointing.

Using , I got some idea about which components were preventing deeper power states. For anyone interested in low powered builds, following command nicely showed me which components weren’t using ASPM and are therefore preventing deeper power states:

sudo lspci -vv | awk '/ASPM/{print $0}' RS= | grep --color -P '(^[a-z0-9:.]+|ASPM )'

My system showed that ASPM was disabled for one of the NIC’s (i210AT Intel chipset) and the originally planned Western Digital NVMe drive. Unfortunately it is pretty hard to get ASPM switched on if your system doesn’t recognize or support this.

Fortunately, this board has two Gb network ports with different chipsets, so disabling the i210 Intel one ‘fixed’ that… For the NVMe drive, I didn’t find any solution so I ditched that and went with another SSD for Ubuntu instead. Figured that this will not make any difference in real-life performance either way.

The WD drives are spinning down using hd-idle (instead of hdparm), which is also available from the Ubuntu repositories.

Final figures are 7 watts with HDD’s on standby and 17 watts spinning, measured from the outlet.

Conclusion

Had fun building this little low powered server! Hope this is useful for anyone that wants to do this as well. It isn’t perfect and probably won’t fit all the use cases of everybody but it serves me well!