Today I will write about silent fanless FreeBSD desktop or server computer … or NAS … or you name it, it can have multiple purposes. It also very low power solution, which also means that it will not overheat. Silent means no fans at all, even for the PSU. The format of the system should also be brought to minimum, so Mini-ITX seems best solution here.
I also made two follow ups to this article:
I have chosen Intel based solutions as they are very low power (6-10W), if you prefer AMD (as I often do) the closest solution in comparable price and power is Biostar A68N-2100 motherboard with AMD E1-2100 CPU and 9W power. Of course AMD has even more low power SoC solutions but finding the Mini-ITX motherboard with decent price is not an easy task. For comparision Intel has lots of such solutions below 6W whose can be nicely filtered on the ark.intel.com page. Pity that AMD does not provide such filtration for their products. I also chosen AES instructions as storage encryption (GELI on FreeBSD) today seems as obvious as HTTPS for the web pages.
Here is how the system look powered up and working.
This motherboard uses Intel J3355 SoC which uses 10W and has AES instructions. It has two cores at your disposal but it also supports VT-x and EPT extensions so you can even run Bhyve on it.
Now, an example system would look like that one below, here are the components with their prices.
$49 CPU/Motherboard ASRock J3355B-ITX Mini-ITX $14 RAM Crucial 4 GB DDR3L 1.35V (low power) $17 PSU 12V 160W Pico (internal) $11 PSU 12V 96W FSP (external) $5 USB 2.0 Drive 16 GB ADATA $4 USB Wireless 802.11n $100 TOTAL
The PSU 12V 160W Pico (internal) and PSU 12V 96W FSP can be purchased on aliexpress.com or ebay.com for example, at least I got them there.
Here is the 12V 160W Pico (internal) PSU and its optional additional cables to power the optional HDDs. If course its one SATA power and one MOLEX power so additional MOLEX-SATA power adapter for about 1$ would be needed.
Here is the 12V 96W FSP (external) PSU without the power cord.
This is still without a case, I currently have SilverStone SG05 (today I would probably buy something else) which cost me about $100 but there are cheaper solutions with similar features. If you would like to use two 2.5 drives for even low power and noise as ZFS mirror, then the Inter-Tech ITX-601 case seems far more better as it also comes with the silent PSU.
The SilverStone SG05 case with ‘loud’ PSU.
The Inter-Tech ITX-601 case with silent PSU.
With the Inter-Tech ITX-601 case the components and their prices would look like that.
$49 CPU/Motherboard ASRock J3355B-ITX Mini-ITX $14 RAM Crucial 4 GB DDR3L 1.35V (low power) $50 CASE Inter-Tech ITX-601 (comes with PSU) $5 USB 2.0 Drive 16 GB ADATA C008 $4 USB Wireless 802.11n $122 TOTAL
Of course if ‘you wanna go pro‘ there are great cases such as Supermicro 721TQ-250B which is also used by FreeNAS Mini appliance and SilverStone CS01-HS with disks loaded from top, but they both cost $160 without the PSU.
The Supermicro 721TQ-250B case.
The SilverStone CS01-HS case.
The RAM vendor is not important here, the more important is to get the low power DDR3 memory – the DDR3L as it takes less power.
The boring RAM stick itself.
I have used USB 2.0 Drive 16 GB ADATA C008 for system drive but if you are going to buy one, the I would get USB 2.0 Drive Sandisk Cruzer Fit 16 GB as it barely gets out of the port or even two of them for the ZFS mirror for the system if its critical.
The Sandisk Cruzer Fit flash.
I also used tiny USB WiFi stick which is the size of Sandisk Cruzer Fit.
This gives as total silent fanless system price of about $120. Its about ONE TENTH OF THE COST of the cheapest FreeNAS hardware solution available – the FreeNAS Mini (Diskless) costs $1156 also without disks.
I have tried FreeBSD 12.0-CURRENT r331740 on this box, but the upcoming FreeBSD 11.2-RELEASE (currently at RC1 stage) would do as much well. Below is the
dmesg(8) console output of system boot on this machine.
Copyright (c) 1992-2018 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 12.0-CURRENT #0 r331740: Thu Mar 29 21:24:24 UTC 2018 email@example.com:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 FreeBSD clang version 6.0.0 (tags/RELEASE_600/final 326565) (based on LLVM 6.0.0) WARNING: WITNESS option enabled, expect reduced performance. VT(efifb): resolution 1024x768 CPU: Intel(R) Celeron(R) CPU J3355 @ 2.00GHz (1996.89-MHz K8-class CPU) Origin="GenuineIntel" Id=0x506c9 Family=0x6 Model=0x5c Stepping=9 Features=0xbfebfbff Features2=0x4ff8ebbf AMD Features=0x2c100800 AMD Features2=0x101 Structured Extended Features=0x2294e283 XSAVE Features=0xf VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID,VID,PostIntr TSC: P-state invariant, performance statistics real memory = 4294967296 (4096 MB) avail memory = 3696037888 (3524 MB) Event timer "LAPIC" quality 600 ACPI APIC Table: WARNING: L1 data cache covers fewer APIC IDs than a core (0 < 1) FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs FreeBSD/SMP: 1 package(s) x 2 core(s) random: unblocking device. ioapic0 irqs 0-119 on motherboard SMP: AP CPU #1 Launched! Timecounter "TSC" frequency 1996886000 Hz quality 1000 random: entropy device external interface netmap: loaded module [ath_hal] loaded module_register_init: MOD_LOAD (vesa, 0xffffffff81034600, 0) error 19 random: registering fast source Intel Secure Key RNG random: fast provider: "Intel Secure Key RNG" kbd1 at kbdmux0 nexus0 cryptosoft0: on motherboard acpi0: on motherboard unknown: I/O range not supported cpu0: on acpi0 cpu1: on acpi0 attimer0: port 0x40-0x43,0x50-0x53 irq 0 on acpi0 Timecounter "i8254" frequency 1193182 Hz quality 0 Event timer "i8254" frequency 1193182 Hz quality 100 atrtc0: port 0x70-0x77 on acpi0 atrtc0: Warning: Couldn't map I/O. atrtc0: registered as a time-of-day clock, resolution 1.000000s Event timer "RTC" frequency 32768 Hz quality 0 hpet0: iomem 0xfed00000-0xfed003ff irq 8 on acpi0 Timecounter "HPET" frequency 19200000 Hz quality 950 Event timer "HPET" frequency 19200000 Hz quality 550 Event timer "HPET1" frequency 19200000 Hz quality 440 Event timer "HPET2" frequency 19200000 Hz quality 440 Event timer "HPET3" frequency 19200000 Hz quality 440 Event timer "HPET4" frequency 19200000 Hz quality 440 Event timer "HPET5" frequency 19200000 Hz quality 440 Event timer "HPET6" frequency 19200000 Hz quality 440 Timecounter "ACPI-fast" frequency 3579545 Hz quality 900 acpi_timer0: port 0x408-0x40b on acpi0 pcib0: port 0xcf8-0xcff on acpi0 pci0: on pcib0 vgapci0: port 0xf000-0xf03f mem 0x90000000-0x90ffffff,0x80000000-0x8fffffff irq 19 at device 2.0 on pci0 vgapci0: Boot video device hdac0: mem 0x91210000-0x91213fff,0x91000000-0x910fffff irq 25 at device 14.0 on pci0 pci0: at device 15.0 (no driver attached) ahci0: port 0xf090-0xf097,0xf080-0xf083,0xf060-0xf07f mem 0x91214000-0x91215fff,0x91218000-0x912180ff,0x91217000-0x912177ff irq 19 at device 18.0 on pci0 ahci0: AHCI v1.31 with 2 6Gbps ports, Port Multiplier supported ahcich0: at channel 0 on ahci0 ahcich1: at channel 1 on ahci0 pcib1: irq 22 at device 19.0 on pci0 pci1: on pcib1 pcib2: irq 20 at device 19.2 on pci0 pci2: on pcib2 re0: port 0xe000-0xe0ff mem 0x91104000-0x91104fff,0x91100000-0x91103fff irq 20 at device 0.0 on pci2 re0: Using 1 MSI-X message re0: ASPM disabled re0: Chip rev. 0x4c000000 re0: MAC rev. 0x00000000 miibus0: on re0 rgephy0: PHY 1 on miibus0 rgephy0: none, 10baseT, 10baseT-FDX, 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow, 1000baseT-FDX, 1000baseT-FDX-master, 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow re0: Using defaults for TSO: 65518/35/2048 re0: Ethernet address: 70:85:c2:xx:xx:xx re0: netmap queues/slots: TX 1/256, RX 1/256 xhci0: mem 0x91200000-0x9120ffff irq 17 at device 21.0 on pci0 xhci0: 32 bytes context size, 64-bit DMA usbus0 on xhci0 usbus0: 5.0Gbps Super Speed USB v3.0 isab0: at device 31.0 on pci0 isa0: on isab0 acpi_button0: on acpi0 acpi_tz0: on acpi0 ppc1: port 0x378-0x37f,0x778-0x77f irq 5 drq 3 on acpi0 ppc1: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc1: FIFO with 16/16/9 bytes threshold ppbus0: on ppc1 lpt0: on ppbus0 lpt0: Interrupt-driven port ppi0: on ppbus0 uart0: port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 uart1: port 0x2f8-0x2ff irq 3 on acpi0 atkbdc0: at port 0x60,0x64 on isa0 atkbd0: irq 1 on atkbdc0 kbd0 at atkbd0 atkbd0: [GIANT-LOCKED] atkbdc0: non-PNP ISA device will be removed from GENERIC in FreeBSD 12. est0: on cpu0 est1: on cpu1 ZFS filesystem version: 5 ZFS storage pool version: features support (5000) Timecounters tick every 1.000 msec hdacc0: at cad 0 on hdac0 hdaa0: at nid 1 on hdacc0 pcm0: at nid 21 and 24,26 on hdaa0 pcm1: at nid 20 and 25 on hdaa0 pcm2: at nid 27 on hdaa0 hdacc1: at cad 2 on hdac0 hdaa1: at nid 1 on hdacc1 pcm3: at nid 3 on hdaa1 ugen0.1: at usbus0 uhub0: on usbus0 Trying to mount root from zfs:zroot/ROOT/default ... Root mount waiting for: usbus0 WARNING: WITNESS option enabled, expect reduced performance. uhub0: 15 ports with 15 removable, self powered Root mount waiting for: usbus0 Root mount waiting for: usbus0 ugen0.2: at usbus0 umass0 on uhub0 umass0: on usbus0 umass0: SCSI over Bulk-Only; quirks = 0x8100 umass0:2:0: Attached to scbus2 da0 at umass-sim0 bus 0 scbus2 target 0 lun 0 da0: Removable Direct Access SPC-2 SCSI device da0: Serial Number 27A2100480550067 da0: 40.000MB/s transfers da0: 14800MB (30310400 512 byte sectors) da0: quirks=0x2 Root mount waiting for: usbus0 ugen0.3: at usbus0 Root mount waiting for: usbus0 ugen0.4: at usbus0 uhub1 on uhub0 uhub1: on usbus0 Root mount waiting for: usbus0 Root mount waiting for: usbus0 uhub1: 4 ports with 3 removable, bus powered ugen0.5: at usbus0 ukbd0 on uhub1 ukbd0: on usbus0 kbd2 at ukbd0 re0: link state changed to DOWN rtwn0 on uhub0 rtwn0: on usbus0 rtwn0: MAC/BB RTL8188CUS, RF 6052 1T1R
I haven’t tried the HDMI output but VGA output both in console and X11 worked properly, same for sound, onboard NIC and rest of the provided interfaces. To connect to the Internet and fetch packages I used tiny USB WiFi stick based on the RTL8188CUS chip, also worked very good, here are details from the console about the USB WiFi stick from
ugen0.5: at usbus0 rtwn0 on uhub0 rtwn0: on usbus0 rtwn0: MAC/BB RTL8188CUS, RF 6052 1T1R
If it will gonna serve as NAS when what storage should You attach to it? Depends on how much storage space you need, if You can fit in 5 TB (which is quite a lot anyway) You can still use that Inter-Tech ITX-601 case as Seagate provides 5 TB 2.5 drives with BarraCuda ST5000LM000 model.
I currently use two 4 TB 3.5 drives as they are cheaper then the 2.5 drives, but that of course requires bigger case and more power and also makes more noise.
To keep the system totally silent You would of course have to use SSD drives for the storage, but that would be very expensive. For example getting two 1 TB 2.5 SSD drives to mirror them would cost you about $400. For the same price you could get two 5 TB 2.5 HDD drives. ONE FIFTH OF THE COST comparing to SSD drives. Or two 8 TB 3.5 HDD drives. ONE EIGHTH OF THE COST comparing to SSD drives. As you can see total silence comes at a price 😉
As these motherboard come with PCI-Express slot you can expand the features even more, for example with 10 GE card or additional SATA controller. When I used the older solution I used that slot for the USB 3.0 ports card extension.
These kinds of motherboards often come with internal Mini PCI-Express ports which are ideal for wireless devices or SSD drives.
You can put plain FreeBSD on top of it or Solaris/Illumos distribution OmniOSce which is server oriented. You can use prebuilt NAS solution based on FreeBSD like FreeNAS, NAS4Free, ZFSguru or even Solaris/Illumos based storage with napp-it appliance.
You can of course stick with one SSD or USB flash for the system and use it as a desktop with install like in the FreeBSD Desktop – Part 2 – Install article, but in that case I would suggest getting even smaller case then the ones described here.
With WiFi card that supports Host AP mode (most Atheros devices) You can also turn it into a safe wireless access point on a HardenedBSD system, or even OpenBSD.
UPDATE 1 – Motherboard with ECC RAM Support
As Bill Bog mentioned in the comments below that such kind of setup does not offer ECC memory and I agree with him that its better to have ECC then to not have it so I add this update with information on how to achieve still cheap and silent fanless setup.
The ASRock C2550D4I comes with help and ECC memory support and its not THAT expensive as you can get it new for about $290. It comes with quad-core Intel Atom C2550 CPU and uses only 14W of power which is not bad considering that it can support up to 64 GB of ECC RAM and has 12 (!) SATA ports. It also covers all important features as AES instructions and VT-x and EPT extensions for Bhyve support. It still provides PCI-Express x8 slot and even remote management with IPMI. And last but not least it has two 1 GE LAN ports.
Here is how it looks.
As ECC RAM is usually more expensive then the regular one the used ECC RAM stick needed for such setup is very cheap, without any extra effort I was able to find used Samsung DDR3L 4GB 1333 ECC REG. PC3L-10600R memory stick for about $10.
The less boring ECC RAM stick.
The example complete ECC setup would look like that.
$290 CPU/Motherboard ASRock C2550D4I $10 RAM Samsung 4 GB DDR3L 1.35V ECC REG $50 CASE Inter-Tech ITX-601 (comes with PSU) $10 2 x Sandisk Cruzer Fit 16 GB $4 USB Wireless 802.11n $364 TOTAL
Still QUARTER OF THE COST comparing to the FreeNAS Mini (Diskless) appliance and we will have two Sandisk Cruzer Fit 16 GB drives to put system in a ZFS mirror as we already use ECC memory for increased data security.
The Silent Fanless FreeBSD Desktop/Server article was featured in the BSD Now 253 – Silence of the Fans episode.
Thanks for mentioning!
Seems that I indirectly created $50 discount on http://SilentPC.com machines 🙂
The Silent Fanless FreeBSD Desktop/Server was featured in BSD Now 253 – Silence of the Fans. Peter from SilentPC wrote here http://dpaste.com/2N6DC6P and you can also see it talked through in the latest BSD Now 262 – OpenBSD Surfacing episode from 1:03:27 to 1:04:37 that if you mention BSD Now in the comments at checkout they will get you a $50 discount on a system.
Pity there is no ecc support in this build. Which would be rather important for a NAS.
I have added UPDATE 1 – Motherboard with ECC RAM Support that addresses this issue 😉
I’ve had a lot of trouble with Marvell SATA on Linux, especially with IOMMU enabled (for PCIe passthrough to VMs). Have you tested them on FreeBSD?
I did not had a chance to try any of them on FreeBSD but this site may be helpful:
Pingback: Silent Fanless #FreeBSD Desktop/Server https://vermaden.wordpress.c… | Dr. Roy Schestowitz (罗伊)
Pingback: In Other BSDs for 2018/06/09 – DragonFly BSD Digest
Pingback: Silent (fanless) desktop/server (FreeBSD) | 0ddn1x: tricks with *nix
Pingback: Links 10/6/2018: Devuan ASCII 2.0.0 and Tails 3.7.1 | Techrights
Pingback: Silence of the Fans | BSD Now 253 | Jupiter Broadcasting
I would be careful of the Atom 2000 series.
No solution is perfect, I am worried more about solutions like Intel ME and AMD equivalent.
Hopefully we will see BSD licensed RISC-V ISA processors and computers one day …
Pingback: Bare the OS | BSD Now 254 | Jupiter Broadcasting
Pingback: Silent Fanless FreeBSD Server – DIY Backup | vermaden
Pingback: Silent Fanless FreeBSD Server – Redundant Backup | 𝚟𝚎𝚛𝚖𝚊𝚍𝚎𝚗
Pingback: Silent Fanless FreeBSD Server – Redundant Backup - FreeBSDNews.com
Thanks a lot, I’m really interested by your solution !
Is its not “dangerous” to use 4GiB only ? I mean requirement for ZFS is 8GiB recommanded.
Also if one of the two disks fails or the hardware fails, will I be able to import the disk data just plugin one of the two disk ?
Hi and thanks 🙂
Here are two other ‘episodes’ of Silent Fanless FreeBSD Server:
As for your questions, I have run 2 x 2TB ZFS mirror on 512 RAM machine for years, so no, 4 GB is not too small. FreeNAS recommends 8 GB but I do not know why, of course more RAM is better (faster) because ZFS will have more memory for cache.
As for the disk, if you create mirror or raidz then one broken drive does not mean lost of data, you will have to replace that failed disk and ZFS will rebuild the mirror or raidz.
Hope that helps.
Thank you for sharing! Very helpful and inspiring writing for anyone who is planning to build a home-made NAS. It is a great idea to use a motherboard with integrated CPU and low TDP.
LikeLiked by 1 person
In hindsight, what would you change if you would put a system together now.
Any ideas or improvements so far.
I’d like to set up a small server for private use.
Thank you very much for your fanless build, glad to hear any further suggestions.
first I would check this one:
This is what I use for NAS with redundant (ZFS mirror) disks.
Everything without the disks (case/mobo/ram/usb/psu/…) is only $110 and its still hard to beat by other alternatives that are available today.
Remaining $240 is for two 5TB 2.5 disks.
As an other x86 alternative you could use the Odroid-H2+ which comes at about $170 (instead of $110) for the same thing for two 2.5 disks:
You can also ‘go’ for ARM which will cos you $295 for 5 bay case and motherboard – that is also without the disks:
Currently FreeBSD does not treat ARM64/aarch64 as TIER 1 architecture which means that binary updates using freebsd-update(8) are not available so I would definitely stay away from anything ARM … as much as I like that ARM architecture and its small low power solutions I just do not want to reinstall FreeBSD with every release.
If not ‘my’ solution with cheap low power Mini-ITX motherboard and nice aluminum case from REALAN H80 (or smaller H60) case I would go for Odroid H2+ solution. It has similar Intel x86 low power CPU and two SATA slots.
You can also add additional 5 SATA slots if needed in the M.2 slot with this adapter:
As for the disks – when I wrote these guides only Seagate provided 2.5 5TB drives. Now they are also available from Western Digital. But nothing much changed here – I would get any of these 5TB 2.5 SMR disks for the cheapest price. For example one Seagate and one Western Digital one when that would be the cheapest.
If you would insist on ARM solution then I would go for Raspberry Pi 4 with SATA HAT (for 2 or 4 SATA drives):
You can also check this for other SATA solutions on Raspberry Pi 4:
To be frank with you no matter which ARM solution you would choose the only ‘real’ problem is finding a case that will fir that system. There are tons of small Raspberry Pi cases out there but very few ones that will hold for example two SATA 2.5 drives … as plain Raspberry Pi 4 does not have any SATA ports.
Hope that helps 🙂
Ha, I’m using similar kind of thing (2 x NIC, Intel) for my wifi router + small server + … ECC memory is not used or needed, and it uses a SSD for FreeBSD system.
The particular board I’m using (Gigabyte GA-IMB1900N, 2 x NIC Intel I211AT), though, has a couple of shortcomings. First, it won’t boot without a monitor attached, so I had to use one of those resistor-based plugs for VGA (bitcoin miners share the recipe). Second, it does NOT show my most useful GRUB2 boot menu for some reason!! It does show UEFI, then it does show OpenBSD loader prompt. Still have no idea how to fix that one. So I”m using UEFI boot.
And I was able to insert Atheros wifi module there, attach 3 antennas and make a good EAP-TLS based Wifi AP. I must add that OpenBSD is not usable there because they don’t have a usable hostapd (their version of hostapd program is meant for completely different purposes). I also run there my custom FreeBSD pkg repo with a primitive web-server.
The reason for all this is, I somehow don’t like the idea that my Wifi router software would be completely out of my control. And with limited usability / configurability. And with some funny builtin firewall rules. And…
LikeLiked by 1 person