Mark McBride

Hardware

I constantly tweak my homelab hardware setup. These are my notes.

Rack 1: Network & SBCs

All the ethernet cables in my house terminate in a small closet. On the wall I’ve got a 9U rack with the core of my network stack as well as my main servers.

            9U WALL-MOUNTED RACK
    ┌──────────────────────────────────┐
  9 │    ≡≡≡  ≡≡≡ HDDs    SBC ▄▄▄▄▄    │
    ├ └──────────────────────────────┘ ┤
  8 │                                  │
    ├    ≡≡≡  ≡≡≡                      ┤
  7 │    ≡≡≡  ≡≡≡ HDDs    SBC ▄▄▄▄▄    │
    ├ └──────────────────────────────┘ ┤
  6 │                                  │
    ├  ◌ ◌ ◌ ◌  8-Outlet UPS  ◌ ◌ ◌ ◌  ┤
  5 │                                  │
    ├──────────────────────────────────┤
  4 │          Lockable Drawer         │
    ├──────────────────────────────────┤
  3 │              Router      [┬] [┬] │
    ├───────────────────────────│───│──┤
  2 │ [┬] [┬] [┬] [┬] Switch   [┴] [┴] │
    ├──│───│───│───│───────────────────┤
  1 │ [┴] [┴] [┴] [┴] Patch Panel      │
    └──────────────────────────────────┘
Slot  Part
────┬───────────────────────────────────
  9 │ SBC + WD Red Pro HDDs, 1U shelf
  8 │ --
  7 │ SBC + WD Red Pro HDDs, 2U shelf
  6 │ --
  5 │ CyberPower UPS CP1500PFCRM2U
  4 │ 1U 12" Lockable Drawer
  3 │ Unifi UDM Pro (Router)
  2 │ Unifi USW Pro Max 16 PoE (Switch)
  1 │ Cable Matters 24-port Patch Panel
  0 │ Tecmojo 9U, Swing Gate, 18" Depth
9U Wall-mounted Rack

SBCs 1 & 2: The ODROIDs

The Hardkernel ODROID series is officially my favorite server platform. I elaborate on the H4 Ultra and H5 systems below, but in short these give me the same capabilities of my old full-depth rack servers at a fraction of the wattage and hardware cost.

An ODROID H4 Ultra atop an ODROID H5, each driving 4 HDDs.

SBC 1: ODROID H4 Ultra

My main system is the ODROID H4 Ultra. It is what convinced me SBCs could take on server roles. With 4 onboard SATA ports, 1 NVMe SSD port, support for 64GB DDR5 RAM, and a processor that can easily handle several simultaneous 4K video decodes, it checked all the boxes for me. And most impressive, with 8 cores it comes in under 15 Watts of power consumption. I highly recommend this device. I run FreeBSD on it and everything just works.

ODROID H4 Ultra
─┬─────────────
 │
 ├─ CPU: Intel i3-N305          
 │                              
 ├─ RAM: 64GB DDR5              
 │                              
 ├─ SSD: 1TB                    
 │                              
 ├─ HDD: 22 TB ─┐               
 │              ├─ Mirror ─┐   
 ├─ HDD: 22 TB ─┘          │
 │                         ├─ 48 TB Pool  
 ├─ HDD: 26 TB ─┐          │
 │              ├─ Mirror ─┘   
 └─ HDD: 26 TB ─┘               
 Qty  Physical Part
 ───┬────────────────────────────────────
  1 │ ODROID H4 ULTRA SBC
  1 │ Intel i3-N305 CPU w/ Quicksync
  1 │ Crucial 64GB DDR5 RAM
  2 │ WD Red Pro 26 TB HDD
  2 │ WD Red Pro 22 TB HDD
  1 │ Samsung SSD 970 EVO Plus 1 TB


 Qty  Virtual Part
 ───┬────────────────────────────────────
  1 │ FreeBSD - Operating System
  1 │ ZFS - File System

To give you a feel for why I love this system, consider the load I’m running and I never notice a slowdown or lag:

The only time I’ve been able to make it stutter was compiling FreeBSD Ports with poudriere with no constraints set (which, to be fair, can make a proper server choke).

I’m looking forward to see what Hardkernel releases next in this form factor.

ODROID H4 Ultra sitting on a shelf beside its 4 HDDs

SBC 2: ODROID H5

When I saw that Hardkernel announced the H5 in May 2026, I instantly bought one. For me, it was the long awaited “big rack killer” that allowed me to fully migrate away from the giant full-depth 15U rack in my garage (see end of this article). This device is very similar to the H4 Ultra with a few key difference: Intel i3-N300 processor, 4-port on-board SATA replaced by 6-port SATA via NVMe expansion card, and a single 10G ethernet port. This whole package runs at about 7W and idles closer to 2W.

ODROID H4 Ultra
─┬─────────────
 │
 ├─ CPU: Intel i3-N300          
 │                              
 ├─ RAM: 64GB DDR5              
 │                              
 ├─ SSD: 8TB                    
 │                              
 ├─ HDD: 20 TB ─┐               
 │              ├─ Mirror ─┐   
 ├─ HDD: 20 TB ─┘          │
 │                         ├─ 40 TB Pool  
 ├─ HDD: 20 TB ─┐          │
 │              ├─ Mirror ─┘   
 └─ HDD: 20 TB ─┘               
 Qty  Physical Part
 ───┬────────────────────────────────────
  1 │ ODROID H5 SBC
  1 │ Intel i3-N300 CPU w/ Quicksync
  1 │ Crucial 64GB DDR5 RAM
  4 │ WD Red Pro 20 TB HDD
  1 │ 8 TB WD_Black SN850X


 Qty  Virtual Part
 ───┬────────────────────────────────────
  1 │ FreeBSD - Operating System
  1 │ ZFS - File System

This system runs Plex and acts as a full data copy of my H4 system.

ODROID H5 sitting on a shelf beside its 4 HDDs

SBC 3: Radxa ZERO 3E

This system is really great. One tiny board that can run Linux or FreeBSD. I have it running DietPi (Debian) as the Linux support for the 24-pin GPIO is better. I use this system as a BMC alternative. It gives me serial console access to the other systems nearby, and it is wired to power relays which allow me to perform the equivalent of a physical button press on the nearby systems (i.e., I can do a hard reboot remotely if necessary). This tiny thing runs around 1 Watt, 2 max.


Radxa ZERO 3E
─┬───────────
 │
 ├─ CPU: Quad-core Cortex A55            
 │
 ├─ SoC: Rockchip RK3566
 │                              
 ├─ RAM: 2 GB LPDDR4              
 │                              
 └─ µSD: 256 GB          

 Qty   Physical Part
 ────┬───────────────────────────────────
   1 │ Radxa ZERO 3E
   1 │ SoC Rockchip RK3566
   1 │ Cortex A55 Quadcore CPU
   1 │ 2 GB LPDDR4 RAM
   1 │ GPIO Breakout Board
   1 │ SanDisk 256 GB microSDXC


 Qty   Virtual Part
 ────┬───────────────────────────────────
   1 │ DietPi - Operating System
   1 │ ext4 - File System
Radxa ZERO 3E w/ GPIO Breakout and 3 Optocoupler Relays

Honorable Mention: ESP32 Microcontroller

In late December 2025 I grabbed an ESP32 device to control UART consoles and remote power-on/off events for my ODROID H4 Ultra and Raspberry Pi 5. It was my first time building a homelab solution that didn’t depend on a server running Linux or BSD to work. I was pleasantly surprised by how easy it was to build and how effective it has been in operation. In the past, BMC features would be a major consideration leading me to purchase server motherboards. This obsoletes that completely and opens a whole new world of SBCs for me.

That said, I ultimately went with the Radxa ZERO 3E for this problem space. It requires less than a Watt more power and allows me to run a full Linux install, which makes administration a lot easier. I’ll continue to tinker with the ESP32, but for now it’s on standby.

Rack 2: Full 24” Deep Rack

I moved from PC towers to a rack setup in 2013, but as of May 2026 I’ve decommissioned these components in favor of the much smaller, cheaper, and capable SBC components above. The rack servers have served me well over the years. But these days, most things that fit in a 24” rack are overpowered both in terms of capability and electricity consumption. The original thing that attracted me to this space was the ability have a chassis with 8-12 hot swap HDDs. There was a time when one server would have all these slots full. With modern HDD capacities, 4 HDDs are more than enough for my needs, and that likely shrinks to 3 or maybe even 2 HDDs by 2030. For now, they sit offline. I’ll probably sell or give them away at some point.

               15U ROLLING RACK
     ┌─────────────────────────────────┐
  15 │              ↗    Fiber Switch  │
     ├     Shelf    ↗  Ethernet Switch ┤
  14 │    (Front)   ↗      (Rear)      │
     ├─────────────────────────────────┤
  13 │                                 │
     ├              Drawer             ┤
  12 │                                 │
     ├─────────────────────────────────┤
  11 │                                 │
     ├         Supermicro Server       ┤
  10 │                                 │ 
     ├─────────────────────────────────┤
   9 │                                 │
     ├         Supermicro Server       ┤
   8 │                                 │
     ├─────────────────────────────────┤
   7 │ ════════════ Cover ════════════ │
     ├─────────────────────────────────┤ 
   6 │ ════════════ Cover ════════════ │
     ├─────────────────────────────────┤
   5 │                                 │
     ├                                 ┤
   4 │              Drawer             │
     ├                                 ┤ 
   3 │                                 │ 
     ├─────────────────────────────────┤ 
   2 │                                 │
     │   ◌ ◌ ◌ ◌ ◌   UPS   ◌ ◌ ◌ ◌ ◌   │ 
   1 │                                 │
     └───┬─────────────────────────┬───┘
         Ō                         Ō 
 Slot  Part (Front-facing)
 ────┬──────────────────────────────────
  15 │ --
  14 │ 2U Shelf
  13 │ --
  12 │ 2U lockable drawer
  11 │ --
  10 │ Supermicro 825TQC-R740LPB Chassis
     │ ├ Supermicro X12STH-F Motherboard
     │ ├ Intel Xeon E-2324G
     │ ├ 4 x 16 GB DDR4 UDIMM ECC RAM
     │ └ Intel X710-DA2 Fiber Network
   9 │ --
   8 │ Supermicro 826BEC1C-R920LPB Chas.
     │ ├ Supermicro X12STH-F Motherboard
     │ ├ Intel Xeon E-2388G
     │ ├ 4 x 32 GB DDR4 UDIMM ECC RAM
     │ ├ Nvidia Mellanox ConnectX-4 Lx
     │ └ Supermicro AOC-S3008L-L8e HBA
   7 │ Cover on blank slot
   6 │ Cover on blank slot
   5 │ --
   4 │ --
   3 │ 3U lockable drawer
   2 │ --
   1 │ Schneider/APC Smart-UPS X 1500
   0 │ 15U Rolling Rack, 24" Depth


 Slot  Part (Rear-facing)
 ────┬───────────────────────────────────
  15 │ UniFi 24 PoE Switch
  14 │ UniFi Fiber Switch

15U Rolling Rack