Categories
Computer Hardware Technology

Unifi Enterprise Fortress Gateway (EFG) ECC Memory Upgrade

DISCLAIMER: This post discusses modifying Ubiquiti devices in ways that are not not officially approved by Ubiquiti and may void your warranty. I not responsible for what you do to your unit(s). You are taking your own risks in doing so. This information is being posted for educational purposes in hopes that it may be useful to other hobbyists and tinkerers.

I recently got my hands on a Unifi Enterprise Fortress Gateway (EFG), one of Ubiquiti’s most powerful network gateway solutions currently available. The other one is the Gateway Enterprise (UXG-Enterprise) and as far as I can tell, these 2 products have identical internal hardware and specs. The only difference is that the EFG runs its own Unifi Network controller much like their Dream Machine product line, while the UXG-Enterprise requires a separate system with Unifi Network running (such as a CloudKey, hosted, or self-managed machine).

I managed to set it up and get it working, then stumbled upon a post by Reddit user JabbaDuhNutt who took the cover off of his unit to reveal that the EFG utilizes a single 16 GB DDR4 Unbuffered DIMM (Kingston P/N CDB32D4U2S8MF-16) for RAM and a 128 GB B-key mSATA SSD (Kingston P/N OM4P0S3128Q-A0). Notably, Kingston markets the SSD for industrial use with an endurance of 80 TBW, but the memory Ubiquiti included was a non-ECC module.

After doing some more digging to see if I could upgrade the memory, I determined that the EFG uses a Marvell(R) Octeon CN9670 CPU. You can see this when you SSH into the box:

Linux XXXXX 5.15.72-ui-cn9670 #5.15.72 SMP Tue Dec 24 23:00:10 CST 2024 aarch64

If you run lscpu, it will show the vendor as “Cavium” but keep in mind that Marvell acquired Cavium:

# lscpu | grep Vendor
Vendor ID:                       Cavium

Based on Marvell’s Product Brief for this CPU, DDR4 ECC memory up to 3200 MT/S is supported. Reddit user JabbaDuhNutt supposedly tried a Kingston 32 GB ECC module without issue, noting that the EFG immediately took advantage of the additional memory, but there was no definitive answer as to whether the OS recognizes and actually utilizes the ECC feature.

This information gave me enough confidence to try it myself, so I looked up the largest DDR4 3200MT/s ECC Unbuffered DIMM I could find with Kingston (my preferred memory vendor). This lead me to ordering and installing the KSM32ED8/32HC.

After some careful disassembly and reassembly, my EFG booted right up with the 32 GB ECC module and I also noticed it utilize slightly more memory than with the factory 16 GB module (35% of 32 GB = 11.2GB vs 59% of 16 GB = 9.44 GB). But the real question remained: is ECC actually being utilized? For me, this was the whole premise for the upgrade, as I always run ECC memory whenever possible for anything important.

There are several ways to quickly determine if the OS detects and utilizes ECC capabilities. Probably the best quick method is to use dmidecode, but this is not available in Unifi OS. So instead, I opted to use dmesg to determine if the EDAC driver loaded properly. And what do you know:

# dmesg | grep -i EDAC
[    2.344312] EDAC MC: Ver: 3.0.0
[   14.791393] EDAC octeontx: mdc 0x40000000: 0x3f9ff0800/0x800
[   14.791407] EDAC octeontx: mcc 0x40000001: 0x3f9ff1000/0x800
[   14.791420] EDAC octeontx: lmc 0x40000002: 0x3f9ff1800/0x800

This actually shouldn’t come as a surprise because back in 2022, a Marvell engineer (Vasyl Gomonovych) actually submitted a patch for the Linux EDAC driver to support ECC on the OcteonTX / OcteonTX2 / CN10k back in 2022. It also looks like support is still actively maintained as another update has been made to it in 2024. According to the included notes, it supports correcting 1-bit and detecting 2-bit errors.

So what does this mean if you’re looking to purchase (or already own) the EFG or UXG-Enterprise? Consider upgrading the memory module to a 32GB ECC one to improve its reliability and give it some extra room to work with. Standard disclaimer (as stated in the beginning) applies.

For anyone working at Ubiquiti (or anyone with sufficient influence over their product line decisions), please include ECC memory in your products, especially any of them labeled for “Enterprise” use. Or at the very least, officially support upgrades such as these so that end users can make the upgrade as they deem necessary for their deployments.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.