<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>TechFuel HQ</title><link>https://techfuelhq.com/</link><description>Recent content on TechFuel HQ</description><generator>Hugo</generator><language>en-us</language><managingEditor>LK Wood IV</managingEditor><lastBuildDate>Mon, 07 Sep 2026 00:00:00 -0500</lastBuildDate><atom:link href="https://techfuelhq.com/index.xml" rel="self" type="application/rss+xml"/><atom:link href="https://pubsubhubbub.appspot.com/" rel="hub"/><item><title>10GbE at Home: The Bottleneck Is Almost Never the Network</title><link>https://techfuelhq.com/networking/10gbe-what-nobody-says-2026/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/10gbe-what-nobody-says-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-09-07 · ~8 min read · St. Louis County, MO&lt;/p>
&lt;p>Ten gigabits per second is 1.25 GB/s on the wire. A single &lt;a href="https://www.seagate.com/content/dam/seagate/en/content-fragments/products/datasheets/exos-x24/exos-x24-DS2080-2307US-en_US.pdf" rel="noopener">Seagate Exos X24&lt;/a> is rated at 285 MB/s at its outer tracks, and that is Seagate&amp;rsquo;s own best case rather than what you will see.&lt;/p>
&lt;p>That gap is the article. The fans, the cables and the cards are all real problems, and I will get to each of them, but none of them is the reason your transfers are slow.&lt;/p>
&lt;h2 id="the-fan-is-the-first-thing-you-notice-and-the-first-thing-you-fix">The fan is the first thing you notice and the first thing you fix&lt;/h2>
&lt;p>Fan noise is what you will register in the first hour of owning a 10GbE switch, and it is what you will deal with first. There is an aftermarket in quiet replacement fans for these switches, and it exists because everyone who buys one hits the same wall in the same week.&lt;/p>
&lt;p>The swap works. I do not treat it as a compromise or as a mod you put up with — a fan specified for a datacenter row is the wrong part for a shelf in a room where someone sits, and replacing it is the correct configuration for where the switch actually lives.&lt;/p>
&lt;p>If you have not bought yet, there is a shorter path: buy a switch that never had a fan. MikroTik lists cooling type Passive for both the &lt;a href="https://mikrotik.com/product/crs305_1g_4s_in" rel="noopener">CRS305-1G-4S+IN&lt;/a>, with four SFP+ ports, and the &lt;a href="https://mikrotik.com/product/crs309_1g_8s_in" rel="noopener">CRS309-1G-8S+IN&lt;/a>, with eight. Four 10G ports covers a NAS, a workstation and a hypervisor with one spare, which is most houses.&lt;/p>
&lt;h2 id="dac-under-five-meters-fiber-past-that">DAC under five meters, fiber past that&lt;/h2>
&lt;p>Passive DAC for short runs. It is cheaper, it runs cooler, it draws less, and there are fewer parts in the path that can fail.&lt;/p>
&lt;p>Cisco&amp;rsquo;s &lt;a href="https://www.cisco.com/c/en/us/products/collateral/interfaces-modules/transceiver-modules/data_sheet_c78-455693.html" rel="noopener">10GBASE SFP+ datasheet&lt;/a> puts a number on &amp;ldquo;short.&amp;rdquo; Its passive Twinax cables are listed at 1, 1.5, 2, 2.5, 3, 4 and 5 meters; active Twinax starts at 7. Five meters is where the industry draws the line.&lt;/p>
&lt;p>The power figures in the same document: 0.1W for a passive Twinax cable, 1W for an SFP-10G-SR module — and an optical link needs two of those modules, one at each end. Ten times the draw per port, plus two components that can fail independently of the cable between them. Inside a rack or across a room, take the DAC. Through a wall or across a house, take fiber and accept the transceivers.&lt;/p>
&lt;h2 id="the-bottleneck-is-almost-never-the-network">The bottleneck is almost never the network&lt;/h2>
&lt;p>This is the part nobody says, and it is the reason most 10GbE upgrades disappoint.&lt;/p>
&lt;p>Run the arithmetic against your own storage before you spend anything:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Device or interface&lt;/th>
&lt;th scope="col" style="text-align: right">Ceiling&lt;/th>
&lt;th scope="col" style="text-align: right">Share of a 10GbE link&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>10GbE link&lt;/td>
&lt;td style="text-align: right">1,250 MB/s&lt;/td>
&lt;td style="text-align: right">100%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>One Exos X24 (285 MB/s rated)&lt;/td>
&lt;td style="text-align: right">285 MB/s&lt;/td>
&lt;td style="text-align: right">23%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SATA III interface (6 Gb/s, 8b/10b)&lt;/td>
&lt;td style="text-align: right">600 MB/s&lt;/td>
&lt;td style="text-align: right">48%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Four Exos striping, perfect sequential&lt;/td>
&lt;td style="text-align: right">1,140 MB/s&lt;/td>
&lt;td style="text-align: right">91%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>A single hard drive gives you under a quarter of the link. A SATA SSD cannot reach half of it, and that is the interface ceiling before the flash behind it has any say. Four drives reading perfectly sequentially finally approach the wire, and nothing reads perfectly sequentially — the &lt;a href="https://techfuelhq.com/homelab/six-bay-nas-drives-rebuild-2026/">six-bay rebuild math&lt;/a> covers what happens to those numbers once parity and scattered blocks are in play.&lt;/p>
&lt;p>Saturating 10GbE takes NVMe or a genuinely fast array. Most people adding 10GbE do not have one.&lt;/p>
&lt;h3 id="and-then-there-is-smb">And then there is SMB&lt;/h3>
&lt;p>Even with the storage to feed it, a single file copy will sit well under the link, and the protocol is why. Microsoft&amp;rsquo;s own account of the problem: with one SMB session and no Multichannel, SMB opens a single TCP connection, and that connection gets affinitized to a single CPU core. One copy, one connection, one core. A faster switch does not sell you a second core.&lt;/p>
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/archive/blogs/josebda/the-basics-of-smb-multichannel-a-feature-of-windows-server-2012-and-smb-3-0" rel="noopener">SMB Multichannel&lt;/a> is the fix. On an RSS-capable NIC it opens several TCP connections for the same session and spreads them across cores. It is on by default on Windows. On TrueNAS SCALE it is a toggle under &lt;a href="https://www.truenas.com/docs/scale/shares/smb/smbmultichannel/" rel="noopener">Advanced Settings in the SMB service&lt;/a>, and flipping it costs nothing.&lt;/p>
&lt;p>Check both of those before you buy hardware. &amp;ldquo;Just add 10GbE&amp;rdquo; is the most common wrong assumption in home networking, and the two things it usually fails to fix are sitting in your NAS and in your file-sharing config.&lt;/p>
&lt;h2 id="connectx-3-is-done">ConnectX-3 is done&lt;/h2>
&lt;p>The used ConnectX-3 was the budget answer for years and it is now the wrong buy at any price.&lt;/p>
&lt;p>VMware&amp;rsquo;s list of devices dropped in ESXi 8.0 covers everything the nmlx4_en driver ever served, and Broadcom&amp;rsquo;s &lt;a href="https://knowledge.broadcom.com/external/article/318385/devices-deprecated-and-unsupported-in-es.html" rel="noopener">own wording&lt;/a> is blunt: &amp;ldquo;The driver does not exist in ESXi 8.0.&amp;rdquo; Not deprecated, not degraded — absent. NVIDIA reached the same place in its own stack earlier: ConnectX-3 and ConnectX-3 Pro stopped being supported &lt;a href="https://networking-docs.nvidia.com/mlnxofedswum/590560107/general-support" rel="noopener">as of MLNX_OFED 5.1&lt;/a>, with anyone who still needs the card pointed at the 4.9 long-term-support branch. NVIDIA&amp;rsquo;s &lt;a href="https://network.nvidia.com/products/ethernet-drivers/vmware/esxi-server/" rel="noopener">current ESXi driver line&lt;/a> begins at ConnectX-4.&lt;/p>
&lt;p>One window is still open, and it is worth knowing which one. The mlx4 module &lt;a href="https://github.com/torvalds/linux/tree/master/drivers/net/ethernet/mellanox/mlx4" rel="noopener">remains in the mainline Linux kernel&lt;/a>, so a card already in a Proxmox or TrueNAS box will keep coming up. Leave a working one alone. Do not buy another. My earlier &lt;a href="https://techfuelhq.com/networking/10gbe-home-networking-budget-2026/">budget 10GbE build&lt;/a> put its cheapest tier on these cards, and on a Linux host that tier still runs — on ESXi 8 it does not, and I would start any new build on something newer either way.&lt;/p>
&lt;h2 id="used-enterprise-nics-are-still-the-right-buy">Used enterprise NICs are still the right buy&lt;/h2>
&lt;p>None of the above is an argument against used enterprise silicon. It is still excellent value, and the risk was never that the hardware dies. The risk is driver and firmware support, which is exactly what ended ConnectX-3.&lt;/p>
&lt;p>So invert the shopping order. Check what your hypervisor&amp;rsquo;s current release ships a driver for, then look at prices. On ESXi that puts your floor at ConnectX-4. On Linux the window is wider, but &amp;ldquo;the kernel still builds the module&amp;rdquo; is a different thing from &amp;ldquo;someone is developing it,&amp;rdquo; and the gap between those two closes in one direction only.&lt;/p>
&lt;h2 id="what-to-buy">What to buy&lt;/h2>
&lt;p>&lt;strong>Most people reading this should not buy 10GbE. Buy storage.&lt;/strong>&lt;/p>
&lt;p>If your NAS is one or two spinning disks, the cable is not what is slowing you down and a switch will not change your transfer rate by a meaningful amount. The same money in an NVMe drive, or in enough spindles to read in parallel, moves the number the network cannot. Turn on SMB Multichannel while you are at it — it is free and it is the second most common cause.&lt;/p>
&lt;p>&lt;strong>If your pool already clears a gigabyte a second&lt;/strong>, the shopping order is short:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>A fanless SFP+ switch.&lt;/strong> The CRS305 for four ports, the CRS309 for eight. If you buy a fanned switch anyway, budget for the replacement fan on the same order.&lt;/li>
&lt;li>&lt;strong>Passive DAC for anything under five meters.&lt;/strong> Fiber past that, and only past that.&lt;/li>
&lt;li>&lt;strong>ConnectX-4 or newer.&lt;/strong> Used, secondhand, from whoever is cheapest — but check the driver first and the price second.&lt;/li>
&lt;/ol>
&lt;p>The &lt;a href="https://techfuelhq.com/networking/25gbe-vs-10gbe-homelab-2026/">2.5GbE comparison&lt;/a> is the other answer here. For a NAS on one or two spinning disks, 2.5GbE is already faster than the drives, and it costs a fraction of this. That is not a consolation prize; for most homes it is the correct stopping point.&lt;/p>
&lt;h2 id="wrong-for">Wrong for&lt;/h2>
&lt;p>&lt;strong>Wrong if you want silence without a fan swap.&lt;/strong> Buy passive-cooled or plan the replacement into the purchase — do not buy a fanned switch and hope.&lt;/p>
&lt;p>&lt;strong>Wrong if you expect 10GbE to fix a storage problem.&lt;/strong> It will move your bottleneck from a place you can see to a place you cannot, and your copies will finish at the same time.&lt;/p>
&lt;p>&lt;strong>Wrong if the card is too old for your hypervisor.&lt;/strong> The price on a dead-driver NIC is not a bargain, it is the market telling you something.&lt;/p></description></item><item><title>Homelab Regrets: Five Purchases I'd Take Back</title><link>https://techfuelhq.com/homelab/homelab-buying-regrets/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/homelab-buying-regrets/</guid><description>&lt;p>The used rack server is the purchase I would undo first. Cheap to buy, expensive to run, and far louder than the listings suggest — &amp;ldquo;quiet&amp;rdquo; in that market means quiet for a datacenter.&lt;/p>
&lt;p>Every regret below has that shape. The purchase price was the number that looked good, and the cost that mattered turned up somewhere else: in what the box draws around the clock, in the noise floor, in a chassis outgrown almost immediately.&lt;/p>
&lt;p>Five purchases I would take back, worst first.&lt;/p>
&lt;h2 id="1-used-rack-servers--the-one-i-would-undo-first">1. Used rack servers — the one I would undo first&lt;/h2>
&lt;p>The noise part is measurable, and Dell publishes the measurements. Its &lt;a href="https://i.dell.com/sites/csdocuments/Shared-Content_data-Sheets_Documents/en/Dell-13G-PowerEdge-Acoustical-Performance-and-Dependencies.pdf" rel="noopener">13G PowerEdge acoustical document&lt;/a> covers the 13G line — the R630, R730 and R730xd among them, the generation that fills used listings — and it reports per configuration rather than per model, which turns out to be the whole story:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Dell 13G configuration&lt;/th>
&lt;th scope="col">Idle&lt;/th>
&lt;th scope="col">Operating&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>R730, minimum: 1 CPU, 1× 4GB DIMM, 1 SSD, no PCI cards&lt;/td>
&lt;td>4.7 bels / 28 dBA&lt;/td>
&lt;td>5.3 bels / 33 dBA&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>R730, typical 2.5&amp;quot;: 2 CPUs, 8 DIMMs, 8× 10K SAS&lt;/td>
&lt;td>4.7 bels / 28 dBA&lt;/td>
&lt;td>&lt;strong>5.8 bels / 39 dBA&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>R630, feature-rich: 2× 135W CPUs, 16 DIMMs, 8× 15K SAS&lt;/td>
&lt;td>&lt;strong>6.4 bels / 43 dBA&lt;/strong>&lt;/td>
&lt;td>6.4 bels / 43 dBA&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Sound power is the upper-limit LwA per ISO 9296; the dBA figure is bystander sound pressure, taken in a 24U rack at 23°C per ISO 7779.&lt;/p>
&lt;p>Two things fall out of that table. &lt;strong>The minimum configuration is one processor, one 4GB stick, one SSD and no expansion cards, and nobody sells that machine used.&lt;/strong> And the feature-rich R630 prints the same number for idle and operating — 6.4 bels either way. It does not quieten down, because there is nothing to quieten down to.&lt;/p>
&lt;p>The dependency notes in the same document are where the buying advice actually lives:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Low-power Xeons make it louder.&lt;/strong> Dell states that configurations with 65W L-series parts such as the E5-2650L v3 run &amp;ldquo;about twice as loud as typical configurations&amp;rdquo; under moderate or heavy use. Those are the exact chips people buy to cut the power bill.&lt;/li>
&lt;li>&lt;strong>A GPU doubles it again.&lt;/strong> Any GPGPU card in an R730 is &amp;ldquo;about twice as loud&amp;rdquo; as the typical build.&lt;/li>
&lt;li>&lt;strong>Drive count raises the floor.&lt;/strong> An R730xd 3.5-inch chassis with 16 drives idles about 50% louder than one with four — 6.2 bels against 5.6.&lt;/li>
&lt;li>&lt;strong>PCIe SSDs raise the ceiling.&lt;/strong> Under highly stressed conditions the R730 goes to 7.0 bels.&lt;/li>
&lt;/ul>
&lt;p>Dell&amp;rsquo;s own reference table settles what &amp;ldquo;quiet&amp;rdquo; means to the people who designed these. It maps 75 dBA and 39 sones to &amp;ldquo;Data center, vacuum cleaner, voice must be elevated to be heard,&amp;rdquo; and 45 dBA and 4 sones to &amp;ldquo;Whispering, open office layout, normal living room.&amp;rdquo; A machine engineered to be acceptable in the first room is not being engineered for your second bedroom.&lt;/p>
&lt;p>The running cost points the same direction. The &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">idle power costs page&lt;/a> puts a single-CPU Dell R720 at 80–100W against 15–22W for a current mini PC, on the lightly-threaded workloads most homelabs actually run. What the rack server still wins on is RAM capacity, drive bays and expansion slots — not compute per watt.&lt;/p>
&lt;p>&lt;strong>Replacing the rack gear with small nodes is the best change I have made to the setup.&lt;/strong> If you are still weighing it, &lt;a href="https://techfuelhq.com/homelab/used-enterprise-vs-mini-pc-homelab-2026/">used enterprise versus mini PC&lt;/a> puts the two side by side, and &lt;a href="https://techfuelhq.com/homelab/servers-for-homelab-2026/">servers for a homelab&lt;/a> covers the classes in between.&lt;/p>
&lt;h2 id="2-over-building-generally">2. Over-building generally&lt;/h2>
&lt;p>I spec&amp;rsquo;d for a workload that never showed up.&lt;/p>
&lt;p>Every watt of headroom you buy ahead of the work is a watt you pay for twenty-four hours a day while the work fails to arrive, and the hardware depreciates the entire time it waits. The &lt;a href="https://techfuelhq.com/tools/power-cost-calculator/">power cost calculator&lt;/a> will price the headroom you are considering before you commit to it.&lt;/p>
&lt;p>&lt;strong>Buy for the workload you are running this quarter.&lt;/strong> The homelab that grows into more capacity is a cheaper machine than the one that was already sitting there.&lt;/p>
&lt;h2 id="3-two-bay-nas-units">3. Two-bay NAS units&lt;/h2>
&lt;p>Two bays get outgrown almost immediately. Four bays or build.&lt;/p>
&lt;p>The arithmetic is the whole argument. Two bays mirrored leave you one drive of usable capacity, and the only way to grow is to replace both drives and rebuild the pool. Four bays under single parity give you three drives of capacity and let you swap disks one at a time as they fail or as prices fall. The &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS capacity calculator&lt;/a> shows the gap at whatever drive size you are shopping.&lt;/p>
&lt;p>&lt;strong>Start at four bays or build your own.&lt;/strong> What you save on the two-bay enclosure you spend again on the replacement, plus a migration you did not plan for.&lt;/p>
&lt;h2 id="4-cheap-25gbe-switches">4. Cheap 2.5GbE switches&lt;/h2>
&lt;p>They are a coin flip on thermals.&lt;/p>
&lt;p>The warranty is the filter I would use now, because it is the one line in a listing that costs the manufacturer something to write. &lt;a href="https://www.tp-link.com/us/support/replacement-warranty/" rel="noopener">TP-Link&amp;rsquo;s US warranty schedule&lt;/a> gives switches with a plastic chassis two years, non-Omada switches with a steel chassis three, and reserves limited lifetime cover for the Omada S4500, S5500, S6500 and S7500 series. TRENDnet publishes a &lt;a href="https://www.trendnet.com/products/2-5g-switch/5-port-unmanaged-2-5g-switch-TEG-S350_v2" rel="noopener">lifetime warranty&lt;/a> on the TEG-S350, its 5-port unmanaged 2.5G box.&lt;/p>
&lt;p>&lt;strong>If the switch in front of you offers a single year, you have left the tier that stands behind these.&lt;/strong> Buy from a brand whose warranty terms you can find without emailing anyone.&lt;/p>
&lt;h2 id="5-exos-bought-on-price-and-capacity">5. Exos bought on price and capacity&lt;/h2>
&lt;p>I bought Exos on price and capacity, then regretted them for noise.&lt;/p>
&lt;p>The published acoustics say where the gap actually is. Here are three 24TB enterprise drives, sound power in bels, each from its manufacturer&amp;rsquo;s own document:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">24TB drive&lt;/th>
&lt;th scope="col">Idle&lt;/th>
&lt;th scope="col">Seek / operating&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;a href="https://www.seagate.com/content/dam/seagate/assets/support/internal-hard-drive/enterprise-hard-drives/exos-x24/_shared/files/Seagate_EXOS24_CMR_ISE_SED%2810-12-16-20-24TB%29_Rev-C.pdf" rel="noopener">Seagate Exos X24&lt;/a> (ST24000NM002H)&lt;/td>
&lt;td>&lt;strong>2.8 typical / 3.0 max&lt;/strong>&lt;/td>
&lt;td>3.2 typical / 3.4 max&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/data-center-drives/ultrastar-dc-hc500-series/product-manual-ultrastar-dc-hc580-sata-oem-spec.pdf" rel="noopener">WD Ultrastar DC HC580&lt;/a>&lt;/td>
&lt;td>2.0 typical / 2.5 max&lt;/td>
&lt;td>3.2 typical / 3.4 max&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://storage.toshiba.com/docs/enterprise-hdd-documents/mg11-product-overview.pdf" rel="noopener">Toshiba MG11&lt;/a> (MG11ACA24T)&lt;/td>
&lt;td>2.0 typical&lt;/td>
&lt;td>3.2 typical&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Under seek all three print the same figure. The entire published gap sits at idle — 0.8 bels, eight decibels of sound power — and idle is where a NAS spends its life.&lt;/strong> The drives are not working during most of the hours you can hear them, which is why the seek number is the wrong one to shop on and the idle number is the right one. The gap also does not go away when there are six of them in one box. One caveat from Seagate&amp;rsquo;s own footnote: offline SMART activity during idle &amp;ldquo;may increase acoustic and power to operational levels,&amp;rdquo; so the idle figure is a floor rather than a promise.&lt;/p>
&lt;p>None of that makes the Exos a bad drive. It is the cheapest 24TB drive in its class by enough to matter across six bays — the &lt;a href="https://techfuelhq.com/homelab/six-bay-nas-drives-rebuild-2026/">six-bay rebuild math&lt;/a> priced it at $39.50/TB against $44.17 for the WD Red Pro in August 2026. &lt;strong>If the array lives in a basement or a garage, buy on price and buy the Exos.&lt;/strong> If it shares a room with you, shop the published idle figure and pay for the Ultrastar or the MG.&lt;/p>
&lt;h2 id="what-i-would-buy-instead">What I would buy instead&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Small nodes, not a rack.&lt;/strong> This is the change that improved the setup most.&lt;/li>
&lt;li>&lt;strong>Four bays minimum&lt;/strong>, or build the box yourself.&lt;/li>
&lt;li>&lt;strong>The workload you have&lt;/strong>, not the one you are planning for.&lt;/li>
&lt;li>&lt;strong>A switch with a warranty you can read&lt;/strong>, over the cheapest 2.5GbE port count.&lt;/li>
&lt;li>&lt;strong>Idle acoustics over price&lt;/strong> on drives, but only when the array is in earshot.&lt;/li>
&lt;/ul>
&lt;p>Each of these looked good on one number. The rack server was cheap. The switch was cheap. The Exos are still the cheapest per terabyte. The number that decided the outcome was always the second one.&lt;/p></description></item><item><title>How to Test a UPS: Charge Is Not Health</title><link>https://techfuelhq.com/homelab/ups-testing-reality-2026/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/ups-testing-reality-2026/</guid><description>&lt;p>The number on the front of a UPS is a charge reading. It is not a health reading.&lt;/p>
&lt;p>&lt;strong>A unit showing full can drop the load the moment it transfers.&lt;/strong> The display will have been telling you everything was fine right up until the instant it stopped being fine, and it was not lying — it was answering a different question than the one you thought you were asking.&lt;/p>
&lt;p>That gap between charged and working is the whole subject here. &lt;a href="https://techfuelhq.com/homelab/ups-power-sizing-homelab-2026/">Sizing the unit&lt;/a> is settled territory: VA against watts, runtime against your shutdown window. This is about what comes after you have bought the right size — proving it does the job, on a schedule, before the power goes out and proves it for you.&lt;/p>
&lt;h2 id="the-built-in-self-test-is-not-a-runtime-test">The built-in self-test is not a runtime test&lt;/h2>
&lt;p>Most units test themselves. The test covers less than the name suggests.&lt;/p>
&lt;p>Schneider&amp;rsquo;s documentation for the Smart-UPS line says the unit self-tests when you switch it on and every two weeks after that, and that during the test it runs on battery for approximately ten seconds (&lt;a href="https://www.se.com/us/en/faqs/FA405317/" rel="noopener">Schneider Electric FA405317&lt;/a>). The Back-UPS line runs the same ten seconds on a different clock — Schneider describes the automatic test as happening every seven days after the unit is powered on — and its replace-battery alarm is framed against a standard two-minute runtime limit (&lt;a href="https://www.se.com/us/en/faqs/FAQ000267818/" rel="noopener">Schneider Electric FAQ000267818&lt;/a>).&lt;/p>
&lt;p>Ten seconds is a genuinely useful test of one thing: the transfer relay closes and the inverter comes up. Keep it enabled. But read what it is measuring. A battery that has lost most of its useful capacity will hold ten seconds without complaint, and it will hold two minutes for a while after that. By the time the automatic test starts failing, you have already been running on a battery that would not have finished a shutdown.&lt;/p>
&lt;p>&lt;strong>Charge is a percentage. Capacity is minutes. The panel shows you the first one and you need the second one.&lt;/strong>&lt;/p>
&lt;h2 id="an-untested-ups-is-a-surge-protector-with-a-battery-in-it">An untested UPS is a surge protector with a battery in it&lt;/h2>
&lt;p>So test on a schedule, and make it a real test.&lt;/p>
&lt;p>Connect the load the unit actually protects. Pull the input cord. Watch what the load does at the moment of transfer, and time how long the battery holds before the shutdown you configured actually fires. That one pull exercises the transfer, the inverter, the battery under its real load, and your shutdown chain, in the order they will happen for real.&lt;/p>
&lt;p>Nothing else does. A ten-second self-test skips the load. A runtime figure from a spec sheet skips your gear. The &lt;a href="https://techfuelhq.com/tools/ups-runtime-calculator/">UPS runtime calculator&lt;/a> will model the curve for you, and the model is worth having as a starting expectation — but a modelled forty minutes and a measured forty minutes are not the same claim, and only one of them is about the battery currently sitting in your rack.&lt;/p>
&lt;p>If you would rather not pull a cord on live equipment, NUT will start a deep battery test on hardware that exposes one:&lt;/p>
&lt;pre tabindex="0">&lt;code>upscmd -u &amp;lt;user&amp;gt; &amp;lt;upsname&amp;gt; test.battery.start.deep
&lt;/code>&lt;/pre>&lt;p>&lt;code>test.battery.start.quick&lt;/code>, &lt;code>test.battery.start.deep&lt;/code> and &lt;code>test.battery.stop&lt;/code> are all standard NUT instant commands (&lt;a href="https://networkupstools.org/docs/developer-guide.chunked/_instant_commands_4.html" rel="noopener">NUT instant command reference&lt;/a>), and &lt;code>upscmd -l &amp;lt;upsname&amp;gt;&lt;/code> lists what your specific unit supports (&lt;a href="https://networkupstools.org/docs/man/upscmd.html" rel="noopener">upscmd man page&lt;/a>).&lt;/p>
&lt;p>There is a second reason to test that has nothing to do with the battery. &lt;strong>A UPS can fail in a way that takes the load down with it.&lt;/strong> That is a real failure mode, not a freak event. The box you bought to prevent an unclean shutdown sits in series with everything it protects, and the only way to find out how yours behaves when it goes wrong is to make it transfer while you are standing there rather than at 3am while you are not.&lt;/p>
&lt;h2 id="pure-sine-or-dont-put-a-server-psu-behind-it">Pure sine, or don&amp;rsquo;t put a server PSU behind it&lt;/h2>
&lt;p>This one has a mechanism, and the mechanism is published by the people selling the cheaper option.&lt;/p>
&lt;p>CyberPower&amp;rsquo;s explanation of its own PFC Sinewave line is that a simulated sine wave produces a zero-output state during the phase change — a gap in the waveform — and that this gap can interrupt equipment running an active-PFC power supply when the unit switches from mains to battery (&lt;a href="https://www.cyberpowersystems.com/news/pfc-sinewave-series-ups-systems-the-most-affordable-feature-rich-pure-sine-wave-ups/" rel="noopener">CyberPower, PFC Sinewave Series&lt;/a>).&lt;/p>
&lt;p>Read where that failure lands. Not during a brownout, not on a slow degrade — at transfer. The single event the UPS exists to handle is the event a simulated-sine unit is worst at, and active PFC is standard in modern PC and server supplies; CyberPower&amp;rsquo;s own page dates that transition to the last fifteen years.&lt;/p>
&lt;p>&lt;strong>Simulated sine into an active-PFC supply is asking for trouble on transfer. Pure sine for anything with a server PSU behind it.&lt;/strong>&lt;/p>
&lt;h2 id="usb-and-nut-not-a-network-management-card">USB and NUT, not a network management card&lt;/h2>
&lt;p>Network management cards cost absurd money next to the UPS they plug into. A &lt;a href="https://www.se.com/us/en/product/AP9641/ups-network-management-card-3-with-environmental-monitoring/" rel="noopener">UPS network management card&lt;/a> is a separate accessory bought on top of the unit, and for a single-site homelab it buys network-side monitoring you can get from a cable.&lt;/p>
&lt;p>USB plus &lt;a href="https://networkupstools.org/" rel="noopener">NUT&lt;/a> does the job and is what I&amp;rsquo;d run. Three pieces:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>usbhid-ups&lt;/code>&lt;/strong> should detect anything implementing the HID Power Device Class, with the amount of data varying by manufacturer and model. NUT lists all MGE, Dell and AMETEK Powervar USB models, the newer Eaton USB models, and specific models from APC, CyberPower, TrippLite, Belkin, Powercom and PowerWalker (&lt;a href="https://networkupstools.org/docs/man/usbhid-ups.html" rel="noopener">usbhid-ups man page&lt;/a>). Check your exact model against the compatibility list before you count on it.&lt;/li>
&lt;li>&lt;strong>&lt;code>upsmon&lt;/code>&lt;/strong> watches for the critical condition — on battery, low charge — sets the forced-shutdown flag, and lets every machine it is monitoring run its own shutdown command with a delay you set (&lt;a href="https://networkupstools.org/docs/user-manual.chunked/Configuration_notes.html" rel="noopener">NUT configuration notes&lt;/a>).&lt;/li>
&lt;li>&lt;strong>&lt;code>upscmd&lt;/code>&lt;/strong> gives you the battery tests above and the alarm control below.&lt;/li>
&lt;/ul>
&lt;p>That is the entire feature set most homelabs wanted from the card.&lt;/p>
&lt;p>&lt;strong>If it can&amp;rsquo;t trigger a clean shutdown of what&amp;rsquo;s plugged into it, most of the value is gone.&lt;/strong> A UPS that only buys you a few minutes of uptime during which nobody is home to act is a very expensive way to delay the same unclean power-off. The shutdown chain is the product. Configure it the day the unit arrives, then test that it fires — which is the same plug-pull from two sections up, and the reason that test is worth doing properly.&lt;/p>
&lt;h2 id="the-alarm-will-go-off-at-3am">The alarm will go off at 3am&lt;/h2>
&lt;p>It will. The alarm is standard equipment, and the first time it fires is the worst possible moment to be learning where the mute button is.&lt;/p>
&lt;p>Decide now what you want it to do, and set it now. NUT exposes &lt;code>beeper.disable&lt;/code>, &lt;code>beeper.mute&lt;/code>, &lt;code>beeper.enable&lt;/code> and &lt;code>beeper.toggle&lt;/code> as instant commands (&lt;a href="https://networkupstools.org/docs/developer-guide.chunked/_instant_commands_4.html" rel="noopener">same reference&lt;/a>), so this is one &lt;code>upscmd&lt;/code> call, done while you are awake and thinking clearly about whether you actually want an audible alarm in that room.&lt;/p>
&lt;h2 id="batteries-are-a-consumable">Batteries are a consumable&lt;/h2>
&lt;p>Plan for the replacement rather than being surprised by it. Sealed lead-acid cells are on a several-year cycle, and third-party replacements are standard practice — not a corner cut.&lt;/p>
&lt;p>Schneider puts most APC batteries at three to five years and notes that every 8°C (15°F) of extra operating temperature halves that life (&lt;a href="https://www.se.com/us/en/faqs/FA158934/" rel="noopener">Schneider Electric FA158934&lt;/a>). That second figure is the one people miss. A UPS in a warm closet is not on the same schedule as the same UPS in a basement, and if you have put yours in the warm closet, the replacement year on your calendar is optimistic.&lt;/p>
&lt;p>Which puts you back at the test. The only way to know where your battery is on that curve is to have measured it recently under load.&lt;/p>
&lt;h2 id="what-id-do-pure-sine-usb-nut-and-a-plug-pull-on-a-schedule">What I&amp;rsquo;d do: pure sine, USB, NUT, and a plug-pull on a schedule&lt;/h2>
&lt;p>&lt;strong>Buy a pure sine wave unit sized to your load, connect it over USB, run NUT, and pull the plug on a schedule.&lt;/strong> No management card. That configuration covers the transfer, the shutdown, the alarm and the tests, and there is nothing left in the card that a homelab with one rack needs.&lt;/p>
&lt;p>The plug-pull is the part people skip and the only part that produces information. Put it on a recurring reminder alongside whatever else you check, keep the number you measured, and compare it to the last one. When the measured runtime has fallen far enough that your shutdown no longer finishes inside it, buy cells — before the automatic self-test gets around to agreeing with you.&lt;/p>
&lt;p>&lt;strong>This is wrong for a few situations.&lt;/strong> Simulated sine into active PFC — do not, at any price. A consumer unit under a full rack, where the load is past what the unit is rated to hold and the runtime is theatre. And anyone who will not set up automatic shutdown, because at that point the money bought a surge protector with a battery in it, which is where this started.&lt;/p>
&lt;p>Testing does not make a UPS more reliable. It tells you whether the one you own is still doing the job, which is a different and more useful thing than a green light. And none of it replaces &lt;a href="https://techfuelhq.com/homelab/3-2-1-backup-rule-homelab-2026/">keeping backups somewhere else&lt;/a> — a clean shutdown protects the pool, not the data.&lt;/p></description></item><item><title>Living With Exos: Noise, Vibration, and Recerts</title><link>https://techfuelhq.com/homelab/enterprise-drives-noise-vibration-recertified-2026/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/enterprise-drives-noise-vibration-recertified-2026/</guid><description>&lt;p>Exos are loud. Not louder-than-a-laptop loud — loud enough that where the array lives is a decision you make before you buy the drives, not after they arrive.&lt;/p>
&lt;p>I bought mine on price and capacity. The noise is the part I regret.&lt;/p>
&lt;p>But the drive is not what you hear. The chassis panel resonating with the drive is what you hear, and that changes what you should do about it.&lt;/p>
&lt;p>&lt;em>Some retailer links below are affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="the-three-brands-are-identical-under-seek">The three brands are identical under seek&lt;/h2>
&lt;p>All three manufacturers publish sound power in their own product manuals, each measured to ISO 7779:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">24TB drive&lt;/th>
&lt;th scope="col" style="text-align: right">Idle (typ)&lt;/th>
&lt;th scope="col" style="text-align: right">Seek (typ)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Seagate Exos X24&lt;/td>
&lt;td style="text-align: right">&lt;strong>2.8 bels&lt;/strong>&lt;/td>
&lt;td style="text-align: right">3.2 bels&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>WD Ultrastar DC HC580&lt;/td>
&lt;td style="text-align: right">&lt;strong>2.0 bels&lt;/strong>&lt;/td>
&lt;td style="text-align: right">3.2 bels&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Toshiba MG11&lt;/td>
&lt;td style="text-align: right">&lt;strong>2.0 bels&lt;/strong>&lt;/td>
&lt;td style="text-align: right">3.2 bels&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Figures from the &lt;a href="https://www.seagate.com/content/dam/seagate/assets/support/internal-hard-drive/enterprise-hard-drives/exos-x24/_shared/files/Seagate_EXOS24_CMR_ISE_SED%2810-12-16-20-24TB%29_Rev-C.pdf" rel="noopener">Seagate Exos X24 SATA product manual&lt;/a> (Rev. C, Table 9), the &lt;a href="https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/data-center-drives/ultrastar-dc-hc500-series/product-manual-ultrastar-dc-hc580-sata-oem-spec.pdf" rel="noopener">Ultrastar DC HC580 SATA specification&lt;/a> (Rev. 2.1, Table 21) and the &lt;a href="https://storage.toshiba.com/docs/enterprise-hdd-documents/mg11-product-overview.pdf" rel="noopener">Toshiba MG11 product overview&lt;/a>, which prints sound power as 20 dB idle and 32 dB seek — the same 2.0 and 3.2 bels in different units.&lt;/p>
&lt;p>Read that table again, because it is not the shape people expect. &lt;strong>Under seek there is no difference at all.&lt;/strong> Every one of these is a 7200 RPM enterprise drive, and every one of them is 3.2 bels when the heads are moving. Seagate and Western Digital both publish the same 3.4 bel maximum on top of it.&lt;/p>
&lt;p>The whole gap is idle. Eight decibels of sound power, on a machine that spends the overwhelming majority of its life idle. That is why HGST&amp;rsquo;s Ultrastar line — Western Digital&amp;rsquo;s since the acquisition — and Toshiba&amp;rsquo;s MG carry the quiet reputation, and it is a narrower, more specific advantage than the reputation suggests.&lt;/p>
&lt;p>You pay for it. In &lt;a href="https://techfuelhq.com/homelab/six-bay-nas-drives-rebuild-2026/">my August 17 pricing&lt;/a> the Toshiba MG at 24TB ran $43.12 per terabyte against $39.50 for the Exos — about 9% more, which is $87 a drive and $522 across six bays.&lt;/p>
&lt;p>I can&amp;rsquo;t tell you idle draw per drive from memory and I&amp;rsquo;m not going to guess — it&amp;rsquo;s the number everyone asks for on deal threads and nobody answers.&lt;/p>
&lt;h2 id="the-panel-is-the-noise">The panel is the noise&lt;/h2>
&lt;p>Vibration is the part people miss when they shop this by spec sheet.&lt;/p>
&lt;p>Seagate rates the Exos X24 to hold &lt;strong>greater than 90% throughput&lt;/strong> on sequential and random writes while being shaken at 12.5 rad/s² of rotary vibration between 20 and 1500 Hz, and to run without unrecoverable errors under 0.70 Grms of linear vibration from 5 to 500 Hz. The drive is engineered to keep working while it shakes.&lt;/p>
&lt;p>Nothing in that specification says your enclosure stays quiet while it happens. The energy goes somewhere. In a thin steel side panel it goes into a large flat surface with a resonant frequency, and a 7200 RPM spindle is very good at finding it. That is the sound you are actually annoyed by — not the drive, the sheet metal the drive is bolted to.&lt;/p>
&lt;p>Which means &lt;strong>isolation fixes more than shopping for a quieter model does.&lt;/strong> Grommets or rubber-isolated sleds in the bays, a heavier or braced enclosure, and drives that are not rigidly coupled to one big panel. The 0.8 bel difference between an Exos and an Ultrastar is real, and it is smaller than the difference between a bare metal cage and an isolated one.&lt;/p>
&lt;p>The manual is specific about the mounting itself, and it is worth following: 6-32 UNC screws only, inserted no more than 3.56 mm into the side or bottom holes, at a &lt;strong>maximum torque of 6 in-lb&lt;/strong>. Cranking a drive down hard into a panel does not stop the noise. It couples the two more tightly.&lt;/p>
&lt;h2 id="the-number-on-the-box-is-the-outer-edge-of-the-platter">The number on the box is the outer edge of the platter&lt;/h2>
&lt;p>Sequential throughput comes in under spec. Not by a lot, and not in a way that matters for a NAS, but the number printed on the listing is not the number you get.&lt;/p>
&lt;p>That is by design rather than by disappointment. Seagate&amp;rsquo;s 285 MB/s is the &lt;em>maximum sustained rate at the outer diameter&lt;/em> — the manual prints it as 272 MiB/s OD. Outer tracks are physically longer, so more sectors pass under the head per rotation. Fill the pool and you are working further in, at a lower rate, with nothing wrong anywhere.&lt;/p>
&lt;p>If you are sizing a &lt;a href="https://techfuelhq.com/homelab/six-bay-nas-drives-rebuild-2026/">rebuild window&lt;/a>, that is the direction the error runs: slower than the floor, never faster.&lt;/p>
&lt;h2 id="how-to-buy-recertified">How to buy recertified&lt;/h2>
&lt;p>Recertified is a normal way to buy drives now, not a corner cut. Seagate runs the program itself and &lt;a href="https://www.seagate.com/products/seagate-recertified/" rel="noopener">describes the process&lt;/a> as sanitize, test against factory performance standards, then certify.&lt;/p>
&lt;p>&lt;strong>Test every recert on arrival, before it joins anything.&lt;/strong> A full SMART extended self-test:&lt;/p>
&lt;pre tabindex="0">&lt;code>smartctl -t long /dev/sdX # start it
smartctl -c /dev/sdX # the drive reports its own expected polling time
smartctl -a /dev/sdX # read the result when it finishes
&lt;/code>&lt;/pre>&lt;p>The &lt;a href="https://manpages.debian.org/bookworm/smartmontools/smartctl.8.en.html" rel="noopener">smartctl documentation&lt;/a> puts the extended test at &amp;ldquo;tens of minutes to several hours.&amp;rdquo; At 24TB you are at the long end of that. Start it before bed. If a drive is going to fail early, it fails there — outside your array, while you still have a return window.&lt;/p>
&lt;h3 id="the-warranty-is-the-real-tradeoff-and-it-is-not-one-number">The warranty is the real tradeoff, and it is not one number&lt;/h3>
&lt;p>This is where recertified actually costs you, and the spread is wider than most people expect. Same drive family, four different answers, all live today:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Where you buy it&lt;/th>
&lt;th scope="col">Stated warranty&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>New Exos X24, from Seagate&lt;/td>
&lt;td>&lt;strong>5-year limited warranty&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Seagate&amp;rsquo;s own recertified program&lt;/td>
&lt;td>6 months&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Recertified Exos X24 at Newegg (ST24000NM000C)&lt;/td>
&lt;td>90 days&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Recertified Exos X24 at ServerPartDeals (ST24000NM000H)&lt;/td>
&lt;td>3 years&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Sources: Seagate&amp;rsquo;s &lt;a href="https://www.seagate.com/support/internal-hard-drives/enterprise-hard-drives/exos-x24/" rel="noopener">Exos X24 support page&lt;/a> and &lt;a href="https://www.seagate.com/products/seagate-recertified/" rel="noopener">recertified drives page&lt;/a>, the &lt;a href="https://www.newegg.com/seagate-exos-x24-st24000nm000c-24tb/p/1Z4-002P-02KX4" rel="noopener">Newegg recertified listing&lt;/a>, and the &lt;a href="https://serverpartdeals.com/products/seagate-exos-st24000nm000h-24tb-7-2k-rpm-sata-6gb-s-512e-cmr-3-5-recertified-hard-drive" rel="noopener">ServerPartDeals listing&lt;/a>.&lt;/p>
&lt;p>The mechanism behind the spread is the thing to understand. ServerPartDeals &lt;a href="https://serverpartdeals.com/pages/faqs" rel="noopener">defines&lt;/a> a manufacturer-recertified drive as one &amp;ldquo;tested, recertified, and approved by the original manufacturer&amp;hellip; without a manufacturer warranty.&amp;rdquo; The original coverage does not travel with the drive. What you get instead is whatever the seller chose to promise, and on the same 24TB Exos that runs from 90 days to three years.&lt;/p>
&lt;p>So the rule is not &amp;ldquo;recert has a shorter warranty.&amp;rdquo; It is &lt;strong>read the listing you are actually buying from&lt;/strong>, because the number is set there and nowhere else. Three years of seller coverage on a recert is a different purchase from ninety days at a similar price.&lt;/p>
&lt;h2 id="it-already-broke-once-misses-how-parity-works">&amp;ldquo;It already broke once&amp;rdquo; misses how parity works&lt;/h2>
&lt;p>The standard objection to recertified drives is that they are drives that already failed. It misunderstands what the array is for.&lt;/p>
&lt;p>A redundant array does not assume its members are healthy. It assumes they will die and holds enough parity to survive it while a replacement copies. Recert plus redundancy plus backups is the whole argument — and if you are missing the third one, the first two do not save you. Parity survives a drive dying. It does not survive a deleted directory, or the enclosure&amp;rsquo;s power supply taking the shelf with it.&lt;/p>
&lt;p>That is the actual condition on buying recertified. Not &amp;ldquo;is this drive suspicious,&amp;rdquo; but &amp;ldquo;do I have all three.&amp;rdquo; If you only have two, buying new drives leaves you in the same place, just more expensively.&lt;/p>
&lt;h2 id="check-for-smr-anyway">Check for SMR anyway&lt;/h2>
&lt;p>SMR is a consumer-drive problem. Western Digital&amp;rsquo;s own SMR disclosure is titled &lt;a href="https://blog.westerndigital.com/wp-content/uploads/2020/07/WD_SMR_SKUs_vDS.pdf" rel="noopener">&amp;ldquo;WD Internal Client HDD Recording Technology&amp;rdquo;&lt;/a> and lists WD Red 3.5-inch at 2/3/4/6TB plus some WD Blue and WD Black models — client drives, none above 6TB — with the note that &amp;ldquo;all other capacity points use CMR recording technology.&amp;rdquo;&lt;/p>
&lt;p>The three enterprise families here are all CMR, confirmed in their own documentation: Seagate &lt;a href="https://investors.seagate.com/news/news-details/2023/Seagates-New-Exos-24TB-Hard-Drives-Deliver-Market-Leading-Capacity-for-Hyperscalers-and-Enterprise-Data-Centers/default.aspx" rel="noopener">describes&lt;/a> the 24TB Exos X24 as &amp;ldquo;conventional magnetic recording (CMR)-based,&amp;rdquo; Western Digital&amp;rsquo;s HC580 manual labels its 22/24TB power table the &amp;ldquo;CMR Model,&amp;rdquo; and Toshiba&amp;rsquo;s MG11 overview opens by calling it a &amp;ldquo;conventional magnetic recording (CMR) HDD.&amp;rdquo;&lt;/p>
&lt;p>Check the model number anyway. It costs thirty seconds, and SMR discovered during a resilver is the worst afternoon you will have.&lt;/p>
&lt;h2 id="buy-the-exos-and-decide-where-it-goes-before-you-order">Buy the Exos, and decide where it goes before you order&lt;/h2>
&lt;p>&lt;strong>For a homelab array, buy the Seagate Exos.&lt;/strong> It costs less per terabyte than the Toshiba, it is identical to both of the others under seek, and the idle penalty is a room problem you solve with rubber and a closed door rather than with $522 of extra drives. Buy recertified if the listing&amp;rsquo;s warranty is one you would accept in writing, and run the long test the day it lands.&lt;/p>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/deeplink?id=CW4UrCo/56I&amp;amp;mid=44583&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fp%2Fpl%3Fd%3DST24000NM002H"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="search">Search Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=Seagate&amp;#43;Exos&amp;#43;X24&amp;#43;24TB&amp;#43;ST24000NM002H&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;p>Prices move. Check before you buy six.&lt;/p>
&lt;p>&lt;strong>Buy the Ultrastar HC580 or the Toshiba MG11 instead if the array has to sit in a room you occupy quietly&lt;/strong> — a home office you take calls in, a studio apartment, a living room. On the Toshiba you are buying 0.8 bels at idle for about 9% more per terabyte, and in that room it is worth it.&lt;/p>
&lt;p>&lt;strong>Do not put any of these in a room you sleep in.&lt;/strong> Not the Exos, not the quiet ones. Move the array or accept that you will hear it, because 2.0 bels at idle is still an enterprise drive four feet from your head, and it goes to 3.2 the moment a scrub starts at 2am.&lt;/p>
&lt;h2 id="who-should-not-buy-these">Who should not buy these&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Anyone putting the array in a bedroom.&lt;/strong> The quieter models narrow the gap at idle and close nothing under load.&lt;/li>
&lt;li>&lt;strong>Anyone trusting a single recert with unbacked data.&lt;/strong> Recert works because parity and a backup sit behind it. Alone it is a used drive.&lt;/li>
&lt;li>&lt;strong>Anyone who wants one quiet external drive.&lt;/strong> These are 7200 RPM enterprise disks built for a chassis full of their siblings. Buy a consumer drive for that job.&lt;/li>
&lt;/ul>
&lt;p>The &lt;a href="https://techfuelhq.com/homelab/seagate-ironwolf-vs-ironwolf-pro-vs-exos-2026/">Seagate drive comparison&lt;/a> covers where Exos sits against IronWolf and IronWolf Pro, and the &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">capacity calculator&lt;/a> runs the parity maths for whatever bay count you land on.&lt;/p></description></item><item><title>Minisforum MS-01: Reviewed as a 24/7 Hypervisor Node</title><link>https://techfuelhq.com/homelab/ms-01-as-a-homelab-node/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/ms-01-as-a-homelab-node/</guid><description>&lt;p>Most mini PC reviews measure the machine on a desk. The question worth asking about this one is different: what it does when nobody logs into it locally, when its job is to hold VMs up around the clock, and when the thing plugged into the back of it is a DAC rather than a monitor.&lt;/p>
&lt;p>Judged that way, the MS-01 is still the node I&amp;rsquo;d buy. The reason is the four network ports, and almost everything else on this page is a cost you accept to get them.&lt;/p>
&lt;p>&lt;em>Some retailer links below are affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="four-network-ports-is-the-whole-argument">Four network ports is the whole argument&lt;/h2>
&lt;p>Minisforum publishes &lt;strong>two 10Gbps SFP+ ports and two 2.5Gbps RJ45 ports&lt;/strong>, a &amp;ldquo;PCIe 4.0 x16 slot (Half-height, single-slot, supports up to PCIe 4.0 x8 speed)&amp;rdquo;, three M.2 2280 NVMe slots and a 64GB DDR5 ceiling (&lt;a href="https://au.minisforum.com/products/minisforum-ms-01" rel="noopener">MINISFORUM specification&lt;/a>). Edy Werder identifies the SFP+ pair as Intel X710 and the 2.5GbE pair as Intel I225 in his &lt;a href="https://edywerder.ch/minisforum-ms-01-review/" rel="noopener">Proxmox review&lt;/a>.&lt;/p>
&lt;p>On a desktop that is a spec-sheet flex. On a hypervisor it changes the architecture:&lt;/p>
&lt;ul>
&lt;li>Management gets its own port, so a broken bridge on the VM network does not lock you out of the box.&lt;/li>
&lt;li>Storage gets the 10G pair, separate from everything else moving over the 2.5GbE side.&lt;/li>
&lt;li>A firewall VM gets real WAN and LAN interfaces instead of a USB adapter, which is the limitation that ends most single-port mini PC builds.&lt;/li>
&lt;/ul>
&lt;p>That is four physical interfaces to assign, in a chassis you can put on a shelf. The &lt;a href="https://techfuelhq.com/homelab/best-mini-pcs-homelab-2026/">mini PC roundup&lt;/a> covers the rest of the field on price and cores; this page is about what happens when the box has to stay up.&lt;/p>
&lt;p>&lt;strong>One correction to the story people tell about this machine.&lt;/strong> The MS-01 was the only box at this size doing four ports, and it is not any more. Minisforum&amp;rsquo;s own MS-A2 lists the same count — &amp;ldquo;10G SFP+(Intel X710) x 2&amp;rdquo; plus two 2.5Gb RJ45 on an Intel I226-V and a Realtek RTL8125 — and it is not automatically the pricier machine. MS-A2 barebones ran &lt;strong>$439 for the Ryzen 7 7745HX and $799 for the Ryzen 9 9955HX&lt;/strong>, against &lt;strong>$679&lt;/strong> for the MS-01&amp;rsquo;s i9-13900H barebone (&lt;a href="https://store.minisforum.com/products/minisforum-ms-a2" rel="noopener">MS-A2 listing&lt;/a>, &lt;a href="https://store.minisforum.com/products/minisforum-ms-01" rel="noopener">MS-01 listing&lt;/a>, both read September 7, 2026). The MS-01 is still my pick. At new-unit pricing it is a closer call than it was a year ago.&lt;/p>
&lt;h2 id="idle-is-higher-than-people-expect-and-the-published-numbers-disagree">Idle is higher than people expect, and the published numbers disagree&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Source&lt;/th>
&lt;th scope="col">Configuration&lt;/th>
&lt;th scope="col" style="text-align: right">Idle&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;a href="https://www.servethehome.com/minisforum-ms-01-review-the-10gbe-with-pcie-slot-mini-pc-intel/5/" rel="noopener">ServeTheHome&lt;/a>&lt;/td>
&lt;td>their test system&lt;/td>
&lt;td style="text-align: right">&lt;strong>25–29W&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://scottstuff.net/posts/2025/01/08/minisforum-ms01-power/" rel="noopener">scottstuff.net&lt;/a>&lt;/td>
&lt;td>i5-12600H, Ubuntu 24.04, no add-in card&lt;/td>
&lt;td style="text-align: right">&lt;strong>13.2W&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://scottstuff.net/posts/2025/01/08/minisforum-ms01-power/" rel="noopener">scottstuff.net&lt;/a>&lt;/td>
&lt;td>i9-13900H, Ubuntu 24.04, no add-in card&lt;/td>
&lt;td style="text-align: right">&lt;strong>14.4W&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://scottstuff.net/posts/2025/01/08/minisforum-ms01-power/" rel="noopener">scottstuff.net&lt;/a>&lt;/td>
&lt;td>same two machines, Mellanox ConnectX-5 fitted&lt;/td>
&lt;td style="text-align: right">&lt;strong>32.1W / 27.1W&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://edywerder.ch/minisforum-ms-01-review/" rel="noopener">Edy Werder&lt;/a>&lt;/td>
&lt;td>Proxmox, stock CPU governor&lt;/td>
&lt;td style="text-align: right">&lt;strong>~53W at the wall&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://edywerder.ch/minisforum-ms-01-review/" rel="noopener">Edy Werder&lt;/a>&lt;/td>
&lt;td>Proxmox, governor changed&lt;/td>
&lt;td style="text-align: right">&lt;strong>~28W at the wall&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Nobody in that table is wrong. Thirteen watts and twenty-nine watts are the same computer with a different operating system, a different card in the slot and a different governor. Idle draw on this machine depends far more on the OS, the NIC and the tuning than it does on the model number, which is why the question &amp;ldquo;what does an MS-01 idle at&amp;rdquo; has no answer worth quoting.&lt;/p>
&lt;p>What survives across all of it: &lt;strong>idle is higher than people expect from something this size.&lt;/strong> If low idle is your actual goal, buy an N100 box. Those sit at &lt;a href="https://techfuelhq.com/homelab/best-mini-pc-home-assistant-2026/">7 to 14 watts&lt;/a>, and the &lt;a href="https://techfuelhq.com/homelab/24-7-homelab-idle-power-costs-2026/">24/7 power cost page&lt;/a> turns the difference into a yearly bill. The MS-01&amp;rsquo;s floor is what four network controllers cost you.&lt;/p>
&lt;h2 id="the-card-you-put-in-the-slot-changes-the-machine">The card you put in the slot changes the machine&lt;/h2>
&lt;p>scottstuff.net measured the same two machines with and without a Mellanox ConnectX-5. The card moved the i5-12600H from &lt;strong>13.2W to 32.1W&lt;/strong> and the i9-13900H from &lt;strong>14.4W to 27.1W&lt;/strong>.&lt;/p>
&lt;p>That is thirteen to nineteen watts of continuous heat added to a chassis with no spare room, in a bay Minisforum specifies as half-height and single-slot, so the card has no fan of its own. The chassis could not carry it: Scott Laird had to run &amp;ldquo;a very hefty AC muffin fan&amp;rdquo; through the machines to stop the NICs overheating and shutting down near 115 °C, and that external fan&amp;rsquo;s draw is not in the figures above. A hot add-in NIC in that slot changes the machine&amp;rsquo;s entire power and thermal profile, not just its power figure.&lt;/p>
&lt;p>&lt;strong>Plan the airflow before you buy the card.&lt;/strong> After it arrives is too late to find out the slot was the wrong place for it.&lt;/p>
&lt;h2 id="the-fan-is-louder-under-a-hypervisor-than-under-windows">The fan is louder under a hypervisor than under Windows&lt;/h2>
&lt;p>This is the thing nobody warns you about, and it is the difference between a machine you keep in the office and one you move to a closet.&lt;/p>
&lt;p>The stock curve is aggressive and it does not know the difference between a burst and a workload. A hypervisor hands it bursts constantly — a backup kicking off, a VM booting, a scrub starting — and it answers every one of them as though a sustained load had begun. Under Windows the same hardware sounds like a different machine.&lt;/p>
&lt;p>It is not quiet to begin with. ServeTheHome measured &lt;strong>37–38 dBA at idle against a 34.5 dBA noise floor&lt;/strong>, rising into the &lt;strong>44 dBA range&lt;/strong> under load.&lt;/p>
&lt;p>The fix is usually upstream of the fan. Edy Werder logged an &lt;strong>82–88 °C baseline across thirty days&lt;/strong> on Proxmox, found the cause in the CPU governor rather than the chassis, and saw &lt;strong>57–58 °C&lt;/strong> afterwards. The fan was doing its job. The governor was giving it a reason.&lt;/p>
&lt;h2 id="the-sfp-side-runs-hot">The SFP+ side runs hot&lt;/h2>
&lt;p>Two 10G controllers and their cages sit inside a box with nothing to spare. If this machine is throttling and you are looking for the cause, &lt;strong>start at the SFP+ end&lt;/strong>, not at the CPU.&lt;/p>
&lt;p>Optics make it worse than direct-attach copper. In scottstuff.net&amp;rsquo;s pair one machine ran fibre and the other DAC, and Scott Laird notes the fibre &amp;ldquo;should have added about 6W to the total&amp;rdquo; across the two. That is dissipated in the transceiver cage rather than spread across the board.&lt;/p>
&lt;h2 id="the-bios-is-thin">The BIOS is thin&lt;/h2>
&lt;p>Expect to update it, and expect to touch power limits.&lt;/p>
&lt;p>Two entries from the release history are enough to explain why. BIOS v1.26 added &lt;strong>&amp;ldquo;C-State is supported&amp;rdquo;&lt;/strong> along with a microcode update; v1.27 added &lt;strong>Turbo Ratio Limit options&lt;/strong> and adjusted power limits per processor (&lt;a href="https://www.virtualizationhowto.com/2024/09/how-to-upgrade-the-minisforum-ms-01-bios/" rel="noopener">VirtualizationHowto&amp;rsquo;s update walkthrough&lt;/a>, files on the &lt;a href="https://support.minisforum.com/pages/product-info?lang=en" rel="noopener">MINISFORUM support page&lt;/a>).&lt;/p>
&lt;p>Read that next to the idle table. C-states are the mechanism that decides whether a 24/7 node sits at thirteen watts or twenty-nine, and support for them arrived in a firmware update. If you bought early and never flashed, the machine cannot reach the low numbers other people are publishing.&lt;/p>
&lt;p>Flash it on mains power you control. VirtualizationHowto&amp;rsquo;s warning is the right one: losing power mid-flash can brick it.&lt;/p>
&lt;h2 id="buy-it-refurbished">Buy it refurbished&lt;/h2>
&lt;p>&lt;strong>Minisforum sells the MS-01 refurbished itself, and that is where I&amp;rsquo;d buy one.&lt;/strong>&lt;/p>
&lt;p>On September 7, 2026 the refurbished store listed the &lt;strong>i9-13900H barebone at $537&lt;/strong>, against a $799 compare-at price, with a stated one-year warranty and no stand in the box (&lt;a href="https://refurbished.minisforum.com/products/minisforum-ms-01-work-station-refurbished" rel="noopener">Refurbished MINISFORUM&lt;/a>). The same barebone new, on the main store, was &lt;strong>$679&lt;/strong> that day. Both are barebone — no RAM, no storage, either way.&lt;/p>
&lt;p>Read the stock before you plan around it. The configured refurbished units that day — 32GB with a 512GB SSD at $619, 64GB with 1TB at $769 — were all out of stock. The barebone was the only i9-13900H refurbished option available.&lt;/p>
&lt;p>A $142 gap on an identical barebone is the recommendation. At that price, four ports, a PCIe slot and three M.2 slots is a straightforward yes. At $679 new I&amp;rsquo;d think harder, because that sits above an MS-A2 barebone with the same port count — and ServeTheHome&amp;rsquo;s MS-A2 numbers do not rescue you on the two complaints above either, at &lt;strong>25W idle&lt;/strong>, &lt;strong>39 dBA idle&lt;/strong> and &lt;strong>50 dBA under load&lt;/strong> (&lt;a href="https://www.servethehome.com/minisforum-ms-a2-review-an-almost-perfect-amd-ryzen-intel-10gbe-homelab-system/4/" rel="noopener">MS-A2 review&lt;/a>).&lt;/p>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/deeplink?id=CW4UrCo/56I&amp;amp;mid=44583&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fp%2Fpl%3Fd%3Dminisforum%20ms-01"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="search">Search Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=Minisforum&amp;#43;MS-01&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;p>Prices move and refurbished stock comes and goes. Check both stores before you order.&lt;/p>
&lt;h2 id="who-should-not-buy-one">Who should not buy one&lt;/h2>
&lt;p>&lt;strong>If you need ECC memory and IPMI, this is the wrong machine.&lt;/strong> It has neither, and no BIOS update adds them. That tradeoff is the whole subject of the &lt;a href="https://techfuelhq.com/homelab/used-enterprise-vs-mini-pc-homelab-2026/">used enterprise versus mini PC comparison&lt;/a>.&lt;/p>
&lt;p>&lt;strong>If you want silence on a desk, buy something else.&lt;/strong> 37–38 dBA at idle on a 34.5 dBA floor is not a desk machine, and a hypervisor makes it worse rather than better.&lt;/p>
&lt;p>&lt;strong>If you are chasing genuinely low idle, buy an N100 box.&lt;/strong> Nothing on this page gets an MS-01 into single digits, and four network controllers are the reason.&lt;/p>
&lt;p>&lt;strong>If you are dropping a hot card in the slot, solve airflow first.&lt;/strong> Nineteen watts of extra heat in a half-height bay with no fan of its own is a decision, not a detail.&lt;/p>
&lt;p>Everyone else: the four ports are worth it, and refurbished is the price at which they are clearly worth it.&lt;/p></description></item><item><title>NAS Software at Month Eight: DSM, UGOS Pro, TOS, QTS</title><link>https://techfuelhq.com/homelab/nas-os-month-eight-2026/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/nas-os-month-eight-2026/</guid><description>&lt;p>The first month goes well on all of them. Drives spin up, shares mount, the phone app finds the photos, the transfer speed matches the box. Every NAS sold today clears that bar.&lt;/p>
&lt;p>Month eight is the test. By then the hardware is a thing humming in a closet and what you are actually touching is the software — the backup scheduler, the container manager, the app you turned out to need six months after you bought the thing. &lt;strong>Good hardware carries the first month. What is left at month eight is the software&lt;/strong>, and that is where these four separate. It is also where almost nobody reviews them.&lt;/p>
&lt;p>&lt;em>Some retailer links below are affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see the &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="the-drive-policy-got-walked-back-the-transcoding-did-not">The drive policy got walked back. The transcoding did not.&lt;/h2>
&lt;p>Synology&amp;rsquo;s verified-drive requirement on the 2025 Plus line is why I stopped recommending them for most of last year. Not because I could not work around it. Because it told me where the product was heading.&lt;/p>
&lt;p>Then they reversed it. Synology&amp;rsquo;s &lt;a href="https://www.synology.com/en-us/company/news/article/dsm73" rel="noopener">DSM 7.3 announcement&lt;/a> of October 8, 2025 says that &amp;ldquo;25 model year DiskStation Plus, Value, and J series running DSM 7.3 will support the installation and storage pool creation of non-validated third-party drives.&amp;rdquo; One carve-out survives in the same announcement: &amp;ldquo;Creation of M.2 based storage pool and cache still requires drives on the HCL.&amp;rdquo; Fill the bays with whatever you want — the &lt;a href="https://techfuelhq.com/homelab/six-bay-nas-drives-rebuild-2026/">drive-level maths&lt;/a> is unchanged now that the policy is gone — and you still need a Synology-listed NVMe to build a cache.&lt;/p>
&lt;p>That reversal did not bring me back on its own. Synology-branded drives cost real money over the equivalent Exos and I was never able to identify what the premium bought — but the drives were the symptom, not the thing.&lt;/p>
&lt;p>The thing that bothers me more is the one that did not get walked back, and almost nobody talks about it.&lt;/p>
&lt;p>&lt;strong>The DS425+ ships an Intel Celeron J4125.&lt;/strong> Intel&amp;rsquo;s own &lt;a href="https://www.intel.com/content/www/us/en/products/sku/197305/intel-celeron-processor-j4125-4m-cache-up-to-2-70-ghz/specifications.html" rel="noopener">specification page for that chip&lt;/a> lists UHD Graphics 600 and, on its own row, &amp;ldquo;Intel Quick Sync Video: Yes.&amp;rdquo; &lt;a href="https://www.synology.com/en-us/products/DS425&amp;#43;" rel="noopener">Synology&amp;rsquo;s spec sheet for the DS425+&lt;/a> lists the same J4125 and no video-transcoding section at all. The silicon is in the box and the driver is not. XDA&amp;rsquo;s Rich Edmonds &lt;a href="https://www.xda-developers.com/brought-back-hardware-transcoding-on-my-synology-nas/" rel="noopener">walked through putting the removed drivers back by hand&lt;/a> on October 21, 2025, using a community script that covers the DS925, DS425 and DS225 — which tells you the capability is sitting there.&lt;/p>
&lt;p>&lt;strong>The DS925+ makes it structural.&lt;/strong> &lt;a href="https://www.synology.com/en-us/products/DS925&amp;#43;" rel="noopener">Synology&amp;rsquo;s own spec sheet&lt;/a> gives it an AMD Ryzen V1500B and, again, no transcoding section. That part ships without integrated graphics at all — worth saying plainly, because the XDA piece describes the DS925 as having an iGPU it is not allowed to use, and on this model the silicon is simply absent. One chip cannot do the work. The other can and is not permitted to. A drive policy reverses in a point release. This one is the roadmap.&lt;/p>
&lt;p>If transcoding is the reason you are buying, the &lt;a href="https://techfuelhq.com/homelab/best-nas-for-plex-jellyfin-2026/">NAS transcoding guide&lt;/a> sorts the current field by that spec alone.&lt;/p>
&lt;h2 id="check-the-manufacturers-spec-sheet-not-the-retailers">Check the manufacturer&amp;rsquo;s spec sheet, not the retailer&amp;rsquo;s&lt;/h2>
&lt;p>Worth thirty seconds before you order. Newegg&amp;rsquo;s listing for this box carries the full product name &amp;ldquo;Synology 4-bay DiskStation DS925+ - 4GB DDR4 ECC SODIMM Intel Celeron J4125 Processor Diskless System,&amp;rdquo; and the same J4125 turns up again in its specification table. Synology says AMD Ryzen V1500B for the same model. The word &amp;ldquo;Ryzen&amp;rdquo; does not appear on the retailer page.&lt;/p>
&lt;p>Buy on the Intel line in that listing and you are expecting a Quick Sync engine that the machine does not have. This is not a Synology-specific hazard, but it lands hardest here, because the Intel chip named in that row is exactly the one people buy these for.&lt;/p>
&lt;h2 id="the-four-boxes-as-sold">The four boxes, as sold&lt;/h2>
&lt;p>Four-bay, diskless, opened on Newegg September 7:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Box&lt;/th>
&lt;th scope="col">CPU&lt;/th>
&lt;th scope="col">Memory&lt;/th>
&lt;th scope="col">Fastest port&lt;/th>
&lt;th scope="col">Hardware transcode&lt;/th>
&lt;th scope="col">OS&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Synology DS925+&lt;/strong>&lt;/td>
&lt;td>AMD Ryzen V1500B&lt;/td>
&lt;td>4GB DDR4 ECC&lt;/td>
&lt;td>2.5GbE ×2&lt;/td>
&lt;td>none&lt;/td>
&lt;td>DSM 7.3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>UGREEN NASync DXP4800 Plus&lt;/strong>&lt;/td>
&lt;td>Intel Pentium Gold 8505&lt;/td>
&lt;td>8GB DDR5, to 64GB&lt;/td>
&lt;td>10GbE&lt;/td>
&lt;td>Quick Sync&lt;/td>
&lt;td>UGOS Pro&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>TerraMaster F4-424 Pro&lt;/strong>&lt;/td>
&lt;td>Intel Core i3-N305&lt;/td>
&lt;td>32GB DDR5, one slot&lt;/td>
&lt;td>2.5GbE ×2&lt;/td>
&lt;td>Intel UHD&lt;/td>
&lt;td>TOS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>QNAP TS-464&lt;/strong>&lt;/td>
&lt;td>Intel Celeron N5095&lt;/td>
&lt;td>8GB DDR4, to 16GB&lt;/td>
&lt;td>2.5GbE ×2&lt;/td>
&lt;td>Intel UHD&lt;/td>
&lt;td>QTS 5 / QuTS hero&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Prices the same day: &lt;strong>$889.99&lt;/strong> for the DS925+, &lt;strong>$656.99&lt;/strong> for the UGREEN, &lt;strong>$859.99&lt;/strong> for the F4-424 Pro sold by TerraMaster&amp;rsquo;s own Newegg storefront. The TS-464 page carried offers from $379.99 to $742.21 depending on the seller, which is its own reason to read the seller name before the price.&lt;/p>
&lt;p>Maker&amp;rsquo;s sheets for the specs: &lt;a href="https://ai.ugreen.com/pages/operating-system" rel="noopener">UGREEN&amp;rsquo;s&lt;/a> for the OS features, &lt;a href="https://www.terra-master.com/pages/f4-424-pro-specification" rel="noopener">TerraMaster&amp;rsquo;s&lt;/a> for the F4-424 Pro, &lt;a href="https://www.qnap.com/en-us/product/ts-464" rel="noopener">QNAP&amp;rsquo;s&lt;/a> for the TS-464.&lt;/p>
&lt;h2 id="ugreen-sells-the-hardware-synology-stopped-selling">UGREEN sells the hardware Synology stopped selling&lt;/h2>
&lt;p>$656.99 against $889.99. For $233 less, the UGREEN has 10GbE where the Synology has 2.5GbE, DDR5 where the Synology has DDR4, headroom to 64GB where the Synology ships 4GB, and a &lt;a href="https://www.intel.com/content/www/us/en/products/sku/226265/intel-pentium-gold-8505-processor-8m-cache-up-to-4-40-ghz/specifications.html" rel="noopener">Pentium Gold 8505&lt;/a> — a 2022 Intel part with UHD graphics and Quick Sync listed on Intel&amp;rsquo;s own page — where the Synology has an embedded chip with no video path at all.&lt;/p>
&lt;p>That is the whole UGREEN pitch and every line of it is true. It is also the trap, because every line of it is a month-one comparison.&lt;/p>
&lt;h2 id="ugos-pro-is-not-finished">UGOS Pro is not finished&lt;/h2>
&lt;p>The app catalogue runs out fast. UGREEN&amp;rsquo;s own OS page leads with Docker (&amp;ldquo;Deploy containerized apps for media, automation, development, and self-hosted services&amp;rdquo;) and a virtual-machine app (&amp;ldquo;Run virtual machines on your NAS to test operating systems, host services, or build separate work environments without extra hardware&amp;rdquo;), and those two carry more weight on UGOS Pro than they do on DSM, because anything past the basics ends up in a container you assemble yourself.&lt;/p>
&lt;p>If you were going to write compose files anyway, that is a feature and the price gap is free money. If you bought an appliance specifically so you would not have to, it is the thing you discover in month three and are still living with in month eight.&lt;/p>
&lt;p>That is not a prediction about UGREEN&amp;rsquo;s future. Software ecosystems fill in. It is a statement about what you get if you order one this week.&lt;/p>
&lt;h2 id="terramaster-on-sale-not-at-list">TerraMaster: on sale, not at list&lt;/h2>
&lt;p>TOS sits in the same place as UGOS Pro and arrives less polished, with a smaller ecosystem around it. The HDMI port gets sold as a differentiator — TerraMaster&amp;rsquo;s spec sheet lists one HDMI 2.0b output — and what it gives you is a console. I have not found anything else to do with it.&lt;/p>
&lt;p>At $859.99 the F4-424 Pro is $203 more than the UGREEN and spends the difference on a second 2.5GbE port instead of a 10GbE one. It does ship 32GB of DDR5, more than anything else on this page, in a single non-upgradable slot, which is a real advantage if you are running containers and a dead end if you later want more.&lt;/p>
&lt;p>&lt;strong>I would buy this on sale. I would not buy it at list.&lt;/strong>&lt;/p>
&lt;h2 id="qnap-the-interface-was-never-the-problem">QNAP: the interface was never the problem&lt;/h2>
&lt;p>QTS is fine. It has been fine for years, and QuTS hero gives you ZFS if you want it — the &lt;a href="https://techfuelhq.com/storage/unraid-vs-truenas-vs-omv-vs-proxmox-2026/">storage backend comparison&lt;/a> covers what that buys you.&lt;/p>
&lt;p>The exposure history is the problem. QNAP&amp;rsquo;s own &lt;a href="https://www.qnap.com/en-us/security-advisory/qsa-22-24" rel="noopener">DeadBolt advisory&lt;/a> tells owners to &amp;ldquo;Disable the port forwarding function on the router&amp;rdquo; and to set up myQNAPcloud &amp;ldquo;to enable secure remote access and prevent exposure to the internet.&amp;rdquo; The company still runs a standing &lt;a href="https://www.qnap.com/en-us/security-advisories" rel="noopener">product-security advisory feed&lt;/a>, which is the correct thing to do and also the thing you are signing up to follow.&lt;/p>
&lt;p>I would not put a QNAP on the public internet. I would not put anything else there either — that half is not a QNAP rule. But this is the box where the history makes it impossible to wave off, and QNAP is wrong for you if you will not keep firmware current.&lt;/p>
&lt;h2 id="what-nobody-can-tell-you-yet">What nobody can tell you yet&lt;/h2>
&lt;p>UGREEN and TerraMaster are too new for me to tell you anything about multi-year reliability. Neither can anyone else. Synology and QNAP have a decade of field behaviour behind them; the other two do not have it yet, and no review published this year has it either.&lt;/p>
&lt;p>That is not a mark against them. It is a thing you are accepting when you buy one, and it should be worth something to you in the price.&lt;/p>
&lt;h2 id="buy-the-synology-unless-you-need-hardware-transcoding">Buy the Synology unless you need hardware transcoding&lt;/h2>
&lt;p>Synology still makes the best NAS operating system, and I say that as someone who spent most of 2025 not recommending them. If the software is what you are still using at month eight, buy for the software.&lt;/p>
&lt;p>&lt;strong>Buy the DS925+&lt;/strong> if hardware transcoding is not in your plans. You are paying $233 over the UGREEN for DSM and a decade of field history, and giving up the 10GbE port to get them. That is the trade, and it is worth making if the software is what you will be living in.&lt;/p>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/deeplink?id=CW4UrCo/56I&amp;amp;mid=44583&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fp%2FN82E16822108847"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="product">Check Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=Synology&amp;#43;DiskStation&amp;#43;DS925&amp;#43;4&amp;#43;bay&amp;#43;diskless&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;p>&lt;strong>Buy the UGREEN DXP4800 Plus&lt;/strong> if you need Plex or Jellyfin to transcode, or if you have a 10GbE switch and something fast enough to feed it. You are getting more hardware for less money and accepting an app catalogue that will send you to Docker. Go in knowing that is the trade rather than finding it out in month three.&lt;/p>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/deeplink?id=CW4UrCo/56I&amp;amp;mid=44583&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fp%2FN82E16822995003"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="product">Check Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=UGREEN&amp;#43;NASync&amp;#43;DXP4800&amp;#43;Plus&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;p>Prices move, and two of these pages carry marketplace sellers. Check the price and the seller before you order.&lt;/p>
&lt;h2 id="wrong-for">Wrong for&lt;/h2>
&lt;p>&lt;strong>UGREEN and TerraMaster are wrong&lt;/strong> if you want a finished app ecosystem and no tinkering.&lt;/p>
&lt;p>&lt;strong>A 2025 Synology is wrong&lt;/strong> if you want hardware transcoding — no model in that line does it, driver or silicon — or if you were counting on a third-party NVMe cache, which is the one piece DSM 7.3 did not reopen.&lt;/p>
&lt;p>&lt;strong>QNAP is wrong&lt;/strong> if you will not keep firmware current.&lt;/p>
&lt;p>&lt;strong>All four are wrong&lt;/strong> if what you actually want is a machine you administer yourself. That is a different purchase with a different failure mode, and &lt;a href="https://techfuelhq.com/storage/unraid-vs-truenas-vs-omv-vs-proxmox-2026/">the storage backends&lt;/a> are where it starts.&lt;/p></description></item><item><title>Prebuilt PC Warranties: Read the Panel, Not the Bullet</title><link>https://techfuelhq.com/articles/prebuilt-warranty-reality/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/prebuilt-warranty-reality/</guid><description>&lt;p>Two hundred and eighty-one RTX 5080 and RTX 5090 desktops sit in Newegg&amp;rsquo;s August 17 product feed. Not one of them contains the word &lt;em>warranty&lt;/em> — not in the title, not in either description field.&lt;/p>
&lt;p>&lt;strong>Five of the six pages I opened state a term anyway. The sixth states none at all.&lt;/strong>&lt;/p>
&lt;p>That gap is the whole problem. The machine-readable text behind a listing — the text a price comparison site, a shopping engine, or an AI shopping answer reads — says nothing at all about coverage for this entire category. The coverage lives somewhere else, in a panel on the product page that the feed never carries. And opening that panel does not always settle it: across six listings it did three different things.&lt;/p>
&lt;p>&lt;em>Some retailer links below are affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="the-listing-text-does-not-know">The listing text does not know&lt;/h2>
&lt;p>Newegg&amp;rsquo;s August 17 feed carries 13,254 in-stock, USD-priced desktop listings. Search every title and both description fields for a stated warranty duration and 4,216 match. The other 9,038 say nothing.&lt;/p>
&lt;p>That two-thirds silence looks like a finding until you see who the matches belong to:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Brand on the matching rows&lt;/th>
&lt;th scope="col" style="text-align: right">Rows&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Adamant Custom&lt;/td>
&lt;td style="text-align: right">4,157&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>HP&lt;/td>
&lt;td style="text-align: right">45&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>HAJAAN&lt;/td>
&lt;td style="text-align: right">14&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>One builder&amp;rsquo;s description template accounts for 4,157 of the 4,216 matches.&lt;/strong> Strip it out and 59 listings in the whole desktop category state a warranty period in their feed text. Only 47 rows put a term in the title at all. The two description fields are byte-identical on 13,253 of the 13,254 rows, so they are one piece of evidence wearing two hats, not two.&lt;/p>
&lt;p>This is not a census of which builders stand behind their machines. It is a census of which builders happened to type a warranty line into a product description — and almost nobody does.&lt;/p>
&lt;h2 id="what-the-pages-actually-say">What the pages actually say&lt;/h2>
&lt;p>Six listings, opened September 7, 2026. Every period below belongs to the exact item number linked in Sources.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Machine&lt;/th>
&lt;th scope="col">Sold and shipped by&lt;/th>
&lt;th scope="col">Warranty, and where it is stated&lt;/th>
&lt;th scope="col">Refund / replacement&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>ABS Kaze II Ruby (N82E16883360966)&lt;/td>
&lt;td>Newegg&lt;/td>
&lt;td>&lt;strong>Panel:&lt;/strong> 1 year parts, 1 year labor&lt;/td>
&lt;td>15 / 15 days, Newegg&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>STORMCRAFT Phantom&lt;/strong> (N82E16883420046)&lt;/td>
&lt;td>Newegg&lt;/td>
&lt;td>&lt;strong>Panel: 2 years parts, 3 years labor&lt;/strong>&lt;/td>
&lt;td>15 / 15 days, Newegg&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>STORMCRAFT Valkyrie&lt;/strong> (N82E16883420063)&lt;/td>
&lt;td>Newegg&lt;/td>
&lt;td>&lt;strong>Panel: 2 years parts, 3 years labor&lt;/strong>&lt;/td>
&lt;td>15 / 15 days, Newegg&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Andromeda Insights 50 V3 (3D5-006J-00058)&lt;/td>
&lt;td>Newegg&lt;/td>
&lt;td>Bullets only: 2 years parts, lifetime labor and lifetime service, US based. Panel records no period&lt;/td>
&lt;td>15 / 15 days, Newegg&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Skytech Tempest (9SIA1HJM5T7140)&lt;/td>
&lt;td>Skytech&lt;/td>
&lt;td>Bullet only: 1 year parts and labor. Panel says contact the seller&lt;/td>
&lt;td>30 / 30 days, Skytech&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CLX Horus (9SIABFSKF91483)&lt;/td>
&lt;td>CLX&lt;/td>
&lt;td>Panel says contact the seller. No period stated anywhere on the page&lt;/td>
&lt;td>30 / 60 days, CLX&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Five of those six are among the 281 feed rows that mention no warranty. The sixth is a marketplace item that is not in that snapshot at all.&lt;/p>
&lt;h3 id="three-ways-a-listing-misleads-you">Three ways a listing misleads you&lt;/h3>
&lt;p>&lt;strong>Silence is not absence.&lt;/strong> The ABS listing&amp;rsquo;s feed text has no warranty word in it. Its product page records one year of parts and one year of labor. Any tool that summarizes listings — including a chatbot reading a product feed — will report nothing and be wrong.&lt;/p>
&lt;p>&lt;strong>The longest promise is not always the recorded one.&lt;/strong> Andromeda&amp;rsquo;s bullets promise two years of parts plus lifetime labor and lifetime service from a US-based team. Newegg&amp;rsquo;s Warranty &amp;amp; Returns panel on that same page carries the return windows and no warranty period at all. Both statements are on the page; only one of them is in the retailer&amp;rsquo;s field. If Andromeda&amp;rsquo;s lifetime labor is why you are buying, get it confirmed in email by Andromeda inside the 15 days, while a refund is still on the table.&lt;/p>
&lt;p>&lt;strong>A replacement window is not a refund window.&lt;/strong> CLX gives 30 days for a refund and 60 for a replacement. Read &amp;ldquo;60-day returns&amp;rdquo; off that page and you will spend a month believing you can still get your money back after you cannot.&lt;/p>
&lt;h2 id="who-actually-fixes-it">Who actually fixes it&lt;/h2>
&lt;p>Sold and shipped by Newegg tells you who owns the sale, the shipping and the return window. It does not tell you who repairs the computer. On the STORMCRAFT and ABS pages, the warranty route is a Manufacturer Contact Info block carrying the builder&amp;rsquo;s own support phone and email — STORMCRAFT&amp;rsquo;s is 1-949-226-8899. Newegg records the term. The builder does the work.&lt;/p>
&lt;p>On marketplace listings the split is wider. Newegg&amp;rsquo;s help pages state that on a marketplace product page the return policy shown is the seller&amp;rsquo;s policy rather than Newegg&amp;rsquo;s, and that each marketplace seller sets its own terms on its profile. You can still start the return from your Newegg order history, and Newegg says that route works the same way it does for any other order. Starting a return through Newegg&amp;rsquo;s interface is not the same as buying under Newegg&amp;rsquo;s terms.&lt;/p>
&lt;p>Then there is the handoff. When the return window closes, the return route is gone and the recorded warranty term is what remains. On a Newegg-sold machine that is 15 days, which is not long to find a fault that shows up under load.&lt;/p>
&lt;h2 id="buy-the-stormcraft">Buy the STORMCRAFT&lt;/h2>
&lt;p>&lt;strong>Two years of parts and three years of labor, written into Newegg&amp;rsquo;s own warranty fields, on a machine Newegg sells and ships.&lt;/strong> That is the longest recorded term of the six, and STORMCRAFT carries it at both tiers — the Valkyrie with an RTX 5090, the Phantom with an RTX 5080.&lt;/p>
&lt;p>The comparison that decides it is the ABS Kaze II Ruby. Same retailer, same 15-day window, one year of parts and one year of labor. Our &lt;a href="https://techfuelhq.com/articles/best-rtx-5080-prebuilt-gaming-pc-2026/">RTX 5080 survey&lt;/a> found the Phantom and the ABS level on price on September 1, which makes the coverage the entire difference between them. The &lt;a href="https://techfuelhq.com/articles/best-rtx-5090-prebuilt-gaming-pc-2026/">RTX 5090 survey&lt;/a> reaches the same pick from the hardware side.&lt;/p>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/link?id=CW4UrCo/56I&amp;amp;offerid=1749755.4458318168606803486194287&amp;amp;type=15&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fstormcraft-valkyrie-va980xdcc-gaming-pc-ryzen-7-9800x3d-rtx-5090-32gb-2tb-geforce-rtx-5090-amd-ryzen-7-9800x3d-32gb-ddr5-2tb-ssd-gen-4-0-ssd-va980xdcc-590n1%2Fp%2FN82E16883420063%3Fitem%3DN82E16883420063"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="product">Check Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=RTX&amp;#43;5090&amp;#43;9800X3D&amp;#43;prebuilt&amp;#43;gaming&amp;#43;PC&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;p>Two things would change the pick.&lt;/p>
&lt;p>&lt;strong>You want longer than 15 days to test it.&lt;/strong> Skytech and CLX both give 30. That is a genuine trade — a longer window to find a fault in exchange for a warranty term the retailer never records — and it is only worth taking if you will actually stress the machine in weeks three and four rather than let it sit.&lt;/p>
&lt;p>&lt;strong>The hardware wins on its own.&lt;/strong> Nothing here says buy a worse computer for a better warranty. It says that when two machines are close, the recorded term is a real difference and the bullet is not one.&lt;/p>
&lt;p>What would not change the pick: the CLX listing on warranty grounds. It states no period anywhere, which is not a short warranty — it is no published warranty.&lt;/p>
&lt;h2 id="two-questions-to-get-answered-in-writing">Two questions to get answered in writing&lt;/h2>
&lt;p>&lt;strong>What happens in year three.&lt;/strong> STORMCRAFT&amp;rsquo;s parts coverage ends a year before its labor coverage does. Ask what a failed component costs you between month 25 and month 36, because a labor-only year covers the technician and not the part.&lt;/p>
&lt;p>&lt;strong>Who pays shipping.&lt;/strong> None of these six pages says who ships a tower back for warranty work, or who pays for it. On a heavy glass-sided case that is not a small question.&lt;/p>
&lt;p>Ask both before the return window closes, while sending the machine back is still an option.&lt;/p>
&lt;h2 id="how-this-was-checked">How this was checked&lt;/h2>
&lt;p>The census reads Newegg&amp;rsquo;s Rakuten product feed deposited August 17, 2026, retaining rows in the Desktop Computers category marked in-stock, priced in USD, with a positive price: 13,254 listings, one per SKU. Title and both description fields are searched separately for a warranty duration phrase, then combined once per row so a duplicated description cannot count twice.&lt;/p>
&lt;p>Detection is lexical, and a phrasing the pattern does not recognize reads as silence. A machine reading that feed sees the same silence, which is exactly why the feed is the wrong place to look for coverage.&lt;/p>
&lt;p>The six product pages and both Newegg policy pages were opened September 7, 2026, and the terms above are what those pages state. No warranty claim was submitted and no repair was timed, so this ranks what a buyer can verify before paying, not how the repair goes afterwards.&lt;/p>
&lt;p>Terms change without notice. Open the Warranty &amp;amp; Returns tab on the exact item number before you pay, and confirm the buy box still names the seller you expect.&lt;/p>
&lt;h2 id="sources-opened-september-7-2026">Sources, opened September 7, 2026&lt;/h2>
&lt;ul>
&lt;li>ABS Kaze II Ruby: &lt;a href="https://www.newegg.com/abs-kaze-ii-ruby-gaming-desktop-pc-geforce-rtx-5080-amd-ryzen-7-9800x3d-32gb-ddr5-2tb-m2-ssd-black/p/N82E16883360966?item=N82E16883360966" rel="noopener">Newegg listing&lt;/a>&lt;/li>
&lt;li>STORMCRAFT Phantom: &lt;a href="https://www.newegg.com/stormcraft-gaming-desktop-pc-geforce-rtx-5080-amd-ryzen-7-9800x3d-32gb-ddr5-2tb-nvme-ssd-phantom/p/N82E16883420046?item=N82E16883420046" rel="noopener">Newegg listing&lt;/a>&lt;/li>
&lt;li>STORMCRAFT Valkyrie: &lt;a href="https://www.newegg.com/stormcraft-valkyrie-va980xdcc-gaming-pc-ryzen-7-9800x3d-rtx-5090-32gb-2tb-geforce-rtx-5090-amd-ryzen-7-9800x3d-32gb-ddr5-2tb-ssd-gen-4-0-ssd-va980xdcc-590n1/p/N82E16883420063?item=N82E16883420063" rel="noopener">Newegg listing&lt;/a>&lt;/li>
&lt;li>Andromeda Insights 50 V3: &lt;a href="https://www.newegg.com/andromeda-insights-ultra-gaming-desktop-pcs-geforce-rtx-5080-amd-ryzen-7-9800x3d-32gb-ddr5-2tb-nvme-ssd-50-vector-black/p/3D5-006J-00058?item=3D5-006J-00058" rel="noopener">Newegg listing&lt;/a>&lt;/li>
&lt;li>Skytech Tempest: &lt;a href="https://www.newegg.com/skytech-gaming-desktop-pcs-geforce-rtx-5090-amd-ryzen-7-9800x3d-32gb-ddr5-2tb-nvme-ssd-st-tempest-3372-w-al-white/p/3D5-000Z-00471?item=9SIA1HJM5T7140" rel="noopener">Newegg listing&lt;/a>&lt;/li>
&lt;li>CLX Horus: &lt;a href="https://www.newegg.com/clx-horus-gaming-desktop-pcs-geforce-rtx-5080-intel-core-ultra-9-285k-96gb-ddr5-2tb-nvme-ssd-8tb-hdd-tgmhorrtu5103bm-black/p/3D5-000B-002Z9?item=9SIABFSKF91483" rel="noopener">Newegg listing&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://kb.newegg.com/knowledge-base/finding-an-items-return-policy" rel="noopener">Finding an item&amp;rsquo;s return policy&lt;/a> — Newegg Knowledge Base, updated July 21, 2026&lt;/li>
&lt;li>&lt;a href="https://kb.newegg.com/knowledge-base/how-to-return-a-marketplace-item" rel="noopener">Marketplace: returns and contacting sellers&lt;/a> — Newegg Knowledge Base, updated July 21, 2026&lt;/li>
&lt;li>Feed counts: Newegg product feed via Rakuten (MID 44583), deposit dated August 17, 2026, SHA-256 &lt;code>c86e341bb7026259f9d5f63db51752e257911d1f45fd494ac1def94893768ae6&lt;/code>&lt;/li>
&lt;/ul></description></item><item><title>RTX 5090 Prebuilt Power Disclosure: 82 Listings Audited</title><link>https://techfuelhq.com/data/rtx-5090-prebuilt-power-disclosure/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/data/rtx-5090-prebuilt-power-disclosure/</guid><description>&lt;p>Twelve RTX 5090 prebuilts were surveyed for &lt;a href="https://techfuelhq.com/articles/best-rtx-5090-prebuilt-gaming-pc-2026/">the September buying guide&lt;/a>, and one thing about them would not go away: not one said which cable fed the card. Twelve listings is an observation. It is not a finding.&lt;/p>
&lt;p>So this page checks all of them.&lt;/p>
&lt;p>&lt;em>Some retailer links below are affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em> Eighty-two in-stock RTX 5090 systems, $5,300 to $22,090, from Newegg&amp;rsquo;s August 17, 2026 product feed. The result is more specific than the original observation, and in one respect it is the opposite of what &amp;ldquo;power supply problem&amp;rdquo; usually means.&lt;/p>
&lt;h2 id="the-wattage-is-fine-that-is-the-surprise">The wattage is fine. That is the surprise.&lt;/h2>
&lt;p>Seventy-five of the 82 listings state a power-supply wattage. &lt;strong>Every single one of those 75 meets or exceeds the 1000W system power NVIDIA specifies for the RTX 5090.&lt;/strong> The stated figures run 1000W to 1300W, median 1000W. Not one comes in under.&lt;/p>
&lt;p>This is worth saying plainly because the reflex in this category is to assume the builder skimped on the supply. In this sample, on this measure, they did not.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">What the listing states&lt;/th>
&lt;th scope="col" style="text-align: right">Count&lt;/th>
&lt;th scope="col" style="text-align: right">Share&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>A power-supply wattage&lt;/td>
&lt;td style="text-align: right">75 / 82&lt;/td>
&lt;td style="text-align: right">91%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>An efficiency rating (80 Plus, Gold, etc.)&lt;/td>
&lt;td style="text-align: right">17 / 82&lt;/td>
&lt;td style="text-align: right">21%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>An ATX 3.x revision&lt;/td>
&lt;td style="text-align: right">5 / 82&lt;/td>
&lt;td style="text-align: right">6%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>The cable or connector standard&lt;/strong>&lt;/td>
&lt;td style="text-align: right">&lt;strong>0 / 82&lt;/strong>&lt;/td>
&lt;td style="text-align: right">&lt;strong>0%&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The disclosure does not taper off. It falls off a cliff, and it falls off exactly where this generation of card has had trouble.&lt;/p>
&lt;h2 id="why-the-cable-is-the-field-that-matters">Why the cable is the field that matters&lt;/h2>
&lt;p>The RTX 5090 draws 575W of total graphics power through a 12V-2x6 connector — the revised 16-pin design introduced with ATX 3.0 and tightened in ATX 3.1. The wattage headline and the connector are different questions, and only one of them is answered on these pages.&lt;/p>
&lt;p>A 1000W supply can be an older unit with an adapter, or a current ATX 3.1 unit with a native 12V-2x6 cable. Both satisfy the number in the specification table. They are not the same purchase. &lt;strong>Six percent of these listings tell you which one you are getting.&lt;/strong>&lt;/p>
&lt;p>That is the finding. Not that these machines are underpowered — they are not — but that the single field most worth knowing at this price is the one field nobody fills in.&lt;/p>
&lt;h2 id="the-other-thing-the-census-found">The other thing the census found&lt;/h2>
&lt;p>Eight of the 82 listings, &lt;strong>priced from $5,783 to $6,989&lt;/strong>, pair the RTX 5090 with a DDR4 platform on the Ryzen 9 5900X. That processor launched in 2020.&lt;/p>
&lt;p>Nothing here is broken and these machines will run games well. But at $6,989 you are buying a 2026 flagship graphics card bolted to a six-year-old memory generation on a socket with no upgrade path left. If you take one habit from this page, take this one: &lt;strong>on a prebuilt, read the memory type before you read the graphics card.&lt;/strong> The GPU is in the title. The platform generation usually is not.&lt;/p>
&lt;h2 id="which-listings-disclosed-the-most">Which listings disclosed the most&lt;/h2>
&lt;p>Seven listings state both an efficiency rating and an ATX 3.x revision, or state a rating alongside a supply of 1200W or more. They are not necessarily the best machines. They are the ones that told you the most before you paid.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Machine&lt;/th>
&lt;th scope="col">Stated supply&lt;/th>
&lt;th scope="col" style="text-align: right">Price (2026-08-17 feed)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Thermaltake LCGS View 9890S-380XL (9800X3D)&lt;/td>
&lt;td>1200W, 80+ Gold, ATX 3.0&lt;/td>
&lt;td style="text-align: right">$6,090.99&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Skytech Legacy (Ryzen 9 9950X3D)&lt;/td>
&lt;td>1200W, rated, ATX 3.x&lt;/td>
&lt;td style="text-align: right">$6,299.99&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Skytech Legacy (Ultra 9 285K)&lt;/td>
&lt;td>1200W, rated, ATX 3.x&lt;/td>
&lt;td style="text-align: right">$5,999.99&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Skytech Legacy (Ryzen 9 9900X3D)&lt;/td>
&lt;td>1000W, rated, ATX 3.x&lt;/td>
&lt;td style="text-align: right">$5,999.99&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Skytech O11 Vision / King 95 (7800X3D)&lt;/td>
&lt;td>1200W, rated&lt;/td>
&lt;td style="text-align: right">$5,499.99&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/link?id=CW4UrCo/56I&amp;amp;offerid=1749755.4458313632340155146618509&amp;amp;type=15&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fthermaltake-gaming-desktop-pc-geforce-rtx-5090-32gb-gddr7-amd-ryzen-7-9800x3d-64gb-ddr5-2tb-nvme-ssd-1200w-80-gold-atx-3-0-windows-11-home%2Fp%2FN82E16883100115"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="product">Check Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=Thermaltake&amp;#43;LCGS&amp;#43;View&amp;#43;9890S&amp;#43;RTX&amp;#43;5090&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;p>Prices and stock are as recorded in the August 17 feed deposit and will have moved. Confirm both on the listing before buying.&lt;/p>
&lt;h2 id="what-to-ask-before-you-pay">What to ask before you pay&lt;/h2>
&lt;p>The listings will not tell you, so ask the seller. Four questions, in order of how much they cost you to get wrong:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Is the power supply ATX 3.0 or ATX 3.1?&lt;/strong> This determines whether it was designed around the 12V-2x6 connector and the transient behaviour of this card class.&lt;/li>
&lt;li>&lt;strong>Is the GPU cable native, or an adapter?&lt;/strong> A native cable from an ATX 3.x supply is the configuration the card was specified against.&lt;/li>
&lt;li>&lt;strong>What is the efficiency rating?&lt;/strong> Four fifths of these listings do not say. At 575W sustained from the card alone, it is not a trivial line.&lt;/li>
&lt;li>&lt;strong>What memory generation is the platform?&lt;/strong> Eight machines here answer this badly and none of them say so in the title.&lt;/li>
&lt;/ol>
&lt;p>If a seller will not answer 1 and 2 in writing, that is information too.&lt;/p>
&lt;h2 id="method-so-you-can-repeat-it">Method, so you can repeat it&lt;/h2>
&lt;p>Every row is from the Newegg product feed supplied through Rakuten Advertising (MID 44583), deposited 2026-08-17.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Selection.&lt;/strong> Product name matches &lt;code>rtx 5090&lt;/code> and a desktop/gaming-PC/workstation term; row is &lt;code>in-stock&lt;/code>; price ≥ $3,000. That yields 82 rows.&lt;/li>
&lt;li>&lt;strong>Field matching.&lt;/strong> The product name and both description fields are concatenated, then matched with fixed patterns: wattage from &lt;code>power supply: NNNNw&lt;/code> or &lt;code>NNNNw psu&lt;/code>; efficiency from &lt;code>80 plus&lt;/code>/&lt;code>gold&lt;/code>/&lt;code>platinum&lt;/code>/&lt;code>bronze&lt;/code>/&lt;code>titanium&lt;/code>; revision from &lt;code>atx 3.0&lt;/code>/&lt;code>atx 3.1&lt;/code>; cable from &lt;code>12vhpwr&lt;/code>/&lt;code>12v-2x6&lt;/code>/&lt;code>16-pin&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Verification.&lt;/strong> One listing was opened live on 2026-09-07 and its specification string matched the feed exactly. Its stock state had changed since the deposit, which is the expected behaviour of a dated snapshot and the reason nothing here is presented as a current quote.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Open data:&lt;/strong> &lt;a href="https://techfuelhq.com/data/prebuilt-psu-disclosure-2026-08-17.csv">prebuilt-psu-disclosure-2026-08-17.csv&lt;/a> — 82 rows, CC BY 4.0. Columns: &lt;code>sku&lt;/code>, &lt;code>price&lt;/code>, &lt;code>brand&lt;/code>, &lt;code>psu_watts&lt;/code>, &lt;code>efficiency_stated&lt;/code>, &lt;code>atx3_stated&lt;/code>, &lt;code>cable_stated&lt;/code>, &lt;code>ddr4_platform&lt;/code>, &lt;code>name&lt;/code>.&lt;/p>
&lt;h2 id="scope">Scope&lt;/h2>
&lt;p>This is a census of what the listings &lt;strong>say&lt;/strong>, not of what is inside the machines. Several of these
builders may well ship native ATX 3.1 cables — the point is that you cannot tell before you pay, and
at $6,000 you should be able to. Nothing here says any of these systems is unsafe.&lt;/p>
&lt;p>Sizing a supply for a card yourself rather than buying prebuilt? The &lt;a href="https://techfuelhq.com/tools/psu-wattage-calculator/">PSU wattage calculator&lt;/a> estimates draw with headroom, and &lt;a href="https://techfuelhq.com/articles/what-psu-for-rtx-5080-2026/">what PSU an RTX 5080 needs&lt;/a> works the same question one tier down.&lt;/p></description></item><item><title>RTX 5090 Prebuilts: What the $2,400 Premium Buys</title><link>https://techfuelhq.com/articles/rtx-5090-prebuilt-premium-2026/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/rtx-5090-prebuilt-premium-2026/</guid><description>&lt;p>Two towers from the same builder. Same processor, same memory, same drives, same Windows. One has an RTX 5080 in it and one has an RTX 5090.&lt;/p>
&lt;p>&lt;strong>The gap is $2,400, and nothing else in the box changes.&lt;/strong>&lt;/p>
&lt;p>That is worth knowing before you read a spec sheet that describes the more expensive machine as the higher-end system, because in the fields the seller publishes, it is not a higher-end system. It is the same system with a different card.&lt;/p>
&lt;p>&lt;em>Some retailer links below are affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="the-matched-pair">The matched pair&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Published field&lt;/th>
&lt;th scope="col">Horus TGMHORRTU5103BM&lt;/th>
&lt;th scope="col">Horus TGMHORRTZ5108BM&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Graphics&lt;/td>
&lt;td>RTX 5080 16GB&lt;/td>
&lt;td>&lt;strong>RTX 5090 32GB&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Processor&lt;/td>
&lt;td>Core Ultra 9 285K&lt;/td>
&lt;td>Core Ultra 9 285K&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memory&lt;/td>
&lt;td>96GB DDR5&lt;/td>
&lt;td>96GB DDR5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SSD&lt;/td>
&lt;td>2TB NVMe&lt;/td>
&lt;td>2TB NVMe&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hard drive&lt;/td>
&lt;td>8TB&lt;/td>
&lt;td>8TB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OS&lt;/td>
&lt;td>Windows 11 Home&lt;/td>
&lt;td>Windows 11 Home&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Power supply&lt;/td>
&lt;td>850W&lt;/td>
&lt;td>1000W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Price&lt;/strong>&lt;/td>
&lt;td>&lt;span class="claim" data-claim-key="listing.9SIABFSKF91483.price_usd" data-claim-value="4699.99" data-claim-scope="Newegg feed, lowest in-stock offer, US" data-claim-date="2026-08-17">&lt;strong>$4,699.99&lt;/strong>&lt;/span>
&lt;/td>
&lt;td>&lt;span class="claim" data-claim-key="listing.9SIABFSKF91481.price_usd" data-claim-value="7099.99" data-claim-scope="Newegg feed, lowest in-stock offer, US" data-claim-date="2026-08-17">&lt;strong>$7,099.99&lt;/strong>&lt;/span>
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Everything but the card and the supply is identical as published. Both listings were reopened on
September 7 and still matched.&lt;/p>
&lt;h2 id="it-holds-across-the-field">It holds across the field&lt;/h2>
&lt;p>The pair could be a quirk of one builder, so here is the same test run across every RTX 5080 and
5090 desktop in the August feed, grouped by exact processor, memory capacity and SSD description:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Matched configuration&lt;/th>
&lt;th scope="col" style="text-align: right">Listings 5080 / 5090&lt;/th>
&lt;th scope="col" style="text-align: right">Premium&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Ryzen 7 9800X3D · 32GB · 2TB NVMe&lt;/td>
&lt;td style="text-align: right">12 / 1&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="premium.9800x3d.32.2" data-claim-value="2550.00" data-claim-scope="Median 5090 offer minus median 5080 offer, Newegg feed" data-claim-date="2026-08-17">&lt;strong>$2,550&lt;/strong>&lt;/span>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ryzen 7 9800X3D · 64GB · 4TB NVMe&lt;/td>
&lt;td style="text-align: right">5 / 2&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="premium.9800x3d.64.4" data-claim-value="2050.00" data-claim-scope="Median 5090 offer minus median 5080 offer, Newegg feed" data-claim-date="2026-08-17">&lt;strong>$2,050&lt;/strong>&lt;/span>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ryzen 9 9950X3D · 64GB · 4TB NVMe&lt;/td>
&lt;td style="text-align: right">1 / 1&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="premium.9950x3d.64.4" data-claim-value="1800.00" data-claim-scope="Median 5090 offer minus median 5080 offer, Newegg feed" data-claim-date="2026-08-17">&lt;strong>$1,800&lt;/strong>&lt;/span>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Core Ultra 9 285K · 96GB · 2TB NVMe&lt;/td>
&lt;td style="text-align: right">2 / 2&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="premium.285k.96.2" data-claim-value="2515.50" data-claim-scope="Median 5090 offer minus median 5080 offer, Newegg feed" data-claim-date="2026-08-17">&lt;strong>$2,515.50&lt;/strong>&lt;/span>
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>$1,800 to $2,550, every time, for the card alone.&lt;/strong> Some of those groups are small — the row counts
are in the table — so read them as the size of the question to put to a seller, not as a fixed fee.&lt;/p>
&lt;h2 id="buy-the-5080">Buy the 5080&lt;/h2>
&lt;p>Start from the RTX 5080 quote. It is the same computer.&lt;/p>
&lt;p>Move up only if you can name what the card does for you that the 5080 does not — 4K at high refresh,
or a workload that genuinely needs 32GB of VRAM rather than 16GB. Those are real reasons and the
&lt;a href="https://techfuelhq.com/gpu-reviews/rtx-5090-vs-5080-2026/">GPU-level comparison&lt;/a> settles them properly, with benchmarks
this page does not attempt.&lt;/p>
&lt;p>What is not a reason: the more expensive tower being described as the better machine. On the
published fields, it is not.&lt;/p>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/link?id=CW4UrCo/56I&amp;amp;offerid=1749755.445833853647189334724623&amp;amp;type=15&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fabs-kaze-ii-ruby-gaming-desktop-pc-geforce-rtx-5080-amd-ryzen-7-9800x3d-32gb-ddr5-2tb-m2-ssd-black%2Fp%2FN82E16883360966%3Fitem%3DN82E16883360966"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="product">Check Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=RTX&amp;#43;5080&amp;#43;9800X3D&amp;#43;prebuilt&amp;#43;gaming&amp;#43;PC&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;h2 id="two-things-to-get-in-writing">Two things to get in writing&lt;/h2>
&lt;p>&lt;strong>What changes besides the card.&lt;/strong> These listings match on capacity, which is not the same as
matching on component. Ask for the exact motherboard, drive model, cooler and warranty terms on both
machines before you accept that they are otherwise the same box. Worth knowing what you are asking for: of six
prebuilt listings opened in detail, five state a warranty term and
&lt;a href="https://techfuelhq.com/articles/prebuilt-warranty-reality/">one states none at all&lt;/a>.&lt;/p>
&lt;p>&lt;strong>What feeds the card.&lt;/strong> Our &lt;a href="https://techfuelhq.com/data/rtx-5090-prebuilt-power-disclosure/">census of 82 RTX 5090 systems&lt;/a>
found 91% state a supply wattage, 21% state an efficiency rating, 6% state an ATX 3.x revision, and
none names the connector. At $7,000 that is a fair question to make someone answer.&lt;/p>
&lt;p>The &lt;a href="https://techfuelhq.com/articles/best-rtx-5080-prebuilt-gaming-pc-2026/">5080 survey&lt;/a> and
&lt;a href="https://techfuelhq.com/articles/best-rtx-5090-prebuilt-gaming-pc-2026/">5090 survey&lt;/a> carry the per-seller detail. Prices
here are from the August 17 feed and will have moved — check before ordering.&lt;/p></description></item><item><title>Six-Bay NAS Drives: The Rebuild Math at 20TB+</title><link>https://techfuelhq.com/homelab/six-bay-nas-drives-rebuild-2026/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/homelab/six-bay-nas-drives-rebuild-2026/</guid><description>&lt;p>Twenty-four terabytes takes the better part of a day to copy at the drive maker&amp;rsquo;s own best-case number. A rebuild is messier than that. And the rebuild is exactly when you find out whether you bought the right layout.&lt;/p>
&lt;p>The &lt;a href="https://techfuelhq.com/homelab/best-nas-hard-drives-2026/">NAS hard drive guide&lt;/a> covers which drives are good. This page answers the next question: &lt;strong>which 20TB-plus drives belong in a six-bay box once rebuild time and failure behaviour are part of the price?&lt;/strong>&lt;/p>
&lt;p>&lt;em>Some retailer links below are affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="bigger-is-not-reliably-cheaper-per-terabyte">Bigger is not reliably cheaper per terabyte&lt;/h2>
&lt;p>Nine exact model numbers, lowest in-stock price each, August 2026:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Model&lt;/th>
&lt;th scope="col" style="text-align: right">20TB&lt;/th>
&lt;th scope="col" style="text-align: right">22TB&lt;/th>
&lt;th scope="col" style="text-align: right">24TB&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Seagate Exos&lt;/strong>&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="exos.20tb.usd" data-claim-value="791.99" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$791.99 — $39.60/TB&lt;/span>
&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="exos.22tb.usd" data-claim-value="983.50" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$983.50 — $44.70/TB&lt;/span>
&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="exos.24tb.usd" data-claim-value="948.00" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$948.00 — $39.50/TB&lt;/span>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>WD Red Pro&lt;/strong>&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="wdredpro.20tb.usd" data-claim-value="836.99" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$836.99 — $41.85/TB&lt;/span>
&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="wdredpro.22tb.usd" data-claim-value="879.99" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$879.99 — $40.00/TB&lt;/span>
&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="wdredpro.24tb.usd" data-claim-value="1059.99" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$1,059.99 — $44.17/TB&lt;/span>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Toshiba MG&lt;/strong>&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="toshibamg.20tb.usd" data-claim-value="889.99" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$889.99 — $44.50/TB&lt;/span>
&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="toshibamg.22tb.usd" data-claim-value="959.99" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$959.99 — $43.64/TB&lt;/span>
&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="toshibamg.24tb.usd" data-claim-value="1035.00" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$1,035.00 — $43.12/TB&lt;/span>
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Four of the six capacity steps lower cost per terabyte. Two raise it. &lt;strong>WD Red Pro improves from 20TB to 22TB then gets worse at 24TB. Seagate gets worse at 22TB and recovers at 24TB.&lt;/strong> Toshiba falls at both steps.&lt;/p>
&lt;p>The &amp;ldquo;buy the biggest drive, it&amp;rsquo;s cheaper per TB&amp;rdquo; rule of thumb is wrong often enough to be worth thirty seconds with a calculator. Six drives from this grid runs &lt;strong>$4,752 to $6,360&lt;/strong>, so a step in the wrong direction is real money.&lt;/p>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/deeplink?id=CW4UrCo/56I&amp;amp;mid=44583&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fp%2Fpl%3Fd%3DST24000NM002H"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="search">Search Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=Seagate&amp;#43;Exos&amp;#43;X24&amp;#43;24TB&amp;#43;ST24000NM002H&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;p>Prices move. Check before you buy six of anything.&lt;/p>
&lt;p>Before you order six of anything, know what they sound like: &lt;a href="https://techfuelhq.com/homelab/enterprise-drives-noise-vibration-recertified-2026/">Exos are loud, and the chassis panel is the real noise&lt;/a>.&lt;/p>
&lt;h2 id="the-rebuild-floor">The rebuild floor&lt;/h2>
&lt;p>Take the most generous possible assumption — the drive sustains its rated maximum across the whole platter, the replacement is empty, nothing else is using the NAS — and a full copy still takes this long:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">24TB model&lt;/th>
&lt;th scope="col" style="text-align: right">Rated max&lt;/th>
&lt;th scope="col" style="text-align: right">Full-copy floor&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Seagate Exos X24 ST24000NM002H&lt;/td>
&lt;td style="text-align: right">285 MB/s&lt;/td>
&lt;td style="text-align: right">&lt;strong>23.4 hours&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>WD Red Pro WD241KFGX&lt;/td>
&lt;td style="text-align: right">287 MB/s&lt;/td>
&lt;td style="text-align: right">&lt;strong>23.2 hours&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Toshiba MG11ACA24TE&lt;/td>
&lt;td style="text-align: right">295 MiB/s&lt;/td>
&lt;td style="text-align: right">&lt;strong>21.6 hours&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Rates from the &lt;a href="https://www.seagate.com/content/dam/seagate/assets/support/internal-hard-drive/enterprise-hard-drives/exos-x24/_shared/files/Seagate_EXOS24_CMR_ISE_SED%2810-12-16-20-24TB%29_Rev-C.pdf" rel="noopener">Seagate Exos X24 manual&lt;/a>, the &lt;a href="https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/internal-drives/wd-red-pro-hdd/data-sheet-wd-red-pro-hdd.pdf" rel="noopener">WD Red Pro data sheet&lt;/a>, and the &lt;a href="https://storage.toshiba.com/docs/enterprise-hdd-documents/mg11-product-overview.pdf" rel="noopener">Toshiba MG11 overview&lt;/a>.&lt;/p>
&lt;p>You will not hit those numbers. &lt;a href="https://www.truenas.com/docs/references/draidprimer/" rel="noopener">TrueNAS&amp;rsquo;s dRAID primer&lt;/a> explains why: a traditional RAIDZ resilver reads every surviving disk at once and chases scattered blocks, which turns much of the job into random I/O rather than the clean sequential streaming the spec sheet describes. Add parity work, whatever else the NAS is serving, and how full the pool is.&lt;/p>
&lt;p>Six-wide at 24TB means reading up to 120TB and writing 24TB — 144TB of device traffic through one rebuild. &lt;strong>Plan for a day. The three drives are close enough on paper that none of them buys you a meaningfully shorter window.&lt;/strong>&lt;/p>
&lt;h2 id="the-ure-calculation-is-the-wrong-reason-to-pick-raidz2">The URE calculation is the wrong reason to pick RAIDZ2&lt;/h2>
&lt;p>You will see this argument everywhere, so it is worth dismantling properly.&lt;/p>
&lt;p>All three current 24TB drives are rated around one unrecoverable sector per 10^15 bits. The famous calculation treats that as an independent per-bit probability:&lt;/p>
&lt;pre tabindex="0">&lt;code>P(at least one error) ≈ 1 − exp(−B/q)
&lt;/code>&lt;/pre>&lt;p>Five full 24TB survivors hold 960 trillion bits. At q = 10^15 that returns &lt;strong>61.7%&lt;/strong>. Using the older consumer-grade 10^14 figure returns &lt;strong>99.99%&lt;/strong> — which is where &amp;ldquo;RAID 5 is dead&amp;rdquo; came from.&lt;/p>
&lt;p>The arithmetic is fine. The assumption underneath it is not. A qualification limit is a bound the manufacturer guarantees, not a claim that every bit is an identical coin flip at exactly that rate.&lt;/p>
&lt;p>The field data disagrees with the model directly. Bairavasundaram et al. studied &lt;strong>1.5 million drives over 32 months&lt;/strong> (&lt;a href="https://doi.org/10.1145/1244002.1244017" rel="noopener">FAST/SIGMETRICS, 2007&lt;/a>) and found latent sector errors in 3.45% of nearline drives and 1.46% of enterprise drives — with &lt;strong>strong temporal and spatial clustering, and five of eighteen drive families recording none at all.&lt;/strong> Errors bunch up in particular drives and particular families. They do not sprinkle themselves evenly across your array.&lt;/p>
&lt;p>That study does not prove RAIDZ1 is safe. It proves 61.7% is not a real prediction about your rebuild.&lt;/p>
&lt;p>&lt;strong>So pick redundancy on structure, not on that percentage&lt;/strong> — which lands you in the same place for a better reason.&lt;/p>
&lt;h2 id="what-to-actually-build">What to actually build&lt;/h2>
&lt;p>&lt;a href="https://openzfs.github.io/openzfs-docs/man/master/7/zpoolconcepts.7.html" rel="noopener">OpenZFS&lt;/a> gives RAIDZ1 one device of fault tolerance and RAIDZ2 two. With six 24TB drives:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Layout&lt;/th>
&lt;th scope="col" style="text-align: right">Usable&lt;/th>
&lt;th scope="col">After one failure&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>RAIDZ1&lt;/td>
&lt;td style="text-align: right">120TB&lt;/td>
&lt;td>&lt;strong>no margin&lt;/strong> for ~a day&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>RAIDZ2&lt;/strong>&lt;/td>
&lt;td style="text-align: right">&lt;strong>96TB&lt;/strong>&lt;/td>
&lt;td>still protected against a second failure&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3 × mirrors&lt;/td>
&lt;td style="text-align: right">72TB&lt;/td>
&lt;td>protected — unless it&amp;rsquo;s the other half of that pair&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>&lt;strong>Build one six-wide RAIDZ2 vdev.&lt;/strong> You give up 24TB to keep one device of fault tolerance through a copy job whose &lt;em>floor&lt;/em> is already 21 hours. That is the entire argument, and it does not need the disputed percentage to work.&lt;/p>
&lt;p>&lt;strong>Choose three mirrored pairs instead&lt;/strong> if you want faster random I/O, want to expand two drives at a time, and would rather a rebuild read one disk than five. The sharp edge: lose both members of one pair and the pool is gone while four healthy drives watch.&lt;/p>
&lt;p>&lt;strong>Do not build six-wide RAIDZ1 at these capacities&lt;/strong> for anything you cannot restore from somewhere else. It saves one drive and spends every bit of your failure margin during the longest maintenance window the array will ever have.&lt;/p>
&lt;p>The &lt;a href="https://techfuelhq.com/tools/nas-storage-calculator/">NAS capacity calculator&lt;/a> runs the same parity maths for other drive counts and sizes.&lt;/p>
&lt;h2 id="buy-the-exos-x24">Buy the Exos X24&lt;/h2>
&lt;p>&lt;strong>Six Seagate Exos X24 24TB in one RAIDZ2 vdev. $5,688 for 96TB usable.&lt;/strong>&lt;/p>
&lt;p>It is the cheapest 24TB drive in the class at $39.50/TB — $112 a drive under the WD Red Pro, which
is &lt;strong>$672 more across six bays&lt;/strong> for a disk that rebuilds no faster. Exos is also the cheapest option
at 20TB, so if you want a smaller pool the answer does not change: six 20TB Exos at $791.99 is
$4,752 for 80TB usable.&lt;/p>
&lt;p>The rebuild argument does not separate these drives — 23.4 hours against 23.2 and 21.6 is noise once
parity and live traffic are in play. So the money decides, and the money is not close.&lt;/p>
&lt;p>Two things that would change the pick. If your enclosure&amp;rsquo;s compatibility list names Red Pro and not
Exos, follow the list — a supported drive beats a cheaper one. And if you are buying into an
existing pool, match what is already in the bays rather than mixing families.&lt;/p>
&lt;p>RAIDZ2 survives a drive dying. It does not survive you deleting the wrong directory — keep a backup
somewhere else.&lt;/p></description></item><item><title>UniFi vs an OPNsense Build: The IDS/IPS Ceiling</title><link>https://techfuelhq.com/networking/unifi-vs-opnsense-build-2026/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/networking/unifi-vs-opnsense-build-2026/</guid><description>&lt;p>Turning on threat management costs you throughput. Ubiquiti publishes how much. It just does not print the number anywhere near the toggle.&lt;/p>
&lt;p>That is the thing to understand before you buy UniFi, and it is the reason I would build instead. I have run both an appliance and a box I put together myself, and the appliance is the one where a spec you did not read becomes your internet speed.&lt;/p>
&lt;h2 id="the-ceiling-is-published-one-page-away">The ceiling is published, one page away&lt;/h2>
&lt;p>Ubiquiti&amp;rsquo;s own help page for intrusion detection is direct about the cost. Enabling it &amp;ldquo;increases CPU and memory utilization,&amp;rdquo; and &amp;ldquo;since traffic is being actively inspected, maximum routing performance may be reduced&amp;rdquo; — then it sends you to &lt;a href="https://techspecs.ui.com/unifi/cloud-gateways" rel="noopener">techspecs.ui.com&lt;/a> for the figure (&lt;a href="https://help.ui.com/hc/en-us/articles/360006893234-UniFi-Gateway-Intrusion-Detection-and-Prevention-IDS-IPS" rel="noopener">Ubiquiti Help Center&lt;/a>). The setup steps on that same page walk you to Settings, CyberSecure, Protection, and a switch. No number.&lt;/p>
&lt;p>Here is what is on the other site. These are the gateways worth cross-shopping rather than the whole catalogue — every figure is Ubiquiti&amp;rsquo;s published spec for that model, and every price is from Ubiquiti&amp;rsquo;s store:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Gateway&lt;/th>
&lt;th scope="col">Default WAN ports&lt;/th>
&lt;th scope="col" style="text-align: right">IDS/IPS throughput&lt;/th>
&lt;th scope="col" style="text-align: right">Store price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Cloud Gateway Ultra (UCG-Ultra)&lt;/td>
&lt;td>2.5 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>1 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">$129&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cloud Gateway Max (UCG-Max)&lt;/td>
&lt;td>2.5 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>2.3 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">from $199&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>UniFi Express 7 (UX7)&lt;/td>
&lt;td>10 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>2.3 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">from $199&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dream Router 7 (UDR7)&lt;/td>
&lt;td>10G SFP+, 2.5 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>2.3 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">$279&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cloud Gateway Fiber (UCG-Fiber)&lt;/td>
&lt;td>10G SFP+, 10 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>5 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">$279&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dream Machine Pro (UDM-Pro)&lt;/td>
&lt;td>10G SFP+, 1 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>3.5 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">$379&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dream Machine SE (UDM-SE)&lt;/td>
&lt;td>10G SFP+, 2.5 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>3.5 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">$499&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dream Machine Pro Max (UDM-Pro-Max)&lt;/td>
&lt;td>10G SFP+, 2.5 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>5 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">$599&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Dream Machine Beast (UDM-Beast)&lt;/td>
&lt;td>25G SFP28, 10 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>25 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">$1,499&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Enterprise Firewall (EFG)&lt;/td>
&lt;td>25G SFP28, 2.5 GbE RJ45&lt;/td>
&lt;td style="text-align: right">&lt;strong>12.5 Gbps&lt;/strong>&lt;/td>
&lt;td style="text-align: right">$1,999&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Read the first two columns against each other. &lt;strong>A UniFi Express 7 has a 10 GbE WAN port and inspects at 2.3 Gbps.&lt;/strong> A Cloud Gateway Ultra has a 2.5 GbE WAN port and inspects at 1 Gbps. The port tells you what the gateway will accept. The other column tells you what it will actually move once you switch on the feature you bought a security appliance for.&lt;/p>
&lt;p>The pricing does not climb with it either. The &lt;strong>$279 Cloud Gateway Fiber inspects at 5 Gbps — faster than the $379 Dream Machine Pro at 3.5&lt;/strong>, and level with the $599 Dream Machine Pro Max. If inspection speed is what you are shopping for, the model order on the store page is not the order you want.&lt;/p>
&lt;h2 id="multi-gig-is-where-you-find-out-by-accident">Multi-gig is where you find out by accident&lt;/h2>
&lt;p>At 1 Gbps almost nothing here bites. Most of the line-up inspects at or above a gigabit, threat management goes on, the speed test looks the same, and you never think about it again.&lt;/p>
&lt;p>Then the fiber gets upgraded. Two gig, five gig, whatever the ISP is selling this year. The gateway is fine — it has the ports. What happens is that your speed test stops matching your bill, and the reason is a specification on a different website that you had no reason to open when you were choosing between a Dream Router and a Dream Machine.&lt;/p>
&lt;p>This is a quiet failure. Nothing errors. Nothing alerts. You get the inspection ceiling and a vague sense that the ISP is overselling.&lt;/p>
&lt;p>&lt;strong>If you are on multi-gig and you want IPS on, the inspection number is the only spec that matters.&lt;/strong> Pick the gateway from that column and work backwards.&lt;/p>
&lt;h2 id="rule-granularity-is-the-second-limit">Rule granularity is the second limit&lt;/h2>
&lt;p>The other thing an appliance costs you is control. Current UniFi has moved on this, so here is where it stands.&lt;/p>
&lt;p>UniFi Network 9.0 brought zone-based firewalling, and it is a real firewall. Custom zones on top of the built-in six, to a ceiling of thirty zones in total, policies matched on device, network, IP, MAC, port, application, domain or region, plus protocol, connection state, scheduling and rule reordering (&lt;a href="https://help.ui.com/hc/en-us/articles/115003173168-Zone-Based-Firewalls-in-UniFi" rel="noopener">Ubiquiti Help Center&lt;/a>). That is a long way past what UniFi gateways used to hand you.&lt;/p>
&lt;p>What has not changed is that the shape is fixed. The six built-in zones carry a lock icon and cannot be removed. The built-in policies carry the same lock and &amp;ldquo;cannot be modified or removed&amp;rdquo; — you write a policy above one to beat it rather than editing it. A network belongs to exactly one zone.&lt;/p>
&lt;p>That is a different arrangement from a pf-based ruleset, where nothing is implicit and every default is yours to set. On OPNsense the ruleset is the whole story; on UniFi there is a layer underneath your rules that you override rather than own. &lt;strong>Whether that matters depends entirely on whether you have ever needed to change something in that layer.&lt;/strong> If you have, you already know. If you have not, the zone matrix is easier to reason about than a page of interface rules.&lt;/p>
&lt;h2 id="why-a-new-build-starts-on-opnsense">Why a new build starts on OPNsense&lt;/h2>
&lt;p>Both are FreeBSD, both filter well, and my &lt;a href="https://techfuelhq.com/networking/opnsense-vs-pfsense-2026/">OPNsense versus pfSense comparison&lt;/a> settles the feature-by-feature version. My reason for starting new work on OPNsense is about Netgate rather than about packet filtering.&lt;/p>
&lt;p>&lt;strong>The licensing.&lt;/strong> Netgate discontinued the free Home+Lab download of pfSense Plus, saying the decision &amp;ldquo;was made in order to align Netgate&amp;rsquo;s business model to better serve our worldwide customer base and partners,&amp;rdquo; and citing appliance vendors reselling boxes with the free commercial build on them (&lt;a href="https://www.netgate.com/blog/addressing-changes-to-pfsense-plus-homelab" rel="noopener">Netgate, October 26, 2023&lt;/a>). pfSense Plus on hardware you supply &lt;a href="https://www.netgate.com/pricing-pfsense-plus" rel="noopener">now starts at $129 a year&lt;/a>. pfSense CE stayed free, and stayed good — this is a direction, not a cliff.&lt;/p>
&lt;p>&lt;strong>The WireGuard episode.&lt;/strong> Netgate shipped a kernel-mode WireGuard implementation, quality concerns surfaced, and it came back out: &amp;ldquo;Given that kernel-mode WireGuard has been removed from FreeBSD, and out of an abundance of caution, we are removing WireGuard from pfSense software pending a thorough review and audit&amp;rdquo; (&lt;a href="https://www.netgate.com/blog/wireguard-removed-from-pfsense-ce-and-pfsense-plus-software" rel="noopener">Netgate, March 18, 2021&lt;/a>). It returned later as a package. The handling is the part I remember.&lt;/p>
&lt;p>&lt;strong>The domain.&lt;/strong> In 2017 a WIPO panel ordered &lt;code>opnsense.com&lt;/code> transferred away from Jamie Thompson of Rubicon Communications dba Netgate, to OPNsense&amp;rsquo;s maintainer Deciso — &amp;ldquo;the Panel orders that the disputed domain name &amp;lt;opnsense.com&amp;gt; be transferred to the Complainant&amp;rdquo; (&lt;a href="https://www.wipo.int/amc/en/domains/decisions/text/2017/d2017-1828.html" rel="noopener">WIPO case D2017-1828, November 12, 2017&lt;/a>).&lt;/p>
&lt;p>None of that makes pfSense a bad firewall. It is why, given a blank machine, I start somewhere else.&lt;/p>
&lt;h2 id="realtek-is-the-diy-instability">Realtek is the DIY instability&lt;/h2>
&lt;p>Almost every &amp;ldquo;my OPNsense box randomly drops the WAN&amp;rdquo; story ends at the network card, and the vendors say so in their own documentation.&lt;/p>
&lt;p>Netgate&amp;rsquo;s pfSense hardware documentation: &amp;ldquo;The best practice is to use Intel NICs because they have solid drivers in FreeBSD and they perform well,&amp;rdquo; and of the alternatives, &amp;ldquo;some work fine, others may suffer from instability or poor performance&amp;rdquo; (&lt;a href="https://docs.netgate.com/pfsense/en/latest/hardware/index.html" rel="noopener">pfSense docs&lt;/a>). OPNsense&amp;rsquo;s hardware page lands in the same place: &amp;ldquo;Intel® network interface cards (NIC) for LAN connections are reliable, fast and not error-prone&amp;rdquo; (&lt;a href="https://docs.opnsense.org/manual/hardware.html" rel="noopener">OPNsense docs&lt;/a>).&lt;/p>
&lt;p>Both platforms sit on FreeBSD, so this is one piece of advice, not two. &lt;strong>Use Intel and most of the mystery problems disappear.&lt;/strong> A cheap box with a Realtek chip is the single most common way a DIY firewall earns its reputation for being flaky, and it is a hardware choice rather than a software one.&lt;/p>
&lt;h2 id="build-it-on-opnsense-with-intel-nics">Build it, on OPNsense, with Intel NICs&lt;/h2>
&lt;p>That is the recommendation. Commodity x86, Intel networking, OPNsense on top.&lt;/p>
&lt;p>You give up the single pane of glass, and that is a real thing to give up. Someone who has only ever run the appliance usually re-buys the appliance, and having run both I understand exactly why — one interface for the gateway, the switches and the access points is worth something, and a build does not offer it. What you get back is a firewall with no inspection ceiling except the CPU you chose, no locked policy layer under your rules, and no vendor deciding next year what tier your feature lives in. For hardware to put it on, the &lt;a href="https://techfuelhq.com/networking/homelab-firewall-router-stack-2026/">homelab firewall and router stack comparison&lt;/a> has bench numbers by box.&lt;/p>
&lt;p>&lt;strong>Buy UniFi instead if you want integrated Wi-Fi and switch management in one place.&lt;/strong> That is the case for it, it is a good case, and it is the whole case. If that is you, buy on the inspection column: pick a gateway whose IDS/IPS figure is above your WAN speed, not one whose ports are.&lt;/p>
&lt;p>&lt;strong>Do not buy UniFi if you want granular firewall control, or full-rate inspection on a multi-gig line without buying up the stack.&lt;/strong> Five gigabits of inspection starts at $279, and past that the ladder stops making sense — the $1,999 Enterprise Firewall inspects at 12.5 Gbps while the cheaper $1,499 Dream Machine Beast inspects at 25. On a build, that number is a CPU choice.&lt;/p>
&lt;p>Prices and specifications move. Both columns above came off Ubiquiti&amp;rsquo;s own pages on September 7, 2026 — check them before you order.&lt;/p></description></item><item><title>Used RTX A6000 vs RTX 5090: The 42.5GB Line</title><link>https://techfuelhq.com/articles/used-workstation-gpu-48gb/</link><pubDate>Mon, 07 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/used-workstation-gpu-48gb/</guid><description>&lt;p>Forty-two and a half gigabytes. That single number settles most of this purchase, and almost nothing else about either card does.&lt;/p>
&lt;p>The exact &lt;a href="https://huggingface.co/bartowski/Llama-3.3-70B-Instruct-GGUF/blob/main/Llama-3.3-70B-Instruct-Q4_K_M.gguf" rel="noopener">Llama 3.3 70B Q4_K_M file&lt;/a> is 42.52GB of weights. &lt;strong>It does not fit on a 32GB RTX 5090. It does not fit across two 16GB cards, because those still add up to 32GB. A 48GB RTX A6000 is the only card in this comparison that holds it&lt;/strong> — and the A6000 is a 2020 board.&lt;/p>
&lt;p>Everything that fits 16GB belongs to the RTX 5080.&lt;/p>
&lt;p>&lt;em>Some retailer links below are affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="the-line-and-which-cards-cross-it">The line, and which cards cross it&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Card&lt;/th>
&lt;th scope="col">Memory&lt;/th>
&lt;th scope="col" style="text-align: right">Board power&lt;/th>
&lt;th scope="col">Holds 42.52GB of weights?&lt;/th>
&lt;th scope="col" style="text-align: right">Lowest August price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>RTX A6000&lt;/strong>&lt;/td>
&lt;td>48GB GDDR6 ECC&lt;/td>
&lt;td style="text-align: right">300W&lt;/td>
&lt;td>&lt;strong>Yes&lt;/strong> — 5.48GB left over&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="a6000.pny.usd" data-claim-value="5490.00" data-claim-scope="Newegg, exact VCNRTXA6000-SB row, US" data-claim-date="2026-08-17">$5,490.00&lt;/span>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RTX 5090&lt;/td>
&lt;td>32GB GDDR7&lt;/td>
&lt;td style="text-align: right">575W&lt;/td>
&lt;td>No — short by 10.52GB&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="rtx5090.card.min.usd" data-claim-value="4829.99" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$4,829.99&lt;/span>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>RTX 5080&lt;/strong>&lt;/td>
&lt;td>16GB GDDR7&lt;/td>
&lt;td style="text-align: right">360W&lt;/td>
&lt;td>No&lt;/td>
&lt;td style="text-align: right">&lt;span class="claim" data-claim-key="rtx5080.card.min.usd" data-claim-value="1399.99" data-claim-scope="Newegg, lowest in-stock row, US" data-claim-date="2026-08-17">$1,399.99&lt;/span>
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Memory and power figures come from the manufacturer spec tables on the
&lt;a href="https://www.nvidia.com/en-us/products/workstations/rtx-a6000/" rel="noopener">NVIDIA RTX A6000&lt;/a>,
&lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5090/" rel="noopener">RTX 5090&lt;/a> and
&lt;a href="https://www.nvidia.com/en-us/geforce/graphics-cards/50-series/rtx-5080/" rel="noopener">RTX 5080&lt;/a> pages;
&lt;a href="https://www.pny.com/nvidia-rtx-a6000" rel="noopener">PNY&lt;/a> publishes 768GB/s of bandwidth and a dual-slot active
fansink for its A6000 board.&lt;/p>
&lt;p>The fit is binary and the price is not. That is the whole shape of this decision: one card clears a
hard capacity threshold, two do not, and the cheapest of the three is the one you probably want.&lt;/p>
&lt;h2 id="16gb-is-already-fast-which-is-the-awkward-part">16GB is already fast, which is the awkward part&lt;/h2>
&lt;p>Our &lt;a href="https://techfuelhq.com/data/rtx-5080-llm-throughput/">RTX 5080 throughput dataset&lt;/a> recorded gpt-oss 20B at MXFP4
decoding &lt;strong>178 to 190 tokens per second&lt;/strong> across two dated captures, with the whole model sitting in
13,381 to 14,067 MiB of the card&amp;rsquo;s 16GB. Qwen 2.5 14B at Q4_K_M decoded at &lt;strong>94 to 97 tokens per
second&lt;/strong>. Every cell is the median of three runs, and the published CSV carries the driver version,
the Ollama build, the model digests and the resident memory readings.&lt;/p>
&lt;p>That result is the reason the 48GB card is not an automatic upgrade. A 20B model and a 14B model are
already resident and already quick on a $1,399.99 card. Paying nearly four times that for 48GB buys
nothing at all unless the extra capacity changes &lt;em>which model can stay loaded&lt;/em>. The
&lt;a href="https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/">VRAM-tier guide&lt;/a> maps the full ladder, and the
&lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">VRAM calculator&lt;/a> works out the context-sensitive version of the same
question.&lt;/p>
&lt;h2 id="skip-the-rtx-5090-for-70b-work">Skip the RTX 5090 for 70B work&lt;/h2>
&lt;p>This is the finding that surprised us. If you are buying a card to reach a 70B model, the RTX 5090 is
the worst of the three, and it is not close.&lt;/p>
&lt;p>At $4,829.99 it costs &lt;strong>$3,430 more than the RTX 5080&lt;/strong> — and it stops 10.52GB short of the file that
would justify the upgrade. It buys a bigger pool that lands on the wrong side of the threshold this
page is about, then asks 575W to do it. Meanwhile the A6000 sits $660 above it and actually clears
the line at 300W.&lt;/p>
&lt;p>One band does belong to it, and the RTX 5080 cannot take it: a working set between 16GB and 32GB — a
32B model at Q4, say — is too big for 16GB and nowhere near needing 48GB. If that is your workload,
the 5090 is the only card in this table that fits it. Nothing here recommends it above that band, and
no matched throughput number for it was captured on this page.&lt;/p>
&lt;p>Availability made the point again. All three RTX 5090 card rows in the August feed were checked on
September 7 and every one had gone out of stock. If you are shopping for a 32GB pool you are paying a
scarcity price for capacity that does not reach.&lt;/p>
&lt;h2 id="buy-the-rtx-5080">Buy the RTX 5080&lt;/h2>
&lt;p>&lt;strong>Start at $1,399.99 and stop there unless your model genuinely will not fit 16GB.&lt;/strong>&lt;/p>
&lt;p>That is the recommendation for nearly everyone reading this. A 20B model runs at 178 to 190 tokens
per second on it by our own measurement, it draws 360W, it is a current-generation card with a
current warranty, and it costs less than a third of either 48GB or 32GB alternative.&lt;/p>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/link?id=CW4UrCo/56I&amp;amp;offerid=1749755.445831431106774666636889&amp;amp;type=15&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fgigabyte-windforce-gv-n5080wf3oc-16gd-geforce-rtx-5080-16gb-graphics-card-triple-fans%2Fp%2FN82E16814932754%3Fitem%3DN82E16814932754"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="product">Check Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=GV-N5080WF3OC-16GD&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;p>Thirteen RTX 5080 cards were in stock in the August feed between $1,399.99 and $1,999.99, so there is
real room to shop the exact board. Prices move — check before you order.&lt;/p>
&lt;h2 id="the-one-case-for-going-after-a-used-a6000">The one case for going after a used A6000&lt;/h2>
&lt;p>Buy 48GB when your resident working set lands &lt;strong>above 32GB and comfortably below 48GB&lt;/strong>. That is a
narrow window and it is the only window. A dense 70B at Q4 fits it. A 20B does not, and a 120B does
not either.&lt;/p>
&lt;p>Watch the headroom while you are in there. The weights take 42.52GB and leave 5.48GB for the KV
cache and runtime buffers. Ordinary context lengths live in that space; long ones do not, and the
failure shows up as an out-of-memory error partway through a session rather than at load time. Work
out your context budget before you commit to the card, not after.&lt;/p>
&lt;p>Three things the A6000 gives you beyond raw capacity: ECC memory, a 300W ceiling that fits a normal
power supply, and a two-slot board in a market where the fast consumer cards have grown to three and
four. NVIDIA also supports it on the RTX Enterprise driver branch rather than the Game Ready branch,
which is the right trade for a machine that works and the wrong one for a machine that games.&lt;/p>
&lt;h3 id="what-to-make-the-seller-put-in-writing">What to make the seller put in writing&lt;/h3>
&lt;p>A used A6000 is a private-party or reseller transaction, and the coverage rides entirely on that
paperwork. PNY publishes a &lt;a href="https://www.pny.com/nvidia-rtx-a6000" rel="noopener">three-year limited warranty&lt;/a> on a
new card, and &lt;a href="https://www.nvidia.com/en-us/support/warranty/" rel="noopener">NVIDIA&amp;rsquo;s warranty policy&lt;/a> sends most
claims to the reseller or board partner first. Neither of those facts follows a card to its second
owner on its own. So before you pay, get:&lt;/p>
&lt;ol>
&lt;li>the exact part number and a photo of the serial;&lt;/li>
&lt;li>whether the card is used, refurbished, open-box, or pulled from a workstation;&lt;/li>
&lt;li>the return window, and who pays return shipping;&lt;/li>
&lt;li>the warranty provider and the remaining duration;&lt;/li>
&lt;li>enough of that return window left to run a full 48GB memory test and an hour of sustained load.&lt;/li>
&lt;/ol>
&lt;p>The fifth one is the one people skip. Run it the day the card arrives.&lt;/p>
&lt;p>And know the ceiling. A &lt;strong>new&lt;/strong> PNY board lists at $5,490.00 — $660 above the RTX 5090 and roughly
four times the RTX 5080. A used card asking within a few hundred dollars of that is not a deal; the
discount &lt;em>is&lt;/em> the entire reason to accept a five-year-old GPU with someone else&amp;rsquo;s hours on it. If
you would rather have the new-card warranty than the savings, this is the exact board:&lt;/p>
&lt;span class="buy-cell" data-affiliate-component="table-row">&lt;a class="buy-cell__action buy-cell__action--primary"
href="https://click.linksynergy.com/link?id=CW4UrCo/56I&amp;amp;offerid=1749755.445831365960500403949722&amp;amp;type=15&amp;amp;murl=https%3A%2F%2Fwww.newegg.com%2Fp%2F1HD-00PH-00001%3Fitem%3D9SIB1PGK0P9366"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Newegg"
data-affiliate-slot="table-row"
data-link-kind="product">Check Newegg&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;a class="buy-cell__action"
href="https://www.amazon.com/s?k=PNY&amp;#43;RTX&amp;#43;A6000&amp;#43;48GB&amp;amp;tag=techfuelhq-20"
rel="nofollow sponsored noopener"
target="_blank"
data-affiliate-retailer="Amazon"
data-affiliate-slot="table-row"
data-link-kind="search">Search Amazon&lt;span class="buy-cell__checked">Link checked 2026-09-07&lt;/span>&lt;/a>&lt;/span>
&lt;h2 id="how-this-was-checked">How this was checked&lt;/h2>
&lt;p>The capacity argument uses one exact model artifact rather than a rounded parameter count: the
Hugging Face repository reports 42,520,398,816 bytes for &lt;code>Llama-3.3-70B-Instruct-Q4_K_M.gguf&lt;/code>, which
is 42.52GB. Memory, power and cooling figures were read off the current NVIDIA and PNY specification
tables on September 7. Throughput comes from our own
&lt;a href="https://techfuelhq.com/data/rtx-5080-llm-throughput/">RTX 5080 dataset&lt;/a>, captured on an RTX 5080 under Ollama with the
method and raw CSV published alongside it — no A6000 was benchmarked here, which is why this page
recommends the 48GB card on capacity and never on speed.&lt;/p>
&lt;p>Prices are the lowest in-stock USD offer per exact model from the August 17 Newegg feed, restricted
to actual video cards. No used price appears anywhere on this page: every used-A6000 listing checked
on September 7 was expired, dead, or unreachable. That is itself the finding. Used A6000 supply is
thin and it moves, so treat any single listing you find as a sample of one and price it against the
$5,490.00 new-card ceiling above.&lt;/p>
&lt;p>This page is re-checked every six months, and sooner if a new consumer card moves the 32GB ceiling or
a major 70B release changes file size.&lt;/p></description></item><item><title>Steam Content File Locked: Find the Cause and Fix It (2026)</title><link>https://techfuelhq.com/gaming/steam-content-file-locked-fix-2026/</link><pubDate>Sat, 05 Sep 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/gaming/steam-content-file-locked-fix-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · Published 2026-09-05 · Updated 2026-09-05 · ~9 min read · St. Louis County, MO&lt;/p>
&lt;div class="verdict-card" style="border:1px solid #c8ff00;border-left:4px solid #c8ff00;border-radius:6px;padding:1.25rem 1.5rem;margin:1.5rem 0 2rem 0;background:rgba(200,255,0,0.04);">
&lt;p style="margin:0 0 0.5rem 0;font-weight:700;color:#c8ff00;letter-spacing:0.04em;text-transform:uppercase;font-size:0.85rem;">TL;DR · Fix Content File Locked&lt;/p>
&lt;ul style="margin:0.25rem 0 0 0;padding-left:1.25rem;line-height:1.55;">
&lt;li>&lt;strong>Diagnose first:&lt;/strong> use Microsoft Process Explorer and search the game folder name under &lt;strong>Find &amp;gt; Find Handle or DLL&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>If a process owns the file:&lt;/strong> close that process. A game that never finished exiting is the first cause to check.&lt;/li>
&lt;li>&lt;strong>If no process owns it:&lt;/strong> restart Windows, then use Steam's &lt;strong>Clear Download Cache&lt;/strong>, &lt;strong>Repair Folder&lt;/strong>, and &lt;strong>Verify integrity of game files&lt;/strong> controls.&lt;/li>
&lt;li>&lt;strong>Do not start with Winsock:&lt;/strong> it resets network catalog settings. It does not release a local file handle.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 id="what-the-error-means">What the error means&lt;/h2>
&lt;p>&amp;ldquo;An error occurred while updating &lt;em>game&lt;/em> (content file locked)&amp;rdquo; means Steam could not write or replace a required game file because something else still held it open. The shorter &amp;ldquo;update failed: content file locked&amp;rdquo; message describes the same blocked write. Same failure, shorter wording. The useful question is not which six generic fixes exist. It is which process owns the file right now. When no live handle appears, move outward to the library folder, its permissions, and Steam&amp;rsquo;s download state.&lt;/p>
&lt;h2 id="find-what-is-holding-the-file">Find what is holding the file&lt;/h2>
&lt;p>Start with &lt;a href="https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer" rel="noopener">Microsoft Sysinternals Process Explorer&lt;/a>. Microsoft describes it as the tool for finding which program has a file or directory open. Its download is a portable executable, so there is no installer to work through.&lt;/p>
&lt;ol>
&lt;li>Exit the game and Steam normally.&lt;/li>
&lt;li>Run &lt;code>procexp.exe&lt;/code>.&lt;/li>
&lt;li>Open &lt;strong>Find &amp;gt; Find Handle or DLL&lt;/strong>.&lt;/li>
&lt;li>Search for the game&amp;rsquo;s folder name exactly as it appears under &lt;code>steamapps\common&lt;/code> (open that folder first if you are not sure of the spelling).&lt;/li>
&lt;li>Read the matching path and owning process in the results.&lt;/li>
&lt;/ol>
&lt;p>Do not end an unfamiliar Windows process just because its name appears; if the result belongs to the game, its launcher, Steam, an anti-cheat component, or security software you recognize, close that application through its own interface and search again, because the lock is cleared only when the matching handle disappears. I would not clear a cache before doing this search. Cache repair can change Steam&amp;rsquo;s state, but it cannot tell you whether the game executable is still alive. Process Explorer turns a vague message into a named owner.&lt;/p>
&lt;p>The evidence order stays simple: handle first, Steam state second, network repair always last.&lt;/p>
&lt;h3 id="ranked-causes">Ranked causes&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>The game did not close fully.&lt;/strong> The Steam Community guide &lt;a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3211812499" rel="noopener">&amp;ldquo;Content File Locked Error Resolved&amp;rdquo;&lt;/a>, posted by アンジェル on April 4, 2024, describes a game process remaining in Task Manager after the player quit. Windows protects an in-use file in the same practical way it protects an open document. This is the first cause to check because Process Explorer can confirm it directly.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>An anti-cheat or security process owns the file.&lt;/strong> A &lt;a href="https://www.pathofexile.com/forum/view-thread/3607685" rel="noopener">Path of Exile forum thread&lt;/a> from December 2024 says Riot Vanguard was active during an update and blocked it; Vanguard appears there as a community report, not a TechFuelHQ measurement. A Reddit r/Steam answer, which I am not linking, describes anti-cheat or another background process still running after the game closes. Treat the process name and matching handle as the evidence; do not disable protection on a guess. If the owner is anti-cheat, close the game and its launcher, then use the steps in the &lt;a href="https://techfuelhq.com/gaming/easy-anti-cheat-fix-guide-2026/">Easy Anti-Cheat error guide&lt;/a> if that service itself will not exit cleanly.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>The folder is read-only or Steam lacks write permission.&lt;/strong> An r/iRacing community report describes the game folder becoming read-only after an update. That is a report, not a universal Steam behavior. Check the attribute only after Process Explorer shows no owner. A one-time elevated run can then separate a permission problem from a persistent lock.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>The Steam library or download state needs repair.&lt;/strong> Steam exposes separate controls for download cache, storage-folder repair, and installed-file verification. Use the control that matches the failure. Do not run all three at once; you lose the chance to learn which layer was broken.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>A Linux move between drives is hitting a Steam client bug.&lt;/strong> ValveSoftware&amp;rsquo;s open Linux issue records a move that appears to proceed, throws the lock error, and reverts. This is distinct from a Windows process holding a local file during a normal update.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="fix-the-cause-you-found">Fix the cause you found&lt;/h2>
&lt;h3 id="close-the-owner-then-restart-windows">Close the owner, then restart Windows&lt;/h3>
&lt;p>If Process Explorer names a leftover game or launcher process, close it and search again. If it will not release the handle, use Restart from the Windows power menu. The Steam Community guide specifically says to restart rather than shut down. Restart gives Steam a clean session without leaving the stale game process alive.&lt;/p>
&lt;p>Open Steam after Windows returns and retry the update. Stop here if it works. The lock had an owner, and you removed it.&lt;/p>
&lt;h3 id="clear-steams-download-cache">Clear Steam&amp;rsquo;s download cache&lt;/h3>
&lt;p>Use the Steam client&amp;rsquo;s own path: Steam &amp;gt; Settings &amp;gt; Downloads &amp;gt; Clear Download Cache. Steam will ask you to confirm, then you can sign in again and retry the update; the April 2024 Steam Community guide also recommends deleting the download cache before verifying the game again, which is why verification follows this step instead of running beside it.&lt;/p>
&lt;p>This step fits a download that keeps returning to the same failed state after no file owner remains. It is not a substitute for closing an active process. I would use it after the handle search and restart, not before them.&lt;/p>
&lt;h3 id="repair-the-steam-library-folder">Repair the Steam library folder&lt;/h3>
&lt;p>Open Steam &amp;gt; Settings &amp;gt; Storage, select the drive that contains the game, open its drive menu, and choose Repair Folder. This is the current Steam-client storage path. The Steam Community guide also directs readers to select the affected drive in Steam&amp;rsquo;s Storage settings and repair the folder.&lt;/p>
&lt;p>Repair Folder targets the library rather than one title. Use it when more than one update on the same drive fails, or when the one-time administrator test points toward folder permissions. Let the repair finish before starting another update.&lt;/p>
&lt;h3 id="verify-the-games-installed-files">Verify the game&amp;rsquo;s installed files&lt;/h3>
&lt;p>In Library, right-click the game and choose Properties &amp;gt; Installed Files &amp;gt; Verify integrity of game files. The Steam Community guide documents the same verification function under the older Local Files label. Steam&amp;rsquo;s current client calls the section Installed Files.&lt;/p>
&lt;p>Verification checks the title&amp;rsquo;s installed content and replaces files that do not match. Run it after the live handle is gone. If verification itself returns Content File Locked, repeat the Process Explorer search while the failure is fresh; the new result may expose the owner that was absent earlier.&lt;/p>
&lt;p>For repeated crashes after the update succeeds, move to the separate &lt;a href="https://techfuelhq.com/articles/games-keep-crashing-pc-2026/">games keep crashing on PC guide&lt;/a>. A crash and a blocked updater are different functions, even when they affect the same game.&lt;/p>
&lt;h3 id="run-steam-as-administrator-once">Run Steam as administrator once&lt;/h3>
&lt;p>Exit Steam. Right-click its shortcut and choose Run as administrator, accept the Windows prompt, then retry the update once. This is a permission test. A successful elevated update points back to write access on the Steam library; it does not justify running the client elevated forever.&lt;/p>
&lt;p>Close Steam after the test and open it normally. If the elevated run succeeded, the library&amp;rsquo;s write permissions were the problem, so repair the library through the Repair Folder step above rather than living with an elevated client. If elevation changes nothing, keep looking for a handle or a read-only folder instead of repeating it.&lt;/p>
&lt;h3 id="check-the-game-folders-read-only-attribute">Check the game folder&amp;rsquo;s read-only attribute&lt;/h3>
&lt;p>Open the game&amp;rsquo;s folder, right-click it, choose Properties, and inspect Read-only. Clear the box, apply the change to the folder and its contents, then retry once. This step comes from the r/iRacing community report noted above; TechFuelHQ has not measured it across Steam libraries.&lt;/p>
&lt;p>If the attribute returns immediately, stop toggling it. Search for the owning process again and repair the library folder through Steam. A setting that will not stay changed is evidence that the underlying owner or permission state remains.&lt;/p>
&lt;h2 id="when-netsh-winsock-reset-is-relevant">When &lt;code>netsh winsock reset&lt;/code> is relevant&lt;/h2>
&lt;p>Open Windows Terminal (Admin) or Command Prompt (Admin) and run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>netsh winsock reset
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/netsh-winsock" rel="noopener">&lt;code>netsh winsock&lt;/code> reference&lt;/a> says &lt;code>reset&lt;/code> returns the Winsock catalog to a clean state and removes custom Layered Service Providers that can cause network trouble. It does not change Winsock Name Space Provider entries.&lt;/p>
&lt;p>That makes this a network repair, not a command that releases a file handle. It cannot close the handle Process Explorer found. Keep that distinction clear. Use it only when the lock is network-side: no local owner appears, Steam also has connection or download failures, and the cache, library, and installed files are not the point of failure. Run the command once from an elevated prompt, reopen Steam, and test the download. If the same file lock returns, Winsock was not the cause, so go back to handle and folder diagnosis.&lt;/p>
&lt;h2 id="linux-bazzite-and-steamos-moves-between-drives">Linux, Bazzite, and SteamOS: moves between drives&lt;/h2>
&lt;p>The Linux variant has a documented Steam-client failure mode. &lt;a href="https://github.com/ValveSoftware/steam-for-linux/issues/12139" rel="noopener">ValveSoftware/steam-for-linux issue #12139&lt;/a>, &amp;ldquo;Moving game between drives fails with error &amp;lsquo;content file locked,&amp;rsquo;&amp;rdquo; was opened June 26, 2025. The report uses Linux Mint 22.1 and the May 20, 2025 Steam client. The move appears to run, then Steam throws Content File Locked and reverts it. The issue remains open and has 13 comments as read September 5, 2026.&lt;/p>
&lt;p>That sequence matters. If a normal update fails, check for a process holding the library path. If the error appears only after choosing to move a title to another drive, the open Valve issue is the closer match. Repeating cache clears will not establish whether you hit that client bug.&lt;/p>
&lt;p>On Bazzite or SteamOS, keep the game in the library where it still launches while you investigate the target drive and the open issue. I have not reproduced issue #12139 on those distributions, so I would not claim a distro-specific cure. The verified record ends at the Linux Mint report and the still-open ValveSoftware issue, which is the boundary this guide keeps instead of converting one distribution&amp;rsquo;s report into a universal Linux fix.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer" rel="noopener">Microsoft Sysinternals — Process Explorer&lt;/a>, page dated August 12, 2026.&lt;/li>
&lt;li>&lt;a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3211812499" rel="noopener">Steam Community — &amp;ldquo;Content File Locked Error Resolved&amp;rdquo; by アンジェル&lt;/a>, posted April 4, 2024. Community guide.&lt;/li>
&lt;li>&lt;a href="https://github.com/ValveSoftware/steam-for-linux/issues/12139" rel="noopener">ValveSoftware/steam-for-linux issue #12139 — &amp;ldquo;Moving game between drives fails with error &amp;lsquo;content file locked&amp;rsquo;&amp;rdquo;&lt;/a>, opened June 26, 2025.&lt;/li>
&lt;li>&lt;a href="https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/netsh-winsock" rel="noopener">Microsoft Windows commands — &lt;code>netsh winsock&lt;/code>&lt;/a>, updated October 22, 2025.&lt;/li>
&lt;li>&lt;a href="https://www.pathofexile.com/forum/view-thread/3607685" rel="noopener">Path of Exile forum thread 3607685&lt;/a>, December 2024. Community report about Riot Vanguard during an update.&lt;/li>
&lt;/ul></description></item><item><title>LM Studio vs Ollama on an RTX 5080: Measured (2026)</title><link>https://techfuelhq.com/self-hosted/ollama-vs-lm-studio-rtx-5080-2026/</link><pubDate>Wed, 26 Aug 2026 15:20:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/self-hosted/ollama-vs-lm-studio-rtx-5080-2026/</guid><description>&lt;p>Depending on which search result you trust, LM Studio is 46% faster than Ollama,
10-20% slower, or exactly the same speed. The Reddit thread that ranks first for
this query carries &amp;ldquo;3-4x faster&amp;rdquo; claims for Ollama, while a Stack Exchange question
a few results down asks why Ollama&amp;rsquo;s models run faster inside LM Studio. Those
claims cannot all be true on the same computer, so I put both apps on mine: one RTX 5080,
the same GGUF files loaded by both. Hard-linked, sha256-verified, the same bytes on
disk. Five runs per cell, at stock settings and again with settings matched.&lt;/p>
&lt;p>The apps are within 14% of each other everywhere. One wrong setting is worth 240%.&lt;/p>
&lt;h2 id="the-verdict-by-use-case">The verdict, by use case&lt;/h2>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">You want&lt;/th>
&lt;th scope="col">Run&lt;/th>
&lt;th scope="col">Why, measured&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>A background service, API, scripting, Docker&lt;/td>
&lt;td>&lt;strong>Ollama&lt;/strong>&lt;/td>
&lt;td>5-11% faster dense decode, 78-132 MB idle RAM, headless by design&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>A GUI, model browser, per-model tuning&lt;/td>
&lt;td>&lt;strong>LM Studio&lt;/strong>&lt;/td>
&lt;td>The interface is the product; decode within 5-11% of Ollama&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fastest gpt-oss 20B on 16 GB&lt;/td>
&lt;td>&lt;strong>LM Studio + upstream GGUF&lt;/strong>&lt;/td>
&lt;td>242.8 vs 213.7 t/s, engine and conversion differences both in play&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Long prompts, RAG, big context ingestion&lt;/td>
&lt;td>&lt;strong>LM Studio&lt;/strong>&lt;/td>
&lt;td>Prefill 5-14% faster on every model tested&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Both at once&lt;/td>
&lt;td>&lt;strong>Fine&lt;/strong>&lt;/td>
&lt;td>Ran simultaneously on ports 11434/1234, 7,000 MiB total VRAM with two 3Bs&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Neither app deserves a speed-based religion. Here is what one controlled rig
actually measures.&lt;/p>
&lt;h2 id="what-people-claim-vs-what-i-measured">What people claim vs what I measured&lt;/h2>
&lt;p>The top of this search results page disagrees with itself. The r/LocalLLaMA thread
that ranks first carries claims of Ollama being &amp;ldquo;3-4x&amp;rdquo; faster; a Medium post and
Codiste both say Ollama wins by 10-20%; atomic.chat says LM Studio generates 46%
faster; tech-insider.org titles its piece &amp;ldquo;Zero Performance Difference [Tested]&amp;rdquo;,
then prints Qwen 2.5 14B Q4_K_M at 25-30 tokens/sec on an RTX 4090, attributed to
community benchmarks. Every one of those pages is linked in the Sources block. My
RTX 5080 measures that exact model and quant at 97-102 t/s in both apps. Three to
four times their 4090 figure. A different machine and unknown settings on their
side, granted, and that is precisely the problem — this argument runs on numbers
nobody measured under stated conditions.&lt;/p>
&lt;p>With settings matched (context 4096, full GPU offload, temperature 0, seed 42, one
serving slot, medians of five fresh-prompt runs):&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Model&lt;/th>
&lt;th scope="col">App&lt;/th>
&lt;th scope="col" style="text-align: right">Decode&lt;/th>
&lt;th scope="col" style="text-align: right">Prefill (~450 tok)&lt;/th>
&lt;th scope="col" style="text-align: right">GPU mem (MiB)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Llama 3.2 3B&lt;/td>
&lt;td>Ollama 0.32.15&lt;/td>
&lt;td style="text-align: right">&lt;strong>350.5 t/s&lt;/strong>&lt;/td>
&lt;td style="text-align: right">17,862 t/s&lt;/td>
&lt;td style="text-align: right">3,760&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Llama 3.2 3B&lt;/td>
&lt;td>LM Studio 0.4.21&lt;/td>
&lt;td style="text-align: right">316.0 t/s&lt;/td>
&lt;td style="text-align: right">&lt;strong>20,337 t/s&lt;/strong>&lt;/td>
&lt;td style="text-align: right">3,808&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen 2.5 14B&lt;/td>
&lt;td>Ollama 0.32.15&lt;/td>
&lt;td style="text-align: right">&lt;strong>102.2 t/s&lt;/strong>&lt;/td>
&lt;td style="text-align: right">5,038 t/s&lt;/td>
&lt;td style="text-align: right">10,356&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen 2.5 14B&lt;/td>
&lt;td>LM Studio 0.4.21&lt;/td>
&lt;td style="text-align: right">97.6 t/s&lt;/td>
&lt;td style="text-align: right">&lt;strong>5,567 t/s&lt;/strong>&lt;/td>
&lt;td style="text-align: right">10,405&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gpt-oss 20B²&lt;/td>
&lt;td>Ollama 0.32.15&lt;/td>
&lt;td style="text-align: right">213.7 t/s&lt;/td>
&lt;td style="text-align: right">9,187 t/s&lt;/td>
&lt;td style="text-align: right">13,570&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gpt-oss 20B²&lt;/td>
&lt;td>LM Studio 0.4.21&lt;/td>
&lt;td style="text-align: right">&lt;strong>242.8 t/s&lt;/strong>&lt;/td>
&lt;td style="text-align: right">&lt;strong>9,618 t/s&lt;/strong>&lt;/td>
&lt;td style="text-align: right">12,533&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>² Different conversions of the same model, because they have to be: Ollama ships its
own gpt-oss blob and LM Studio runs the ggml-org upstream MXFP4 file. More on that
below.&lt;/p>
&lt;p>Ollama decodes faster on dense models, by 10.9% on the 3B and 4.7% on the 14B. LM Studio
prefills faster on everything I tested and wins the MoE outright. Each side wins one
event, which is the same shape my &lt;a href="https://techfuelhq.com/self-hosted/ollama-vs-llamacpp-rtx-5080-2026/">Ollama vs llama.cpp bench&lt;/a>
found six days earlier, and none of it justifies &amp;ldquo;3-4x&amp;rdquo; folklore. The per-run
decode arrays, VRAM, RAM, LM Studio TTFT medians, and load times are in the
&lt;a href="https://techfuelhq.com/data/llm-server-compare/">same-GPU compare dataset&lt;/a>, CC BY 4.0.&lt;/p>
&lt;h2 id="same-engine-underneath-same-process-name">Same engine underneath, same process name&lt;/h2>
&lt;p>The process tables captured with every run show the same thing on both sides: the
model being served by a &lt;code>llama-server.exe&lt;/code> process — Ollama&amp;rsquo;s from its install
directory, LM Studio&amp;rsquo;s from its backend extension directory. Both
apps are packaging around llama.cpp&amp;rsquo;s server, which is why the dense-model numbers
land within 11% of each other and why &amp;ldquo;which app is faster&amp;rdquo; is mostly a question
about versions and defaults.&lt;/p>
&lt;p>The versions matter more than the wrapper. Ollama 0.32.15 runs its vendored
llama.cpp at commit 9d77fa172; LM Studio 0.4.21 downloaded its llama.cpp runtime
2.29.1 on first launch. The installer shipped 2.28.2 engines, still on disk next to the newer one. The
app updated itself before I ran anything. Worth knowing
if you pin versions for reproducibility. Six days and fourteen patch-version
increments separate my two captures of Ollama on this rig, and its 3B decode moved
from 319 t/s (0.32.1, August 20) to 351 (0.32.15, August 26). Some of that is
engine updates. Some may be capture-window conditions, since the earlier run
predates the quiet-window discipline described in the method. By the time I
finished writing, Ollama had already promoted 0.33.0. Any LM-Studio-vs-Ollama
benchmark without version numbers is a screenshot of a moving target.&lt;/p>
&lt;h2 id="the-defaults-are-the-real-story">The defaults are the real story&lt;/h2>
&lt;p>The plan for this piece treated &amp;ldquo;defaults as installed&amp;rdquo; and &amp;ldquo;settings normalized&amp;rdquo;
as separate test conditions on the expectation that packaging differences would
show up in the numbers, and the dense models shrugged at every bit of it: Qwen 2.5
14B ran 98.2 t/s at LM Studio&amp;rsquo;s stock settings and 97.6 normalized while the 3B
moved about 1%. When the model fits comfortably, stock settings are fine. Stop
tuning.&lt;/p>
&lt;p>Two defaults are not fine, and both fail silently.&lt;/p>
&lt;p>&lt;strong>LM Studio&amp;rsquo;s automatic GPU offload quietly benched gpt-oss at 186 t/s&lt;/strong> — 23%
below the 243 the same app hits with settings tuned. Stock, LM Studio loads
models at 8,192 context across 4 parallel slots with GPU offload on &amp;ldquo;auto&amp;rdquo;, and
my first normalized pass changed all three at once. So I re-ran the stock
configuration changing only the offload slider, nothing else. Result: 244.9 t/s,
the entire gap, from one setting. Context length and slot count contributed
nothing measurable. On a 16 GB card, auto had chosen to hold part of the MoE&amp;rsquo;s
weights on the CPU, and no warning appears anywhere. Setting GPU offload to max
was worth 31% on this card.&lt;/p>
&lt;p>&lt;strong>Ollama&amp;rsquo;s context slider is a 3.4x foot-gun.&lt;/strong> Ollama&amp;rsquo;s documented default for a
16 GB card is a 4,096-token context, and at that default the 3B decodes at 351 t/s,
100% GPU-resident. This machine&amp;rsquo;s Ollama had its app-settings context slider at
256k from earlier use, a value Ollama clamps to this model&amp;rsquo;s 131,072-token
maximum. Still far past what fits. With nothing else changed, the same 2 GB model loaded
an 18 GB footprint, split 22%/78% across CPU and GPU, and decoded at 102 t/s. A
3.4x slowdown from one setting, and &lt;code>ollama ps&lt;/code> is the only place that shows you
why. I would bet money this explains a large share of the &amp;ldquo;Ollama was crawling for
me&amp;rdquo; posts in that Reddit thread; it is also presumably invisible to anyone
benchmarking only fresh installs.&lt;/p>
&lt;p>If one number from this page survives in your memory, make it this pair. The gap
between these two apps is at most 14%. The gap between a good and a bad memory
setting is 240%.&lt;/p>
&lt;h2 id="memory-vram-is-a-tie-ram-is-not">Memory: VRAM is a tie, RAM is not&lt;/h2>
&lt;p>Wherever both apps loaded the identical file, GPU memory matched within 50 MiB —
3,760 vs 3,808 on the 3B, 10,356 vs 10,405 on the 14B. Same bytes, same engine,
same memory. The gpt-oss row differs by 1,037 MiB because the conversions differ;
Ollama&amp;rsquo;s fork has allocated about a gigabyte more than upstream in every capture
I have run, on either engine.&lt;/p>
&lt;p>System RAM is where the apps genuinely part ways. Idle with no model, the Ollama
service tree held 78-132 MB across my checks; LM Studio&amp;rsquo;s GUI and server held
709-928 MB across the quiet-window observations (one transitional reading hit
3.1 GB mid-unload and is excluded as a non-idle state; it is in the raw JSON).
Loaded, LM Studio&amp;rsquo;s runtime keeps the memory-mapped model file hot in its working
set. With gpt-oss resident, its process tree reported about 13 GB of RAM alongside
the 12.5 GB of VRAM, where Ollama&amp;rsquo;s runner released its mapping and sat near
2.1 GB. Mapped file pages are evictable cache, so this is not a hard requirement,
but on a machine with 16-32 GB of RAM running other work, Ollama is the lighter
tenant: five to six times lighter loaded, five to twelve times lighter idle.
tech-insider.org&amp;rsquo;s &amp;ldquo;5x Memory Gap&amp;rdquo; headline has the right direction and, at idle,
roughly the right magnitude; the spread depends mostly on what the Electron GUI
is doing.&lt;/p>
&lt;p>Load times were closer than I expected: 2.3-2.8s for the 3B on both apps, 5.5s vs
7.7s on the 14B, 8.1s vs 8.4s on gpt-oss, warm caches throughout.&lt;/p>
&lt;h2 id="the-portability-catch-travels">The portability catch travels&lt;/h2>
&lt;p>My llama.cpp piece found that Ollama&amp;rsquo;s gpt-oss:20b blob declares architecture
&lt;code>gptoss&lt;/code>, which upstream llama.cpp rejects. LM Studio reproduces the refusal
verbatim: importing the blob works, the file indexes, and loading it dies with
&lt;code>unknown model architecture: 'gptoss'&lt;/code> from its 2.29.1 runtime. So the one model
Ollama co-launched still cannot leave Ollama, now confirmed against two external
consumers of the file.&lt;/p>
&lt;p>Everything else travels beautifully. &lt;code>lms import&lt;/code> took Ollama&amp;rsquo;s Llama 3.2 and
Qwen 2.5 blobs by path, and with the hard-link option both apps share one physical
copy of the weights. I verified it: each blob shows a link count of three (Ollama&amp;rsquo;s
store, my staging copy, LM Studio&amp;rsquo;s models directory all naming the same bytes),
and the files hash identically to Ollama&amp;rsquo;s own blob digests. The listings ship
with the raw evidence. In the other direction, Ollama
imports any GGUF with a one-line Modelfile (&lt;code>FROM /path/to/file.gguf&lt;/code> and
&lt;code>ollama create&lt;/code>), though it copies rather than links. Running both apps against
one model library costs you nothing but the gpt-oss exception.&lt;/p>
&lt;h2 id="which-one-belongs-on-your-machine">Which one belongs on your machine&lt;/h2>
&lt;p>Run Ollama when the model is infrastructure: a service that starts at boot, feeds
&lt;a href="https://techfuelhq.com/tutorials/ollama-docker-gpu-2026/">Docker containers&lt;/a>, answers on 11434 from
&lt;a href="https://techfuelhq.com/articles/self-hosted-ai-stack-2026/">whatever stack you build on it&lt;/a>, and stays
out of RAM when idle. The local-LLM tutorials on this site ride on it for exactly
that reason, and its dense-decode edge is real if modest.&lt;/p>
&lt;p>Run LM Studio when the model is an appliance: you want to browse Hugging Face
quants visually, flip a sampling parameter without editing a Modelfile, watch
token streams in a chat pane, and still get an OpenAI-compatible server on 1234
when an app needs one. Its per-model load settings are the granular control Ollama
hides behind environment variables, the same control that makes the auto-offload
default worth checking before you benchmark anything.&lt;/p>
&lt;p>Run both when the fits above split your week. They coexist on one card, share
model files one direction cleanly, and the second app costs you a few hundred
megabytes of idle RAM. Measured with both 3Bs resident: 7,000 MiB of total GPU
memory including the desktop&amp;rsquo;s ~1.1 GB baseline, and sequential requests answered
at 298 and 230 t/s. That is lower than the solo medians, though those coexistence
runs capped generation at 64 tokens, so they are not directly comparable to the
256-token table above. My &lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">VRAM calculator&lt;/a>
and &lt;a href="https://techfuelhq.com/tools/llm-speed-calculator/">speed calculator&lt;/a> both apply unchanged to either
app, because underneath they are the same engine. That is the finding of this whole
exercise. Pick by workflow. Fix your settings. The
&lt;a href="https://techfuelhq.com/articles/local-llm-by-gpu-vram-2026/">by-GPU model guide&lt;/a> covers what fits in
your VRAM either way.&lt;/p>
&lt;h2 id="method-and-limits">Method and limits&lt;/h2>
&lt;p>Both apps measured 2026-08-26 on the same box, an RTX 5080 16 GB on driver 610.88
under Windows 11. Ollama 0.32.15, upgraded from 0.32.1 the same morning — the
newest release at bench time, with 0.33.0 promoted while this was being written
and not tested here. LM Studio 0.4.21, installed fresh that morning, runtime
self-updated to llama.cpp-cuda12 2.29.1. Models: Llama 3.2 3B Q4_K_M (blob dde5aa3fc5ff…),
Qwen 2.5 14B Q4_K_M (blob 2049f5674b1e…), gpt-oss 20B MXFP4 — Ollama&amp;rsquo;s blob
e7b273f96360… on its side, ggml-org&amp;rsquo;s upstream file on LM Studio&amp;rsquo;s side, whose
sha256 27cd6c432c76… matches the hash Hugging Face publishes. Rates come from each
app&amp;rsquo;s own counters (Ollama&amp;rsquo;s eval fields; LM Studio&amp;rsquo;s /api/v0 stats), cross-checked
by wall-clock recomputation. Decode figures are medians of five runs, long-prefill
figures medians of three (a fourth warmup run is discarded), every run carrying a
unique prompt nonce to defeat prompt caches. The gpt-oss offload finding was
re-verified with a single-variable run — stock configuration, only the offload
slider moved — recorded with the rest of the raw JSON. LM Studio&amp;rsquo;s prefill rate is derived from
time-to-first-token minus one decoded token, because its API does not split prompt
evaluation out the way Ollama&amp;rsquo;s does; the long-prefill TTFTs live in the raw JSON
captures if you want to re-derive. One app under test at a time, the other fully killed, except in
the coexistence check.&lt;/p>
&lt;p>What I did not test: Mac and MLX (where the loudest &amp;ldquo;LM Studio is faster&amp;rdquo; claims
come from, and where nothing on this page applies), AMD cards, multi-GPU, LM
Studio&amp;rsquo;s chat UI as opposed to its server, concurrent multi-request serving, and
NVFP4 quantization — no NVFP4 conversion of this model set existed to test. Mid-capture I caught
a background indexing job on my own machine depressing 3B decode by 15%; it was
suspended and every published number re-measured on a quiet system, which is one
more reason to distrust any benchmark that does not say what else the box was
doing. All raw JSON captures live in the repo, and the
&lt;a href="https://techfuelhq.com/data/llm-server-compare/">dataset page&lt;/a> is the citable record. These numbers
carry version stamps because they moved 3-10% in two weeks on one of the apps
alone; date everything, including mine.&lt;/p></description></item><item><title>The Self-Hosted SSO Tax: A Verified Tracker (2026)</title><link>https://techfuelhq.com/self-hosted/self-hosted-sso-tax-2026/</link><pubDate>Wed, 26 Aug 2026 14:45:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/self-hosted/self-hosted-sso-tax-2026/</guid><description>&lt;p>On August 9, 2026, PLANKA shipped version 2.2.0 and removed OIDC single sign-on from its
free Community edition, which meant anyone who updated a working board found every
SSO-based user on it deactivated, admins included. Three days after the announcement, the
thread on GitHub was closed and locked, sitting at 86 thumbs-down. That thread is why this
page exists.&lt;/p>
&lt;p>The practice has a name. &lt;a href="https://sso.tax/" rel="noopener">sso.tax&lt;/a>, whose entries go back to 2018,
tracks SaaS vendors that treat single sign-on as a luxury add-on, and its fork
&lt;a href="https://ssotax.org/" rel="noopener">ssotax.org&lt;/a> carries the same torch. Both lists measure per-user
cloud pricing, which is the right lens for SaaS and the wrong one for software you run
yourself. Neither covers what hit self-hosters this year: an app that runs on your
hardware, under an open license or close to one, where the login method is still the
feature behind the paywall.&lt;/p>
&lt;p>Nobody was keeping the list for self-hosted software. So I built it. I verified every row
on this page against the vendor&amp;rsquo;s own pricing pages and repositories on
&lt;strong>August 25, 2026&lt;/strong>, and each row links its receipt. A row I could not verify that day did
not ship.&lt;/p>
&lt;h2 id="what-is-the-self-hosted-sso-tax">What is the self-hosted SSO tax?&lt;/h2>
&lt;p>The SSO tax is the practice of charging extra for single sign-on. In SaaS it shows up as
an enterprise tier priced far above the plan you wanted. In self-hosted software it shows
up as an open-core split, where the code is free to run while SAML or OIDC login sits in
a paid edition, behind a license key, or inside a subscription that can cost more per
month than the hardware under it. Same tax, new venue.&lt;/p>
&lt;p>Why it stings more at home than in the office is worth spelling out. Once you run five or
six services, an identity provider such as Keycloak or &lt;a href="https://techfuelhq.com/tutorials/authentik-sso-self-hosted-2026/">Authentik&lt;/a>
is what turns them into one system. One account per person. One password policy, one place
to enforce two-factor, one switch to cut a user off everywhere. An app that paywalls SSO
opts out of that system unless you pay, and the price is usually set for companies, not
for a family of four. That gap is the tax.&lt;/p>
&lt;h2 id="what-counts-and-what-does-not">What counts, and what does not&lt;/h2>
&lt;p>A tracker like this earns links only if its rules are stated before its accusations. Here
are mine.&lt;/p>
&lt;p>&lt;strong>Class A, retroactive removal.&lt;/strong> A feature that shipped in the free edition moves behind
a paywall, and existing free users lose it on update. The community calls this a
rug-pull. It is the most serious class because it converts deployed users into hostages
of their own upgrade path, people who picked the app in good faith on the feature set it
shipped with and now get to choose between paying up and rebuilding somewhere else.
PLANKA&amp;rsquo;s OIDC removal is the 2026 example.&lt;/p>
&lt;p>&lt;strong>Class B, gated from day one.&lt;/strong> SSO was never free in the self-hosted edition. This is a
defensible business model and most rows below sit in this class. It still belongs on the
tracker, because you should price it in before you adopt the app, and because the free
alternatives column exists.&lt;/p>
&lt;p>&lt;strong>Class C, the quote wall.&lt;/strong> No published price at all. You cannot know the tax without
talking to sales. The original sso.tax maintains a separate list for these vendors, and
the same pattern appears in self-hosted pricing.&lt;/p>
&lt;p>Three things deliberately do not count. Paid support or hosting around a fully free
feature is the fair way to fund open source, and the free-side table below
names projects doing exactly that. Gating in a vendor&amp;rsquo;s hosted cloud while the
self-hosted build stays free is a SaaS matter, already covered by sso.tax. And a free
evaluation edition does not make a feature free. Mattermost&amp;rsquo;s &amp;ldquo;Entry&amp;rdquo; edition includes
SAML, and Mattermost&amp;rsquo;s own pricing page describes it as a limited-use edition of
Enterprise Advanced for technical evaluation.&lt;/p>
&lt;p>One more fairness rule. Where a vendor grandfathers old versions, the row says so. PLANKA
does not disable anything remotely, and older releases keep working. That matters, and a
tracker that hides it is a rant.&lt;/p>
&lt;h2 id="saml-oidc-ldap-not-the-same-thing">SAML, OIDC, LDAP: not the same thing&lt;/h2>
&lt;p>Every row below names the exact protocol, because &amp;ldquo;SSO&amp;rdquo; without a protocol name is how
wrong accusations happen.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>SAML 2.0.&lt;/strong> The XML-based enterprise standard. Common in corporate identity systems,
heavier to implement, and the single most frequently paywalled protocol on this page.&lt;/li>
&lt;li>&lt;strong>OIDC (OpenID Connect).&lt;/strong> The modern JSON/OAuth2-based standard. What Keycloak,
Authelia, and Authentik speak natively, and what most homelab setups want.&lt;/li>
&lt;li>&lt;strong>LDAP / Active Directory.&lt;/strong> Not SSO at all. A directory the app checks credentials
against. Users still type a password into each app, and there is no single session.
Several vendors sell &amp;ldquo;LDAP sync&amp;rdquo; as a separate paid feature.&lt;/li>
&lt;li>&lt;strong>Social login.&lt;/strong> OAuth2 against Google, GitHub, or similar. Convenient, and not the
same as bringing your own identity provider.&lt;/li>
&lt;li>&lt;strong>Forward-auth.&lt;/strong> A reverse proxy asks an authenticator before passing traffic. Guards
the front door without the app&amp;rsquo;s cooperation. More on its limits below.&lt;/li>
&lt;/ul>
&lt;h2 id="the-tracker-self-hosted-apps-that-charge-for-sso">The tracker: self-hosted apps that charge for SSO&lt;/h2>
&lt;p>Every row verified against the linked source on &lt;strong>2026-08-25&lt;/strong>. Prices are the vendor&amp;rsquo;s
published numbers on that date, in the currency they publish. &amp;ldquo;Moved&amp;rdquo; means the feature
left a free edition on the stated date. &amp;ldquo;Gated&amp;rdquo; means it was paid from the start as far as
the vendor&amp;rsquo;s current material shows, with no claim about earlier history.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">App&lt;/th>
&lt;th scope="col">What is paid&lt;/th>
&lt;th scope="col">Cheapest tier with it (2026-08-25)&lt;/th>
&lt;th scope="col">Class&lt;/th>
&lt;th scope="col">Free route that remains&lt;/th>
&lt;th scope="col">Receipt&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>PLANKA&lt;/strong> (kanban)&lt;/td>
&lt;td>OIDC SSO, removed from Community in v2.2.0 (2026-08-09); updating deactivates SSO-only users&lt;/td>
&lt;td>Pro, self-hosted €36/mo (€432/yr)&lt;/td>
&lt;td>&lt;strong>Moved&lt;/strong> (Aug 2026)&lt;/td>
&lt;td>Password login; TOTP 2FA now free; stay on ≤2.1.1 unsupported; &lt;a href="https://vikunja.io/docs/openid/" rel="noopener">Vikunja&lt;/a> has free OIDC&lt;/td>
&lt;td>&lt;a href="https://github.com/plankanban/planka/issues/1754" rel="noopener">Issue #1754&lt;/a> · &lt;a href="https://planka.app/pricing" rel="noopener">pricing&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Mattermost&lt;/strong> (team chat)&lt;/td>
&lt;td>SAML and OpenID Connect for production use sit on paid plans (the SAML docs list &amp;ldquo;Entry&amp;rdquo; too — an evaluation-only edition, see the free-route cell)&lt;/td>
&lt;td>Professional and up, quote-based (&amp;ldquo;prepaid annual subscriptions&amp;rdquo;)&lt;/td>
&lt;td>Gated + quote wall&lt;/td>
&lt;td>Free &amp;ldquo;Entry&amp;rdquo; edition includes SAML but is &amp;ldquo;a limited-use edition &amp;hellip; for technical evaluation&amp;rdquo; per the pricing page; Zulip ships SAML/OIDC free&lt;/td>
&lt;td>&lt;a href="https://docs.mattermost.com/administration-guide/onboard/sso-saml.html" rel="noopener">SAML docs&lt;/a> · &lt;a href="https://mattermost.com/pricing/" rel="noopener">pricing&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Grafana&lt;/strong> (dashboards)&lt;/td>
&lt;td>SAML — &amp;ldquo;Available in Grafana Enterprise and Grafana Cloud&amp;rdquo;&lt;/td>
&lt;td>Enterprise, quote-based&lt;/td>
&lt;td>Gated + quote wall&lt;/td>
&lt;td>Generic OAuth stays in the OSS build — its docs carry no edition banner, unlike SAML&amp;rsquo;s&lt;/td>
&lt;td>&lt;a href="https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-authentication/saml/" rel="noopener">SAML docs&lt;/a> · &lt;a href="https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-authentication/generic-oauth/" rel="noopener">OAuth docs&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Metabase&lt;/strong> (BI)&lt;/td>
&lt;td>SAML — &amp;ldquo;only available on Pro and Enterprise plans (both self-hosted and on Metabase Cloud)&amp;rdquo;&lt;/td>
&lt;td>Pro, $575/mo&lt;/td>
&lt;td>Gated&lt;/td>
&lt;td>Open-source edition, without SSO&lt;/td>
&lt;td>&lt;a href="https://www.metabase.com/docs/latest/people-and-groups/authenticating-with-saml" rel="noopener">SAML docs&lt;/a> · &lt;a href="https://www.metabase.com/pricing/" rel="noopener">pricing&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Teleport&lt;/strong> (infra access)&lt;/td>
&lt;td>SSO via OIDC, SAML, or Active Directory — Enterprise versions only, per vendor FAQ&lt;/td>
&lt;td>Enterprise, quote-based&lt;/td>
&lt;td>Gated + quote wall&lt;/td>
&lt;td>Community edition (the FAQ does not enumerate its auth methods)&lt;/td>
&lt;td>&lt;a href="https://goteleport.com/docs/faq/" rel="noopener">FAQ&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Passbolt&lt;/strong> (passwords)&lt;/td>
&lt;td>SSO (Microsoft, Google, OpenID) and LDAP provisioning at Pro; AD FS at Enterprise&lt;/td>
&lt;td>Pro, $4.90/user/mo billed annually, 10-user minimum&lt;/td>
&lt;td>Gated&lt;/td>
&lt;td>Community edition, without SSO/LDAP; Vaultwarden documents free OIDC&lt;/td>
&lt;td>&lt;a href="https://www.passbolt.com/pricing" rel="noopener">Pricing&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Bitwarden&lt;/strong> (passwords)&lt;/td>
&lt;td>&amp;ldquo;Passwordless SSO integration&amp;rdquo; at Enterprise; Teams lacks it&lt;/td>
&lt;td>Enterprise, $6/user/mo billed annually&lt;/td>
&lt;td>Gated&lt;/td>
&lt;td>&lt;a href="https://techfuelhq.com/homelab/vaultwarden-vs-bitwarden-2026/">Vaultwarden&lt;/a>, unofficial, free OIDC&lt;/td>
&lt;td>&lt;a href="https://bitwarden.com/pricing/business/" rel="noopener">Business pricing&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>n8n&lt;/strong> (automation)&lt;/td>
&lt;td>&amp;ldquo;SSO, SAML and LDAP&amp;rdquo; at Business tier&lt;/td>
&lt;td>Business, €667/mo billed annually&lt;/td>
&lt;td>Gated&lt;/td>
&lt;td>Free &lt;a href="https://techfuelhq.com/tutorials/n8n-self-hosted-docker-2026/">self-hosted Community build&lt;/a>, email login&lt;/td>
&lt;td>&lt;a href="https://n8n.io/pricing/" rel="noopener">Pricing&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Plane&lt;/strong> (project mgmt)&lt;/td>
&lt;td>SAML and OIDC implementations — the pricing table marks both Enterprise Grid only&lt;/td>
&lt;td>Enterprise Grid, quote-based&lt;/td>
&lt;td>Gated + quote wall&lt;/td>
&lt;td>CE self-host auth is passwords and magic links; Vikunja has free OIDC&lt;/td>
&lt;td>&lt;a href="https://plane.so/pricing" rel="noopener">Pricing&lt;/a> · &lt;a href="https://developers.plane.so/self-hosting/govern/authentication" rel="noopener">self-host docs&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>OpenProject&lt;/strong> (project mgmt)&lt;/td>
&lt;td>SSO providers (CAS, SAML, OpenID Connect, Kerberos, Okta), reserved for paid Enterprise plans&lt;/td>
&lt;td>Enterprise plans, from €10.95/user/mo billed annually with 25-seat minimums&lt;/td>
&lt;td>Gated&lt;/td>
&lt;td>Community edition (password logins)&lt;/td>
&lt;td>&lt;a href="https://www.openproject.org/pricing/" rel="noopener">Pricing table&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Seafile&lt;/strong> (file sync)&lt;/td>
&lt;td>SAML 2.0 / ADFS, manual-labeled &amp;ldquo;(Pro)&amp;rdquo;&lt;/td>
&lt;td>Pro edition (per-user pricing not published on checked pages)&lt;/td>
&lt;td>Gated&lt;/td>
&lt;td>CE keeps OAuth, Shibboleth, and remote-user; &lt;a href="https://techfuelhq.com/tutorials/nextcloud-aio-docker-setup-2026/">Nextcloud&lt;/a> has an official free SSO app&lt;/td>
&lt;td>&lt;a href="https://manual.seafile.com/latest/config/saml2/" rel="noopener">Manual&lt;/a> · &lt;a href="https://manual.seafile.com/latest/config/single_sign_on/" rel="noopener">SSO overview&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Two notes on reading it. The seat minimums matter more than the per-user price, because
SSO on Passbolt starts at 10 paid seats — $49 a month at its listed rate even if only
three people ever log in — and OpenProject&amp;rsquo;s plans carry 25-seat minimums on top of the
per-user number. And a quote wall is itself data. Five of eleven rows publish no number
at all.&lt;/p>
&lt;p>The table is honest about what it does not know. Portainer folklore says Business Edition
gates OAuth, and Portainer&amp;rsquo;s &lt;a href="https://docs.portainer.io/admin/settings/authentication/oauth" rel="noopener">current documentation&lt;/a>
shows OAuth providers with no edition restriction, so there is no Portainer row. The same
discipline removed a Rocket.Chat row from a draft of this page: their plan matrix lists
basic SAML, LDAP, and custom OAuth in Community, so what they charge for is advanced
identity sync, not SSO itself — that story sits in the retreats section below. Absence
from this table is not an endorsement. It means I could not verify an SSO paywall from
the primary source on build day.&lt;/p>
&lt;h2 id="what-happened-with-planka-sso">What happened with Planka SSO&lt;/h2>
&lt;p>The case that made this page worth building deserves the neutral version.&lt;/p>
&lt;p>On August 7, 2026, the PLANKA team posted &lt;a href="https://github.com/plankanban/planka/issues/1754" rel="noopener">issue #1754&lt;/a>,
announcing that OIDC/SSO would leave the Community edition with the next release. Their
words were direct. &amp;ldquo;SSO was always meant to be a Pro/enterprise feature on our side.&amp;rdquo; They
also cited support load, over 100 SSO setup requests a month by their count. Version
2.2.0 shipped on August 9. The thread was closed and locked on August 10, at 86
thumbs-down out of 96 reactions.&lt;/p>
&lt;p>The mechanics are the sharp edge. Updating to 2.2.0 deactivates every SSO-based user,
because those accounts have no password. An admin has to set passwords and reactivate them
one by one. If the admin account itself was SSO-based, that person is locked out unless
they create a new admin through the documented script first. The team&amp;rsquo;s own warning says
to plan the migration before updating.&lt;/p>
&lt;p>The fair-side ledger, stated plainly. Nothing is disabled remotely, and 2.1.1 keeps
working for as long as you accept running without updates. The same release moved TOTP
two-factor along with auto-logout and trusted devices from Pro into Community, so account
security in the free tier went up while identity federation went out. Pro costs €36 a month
self-hosted, which is priced for teams, and their stated line is that account security
stays free while enterprise identity is paid.&lt;/p>
&lt;p>If you run PLANKA with SSO today, the realistic options are four. Pay for Pro. Convert
users to password logins plus the newly free TOTP. Freeze on 2.1.1 and accept the
security trade of no updates. Or migrate boards to Vikunja, which speaks OIDC free. I
have not tested a PLANKA-to-Vikunja migration, so check Vikunja&amp;rsquo;s importers against your
data before committing to that path.&lt;/p>
&lt;h2 id="self-hosted-apps-where-sso-stays-free">Self-hosted apps where SSO stays free&lt;/h2>
&lt;p>The counterexamples are the strongest argument that free SSO is viable. Same verification
date, same receipt discipline.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">App&lt;/th>
&lt;th scope="col">Free identity support (verified 2026-08-25)&lt;/th>
&lt;th scope="col">Receipt&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Zulip&lt;/strong> (team chat)&lt;/td>
&lt;td>Email, LDAP/AD, SAML, OIDC, social (Google, GitHub, GitLab, Discord, Apple), JWT — no plan restrictions in the auth docs&lt;/td>
&lt;td>&lt;a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html" rel="noopener">Auth methods&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>BookStack&lt;/strong> (wiki)&lt;/td>
&lt;td>OIDC &amp;ldquo;as a primary method of authentication,&amp;rdquo; SAML 2.0 and LDAP alongside&lt;/td>
&lt;td>&lt;a href="https://www.bookstackapp.com/docs/admin/oidc-auth/" rel="noopener">OIDC docs&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Paperless-ngx&lt;/strong> (documents)&lt;/td>
&lt;td>OIDC and social auth via django-allauth since v2.5.0, plus remote-user&lt;/td>
&lt;td>&lt;a href="https://docs.paperless-ngx.com/advanced_usage/" rel="noopener">Advanced usage&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Vikunja&lt;/strong> (kanban/tasks)&lt;/td>
&lt;td>OIDC against &amp;ldquo;Authentik, Keycloak or similar&amp;rdquo;&lt;/td>
&lt;td>&lt;a href="https://vikunja.io/docs/openid/" rel="noopener">OpenID docs&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Vaultwarden&lt;/strong> (passwords)&lt;/td>
&lt;td>OIDC SSO with per-provider guides; a master password is still required&lt;/td>
&lt;td>&lt;a href="https://github.com/dani-garcia/vaultwarden/wiki/Enabling-SSO-support-using-OpenId-Connect" rel="noopener">Wiki&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Nextcloud&lt;/strong> (files+)&lt;/td>
&lt;td>Official &amp;ldquo;SSO &amp;amp; SAML&amp;rdquo; app maintained by Nextcloud GmbH, installable from the app store&lt;/td>
&lt;td>&lt;a href="https://apps.nextcloud.com/apps/user_saml" rel="noopener">App store&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Zulip is the row I would show a vendor. A team chat server competing in the same
category as Mattermost above ships SAML and OIDC free in every self-hosted deployment,
LDAP too. It can be done.&lt;/p>
&lt;p>We run several of these ourselves. Our &lt;a href="https://techfuelhq.com/tutorials/paperless-ngx-docker-setup-2026/">Paperless-ngx setup guide&lt;/a>
and &lt;a href="https://techfuelhq.com/tutorials/nextcloud-aio-docker-setup-2026/">Nextcloud AIO walkthrough&lt;/a> cover two of
the six, and the &lt;a href="https://techfuelhq.com/articles/self-hosted-apps-replace-saas-2026/">self-hosted starter list&lt;/a>
puts them in context.&lt;/p>
&lt;h2 id="your-escape-hatches">Your escape hatches&lt;/h2>
&lt;p>&lt;strong>Run your own identity provider.&lt;/strong> Keycloak speaks OIDC free, and so do Authelia and
Authentik. Our &lt;a href="https://techfuelhq.com/homelab/authelia-vs-authentik-2026/">Authelia vs Authentik comparison&lt;/a>
picks between the two for a homelab, with the &lt;a href="https://techfuelhq.com/tutorials/authentik-sso-self-hosted-2026/">Authentik setup tutorial&lt;/a>
as the follow-through. Every app in the free-side table plugs into any of them.&lt;/p>
&lt;p>&lt;strong>Forward-auth for the rest, with honesty about its limits.&lt;/strong> Authelia or Authentik in
front of your reverse proxy will challenge visitors before any backend sees traffic. For
a single-user homelab that is often all the SSO you need. What it cannot do is put
per-user identity inside an app whose native SSO is paywalled. The app still sees its own
local accounts. One login at the door, separate accounts behind it. That is the honest
limit, and any guide promising otherwise is selling something.&lt;/p>
&lt;p>&lt;strong>Pick apps by the auth column before you deploy.&lt;/strong> The cheapest time to avoid the SSO
tax is before your data lives in the app. That is the real use of this tracker, and it
pairs with our &lt;a href="https://techfuelhq.com/tools/selfhost-breakeven/">break-even calculator&lt;/a> when the alternative
is paying for the hosted product instead.&lt;/p>
&lt;h2 id="related-retreats-not-sso-same-pattern">Related retreats: not SSO, same pattern&lt;/h2>
&lt;p>Three events, 2021 through 2026, belong in the same memory even though none is an SSO
paywall. Different classes, labeled as such.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Project&lt;/th>
&lt;th scope="col">What happened&lt;/th>
&lt;th scope="col">Class&lt;/th>
&lt;th scope="col">Receipt&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Rocket.Chat&lt;/strong> (team chat)&lt;/td>
&lt;td>Advanced identity sync (role mapping, extended attribute sync, background sync) moved to paid plans in a late-September 2021 release; the announcement kept &amp;ldquo;all the basic functionalities of LDAP, SAML, Social Logins and Custom OAuth&amp;rdquo; in Community, and the current plan matrix still lists them there&lt;/td>
&lt;td>Advanced-tier migration&lt;/td>
&lt;td>&lt;a href="https://forums.rocket.chat/t/upcoming-changes-to-identity-management-integrations/11994" rel="noopener">2021 announcement&lt;/a> · &lt;a href="https://docs.rocket.chat/docs/authentication-across-plans" rel="noopener">plan matrix&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>MinIO&lt;/strong> (object storage)&lt;/td>
&lt;td>Admin features stripped from the community web console between the 2025-04-22 and 2025-05-24 releases; management moved to the &lt;code>mc&lt;/code> CLI or the paid AIStor product&lt;/td>
&lt;td>Feature removal&lt;/td>
&lt;td>&lt;a href="https://github.com/minio/minio/discussions/21316" rel="noopener">Discussion #21316&lt;/a> · &lt;a href="https://blocksandfiles.com/2025/06/19/minio-removes-management-features-from-basic-community-edition-object-storage-code/" rel="noopener">Blocks &amp;amp; Files&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Cal.com&lt;/strong> (scheduling)&lt;/td>
&lt;td>Announced on April 14, 2026 that the production codebase was going closed source, citing AI-assisted vulnerability discovery; a version of the codebase released to the community as Cal.diy under MIT&lt;/td>
&lt;td>License retreat&lt;/td>
&lt;td>&lt;a href="https://cal.com/blog/cal-com-goes-closed-source-why" rel="noopener">Cal.com blog&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Four dated incidents on this page span 2021 through 2026. The common thread is that the
sharp edge sits in the migration path, wherever the announcement lands. Watch changelogs,
and treat identity features as the canary.&lt;/p>
&lt;h2 id="the-maintainers-side">The maintainer&amp;rsquo;s side&lt;/h2>
&lt;p>This page is not an argument that maintainers owe anyone free SSO, because building and
then supporting SAML against every corporate identity provider that ever shipped a
quirky metadata file is genuinely expensive work that someone has to fund. PLANKA&amp;rsquo;s
hundred-requests-a-month figure is their own number, and I believe the shape of it. Enterprise identity is the classic open-core line because the buyers are
enterprises, and a project that funds development by charging them is behaving better
than one that quietly abandons its free edition.&lt;/p>
&lt;p>Paying is sometimes the right call. If a team of 30 depends on OpenProject with Okta,
€10.95 per user per month is a rounding error against migration cost. What this tracker
exists to catch is narrower — removals from deployed free editions and upgrade paths
that deactivate users, plus security features priced behind quote walls. Those are
choices, and the first table records who made them.&lt;/p>
&lt;h2 id="how-this-page-is-maintained">How this page is maintained&lt;/h2>
&lt;p>Each row carries the date it was verified and a link to the source that backs it. When an
app changes its tiers, the row gets re-verified against that same source and the update
log at the bottom of this page records the change. New incidents get a dated row when a
primary source exists, and the lastmod stamp above reflects the latest pass.&lt;/p>
&lt;p>Corrections are welcome, including from maintainers. If a row misstates your pricing or
your history, use the contact route on our &lt;a href="https://techfuelhq.com/about/">about page&lt;/a> and it will be checked
against your source and fixed. The table data is available under
&lt;a href="https://creativecommons.org/licenses/by/4.0/" rel="noopener">CC BY 4.0&lt;/a>, the same license as our
&lt;a href="https://techfuelhq.com/data/">measured datasets&lt;/a>. Cite the page, take the table.&lt;/p></description></item><item><title>Critical Process Died? Check the Drive First (2026)</title><link>https://techfuelhq.com/articles/critical-process-died-2026/</link><pubDate>Wed, 26 Aug 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/critical-process-died-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-08-26 · ~10 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>Some retailer links below are Amazon affiliate links; if you buy through them TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>Two minutes. That&amp;rsquo;s what the most useful test for &lt;strong>CRITICAL_PROCESS_DIED&lt;/strong> costs, and most of the guides I&amp;rsquo;ve read bury it beneath the same &lt;code>sfc /scannow&lt;/code>, DISM, and &amp;ldquo;reset your PC&amp;rdquo; ritual. The stop code (&lt;code>0x000000EF&lt;/code>) means a process Windows refuses to run without has terminated. Those processes, and everything they depend on, live on your system drive, so the drive&amp;rsquo;s own health report is the cheapest evidence you can collect. Collect it first. A bad result rewrites the entire plan; a clean one costs you nothing.&lt;/p>
&lt;p>The other thing the generic checklists skip: &lt;strong>your situation changes the order.&lt;/strong> A PC that crashes once a day but reaches the desktop, a PC stuck in a boot loop, and a PC that blue-screens at the logo every single time are three different problems wearing the same stop code. Start by picking your lane.&lt;/p>
&lt;h2 id="what-critical_process_died-means">What CRITICAL_PROCESS_DIED means&lt;/h2>
&lt;p>Windows designates a short list of processes as critical. If one of them terminates, the OS declares its own integrity suspect and stops on purpose. Microsoft&amp;rsquo;s bug-check reference for &lt;code>0xEF&lt;/code> names the built-in set: &lt;code>csrss.exe&lt;/code>, &lt;code>wininit.exe&lt;/code>, &lt;code>logonui.exe&lt;/code>, &lt;code>smss.exe&lt;/code>, &lt;code>services.exe&lt;/code>, &lt;code>conhost.exe&lt;/code>, and &lt;code>winlogon.exe&lt;/code>. These handle sessions, logins, and services. Windows cannot limp along without them, so it doesn&amp;rsquo;t try.&lt;/p>
&lt;p>That framing explains why this code is so unhelpfully broad. Anything that kills or corrupts one protected process fires the same blue screen: a system file damaged on disk, an update that shipped a bad component, a driver or antivirus interfering with a process it shouldn&amp;rsquo;t touch, a drive returning garbage when the process&amp;rsquo;s code is read, or RAM corrupting it after it loaded. The code names the &lt;em>victim&lt;/em>, never the killer. The rest of this page identifies the killer cheaply, in an order that doesn&amp;rsquo;t destroy evidence.&lt;/p>
&lt;h2 id="step-1-which-of-the-three-situations-are-you-in">Step 1: Which of the three situations are you in?&lt;/h2>
&lt;!-- ========== SIGNATURE VISUAL: 0xEF SITUATION FORK (three-lane router, distinct grammar) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#0b1017;border:1px solid rgba(96,165,250,0.18);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:16px;">
&lt;div style="font-size:19px;font-weight:700;color:#eaf1fb;letter-spacing:-0.3px;">CRITICAL_PROCESS_DIED: pick your lane before you touch anything&lt;/div>
&lt;div style="font-size:12.5px;color:#8fa2ba;margin-top:6px;line-height:1.5;">Same stop code, three different problems. The fix order below depends on which of these describes your machine &amp;#8212; and one lane carries real data risk.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:8px;">
&lt;div style="display:flex;gap:12px;align-items:flex-start;background:rgba(96,165,250,0.09);border-left:3px solid #60a5fa;border-radius:0 6px 6px 0;padding:11px 13px;min-width:0;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#0b1017;background:#60a5fa;border-radius:4px;padding:4px 8px;flex-shrink:0;">A&lt;/div>
&lt;div style="min-width:0;">&lt;div style="font-size:13.5px;font-weight:700;color:#dbe8fb;">You can still reach the desktop&lt;/div>&lt;div style="font-size:11.5px;color:#cdd9e8;line-height:1.45;">It crashes, reboots, and lets you back in. You have the easiest lane: run the drive check now (&lt;strong style="color:#e6edf6;">Step 3&lt;/strong>), then work the software half (&lt;strong style="color:#e6edf6;">Step 4&lt;/strong>).&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:flex-start;background:rgba(246,169,74,0.09);border-left:3px solid #f6a94a;border-radius:0 6px 6px 0;padding:11px 13px;min-width:0;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#0b1017;background:#f6a94a;border-radius:4px;padding:4px 8px;flex-shrink:0;">B&lt;/div>
&lt;div style="min-width:0;">&lt;div style="font-size:13.5px;font-weight:700;color:#f6e6cf;">Boot loop &amp;#8212; it starts, blue-screens, repeats&lt;/div>&lt;div style="font-size:11.5px;color:#cdd9e8;line-height:1.45;">Sometimes it offers &amp;#8220;Preparing Automatic Repair.&amp;#8221; Your path runs through the recovery environment (&lt;strong style="color:#e6edf6;">Step 5&lt;/strong>): uninstall the last update, reach Safe Mode, run the drive check from there.&lt;/div>&lt;/div>
&lt;/div>
&lt;div style="display:flex;gap:12px;align-items:flex-start;background:rgba(248,113,113,0.08);border-left:3px solid #f87171;border-radius:0 6px 6px 0;padding:11px 13px;min-width:0;">
&lt;div style="font-family:ui-monospace,monospace;font-size:11px;font-weight:700;color:#0b1017;background:#f87171;border-radius:4px;padding:4px 8px;flex-shrink:0;">C&lt;/div>
&lt;div style="min-width:0;">&lt;div style="font-size:13.5px;font-weight:700;color:#f4dede;">Instant blue screen at the logo, every time&lt;/div>&lt;div style="font-size:11.5px;color:#cdd9e8;line-height:1.45;">Safe Mode fails too. Highest data risk in this lane &amp;#8212; secure files first (&lt;strong style="color:#e6edf6;">Step 2&lt;/strong>), then test the drive outside Windows (&lt;strong style="color:#e6edf6;">Steps 5&amp;#8211;7&lt;/strong>).&lt;/div>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:15px;padding-top:12px;border-top:1px solid rgba(96,165,250,0.12);font-size:11px;color:#7f8ea3;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Different code on your screen? Each one routes differently &amp;#8212; the stop-code map on our restart-loop hub matches each blue screen to its own fix path.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#4f5c6e;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>One more routing check before you commit to this page. If your blue screens alternate between codes, the &lt;em>pattern&lt;/em> outranks any single code: in this cluster&amp;rsquo;s triage, a machine that also throws &lt;a href="https://techfuelhq.com/articles/dpc-watchdog-violation-2026/">DPC_WATCHDOG_VIOLATION&lt;/a> moves storage up the list, one mixing in &lt;a href="https://techfuelhq.com/articles/kernel-security-check-failure-2026/">KERNEL_SECURITY_CHECK_FAILURE&lt;/a> moves RAM up, and a machine that sometimes restarts with no blue screen at all belongs in the &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a> flow, which covers power-side causes this page won&amp;rsquo;t.&lt;/p>
&lt;h2 id="step-2-if-your-files-matter-secure-them-before-any-repair">Step 2: If your files matter, secure them before any repair&lt;/h2>
&lt;p>Skip this step only if everything on the machine is backed up or expendable.&lt;/p>
&lt;p>Every mainstream fix for &lt;code>0xEF&lt;/code> writes to the system drive. &lt;code>chkdsk /r&lt;/code> remaps sectors, &lt;code>sfc&lt;/code> and DISM rewrite system files, and a reset reinstalls Windows on top of whatever is there. On a healthy drive that&amp;rsquo;s fine. On a failing drive it&amp;rsquo;s the worst possible order: heavy writes push a marginal drive further along, and a reinstall destroys the crash evidence while planting your fresh OS on the same dying hardware. The safe sequence is the reverse. Copy or image first, repair second.&lt;/p>
&lt;p>So, before the repair steps:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Lane A (desktop works):&lt;/strong> copy your irreplaceable files to an external drive or cloud storage now, while the machine is up. Ten minutes, zero risk.&lt;/li>
&lt;li>&lt;strong>Lane B (boot loop):&lt;/strong> reach Safe Mode via the recovery environment (Step 5) and copy files out from there.&lt;/li>
&lt;li>&lt;strong>Lane C (no boot at all):&lt;/strong> pull the drive and read it from another PC over a USB adapter or enclosure, or boot a Linux live USB and copy files off without touching Windows. If the drive is already making mechanical noises (clicking, grinding), stop powering it entirely and read our &lt;a href="https://techfuelhq.com/articles/hard-drive-clicking-2026/">hard drive clicking&lt;/a> triage; every additional spin-up of a failing mechanical drive costs you data.&lt;/li>
&lt;/ul>
&lt;p>The one command to withhold until your files are safe: &lt;code>chkdsk C: /r&lt;/code>. It&amp;rsquo;s on every list, and on a drive with pending sectors it forces reads and remaps across failing media, sometimes for hours. Run it after the copy, or after the SMART check clears the drive, never as move one.&lt;/p>
&lt;h2 id="step-3-check-the-drive-first--the-two-minute-test-the-checklists-bury">Step 3: Check the drive first — the two-minute test the checklists bury&lt;/h2>
&lt;p>Here&amp;rsquo;s the wedge, and the reason this page is ordered unlike the ones you&amp;rsquo;ve already read. I order checks by what they cost against what they can tell you, and nothing else on this list comes close: the drive check is free, takes about two minutes, and a bad result invalidates every software fix below it. &lt;code>sfc&lt;/code> repairing files that a dying drive keeps re-corrupting is a treadmill — the exact loop the long-running community threads describe, where the error clears for a day and returns.&lt;/p>
&lt;p>Install &lt;strong>CrystalDiskInfo&lt;/strong> (free, from Crystal Dew World), open it, and select your system drive (the one holding &lt;code>C:&lt;/code>). Read three things:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>The health banner.&lt;/strong> Good in blue is a pass. Caution or Bad on the boot drive, with this stop code, is your answer until proven otherwise.&lt;/li>
&lt;li>&lt;strong>SATA SSDs and hard drives:&lt;/strong> the raw values for 05 (Reallocated Sectors Count), C5 (Current Pending Sector Count), and C6 (Uncorrectable Sector Count). Zeros are a pass. Non-zero and climbing between checks means the drive is actively failing. Recheck in an hour and compare.&lt;/li>
&lt;li>&lt;strong>NVMe SSDs:&lt;/strong> Percentage Used (at or past 100% the drive has consumed its rated write endurance), Available Spare (falling toward its threshold), and Media and Data Integrity Errors (should be 0).&lt;/li>
&lt;/ol>
&lt;p>Three outcomes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Clean drive&lt;/strong> → storage drops far down the suspect list. Continue to Step 4 and fix it in software with a clear conscience.&lt;/li>
&lt;li>&lt;strong>Warnings on the system drive&lt;/strong> → stop repairing. Go to Step 7: rescue what&amp;rsquo;s on it, then replace it. Any hour spent on DISM at this point is an hour the drive spends getting worse.&lt;/li>
&lt;li>&lt;strong>Clean, but the machine also intermittently loses sight of the drive&lt;/strong> (BIOS sometimes misses it, Explorer drops it, cold boots fail but restarts work). That&amp;rsquo;s a detection fault SMART can&amp;rsquo;t score. Work the connector, cable, and M.2 checks in &lt;a href="https://techfuelhq.com/articles/ssd-not-showing-up-2026/">SSD not showing up&lt;/a>; a drive that drops off the bus mid-session kills critical processes just as dead as a corrupt one.&lt;/li>
&lt;/ul>
&lt;p>I lead with this check on any blue-screening machine I touch, whatever the code turns out to be. It&amp;rsquo;s the highest information-per-minute test I know of in Windows troubleshooting. For &lt;code>0xEF&lt;/code> specifically, the community&amp;rsquo;s post-mortems back the ordering: the long-running r/techsupport thread in the sources ends at a dying system SSD behind recurring crashes under load, and BleepingComputer&amp;rsquo;s forum regulars open at the hardware layer too, starting with one-stick RAM isolation. That&amp;rsquo;s their experience, and experience isn&amp;rsquo;t telemetry; I have no cause-frequency data for this code, and I&amp;rsquo;ve seen none published. But when the free two-minute test and the expensive failure mode point at the same component, you run that test first.&lt;/p>
&lt;p>SMART has one honest limit, and the same r/techsupport thread is the proof. The drive that caused those recurring crashes still reported healthy — no pending sectors, no uncorrectable errors, just a quiet health-percentage slide from 99 to 95 over a few months — and cloning to a new SSD is what ended the crashes. So read a clean report as a screen rather than an acquittal. It moves storage down the list; disk errors in Event Viewer (Step 4) or a drive that intermittently vanishes move it right back up, whatever the banner says.&lt;/p>
&lt;h2 id="step-4-the-software-half-cheapest-fixes-first">Step 4: The software half, cheapest fixes first&lt;/h2>
&lt;p>Drive&amp;rsquo;s clean? Then it&amp;rsquo;s a software problem until proven otherwise, and the software checks also run cheapest-first.&lt;/p>
&lt;p>&lt;strong>Undo whatever changed.&lt;/strong> If the crashes started inside a week of a Windows update, remove it: &lt;strong>Settings → Windows Update → Update history → Uninstall updates&lt;/strong>, newest quality update first. If a driver updated right before the trouble (GPU, storage, antivirus), open Device Manager, right-click the device → &lt;strong>Properties → Driver → Roll Back Driver&lt;/strong>. A crash with a birthday usually has a parent, and removal is faster than repair.&lt;/p>
&lt;p>&lt;strong>Read the crash instead of guessing.&lt;/strong> Two built-in tools, five minutes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Reliability Monitor&lt;/strong> (press Start, type &lt;code>reliability&lt;/code>) draws a day-by-day timeline. Look at what landed on the machine (updates, driver installs, app installs) immediately before the first red X. That timestamp correlation is the most useful piece of software evidence I know how to collect.&lt;/li>
&lt;li>&lt;strong>Event Viewer → Windows Logs → System&lt;/strong>, sorted around the crash time. Repeated disk/storage errors (source &lt;code>disk&lt;/code>, &lt;code>stornvme&lt;/code>, &lt;code>volmgr&lt;/code>) before each crash reopen the storage question no matter what SMART said. A service failing over and over names a software culprit.&lt;/li>
&lt;li>Want the exact victim? A free minidump reader (WhoCrashed or BlueScreenView) pointed at &lt;code>C:\Windows\Minidump&lt;/code> shows what was on the stack when the system stopped. For &lt;code>0xEF&lt;/code> a single dump often just confirms a critical process died. The pattern across several dumps is what talks, and if a third-party &lt;code>.sys&lt;/code> file keeps appearing, that driver is your suspect.&lt;/li>
&lt;/ul>
&lt;p>Then repair system files, in this order:&lt;/p>
&lt;pre tabindex="0">&lt;code>DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
&lt;/code>&lt;/pre>&lt;p>Run both from an elevated Terminal, DISM first, because it repairs the component store that &lt;code>sfc&lt;/code> pulls its replacement files from. Reboot after. These two fix damaged Windows system files, a real &lt;code>0xEF&lt;/code> cause, and that is the whole list. They cannot fix a third-party driver, a filter driver from a misbehaving antivirus suite (uninstall it properly with the vendor&amp;rsquo;s removal tool if the timeline implicates it), or hardware.&lt;/p>
&lt;p>If crashes continue past this point with a clean drive, you&amp;rsquo;re into Step 6 territory: memory.&lt;/p>
&lt;h2 id="step-5-locked-out--the-boot-loop-path-through-winre">Step 5: Locked out — the boot-loop path through WinRE&lt;/h2>
&lt;p>Lanes B and C run the same fixes without a desktop. Before you start, grab your BitLocker recovery key from another device (aka.ms/myrecoverykey, signed into your Microsoft account), because recovery tools can demand it. Windows opens the door itself. Microsoft&amp;rsquo;s documented trigger is two consecutive failed attempts to start Windows, and the standard field method exploits exactly that: hold the power button to kill the machine the moment the Windows logo appears, twice, then boot a third time into &amp;ldquo;Preparing Automatic Repair&amp;rdquo; → &lt;strong>Advanced options&lt;/strong>.&lt;/p>
&lt;p>From &lt;strong>Troubleshoot → Advanced options&lt;/strong>, in this order:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Startup Repair.&lt;/strong> Let it run once. It fixes a specific class of boot-path damage and takes minutes.&lt;/li>
&lt;li>&lt;strong>Uninstall Updates → latest quality update.&lt;/strong> The cheapest targeted move when the loop began right after Patch Tuesday.&lt;/li>
&lt;li>&lt;strong>Startup Settings → restart → 4 (Safe Mode)&lt;/strong> or &lt;strong>5 (with networking)&lt;/strong>. Reaching Safe Mode is the big prize: it loads a minimal driver set, and from there you can run the Step 3 drive check, copy files out, roll back drivers, and uninstall recently added software. A machine stable in Safe Mode but crashing normally is pointing at a third-party driver or service.&lt;/li>
&lt;li>&lt;strong>System Restore&lt;/strong>, if you have restore points, returns Windows&amp;rsquo; own files and registry to a pre-crash state without touching your documents.&lt;/li>
&lt;li>&lt;strong>Command Prompt&lt;/strong>, for the offline file repair: &lt;code>sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows&lt;/code>. One catch. WinRE sometimes letters your Windows volume differently, so run &lt;code>diskpart&lt;/code> → &lt;code>list volume&lt;/code> first and substitute the letter that actually carries Windows.&lt;/li>
&lt;/ol>
&lt;p>The one tile I would leave alone for now is &lt;strong>Reset this PC&lt;/strong>. A reset is the reinstall-first play. It forfeits your files-first sequencing (Lane C readers may not have copied anything out), and if the underlying cause is the drive, you&amp;rsquo;ll watch the fresh install fail the same way in a week. Reset is a fine last software step once the drive has been cleared and the files are safe.&lt;/p>
&lt;p>If even WinRE won&amp;rsquo;t load and Lane C is fully dark: reseat the drive and its cable (or the M.2 screw and slot), try the other SATA port, and test the drive in another machine per Step 2&amp;rsquo;s rescue path. At that point you are diagnosing hardware, not Windows.&lt;/p>
&lt;h2 id="step-6-ram-and-the-rest-of-the-ladder">Step 6: RAM and the rest of the ladder&lt;/h2>
&lt;p>Memory is the other part that kills critical processes — a protected process corrupted &lt;em>in RAM&lt;/em> dies just like one fed bad data from disk. The tests are free; the parts aren&amp;rsquo;t.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Run MemTest86&lt;/strong> from a USB stick overnight (or &lt;code>mdsched.exe&lt;/code>, the built-in Windows Memory Diagnostic, for a faster first pass). Any red errors condemn the configuration, not necessarily one stick.&lt;/li>
&lt;li>&lt;strong>Reseat, then isolate.&lt;/strong> With two or more sticks, reseat them, then test one at a time. The one-stick pass is the same move BleepingComputer&amp;rsquo;s regulars open with on this code, and it separates a bad module from a bad slot.&lt;/li>
&lt;li>&lt;strong>Running XMP or EXPO?&lt;/strong> Set memory back to default JEDEC speed and retest. An unstable memory overclock corrupts data identically to a failing stick, and this cluster&amp;rsquo;s RAM-first sibling covers that fork in depth: &lt;a href="https://techfuelhq.com/articles/kernel-security-check-failure-2026/">KERNEL_SECURITY_CHECK_FAILURE&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Power sits at the bottom of the ladder.&lt;/strong> If the machine also hard-restarts with no blue screen, shuts off under load, or needs several tries to cold-boot, the storage and RAM symptoms may both be downstream of an unstable supply. Cross-check &lt;a href="https://techfuelhq.com/articles/psu-failure-symptoms-2026/">PSU failure symptoms&lt;/a> and the instant-black-cut diagnosis in &lt;a href="https://techfuelhq.com/articles/computer-randomly-turns-off-2026/">computer randomly turns off&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>Run the free tests before buying anything. Replacement parts are painfully expensive right now (the &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">RAM &amp;amp; SSD price tracker&lt;/a> has current numbers), which makes a guessed-wrong purchase a three-figure mistake. Evidence first, wallet second.&lt;/p>
&lt;h2 id="step-7-if-the-drive-is-the-verdict--rescue-then-replace">Step 7: If the drive is the verdict — rescue, then replace&lt;/h2>
&lt;p>You&amp;rsquo;re here because the evidence corroborated the drive: SMART warnings on the boot drive (reallocated, pending, or uncorrectable sectors; NVMe media errors; Percentage Used pegged), disk errors marching through Event Viewer before each crash, or the strongest tell of all — the error came back after a clean reinstall.&lt;/p>
&lt;p>The order is fixed. &lt;strong>Data off first, then replace.&lt;/strong> Copy files out per Step 2&amp;rsquo;s lanes (Safe Mode if Windows still opens; USB enclosure on another PC if it doesn&amp;rsquo;t). If the drive holds something irreplaceable and is deteriorating fast, weigh a professional recovery service before more DIY power-on hours.&lt;/p>
&lt;p>Then swap it. A current-generation &lt;a href="https://www.amazon.com/s?k=1tb+nvme+ssd&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">1TB NVMe SSD&lt;/a> is the straightforward replacement for a desktop or laptop with an M.2 slot — check your board&amp;rsquo;s manual first, and a SATA-only machine needs a 2.5-inch SATA SSD instead. Our &lt;a href="https://techfuelhq.com/articles/best-nvme-ssd-homelab-2026/">homelab NVMe picks&lt;/a> hold up equally well as desktop boot drives. I would not reuse a drive with climbing reallocated sectors for anything — not as a game drive, not as scratch space. Its next failure has your data on it.&lt;/p>
&lt;p>Fresh drive, clean Windows install, restore your files, and &lt;code>0xEF&lt;/code> should be history. If it isn&amp;rsquo;t, the drive was only a casualty. Return to Step 6, because RAM or power was corrupting the drive&amp;rsquo;s traffic all along.&lt;/p>
&lt;h2 id="keeping-it-from-coming-back">Keeping it from coming back&lt;/h2>
&lt;p>A machine that has thrown &lt;code>0xEF&lt;/code> once earns two habits. Recheck CrystalDiskInfo in a month; sector counts that moved again settle any lingering doubt about a drive that squeaked by. And keep the pattern rule in reach: a rebuilt machine that starts throwing &lt;em>different&lt;/em> stop codes has only reshuffled the problem, and the changing-codes signature points at memory or power. Start at the &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">stop-code map&lt;/a> rather than six separate code pages.&lt;/p>
&lt;p>Two cases sit outside this page. Domain-managed and BitLocker-locked corporate machines belong to your IT department, which holds keys and imaging tools you don&amp;rsquo;t. And one more exists: a &lt;code>0xEF&lt;/code> can come from third-party software whose service was configured with the restart-the-computer recovery option Microsoft documents for developers; the fix there is removing that software. Everything else above is reproducible on any Windows 10 or 11 PC with a USB stick and a screwdriver.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Stop-code identity and the critical-process list: Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0xef--critical-process-died" rel="noopener">Bug Check 0xEF: CRITICAL_PROCESS_DIED&lt;/a> reference — a critical system process terminated; built-in critical processes include csrss.exe, wininit.exe, logonui.exe, smss.exe, services.exe, conhost.exe, and winlogon.exe; a developer-created service with its recovery option set to restart the computer can also trigger the check.&lt;/li>
&lt;li>Recovery-environment entry behavior (WinRE starts automatically after two consecutive failed attempts to start Windows): Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-recovery-environment--windows-re--technical-reference" rel="noopener">Windows Recovery Environment documentation&lt;/a>. Menu labels in Steps 4-5 follow current Windows 11 builds — see the wording note below. BitLocker recovery keys: &lt;a href="https://aka.ms/myrecoverykey" rel="noopener">aka.ms/myrecoverykey&lt;/a>.&lt;/li>
&lt;li>Repair-command syntax: Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/sfc" rel="noopener">sfc command reference&lt;/a> (including the offline &lt;code>/offbootdir&lt;/code> and &lt;code>/offwindir&lt;/code> forms) and &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/repair-a-windows-image" rel="noopener">DISM image-repair documentation&lt;/a> (&lt;code>/Online /Cleanup-Image /RestoreHealth&lt;/code>).&lt;/li>
&lt;li>Community corroboration for the failing-drive association with recurring 0xEF (experience reports, not telemetry — read in full before citing): the &lt;a href="https://www.reddit.com/r/techsupport/comments/1fb6fh7/bsod_critical_process_died/" rel="noopener">r/techsupport thread&lt;/a> whose top answer traced recurring crashes to a dying system SSD that still showed healthy SMART, and BleepingComputer&amp;rsquo;s &lt;a href="https://www.bleepingcomputer.com/forums/t/816311/stop-code-critical-process-died-0xef/" rel="noopener">Stop Code: Critical Process Died (0xEF)&lt;/a> forum thread, where staff open with hardware isolation (one RAM stick, drive health).&lt;/li>
&lt;li>Tools: drive health via &lt;a href="https://crystalmark.info/en/software/crystaldiskinfo/" rel="noopener">CrystalDiskInfo&lt;/a> SMART/NVMe readouts — the NVMe fields (Percentage Used, Available Spare, Media and Data Integrity Errors) are defined in the &lt;a href="https://nvmexpress.org/specifications/" rel="noopener">NVM Express Base Specification&amp;rsquo;s&lt;/a> SMART/Health log; minidump reading via WhoCrashed (Resplendence) and BlueScreenView (NirSoft) against &lt;code>C:\Windows\Minidump&lt;/code>; memory via MemTest86 (PassMark) and Windows Memory Diagnostic (&lt;code>mdsched.exe&lt;/code>).&lt;/li>
&lt;li>Windows 10 end of standard support (October 14, 2025) and consumer Extended Security Updates: &lt;a href="https://www.microsoft.com/en-us/windows/end-of-support" rel="noopener">Microsoft&amp;rsquo;s Windows 10 end-of-support guidance&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Written against current Windows 11 and Windows 10 builds; menu wording drifts across updates. Corrections: &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/em>&lt;/p></description></item><item><title>Home Assistant + llama.cpp: Fully Local LLM Voice, Measured (2026)</title><link>https://techfuelhq.com/tutorials/home-assistant-local-llm-voice-2026/</link><pubDate>Wed, 26 Aug 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/tutorials/home-assistant-local-llm-voice-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-08-26 · ~14 min read · St. Louis County, MO&lt;/p>
&lt;img src="https://techfuelhq.com/images/tutorials/home-assistant-local-llm-voice-2026.svg" alt="Fully local Home Assistant voice pipeline: wake word audio to Whisper speech-to-text, the Assist pipeline and llama.cpp integration inside a Home Assistant VM, an OpenAI-compatible llama-server running a 3B-20B GGUF model on a GPU box, Assist tool calls actuating entities, and Piper text-to-speech returning the spoken answer, with measured component timings summarized below." width="1200" height="630" loading="eager" fetchpriority="high" style="display:block;margin:1.5rem auto;max-width:100%;height:auto;border:1px solid #1e1e3a;border-radius:8px;" />
&lt;p>144 milliseconds. That is how long a warm &amp;ldquo;turn on the kitchen lights&amp;rdquo; took to come back as a correct, executable tool call from a 4B model on my RTX 5080, measured at the same OpenAI-compatible endpoint Home Assistant&amp;rsquo;s new llama.cpp integration drives. The full pipeline adds speech-to-text on the front and Piper on the back. I measured those separately too. The honest headline is not the speed, though. On the same 24 spoken commands, the models people recommend for this job range from 71% to 96% correct, and the failure record includes a 3B model that answered a kitchen-scoped command by generating turn-offs for the &lt;em>entire house&lt;/em> — front-door lock included — until the server&amp;rsquo;s parser rejected the response. In Home Assistant&amp;rsquo;s tool mapping, turning off a lock opens the door.&lt;/p>
&lt;p>Home Assistant 2026.8 shipped a native &lt;a href="https://www.home-assistant.io/integrations/llama_cpp/" rel="noopener">llama.cpp integration&lt;/a> on August 5. The &lt;a href="https://www.home-assistant.io/blog/2026/08/05/release-20268/" rel="noopener">release post&lt;/a> describes it in one sentence: &amp;ldquo;Use a local llama.cpp server, or any OpenAI-compatible endpoint, as a conversation agent in Home Assistant.&amp;rdquo; The docs tell you which buttons to press. What they leave out (and what I could not find published anywhere) is which model to put behind it, what hardware that model needs, how many milliseconds each stage of the pipeline costs, and how often the model actuates the &lt;em>right&lt;/em> device. This guide is those numbers.&lt;/p>
&lt;h2 id="what-i-measured-and-what-i-did-not">What I measured, and what I did not&lt;/h2>
&lt;p>Every latency and accuracy figure on this page is first-party, from one bench: my Ryzen 7 7800X3D / RTX 5080 (16GB) machine, running llama.cpp build 10507 (&lt;code>llama-server&lt;/code>) on Windows, driver 610.88. The integration is a thin OpenAI-API client, so I benchmarked the exact request path it drives. Each request carried the same system prompt Home Assistant 2026.8.3 assembles (its default instructions, its device-control and area prompts, and a fixed 20-entity, 9-area &amp;ldquo;bench home&amp;rdquo; serialized the way &lt;a href="https://github.com/home-assistant/core/blob/2026.8.3/homeassistant/components/homeassistant/llm.py" rel="noopener">&lt;code>async_get_exposed_entities&lt;/code>&lt;/a> does it) and the same Assist tools (&lt;code>HassTurnOn&lt;/code>, &lt;code>HassTurnOff&lt;/code>, &lt;code>HassLightSet&lt;/code>, &lt;code>HassClimateSetTemperature&lt;/code>, &lt;code>HassSetPosition&lt;/code>, &lt;code>HassStopMoving&lt;/code>, &lt;code>GetLiveContext&lt;/code>), mirrored from the &lt;a href="https://github.com/home-assistant/core/blob/2026.8.3/homeassistant/components/intent/llm.py" rel="noopener">2026.8.3 intent-tools source&lt;/a>. Temperature 0, seed 42, five warm repetitions per cell, medians reported. The &lt;a href="https://techfuelhq.com/data/ha-voice-brain-bench-2026-08.csv">summary CSV&lt;/a> is published, and so are the &lt;a href="https://techfuelhq.com/data/ha-voice-bench/README.md">full receipts&lt;/a>: the corpus and scorer plus every raw per-request record.&lt;/p>
&lt;p>What I did not do is run Home Assistant itself on this bench. My HA-side steps below follow the official integration docs and the 2026.8.3 source rather than a click-through on this machine, and I say so here instead of pretending otherwise. Two consequences are worth knowing. First, my &amp;ldquo;command time&amp;rdquo; is the model-server leg only; Wyoming transport and Home Assistant&amp;rsquo;s own intent execution add a little on top. Second, my accuracy corpus was typed text at the API, and my Whisper timings used Piper-synthesized speech as input. That audio is clean and close-mic, which makes the STT accuracy numbers a ceiling rather than a promise about your echoey kitchen. Latency transfers. Perfect transcription rates don&amp;rsquo;t.&lt;/p>
&lt;h2 id="the-architecture-corrected">The architecture, corrected&lt;/h2>
&lt;p>Most early coverage of this integration calls it &amp;ldquo;built-in llama.cpp.&amp;rdquo; It is not, and the real design is better. The integration is a &lt;strong>client&lt;/strong>. You run &lt;a href="https://github.com/ggml-org/llama.cpp" rel="noopener">llama.cpp&lt;/a>&amp;rsquo;s &lt;code>llama-server&lt;/code> (or llama-cpp-python, or vLLM) anywhere on your network, and Home Assistant connects to its OpenAI-compatible endpoint, default &lt;code>http://localhost:8080/v1&lt;/code>. The &lt;a href="https://www.home-assistant.io/integrations/llama_cpp/" rel="noopener">integration page&lt;/a> lists it plainly, and the config flow asks for a URL, an optional API key, and then which model the server offers.&lt;/p>
&lt;p>That client design is exactly what a homelab wants. Your Home Assistant box stays a low-power N100 or &lt;a href="https://techfuelhq.com/tutorials/home-assistant-proxmox-2026/">a HAOS VM on Proxmox&lt;/a>, and the model runs wherever the compute already lives. A gaming PC. A workstation. The same host, if it has the memory. You can register several agents against different servers and models, each with its own instructions.&lt;/p>
&lt;p>Voice needs two more pieces, both older and both solid. &lt;strong>Whisper&lt;/strong> handles speech-to-text and &lt;strong>Piper&lt;/strong> handles text-to-speech, wired in over the Wyoming protocol as add-ons or standalone containers. One subtlety the docs never connect. Home Assistant&amp;rsquo;s low-power STT default, Speech-to-Phrase, is a &lt;em>closed&lt;/em> recognizer that matches against known sentence patterns, which is why it runs &amp;ldquo;under one second&amp;rdquo; on a Pi. An LLM agent exists precisely so you can say things no template anticipated, so it needs &lt;em>open-ended&lt;/em> Whisper STT. Choosing an LLM brain silently commits you to the heavier STT path. That is where the hardware question lives.&lt;/p>
&lt;h2 id="hardware-tiers-honestly">Hardware tiers, honestly&lt;/h2>
&lt;p>I sell nothing here. A voice brain does not need an RTX 5080. This bench has one, so that is the GPU I can measure, but the tiers below are what the numbers support.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Tier&lt;/th>
&lt;th scope="col">What runs where&lt;/th>
&lt;th scope="col">What to expect&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Pi 4/5, HA Green&lt;/strong>&lt;/td>
&lt;td>Default Assist agent + Speech-to-Phrase. No LLM.&lt;/td>
&lt;td>Sub-second closed commands, per &lt;a href="https://www.home-assistant.io/voice_control/voice_remote_local_assistant/" rel="noopener">HA&amp;rsquo;s own docs&lt;/a>. Free-form language is beyond this tier.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>N100 mini PC&lt;/strong>&lt;/td>
&lt;td>HA + Whisper &lt;code>tiny/base-int8&lt;/code> locally; LLM server on another box&lt;/td>
&lt;td>The &lt;a href="https://techfuelhq.com/homelab/best-mini-pc-home-assistant-2026/">right HA host&lt;/a> either way. I did not bench an N100; HA&amp;rsquo;s own docs bracket it — ~8s STT on a Pi 4, under a second on a NUC — and my 7800X3D CPU column below is its upper bound.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Desktop CPU, no GPU&lt;/strong>&lt;/td>
&lt;td>Everything on one box, &lt;code>-ngl 0&lt;/code>&lt;/td>
&lt;td>Works for a 3-4B brain, with seconds-not-milliseconds cold starts. I tried to measure this tier and my numbers failed their own sanity check; the honesty note under the latency tables explains why they aren&amp;rsquo;t printed.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Used 8-12GB GPU&lt;/strong>&lt;/td>
&lt;td>Everything on one box&lt;/td>
&lt;td>Between my CPU notes and the 5080 column. A 3060 12GB fits the 7B with room. That is interpolation rather than measurement; I did not bench one.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>16GB GPU (this bench)&lt;/strong>&lt;/td>
&lt;td>14B at 96% accuracy, or 20B&lt;/td>
&lt;td>Warm commands in the 126-585 ms range across the ladder. The whole pipeline lands under a second.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>For sizing a specific model against a specific card, the &lt;a href="https://techfuelhq.com/tools/llm-vram-calculator/">VRAM calculator&lt;/a> does the arithmetic. My &lt;a href="#latency-results">measured VRAM residency per model&lt;/a> is in the results table.&lt;/p>
&lt;h2 id="step-1-run-llama-server-where-the-compute-is">Step 1: Run llama-server where the compute is&lt;/h2>
&lt;p>Grab a &lt;a href="https://github.com/ggml-org/llama.cpp/releases" rel="noopener">llama.cpp release&lt;/a> for your platform (CUDA build for NVIDIA), or use the official containers. Tool calling — the thing that lets the model actuate anything — runs through the Jinja chat-template engine. On the build I tested (10507) the server&amp;rsquo;s own &lt;code>--help&lt;/code> reports &lt;code>--jinja&lt;/code> as default-enabled, and I pass it explicitly anyway; older builds shipped it off, so if your agent chats but nothing actuates, &lt;code>--no-jinja&lt;/code> or an ancient build is the first thing to rule out.&lt;/p>
&lt;p>Windows or Linux binary:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>llama-server -hf unsloth/Qwen3-4B-Instruct-2507-GGUF:Q4_K_M --host 0.0.0.0 --port &lt;span style="color:#ae81ff">8080&lt;/span> -ngl &lt;span style="color:#ae81ff">99&lt;/span> -c &lt;span style="color:#ae81ff">8192&lt;/span> --jinja --api-key changeme
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Docker with an NVIDIA GPU:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker run --gpus all -p 8080:8080 -v /path/to/models:/models ghcr.io/ggml-org/llama.cpp:server-cuda -m /models/Qwen3-4B-Instruct-2507-Q4_K_M.gguf --host 0.0.0.0 --port &lt;span style="color:#ae81ff">8080&lt;/span> --n-gpu-layers &lt;span style="color:#ae81ff">99&lt;/span> -c &lt;span style="color:#ae81ff">8192&lt;/span> --jinja --api-key changeme
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Notes from running this, not from the README:&lt;/p>
&lt;ul>
&lt;li>&lt;code>-hf user/repo:QUANT&lt;/code> downloads straight from Hugging Face and &lt;a href="https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md" rel="noopener">defaults to Q4_K_M&lt;/a>. It saved me the download-and-point dance for every model in this guide.&lt;/li>
&lt;li>&lt;code>-ngl 99&lt;/code> offloads all layers to the GPU, and &lt;code>-ngl 0&lt;/code> forces CPU. &lt;code>-c 8192&lt;/code> gives the ~1,500-2,500-token Home Assistant prompt room to grow with your entity count.&lt;/li>
&lt;li>&lt;strong>If you already run Ollama&lt;/strong>, llama-server can load most of Ollama&amp;rsquo;s blobs directly from &lt;code>~/.ollama/models/blobs/&lt;/code>. That is how I benched Qwen2.5. The exception that cost me an evening was gpt-oss — Ollama&amp;rsquo;s blob for it carries its own architecture tag and will not load in llama-server, so you need the upstream GGUF conversion. I hit the same wall building the &lt;a href="https://techfuelhq.com/self-hosted/ollama-vs-llamacpp-rtx-5080-2026/">Ollama vs llama.cpp comparison&lt;/a>.&lt;/li>
&lt;li>Set &lt;code>--api-key&lt;/code> on anything listening beyond localhost. llama-server itself warns at startup that it ships with CORS open and no key.&lt;/li>
&lt;/ul>
&lt;p>Sanity-check with &lt;code>curl http://SERVER_IP:8080/health&lt;/code> before touching Home Assistant. It answers &lt;code>{&amp;quot;status&amp;quot;:&amp;quot;ok&amp;quot;}&lt;/code> once the model is loaded.&lt;/p>
&lt;h2 id="step-2-connect-home-assistant">Step 2: Connect Home Assistant&lt;/h2>
&lt;p>On Home Assistant 2026.8 or newer (I verified against 2026.8.3, the latest release as I write this), go to &lt;strong>Settings → Devices &amp;amp; services → Add integration → llama.cpp&lt;/strong>. The flow asks for the base URL — your server&amp;rsquo;s &lt;code>http://SERVER_IP:8080/v1&lt;/code> — plus the optional API key, then queries the server and prompts you to select the model. From the integration&amp;rsquo;s entry you add a &lt;strong>conversation agent&lt;/strong> subentry, which holds the two settings that matter.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Control Home Assistant&lt;/strong> grants the agent the Assist API. Without it you get a chatbot that can&amp;rsquo;t touch a switch.&lt;/li>
&lt;li>&lt;strong>Instructions&lt;/strong> is the system prompt, templated. The default plus the Assist API&amp;rsquo;s own guidance is what I benchmarked. Resist stuffing it until you&amp;rsquo;ve read the latency section, because every token you add here is prefill the model re-reads on a cold start.&lt;/li>
&lt;/ul>
&lt;p>The agent only sees entities you expose, under &lt;strong>Settings → Voice assistants → Expose&lt;/strong>. Expose deliberately. My bench home is 20 entities and its serialized state costs ~1,500-2,500 tokens of prompt depending on the model&amp;rsquo;s tokenizer. A 300-entity house pushes the prompt up with it, along with the cold-start prefill and the model&amp;rsquo;s targeting difficulty.&lt;/p>
&lt;p>Then build the voice side in &lt;strong>Settings → Voice assistants&lt;/strong>. Create an Assist pipeline, pick your llama.cpp agent as the conversation agent, Whisper for STT, Piper for TTS. Whisper and Piper install as add-ons on HAOS (defaults &lt;code>model: auto&lt;/code>, and Piper&amp;rsquo;s &lt;code>en_US-lessac-medium&lt;/code> voice — the exact voice in my TTS table), or as containers on any Docker host, including your GPU box:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker run -d -p 10300:10300 -v whisper-data:/data rhasspy/wyoming-whisper --model small-int8 --language en
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>There is a &lt;a href="https://docs.linuxserver.io/images/docker-faster-whisper/" rel="noopener">GPU build of faster-whisper&lt;/a> (&lt;code>lscr.io/linuxserver/faster-whisper:gpu&lt;/code>) if you want STT on the CUDA box too; my STT table below shows what that buys. Point Home Assistant&amp;rsquo;s Wyoming integration at port 10300 and the pipeline picks it up. Wake word (openWakeWord/microWakeWord on a satellite or the Voice Preview Edition puck) is the one stage I have no hardware to measure, so I leave it to HA&amp;rsquo;s docs.&lt;/p>
&lt;h2 id="model-choice-the-accuracy-table-i-went-looking-for-and-had-to-build">Model choice: the accuracy table I went looking for and had to build&lt;/h2>
&lt;p>Speed was never the interesting question. Every model below answers a warm command in under a second on a GPU. The question is whether the tool call that comes back does the right thing. I ran a fixed corpus of 24 typed commands against each model at temperature 0 — simple on/off, area-scoped commands (&amp;ldquo;turn off all the lights in the office&amp;rdquo;), parameters (brightness, color, thermostat), locks and covers, state queries, and five deliberately hard cases covering ambiguity, multi-area targeting, an implicit request, a command for a device that doesn&amp;rsquo;t exist, and a timer request when no timer tool is offered. Scoring is mechanical. Correct tool, correct target, correct parameters, against a published acceptance set. The corpus and scorer live in the &lt;a href="https://techfuelhq.com/data/ha-voice-bench/README.md">bench receipts&lt;/a> along with every raw response, so you can recompute any cell of this table.&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Model (Q4_K_M unless noted)&lt;/th>
&lt;th scope="col">Correct / 24&lt;/th>
&lt;th scope="col">Accuracy&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Qwen2.5-14B-Instruct&lt;/td>
&lt;td>23&lt;/td>
&lt;td>&lt;strong>95.8%&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gpt-oss-20b (MXFP4)&lt;/td>
&lt;td>22&lt;/td>
&lt;td>91.7%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen2.5-7B-Instruct&lt;/td>
&lt;td>21&lt;/td>
&lt;td>87.5%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen3-4B-Instruct-2507&lt;/td>
&lt;td>20&lt;/td>
&lt;td>83.3%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Llama-3.2-3B-Instruct&lt;/td>
&lt;td>17&lt;/td>
&lt;td>70.8%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>The failures are more instructive than the percentages, because they are not random. Each model has a signature way of being wrong.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Llama-3.2-3B floods, guesses, and crashes.&lt;/strong> Three of its 24 responses were rejected outright by llama-server&amp;rsquo;s tool-call parser — the model generated malformed tool output the server refused to hand back, which a Home Assistant user experiences as a failed interaction. The server log shows what it was trying to do on the kitchen-scoped &amp;ldquo;turn everything off&amp;rdquo; command: an enumeration of &lt;code>HassTurnOff&lt;/code> calls marching far beyond the kitchen through the whole bench home, the Front Door Lock among them, until the parse died. Home Assistant maps turn-off on a lock to opening it; the only thing between that response and an open front door was a parser error. Asked the ambiguous &amp;ldquo;turn off the lights,&amp;rdquo; it silently guessed one room instead of asking which. It turned on the nonexistent disco ball. And its answer to &amp;ldquo;Who wrote The Hobbit?&amp;rdquo; was a &lt;code>GetLiveContext&lt;/code> call with &lt;code>name: &amp;quot;The Hobbit&amp;quot;&lt;/code> — it looked the novel up as if it were a device in the house (rejection number three). Fast, cheap, and the one model here I would not connect to real locks.&lt;/li>
&lt;li>&lt;strong>Qwen3-4B drops the scope.&lt;/strong> Its area commands came back domain-correct but house-wide. &amp;ldquo;Turn off all the lights in the office&amp;rdquo; produced &lt;code>HassTurnOff {domain: [light]}&lt;/code> with no area, which would darken the whole house. Its instinct on ambiguity is investigation (&lt;code>GetLiveContext&lt;/code>) rather than actuation, which is at least safe.&lt;/li>
&lt;li>&lt;strong>Qwen2.5-7B under-reaches.&lt;/strong> It targeted the entity literally named &amp;ldquo;Office Lights&amp;rdquo; and left the desk lamp on. Technically responsive, functionally half a command. On the ambiguous prompt it enumerated and switched off lights in five rooms instead of asking which one. On the disco ball it checked live context before telling me no such device exists — reasonable behavior that still scored as a miss under the strict no-tool answer key, where the 4B and 14B simply said so without calling anything.&lt;/li>
&lt;li>&lt;strong>Qwen2.5-14B just… behaves.&lt;/strong> Its one miss in 24: asked what&amp;rsquo;s playing in the living room, it answered (correctly) straight from the entity snapshot in its prompt instead of calling &lt;code>GetLiveContext&lt;/code> as its instructions demand. Right answer, wrong route. On a real install, where that snapshot goes stale between commands, the habit can bite. It nearly had a second miss, but that one was mine — told to turn everything off in the kitchen, it also switched off the kitchen speaker, which my original answer key had forgotten existed. The model was more thorough than my gold labels. I corrected the key (corpus v1.0.1) and scored it as the pass it was.&lt;/li>
&lt;li>&lt;strong>gpt-oss-20b omits.&lt;/strong> It turned off the kitchen lights but forgot the dining room on the two-area command, and went off to inspect the thermostat instead of acting on &amp;ldquo;I&amp;rsquo;m cold.&amp;rdquo; Nothing dangerous, since its misses are omissions rather than overreach, but you feel its reasoning pass in the latency table below.&lt;/li>
&lt;/ul>
&lt;p>Home Assistant&amp;rsquo;s own prompt tells the model to ask for an area when a device-type command is ambiguous, and to prefer name-plus-domain targeting. The source is &lt;a href="https://github.com/home-assistant/core/blob/2026.8.3/homeassistant/components/intent/llm.py" rel="noopener">right here&lt;/a>. The spread above is how differently five models follow the same instructions.&lt;/p>
&lt;p>Two scoped notes. This is one fixed corpus at temperature 0 on one bench home, a reproducible comparison rather than a universal ranking, and the integration&amp;rsquo;s own default temperature is 0.7, which can only make behavior less deterministic. Also, a fine-tuned home-control model like &lt;a href="https://github.com/acon96/home-llm" rel="noopener">Home-LLM&lt;/a> exists precisely to attack this problem class; it predates the native integration and I did not bench it here.&lt;/p>
&lt;h2 id="latency-results">Latency results&lt;/h2>
&lt;p>Command completion time is the number that matters for actuation: request sent to complete tool call back. First-token time flatters voice pipelines; a tool call is only actionable when it is finished. &amp;ldquo;Cold&amp;rdquo; is the first request after the server loads, which prefills the entire system prompt. &amp;ldquo;Warm&amp;rdquo; is the median of five repeats, where llama-server&amp;rsquo;s prompt cache means only your new sentence gets processed. That cache is the single most important performance fact in this whole stack. The same request that costs a second cold on the 14B costs 371 ms warm.&lt;/p>
&lt;p>&lt;strong>LLM leg, RTX 5080 (all layers offloaded):&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Model&lt;/th>
&lt;th scope="col">Load&lt;/th>
&lt;th scope="col">Cold command&lt;/th>
&lt;th scope="col">Warm command&lt;/th>
&lt;th scope="col">Decode tok/s&lt;/th>
&lt;th scope="col">Server VRAM&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Llama-3.2-3B&lt;/td>
&lt;td>2.8 s&lt;/td>
&lt;td>284 ms&lt;/td>
&lt;td>126 ms&lt;/td>
&lt;td>287&lt;/td>
&lt;td>3,168 MiB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen3-4B-2507&lt;/td>
&lt;td>2.6 s&lt;/td>
&lt;td>326 ms&lt;/td>
&lt;td>144 ms&lt;/td>
&lt;td>232&lt;/td>
&lt;td>3,873 MiB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen2.5-7B&lt;/td>
&lt;td>4.9 s&lt;/td>
&lt;td>557 ms&lt;/td>
&lt;td>291 ms&lt;/td>
&lt;td>128&lt;/td>
&lt;td>5,033 MiB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Qwen2.5-14B&lt;/td>
&lt;td>26.0 s&lt;/td>
&lt;td>1.02 s&lt;/td>
&lt;td>371 ms&lt;/td>
&lt;td>86&lt;/td>
&lt;td>10,076 MiB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gpt-oss-20b&lt;/td>
&lt;td>19.6 s&lt;/td>
&lt;td>1.08 s&lt;/td>
&lt;td>585 ms&lt;/td>
&lt;td>212&lt;/td>
&lt;td>11,601 MiB&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Server VRAM is nvidia-smi total-used delta, before load versus after generation, on a card with an ~865 MiB desktop baseline. Every row above came from a verified-quiet capture window, with the baseline recorded per run in the receipts. This box runs other inference workloads, and two earlier contaminated captures were discarded rather than published.&lt;/p>
&lt;p>&lt;strong>CPU only: the numbers I am not publishing.&lt;/strong> I ran the same bench script with &lt;code>-ngl 0&lt;/code> on the 7800X3D and got decode rates near 1 token per second on a 3B. Absurd for this CPU, and I know exactly why. This bench box is temporarily on a single stick of DDR5 (a dead stick is out for RMA), and during the CPU window other inference workloads on the machine were sharing that one memory channel. CPU decode is memory-bandwidth-bound, so those runs measured my bus contention instead of the tier. Numbers measured badly are worse than no numbers, so the CPU rows stay out of the table until I can capture them on a quiet, dual-channel box; the dataset will grow the rows when they&amp;rsquo;re real. What holds regardless of my bad window: CPU prefill of a ~2,100-token Home Assistant prompt is a cold-start cost measured in seconds rather than milliseconds, warm commands ride the prompt cache exactly as on the GPU, and Home Assistant&amp;rsquo;s own docs put open-ended Whisper — the other CPU-hungry stage — at ~8 seconds on a Pi 4 versus under a second on a NUC. A resident server plus a 3-4B model is the only CPU-only configuration I would attempt, and I would set expectations in seconds.&lt;/p>
&lt;p>&lt;strong>STT (faster-whisper, beam 1, on the 24 synthesized commands, ~2-3s of audio each):&lt;/strong>&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Model&lt;/th>
&lt;th scope="col">Device&lt;/th>
&lt;th scope="col">Median&lt;/th>
&lt;th scope="col">Verbatim match&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>tiny-int8&lt;/td>
&lt;td>RTX 5080&lt;/td>
&lt;td>46 ms&lt;/td>
&lt;td>83.3%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>tiny-int8&lt;/td>
&lt;td>CPU (7800X3D)&lt;/td>
&lt;td>253 ms&lt;/td>
&lt;td>83.3%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>base-int8&lt;/td>
&lt;td>RTX 5080&lt;/td>
&lt;td>69 ms&lt;/td>
&lt;td>79.2%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>base-int8&lt;/td>
&lt;td>CPU (7800X3D)&lt;/td>
&lt;td>475 ms&lt;/td>
&lt;td>79.2%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>small-int8&lt;/td>
&lt;td>RTX 5080&lt;/td>
&lt;td>99 ms&lt;/td>
&lt;td>87.5%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>small-int8&lt;/td>
&lt;td>CPU (7800X3D)&lt;/td>
&lt;td>1,401 ms&lt;/td>
&lt;td>87.5%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Two honest readings of that match column. First, the method-section reminder: the input audio is synthetically clean, so these are ceilings with a good mic, not field guarantees. Second, verbatim match is a harsh metric that cuts both ways. Several &amp;ldquo;misses&amp;rdquo; were harmless formatting (&amp;ldquo;Set the bedroom lights to 30%.&amp;rdquo; for &amp;ldquo;30 percent&amp;rdquo;, &amp;ldquo;10 minutes&amp;rdquo; for &amp;ldquo;ten minutes&amp;rdquo;), which the downstream LLM reads fine. The misses that matter are the garbled entity names: base-int8 heard &amp;ldquo;turn off the desk lamp&amp;rdquo; as &amp;ldquo;Turn off the disc lip,&amp;rdquo; and even small-int8 turned the disco ball into a &amp;ldquo;disco bowl.&amp;rdquo; A garbled name is a dead command no matter how good the model behind it is. (Base scoring below tiny here is a 24-sample quirk rather than a finding.)&lt;/p>
&lt;p>&lt;strong>TTS (Piper, &lt;code>en_US-lessac-medium&lt;/code>, the add-on&amp;rsquo;s default voice):&lt;/strong> a non-problem, and I can now say so with numbers. On the 7800X3D&amp;rsquo;s CPU, Piper synthesized the short acknowledgment &amp;ldquo;Turned on the kitchen lights.&amp;rdquo; in 93 ms, a 2.9-second sentence in 101 ms, and a deliberately long 8.9-second status answer in 315 ms — a real-time factor of 0.03-0.07. The voice model loads once, in 1.5 s. Piper is the one pipeline component where the Raspberry-Pi-class advice in HA&amp;rsquo;s docs simply extends upward: their voice page calls it &lt;a href="https://www.home-assistant.io/voice_control/voice_remote_local_assistant/" rel="noopener">&amp;ldquo;optimized for the Raspberry Pi 4&amp;rdquo;&lt;/a>, and a desktop CPU has an order of magnitude to spare.&lt;/p>
&lt;p>&lt;strong>Adding it up.&lt;/strong> A warm GPU pipeline — Whisper small on the card (99 ms), the 4B brain (144 ms), a short Piper acknowledgment (93 ms) — comes to roughly a third of a second of measured compute between end-of-speech and start-of-spoken-reply, before Wyoming transport and Home Assistant&amp;rsquo;s own execution overhead. That is inside the territory where an assistant feels instant. One honest asterisk. Like every OpenAI-style agent loop, the integration feeds the tool result back through the model to phrase the spoken confirmation (the loop is visible in &lt;a href="https://github.com/home-assistant/core/tree/2026.8.3/homeassistant/components/llama_cpp" rel="noopener">its conversation-entity source&lt;/a>), so the acknowledgment costs a second warm round trip. The actuation itself doesn&amp;rsquo;t wait for it. The lights are on before the voice says so.&lt;/p>
&lt;h2 id="tuning-notes-from-the-bench">Tuning notes from the bench&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Keep the server resident.&lt;/strong> Everything above says cold starts are the tax. If the server is on a box that sleeps, or something else evicts your VRAM, every &amp;ldquo;first command of the evening&amp;rdquo; pays load plus full prefill. This is also my argument against giant system prompts and exposing 300 entities.&lt;/li>
&lt;li>&lt;strong>&lt;code>--jinja&lt;/code>, again.&lt;/strong> It is the difference between tool calls and vibes. If your agent chats but nothing actuates, check this first.&lt;/li>
&lt;li>&lt;strong>Watch the token budget.&lt;/strong> The integration defaults to a &lt;a href="https://github.com/home-assistant/core/blob/2026.8.3/homeassistant/components/llama_cpp/const.py" rel="noopener">3,000-token response cap&lt;/a>; temperature 0.7 and top-p 1.0 live in the same file. My bench capped at 512, and the 3B&amp;rsquo;s whole-house flood ran that cap out mid-JSON before the parser rejected it. If you see failed responses in the logs, the model rather than the budget is usually the problem.&lt;/li>
&lt;li>&lt;strong>Qwen3 pickers, use the Instruct variant.&lt;/strong> Qwen&amp;rsquo;s hybrid &amp;ldquo;thinking&amp;rdquo; builds spend tokens reasoning before every answer. I did not bench one, and for voice I would not; the 2507 &lt;em>Instruct&lt;/em> line I benched answers directly. gpt-oss shows what reasoning costs even when it works: for the same warm command it generated 112 tokens where the 14B needed 30, which is most of why it sits at 585 ms warm even though its 212 tok/s decode is two and a half times the 14B&amp;rsquo;s.&lt;/li>
&lt;li>&lt;strong>Streaming is a chat feature.&lt;/strong> The integration exposes a streaming toggle, and it helps perceived latency when the model reads you a paragraph. A tool call is atomic. Nothing actuates until the JSON is complete.&lt;/li>
&lt;/ul>
&lt;h2 id="why-local-briefly">Why local, briefly&lt;/h2>
&lt;p>Because the audio of your kitchen never leaves your LAN, because it works when your ISP doesn&amp;rsquo;t, and because the per-query price is your electricity. I will not pretend the cloud assistants aren&amp;rsquo;t slicker at barge-in and follow-ups. They are, today. What you get here is a voice interface whose brain, vocabulary, and failure modes are yours to choose, measure, and fix. The accuracy table is exactly that. Pick the brain whose mistakes you can live with, and wire it to locks only when the answer is &amp;ldquo;none of them.&amp;rdquo;&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Home Assistant 2026.8 release post (llama.cpp integration announcement): &lt;a href="https://www.home-assistant.io/blog/2026/08/05/release-20268/" rel="noopener">https://www.home-assistant.io/blog/2026/08/05/release-20268/&lt;/a>&lt;/li>
&lt;li>llama.cpp integration docs: &lt;a href="https://www.home-assistant.io/integrations/llama_cpp/" rel="noopener">https://www.home-assistant.io/integrations/llama_cpp/&lt;/a>&lt;/li>
&lt;li>HA 2026.8.3 source — Assist tools + prompts: &lt;a href="https://github.com/home-assistant/core/blob/2026.8.3/homeassistant/components/intent/llm.py" rel="noopener">https://github.com/home-assistant/core/blob/2026.8.3/homeassistant/components/intent/llm.py&lt;/a> · exposed-entity serialization + GetLiveContext: &lt;a href="https://github.com/home-assistant/core/blob/2026.8.3/homeassistant/components/homeassistant/llm.py" rel="noopener">https://github.com/home-assistant/core/blob/2026.8.3/homeassistant/components/homeassistant/llm.py&lt;/a> · the integration (defaults in const.py): &lt;a href="https://github.com/home-assistant/core/tree/2026.8.3/homeassistant/components/llama_cpp" rel="noopener">https://github.com/home-assistant/core/tree/2026.8.3/homeassistant/components/llama_cpp&lt;/a>&lt;/li>
&lt;li>Local voice pipeline + hardware guidance: &lt;a href="https://www.home-assistant.io/voice_control/voice_remote_local_assistant/" rel="noopener">https://www.home-assistant.io/voice_control/voice_remote_local_assistant/&lt;/a>&lt;/li>
&lt;li>Whisper / Piper add-on defaults: &lt;a href="https://github.com/home-assistant/addons/tree/master/whisper" rel="noopener">https://github.com/home-assistant/addons/tree/master/whisper&lt;/a> · &lt;a href="https://github.com/home-assistant/addons/tree/master/piper" rel="noopener">https://github.com/home-assistant/addons/tree/master/piper&lt;/a>&lt;/li>
&lt;li>wyoming-faster-whisper container: &lt;a href="https://github.com/rhasspy/wyoming-faster-whisper" rel="noopener">https://github.com/rhasspy/wyoming-faster-whisper&lt;/a> · GPU build: &lt;a href="https://docs.linuxserver.io/images/docker-faster-whisper/" rel="noopener">https://docs.linuxserver.io/images/docker-faster-whisper/&lt;/a>&lt;/li>
&lt;li>llama.cpp docker images: &lt;a href="https://github.com/ggml-org/llama.cpp/blob/master/docs/docker.md" rel="noopener">https://github.com/ggml-org/llama.cpp/blob/master/docs/docker.md&lt;/a>&lt;/li>
&lt;li>llama-server flag reference (&lt;code>-hf&lt;/code>, &lt;code>--jinja&lt;/code> default): &lt;a href="https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md" rel="noopener">https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md&lt;/a>&lt;/li>
&lt;li>Bench dataset (CSV, CC BY 4.0): &lt;a href="https://techfuelhq.com/data/ha-voice-brain-bench-2026-08.csv">/data/ha-voice-brain-bench-2026-08.csv&lt;/a> — method &lt;code>ha-voice-brain-v1&lt;/code>, corpus v1.0.1, captured 2026-08-25/26. Full receipts (corpus, scorer, raw per-request records, rescore output): &lt;a href="https://techfuelhq.com/data/ha-voice-bench/README.md">/data/ha-voice-bench/README.md&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Memory Management BSOD? Don't Buy RAM Yet (2026)</title><link>https://techfuelhq.com/articles/memory-management-bsod-2026/</link><pubDate>Wed, 26 Aug 2026 00:00:00 -0500</pubDate><author>LK Wood IV</author><guid>https://techfuelhq.com/articles/memory-management-bsod-2026/</guid><description>&lt;p>By &lt;a href="https://techfuelhq.com/author/lk-wood-iv/">LK Wood IV&lt;/a> · 2026-08-26 · ~11 min read · St. Louis County, MO&lt;/p>
&lt;p>&lt;em>One retailer link below is an Amazon affiliate link; if you buy through it TechFuel HQ may earn a small commission at no extra cost to you. As an Amazon Associate I earn from qualifying purchases. Commissions never influence what gets recommended — see our &lt;a href="https://techfuelhq.com/disclosure/">disclosure&lt;/a>.&lt;/em>&lt;/p>
&lt;p>&lt;strong>MEMORY_MANAGEMENT&lt;/strong> (stop code &lt;code>0x0000001A&lt;/code>) is the blue screen that sends people shopping. The name points straight at your RAM, the forum replies say &amp;ldquo;run memtest,&amp;rdquo; and in 2026 — with kit prices multiplied by the memory crunch — a replacement is a three-figure purchase you want to be sure about before you make it. Microsoft&amp;rsquo;s reference page for the bug check is blunter and more useful: it says a severe memory management error occurred - meaning Windows caught &lt;strong>its own memory bookkeeping corrupted&lt;/strong>. Bad RAM does that. So does a memory overclock the sticks were never guaranteed to hold, a driver writing where it shouldn&amp;rsquo;t, and a failing drive feeding corrupt paging data back into memory.&lt;/p>
&lt;p>That list is the whole reason for this guide&amp;rsquo;s order. Test first. RAM is a suspect — one of four. The free tests lead. The ten-minute test beats the overnight one, and the purchase waits until a test has condemned a stick.&lt;/p>
&lt;h2 id="the-new-ram-question-answered-first">The new-RAM question, answered first&lt;/h2>
&lt;p>The question people attach to this stop code, in these exact words in the forum threads about it, is &lt;em>do I need to buy new RAM?&lt;/em> Fair question. Here&amp;rsquo;s the honest answer.&lt;/p>
&lt;p>Not yet. Probably not at all. The diagnosis is free either way.&lt;/p>
&lt;p>Nobody publishes cause-frequency telemetry for stop codes, this site included, so instead of a percentage claim you get an ordering built from what each test costs you to run and what a wrong guess costs you to buy. The ranking is by price. A BIOS toggle costs ten minutes. An overnight MemTest86 run costs a night; a SMART check, two minutes. A mistaken RAM purchase in this market costs real money. In our own &lt;a href="https://techfuelhq.com/data/ram-price-index/">daily DDR5 price capture&lt;/a>, the cheapest qualifying 32GB (2x16GB) DDR5-6000 offer at a named direct US retailer was &lt;strong>$469.59 on August 24, 2026&lt;/strong> (a listing the index flags for looser timings than its line label; the cheapest non-RGB line sat at $479.99) - about five times the ~$80-100 this class sold for in mid-2025, per the tracked history in the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a>. The &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">price-crisis explainer&lt;/a> covers why. At those prices, you run every free test before you spend a dollar.&lt;/p>
&lt;h2 id="step-1-read-the-signature---when-does-it-hit">Step 1. Read the signature - when does it hit?&lt;/h2>
&lt;p>The same stop code behaves differently depending on what&amp;rsquo;s causing it, and the pattern of &lt;em>when it appears&lt;/em> is the cheapest diagnostic you own. Each signature below starts you at a different step.&lt;/p>
&lt;!-- ========== SIGNATURE VISUAL: CRASH-SIGNATURE ROUTER (distinct grammar: timing-pattern rows -> fork) ========== -->
&lt;div class="visual-block">
&lt;div style="background:#161006;border:1px solid rgba(246,169,74,0.22);border-radius:10px;padding:24px 20px 18px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;">
&lt;div style="margin-bottom:15px;">
&lt;div style="font-size:19px;font-weight:700;color:#f8efdd;letter-spacing:-0.3px;">Match your crash pattern, start at that step&lt;/div>
&lt;div style="font-size:12.5px;color:#bfa476;margin-top:6px;line-height:1.5;">One stop code, several causes. The timing of the crashes routes you to the cheapest test that fits your machine &amp;#8212; ordered by cost of test, not by a frequency claim.&lt;/div>
&lt;/div>
&lt;div style="display:flex;flex-direction:column;gap:8px;">
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(246,169,74,0.09);border-left:3px solid #f6a94a;border-radius:0 6px 6px 0;padding:9px 12px;">
&lt;span style="font-size:11px;font-weight:700;color:#f7c07a;flex-shrink:0;width:150px;line-height:1.4;">New build, new sticks, XMP/EXPO just enabled, or a fresh BIOS update&lt;/span>
&lt;span style="font-size:11.5px;color:#dcd0b8;line-height:1.5;min-width:0;">The memory profile is the prime suspect &amp;#8212; the rated speed was never guaranteed. &lt;strong style="color:#f4e8d0;">Step 2 (JEDEC test) first.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(246,169,74,0.09);border-left:3px solid #f6a94a;border-radius:0 6px 6px 0;padding:9px 12px;">
&lt;span style="font-size:11px;font-weight:700;color:#f7c07a;flex-shrink:0;width:150px;line-height:1.4;">Only under load &amp;#8212; games, rendering, big compiles &amp;#8212; fine at idle&lt;/span>
&lt;span style="font-size:11.5px;color:#dcd0b8;line-height:1.5;min-width:0;">Marginal memory stability that holds until heat and bandwidth stress it. &lt;strong style="color:#f4e8d0;">Step 2 if you run a profile, then Step 3.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(248,113,113,0.08);border-left:3px solid #f87171;border-radius:0 6px 6px 0;padding:9px 12px;">
&lt;span style="font-size:11px;font-weight:700;color:#fca5a5;flex-shrink:0;width:150px;line-height:1.4;">Nothing changed, crashes getting gradually more frequent&lt;/span>
&lt;span style="font-size:11.5px;color:#dcd0b8;line-height:1.5;min-width:0;">The slow-degradation pattern &amp;#8212; a stick or a drive going bad over weeks. &lt;strong style="color:#f4e8d0;">Step 3 (MemTest86), then Step 4 (SMART).&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(96,165,250,0.09);border-left:3px solid #60a5fa;border-radius:0 6px 6px 0;padding:9px 12px;">
&lt;span style="font-size:11px;font-weight:700;color:#93c5fd;flex-shrink:0;width:150px;line-height:1.4;">At boot, during disk-heavy work, or sfc keeps finding new corruption&lt;/span>
&lt;span style="font-size:11.5px;color:#dcd0b8;line-height:1.5;min-width:0;">Paging data coming back corrupt from the drive is in play. &lt;strong style="color:#f4e8d0;">Step 4 (drive health) before any RAM spend.&lt;/strong>&lt;/span>
&lt;/div>
&lt;div style="display:flex;gap:10px;align-items:baseline;background:rgba(148,163,184,0.10);border-left:3px solid #94a3b8;border-radius:0 6px 6px 0;padding:9px 12px;">
&lt;span style="font-size:11px;font-weight:700;color:#cbd5e1;flex-shrink:0;width:150px;line-height:1.4;">Laptop or stock OEM desktop &amp;#8212; no profile, nothing changed&lt;/span>
&lt;span style="font-size:11.5px;color:#dcd0b8;line-height:1.5;min-width:0;">Skip Step 2; there's no overclock to revert. &lt;strong style="color:#f4e8d0;">Step 3 to test the memory, then Steps 4-5.&lt;/strong>&lt;/span>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:14px;padding-top:12px;border-top:1px solid rgba(246,169,74,0.15);font-size:11px;color:#9c8a66;line-height:1.5;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;">
&lt;span>Seeing &lt;em>different&lt;/em> stop codes each time, or restarts with no blue screen at all? That's a whole-system problem &amp;#8212; use the &lt;strong style="color:#dcd0b8;">stop-code decoder in PC keeps restarting&lt;/strong> instead.&lt;/span>
&lt;span style="font-family:ui-monospace,monospace;font-size:10px;color:#9c8a66;">techfuelhq.com&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>A different code on each crash, or hard restarts with no blue screen, means this page is too narrow for you - work the whole-system flow in &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">PC keeps restarting&lt;/a> instead. And if your machine is a laptop or an unmodified OEM desktop, skip straight past the next section: there is no XMP/EXPO profile to revert, so your path is Step 3 onward.&lt;/p>
&lt;h2 id="step-2-the-ten-minute-test-that-beats-an-overnight-one">Step 2. The ten-minute test that beats an overnight one&lt;/h2>
&lt;p>This fork is for machines where a memory profile is enabled or the hardware recently changed - a self-built desktop running XMP (Intel) or EXPO (AMD), new sticks in an old board, a BIOS update that reset or &amp;ldquo;upgraded&amp;rdquo; memory settings.&lt;/p>
&lt;p>&lt;strong>XMP and EXPO are overclock profiles.&lt;/strong> The DDR5-6000 on the box is a factory-validated overclock, not the module&amp;rsquo;s default; out of the box, DDR5 runs at a JEDEC standard speed, typically 4800 or 5600. Whether the advertised profile holds depends on the sticks, the board, and your specific CPU&amp;rsquo;s memory controller together. When that combination can&amp;rsquo;t quite sustain the profile, it corrupts data in exactly the way 0x1A reports - and the sticks themselves are healthy. PassMark&amp;rsquo;s MemTest86 documentation says the same thing from the other direction: some memory errors only appear when BIOS timings are set aggressively, and their suggested check is to retest at standard non-XMP timings.&lt;/p>
&lt;p>So run the cheap experiment before the long one:&lt;/p>
&lt;ol>
&lt;li>Enter BIOS and &lt;strong>disable XMP/EXPO&lt;/strong> (set the memory profile to Auto/Default). Memory drops to JEDEC speed.&lt;/li>
&lt;li>Use the PC normally for a day - include whatever load used to trigger the crash.&lt;/li>
&lt;li>&lt;strong>Crashes stop?&lt;/strong> The profile was unstable. Your options, in order of effort — run at JEDEC permanently (the real-world cost is smaller than it sounds - the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">DDR5 buying guide&lt;/a> carries the measured JEDEC-versus-rated numbers, mostly low single digits with one 12% outlier), try a milder profile, or tune voltages by hand if you know the platform.&lt;/li>
&lt;li>&lt;strong>Crashes continue?&lt;/strong> Good news, oddly: you&amp;rsquo;ve ruled out the profile for free. Leave it disabled and go to Step 3.&lt;/li>
&lt;/ol>
&lt;p>Two configurations earn a specific warning here. Populating all four DDR5 slots drops the speed a board can hold stable below the kit&amp;rsquo;s rated profile - the buying guide&amp;rsquo;s &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">four-DIMM section&lt;/a> covers how far and why. And a new AM5 build that has never been stable is the textbook case of an EXPO profile the board never validated — on a week-old machine, check this before anything else.&lt;/p>
&lt;h2 id="step-3-test-the-sticks-so-the-result-means-something">Step 3. Test the sticks so the result means something&lt;/h2>
&lt;p>The field&amp;rsquo;s standard advice is &amp;ldquo;run memtest.&amp;rdquo; The part nobody explains is how to read what comes back, so results get misread in both directions - people replace healthy kits, and people trust a quick pass that proved nothing.&lt;/p>
&lt;p>&lt;strong>Run the real test.&lt;/strong> &lt;a href="https://www.memtest86.com/" rel="noopener">MemTest86&lt;/a> boots from a USB stick, outside Windows, which matters because the test gets the hardware to itself instead of sharing it with the very memory manager whose crash you&amp;rsquo;re chasing. Set it running when you go to bed. A badly failing stick usually errors fast; marginal instability can take hours, and PassMark notes the first pass is shorter than the ones after it. Windows&amp;rsquo; built-in Memory Diagnostic (&lt;code>mdsched.exe&lt;/code>) is the tool Microsoft&amp;rsquo;s own 0x1A reference suggests, and it&amp;rsquo;s a reasonable quick screen — but it finishes in minutes, and minutes of testing is weak evidence against a fault that needs a warm, loaded system to show itself. Treat its &amp;ldquo;no errors&amp;rdquo; as &lt;em>nothing found yet&lt;/em>, never as proof the RAM is good.&lt;/p>
&lt;p>&lt;strong>Read the result like this.&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Any error counts.&lt;/strong> PassMark&amp;rsquo;s troubleshooting doc is direct about this: in the vast majority of cases, reported errors are valid. There is no acceptable-errors threshold. One error is a fail.&lt;/li>
&lt;li>&lt;strong>A fail names a system first.&lt;/strong> Their same doc notes errors can also come from the CPU, its caches, or the motherboard - and from aggressive BIOS timings, which is why the JEDEC retest in Step 2 comes first. A kit that errors at XMP and passes at JEDEC is an unstable overclock rather than dead hardware.&lt;/li>
&lt;li>&lt;strong>Isolate to name the module.&lt;/strong> Two or more sticks, still erroring at JEDEC? Power down, pull all but one stick, test it alone in the same slot, then swap. The stick that errors alone is your answer; confirm the good stick passes in the same slot so you&amp;rsquo;ve also ruled out the slot itself.&lt;/li>
&lt;/ul>
&lt;p>Then let the crash tell you what it saw. Each 0x1A blue screen writes a minidump, and the first bug-check parameter carries a subcode saying which structure was corrupted. Open the latest dump from &lt;code>C:\Windows\Minidump&lt;/code> in WinDbg (from the Microsoft Store) and run &lt;code>!analyze -v&lt;/code> - the four parameters print at the top, and the &lt;a href="https://techfuelhq.com/articles/page-fault-in-nonpaged-area-2026/">PAGE_FAULT walkthrough&lt;/a> covers the mechanics of reading dumps in more detail. For 0x1A, &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x1a--memory-management" rel="noopener">Microsoft&amp;rsquo;s subcode table&lt;/a> turns the hex into a lead:&lt;/p>
&lt;div class="table-wrap">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th scope="col">Parameter 1&lt;/th>
&lt;th scope="col">What Microsoft&amp;rsquo;s table says it means&lt;/th>
&lt;th scope="col">Where it points&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>0x403&lt;/code>&lt;/td>
&lt;td>Page table and page frame numbers out of sync; probably a hardware error, especially when two parameters differ by a single bit&lt;/td>
&lt;td>A one-bit difference is the classic failing-stick signature - Step 3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>0x41790&lt;/code> / &lt;code>0x41792&lt;/code>&lt;/td>
&lt;td>A page table page, or a PTE, has been corrupted&lt;/td>
&lt;td>Memory corruption with no named culprit - Steps 2-3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>0x3f&lt;/code>&lt;/td>
&lt;td>An in-page operation failed a CRC check, with a page-file offset in the parameters&lt;/td>
&lt;td>Corrupt data came back &lt;strong>from the drive&lt;/strong> - Step 4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>0x1233&lt;/code> / &lt;code>0x4477&lt;/code>&lt;/td>
&lt;td>A driver mapped or wrote memory illegally&lt;/td>
&lt;td>Software - Step 5, starting from the named driver&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Use it as a compass. A subcode won&amp;rsquo;t close the case alone, but it stops you testing blind - &lt;code>0x3f&lt;/code> in particular moves the investigation to storage before you&amp;rsquo;ve spent anything on memory.&lt;/p>
&lt;h2 id="step-4-the-storage-crossover-nobody-checks">Step 4. The storage crossover nobody checks&lt;/h2>
&lt;p>Windows extends memory onto the drive — the page file holds data that was paged out and will be pulled back in, so a drive developing bad sectors can hand Windows corrupt &lt;em>memory&lt;/em>, and the in-page CRC subcode above is Microsoft documenting precisely that path. The result wears a memory error&amp;rsquo;s name while the fault sits in storage. SMART settles it.&lt;/p>
&lt;p>The check costs two minutes, which is why it belongs before any purchase.&lt;/p>
&lt;ul>
&lt;li>Run &lt;strong>CrystalDiskInfo&lt;/strong> and read the drive that holds your page file (almost always &lt;code>C:&lt;/code>). &lt;strong>Caution&lt;/strong> status, reallocated sectors, media errors, or a climbing percent-used figure on an NVMe drive all move the diagnosis to storage.&lt;/li>
&lt;li>A drive that&amp;rsquo;s also slow, disappearing from Explorer, or dropping out entirely gets the &lt;a href="https://techfuelhq.com/articles/ssd-not-showing-up-2026/">SSD not showing up&lt;/a> treatment - and back up before anything else, because a failing drive&amp;rsquo;s remaining life is a budget you spend carefully.&lt;/li>
&lt;li>Storage-flavored blue screens tend to travel together: if you&amp;rsquo;re also seeing DPC_WATCHDOG_VIOLATION, that code&amp;rsquo;s &lt;a href="https://techfuelhq.com/articles/dpc-watchdog-violation-2026/">storage-first guide&lt;/a> is the companion to this section.&lt;/li>
&lt;/ul>
&lt;p>One pattern is worth naming. &lt;code>sfc /scannow&lt;/code> that finds and repairs corruption, then finds &lt;em>new&lt;/em> corruption a few days later, is not sfc being thorough. Something is corrupting files between runs, and this whole page is the list of suspects.&lt;/p>
&lt;h2 id="step-5-drivers-and-windows---the-honestly-bounded-half">Step 5. Drivers and Windows - the honestly-bounded half&lt;/h2>
&lt;p>The software half is real, and it&amp;rsquo;s deliberately late in this order because its tests cost more time than a BIOS toggle and prove less than a memory test. Work it when the hardware half is clean, or immediately when a crash names a driver.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>A named &lt;code>.sys&lt;/code> on the blue screen or in the minidump goes first.&lt;/strong> Graphics drivers get a clean reinstall - the &lt;a href="https://techfuelhq.com/articles/gpu-driver-crash-fix-2026/">GPU driver crash guide&lt;/a> covers DDU properly. Anything else: identify the driver, update it, or roll it back.&lt;/li>
&lt;li>&lt;strong>Timing matches a Windows or driver update?&lt;/strong> Roll it back (Settings → Windows Update → Update history → Uninstall updates) and see whether the crashes leave with it.&lt;/li>
&lt;li>&lt;strong>System files:&lt;/strong> &lt;code>sfc /scannow&lt;/code>, then &lt;code>DISM /Online /Cleanup-Image /RestoreHealth&lt;/code>, from an admin Terminal. These repair the damage corruption already did; they do nothing about what caused it.&lt;/li>
&lt;li>&lt;strong>The stubborn case&lt;/strong> - crashes continue, dump names nothing, hardware tests clean - is Driver Verifier territory, and the &lt;a href="https://techfuelhq.com/articles/kernel-security-check-failure-2026/">KERNEL_SECURITY_CHECK_FAILURE guide&lt;/a> has the full walkthrough including the safe-mode escape hatch it requires. That code is 0x1A&amp;rsquo;s closest sibling: same corruption family, different tripwire.&lt;/li>
&lt;/ul>
&lt;p>What this half cannot do is fix electricity. A reinstall rebuilds every file and resets every driver, and an unstable profile or dying stick corrupts the new install on schedule. A 0x1A that comes back after a clean reinstall has told you, at the cost of your afternoon, that it was hardware all along — the free tests above would have said so first.&lt;/p>
&lt;h2 id="if-a-stick-really-is-dead---replacement-priced-honestly">If a stick really is dead - replacement, priced honestly&lt;/h2>
&lt;p>You&amp;rsquo;re here because a stick failed MemTest86 alone, at JEDEC speed, in a known-good slot. That&amp;rsquo;s a corroborated verdict, and it&amp;rsquo;s the point where spending money stops being a guess.&lt;/p>
&lt;p>Here is the 2026 reality from this site&amp;rsquo;s own tracking. I run a &lt;a href="https://techfuelhq.com/data/ram-price-index/">daily DDR5 price capture&lt;/a> against named direct US retailers; in the August 24, 2026 capture the cheapest qualifying 32GB (2x16GB) DDR5-6000 offer was &lt;strong>$469.59&lt;/strong> (a kit the index flags as looser-timed than its line&amp;rsquo;s CL30 label; the cheapest non-RGB line sat at $479.99, and that line&amp;rsquo;s true CL30 kits at $619.99) - versus the ~$80-100 the same class sold for in mid-2025. The &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">crisis explainer&lt;/a> covers why prices tripled to quadrupled and when relief might come. Three rules keep the purchase from becoming a second problem:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Replace the kit, not the stick, when you run paired modules.&lt;/strong> Mixing a new stick into a surviving half-kit means unmatched silicon negotiating shared timings - the exact recipe for the marginal instability you just spent a week diagnosing. Kits are sold, binned, and validated together.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t panic-buy four sticks.&lt;/strong> Two sticks of the capacity you need beats four sticks of half that; the &lt;a href="https://techfuelhq.com/articles/ddr5-ram-buying-guide-2025/">four-DIMM ceiling&lt;/a> applies double during a price crunch, when 2x32GB money is tempting to split into cheaper 4x16GB mistakes.&lt;/li>
&lt;li>&lt;strong>Size it once, deliberately.&lt;/strong> If you&amp;rsquo;re replacing anyway, the &lt;a href="https://techfuelhq.com/articles/how-much-ram-do-you-need-2026/">how much RAM do you need&lt;/a> breakdown is the five-minute read that stops both under- and over-buying. When you&amp;rsquo;ve settled on a spec, a &lt;a href="https://www.amazon.com/s?k=32gb+ddr5+6000+kit+2x16gb&amp;tag=techfuelhq-20" rel="nofollow sponsored noopener" target="_blank">matched 32GB DDR5-6000 kit&lt;/a> is the mainstream pick - check current prices against the index&amp;rsquo;s direct-retailer observations before you commit.&lt;/li>
&lt;/ol>
&lt;h2 id="keeping-it-stable">Keeping it stable&lt;/h2>
&lt;p>The fix that lasts is the boring one. Run the profile your specific combination proved it can hold - which sometimes means JEDEC, and that&amp;rsquo;s fine; the measured gap between JEDEC and a rated profile in typical desktop work is small enough that stability wins the trade. Two sticks, matched, in the slots your board&amp;rsquo;s manual names. Retest with MemTest86 after any BIOS update that touches memory settings, because &amp;ldquo;updated defaults&amp;rdquo; have re-enabled more than one profile that a machine had banished for cause.&lt;/p>
&lt;p>And keep the one habit that makes every future blue screen cheaper: when it crashes, read the stop code and the subcode before touching anything. The &lt;a href="https://techfuelhq.com/articles/pc-keeps-restarting-2026/">stop-code decoder&lt;/a> maps each code to its own guide - this page is the 0x1A entry in that family, &lt;a href="https://techfuelhq.com/articles/kernel-security-check-failure-2026/">0x139&lt;/a> and &lt;a href="https://techfuelhq.com/articles/page-fault-in-nonpaged-area-2026/">0x50&lt;/a> are its siblings, and the difference between them is exactly which test you run first.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>Stop code identity and subcodes: Microsoft&amp;rsquo;s &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x1a--memory-management" rel="noopener">Bug Check 0x1A MEMORY_MANAGEMENT&lt;/a> reference (retrieved 2026-08-25) - the severe-memory-management-error definition, the parameter-1 subcode table including the probable-hardware-error and in-page CRC entries, and its suggestion to run Windows Memory Diagnostic. The multi-cause framing and test ordering here follow that document&amp;rsquo;s own subcode taxonomy, corroborated across Microsoft Q&amp;amp;A, Reddit r/techsupport and r/overclocking, Tom&amp;rsquo;s Hardware, and LinusTechTips forum threads on this code.&lt;/li>
&lt;li>Memory testing doctrine: PassMark&amp;rsquo;s &lt;a href="https://www.memtest86.com/troubleshooting.htm" rel="noopener">MemTest86 troubleshooting documentation&lt;/a> (retrieved 2026-08-25) - errors are valid in the vast majority of cases, not all errors are the RAM itself (CPU/cache/motherboard are possible), single-stick isolation as the method for naming a failing module, and retesting at standard non-XMP timings when BIOS settings are aggressive. Windows Memory Diagnostic (&lt;code>mdsched.exe&lt;/code>), WinDbg&amp;rsquo;s &lt;code>!analyze -v&lt;/code>, and CrystalDiskInfo SMART reading are standard documented tools.&lt;/li>
&lt;li>Pricing: TechFuelHQ&amp;rsquo;s own &lt;a href="https://techfuelhq.com/data/ram-price-index/">DDR5 RAM price index&lt;/a> - dated, per-capacity observations at named direct US retailers with the method and rejection log published; figures above are the 2026-08-24 capture. Market context in the &lt;a href="https://techfuelhq.com/articles/ram-ssd-price-crisis-2026/">RAM &amp;amp; SSD price crisis explainer&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Windows 10/11 instructions, current for 2026 builds. Settings paths may sit one step elsewhere on older versions. Report problems to &lt;a href="mailto:hello@techfuelhq.com">hello@techfuelhq.com&lt;/a>.&lt;/em>&lt;/p></description></item></channel></rss>