<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>TinyComputers.io (Posts about 2.5 gigabit ethernet)</title><link>https://tinycomputers.io/</link><description></description><atom:link href="https://tinycomputers.io/categories/25-gigabit-ethernet.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 A.C. Jokela 
&lt;!-- div style="width: 100%" --&gt;
&lt;a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"&gt;&lt;img alt="" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png" /&gt; Creative Commons Attribution-ShareAlike&lt;/a&gt;&amp;nbsp;|&amp;nbsp;
&lt;!-- /div --&gt;
</copyright><lastBuildDate>Wed, 29 Jul 2026 15:40:47 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>FriendlyElec NanoPC-T6N Review: The Fastest Board on My Bench, and the Benchmark That Outgrew Itself</title><link>https://tinycomputers.io/posts/friendlyelec-nanopc-t6n-review.html?utm_source=feed&amp;utm_medium=rss&amp;utm_campaign=rss</link><dc:creator>A.C. Jokela</dc:creator><description>&lt;div class="audio-widget"&gt;
&lt;div class="audio-widget-header"&gt;
&lt;span class="audio-widget-icon"&gt;🎧&lt;/span&gt;
&lt;span class="audio-widget-label"&gt;Listen to this article&lt;/span&gt;
&lt;/div&gt;
&lt;audio controls preload="metadata"&gt;
&lt;source src="https://tinycomputers.io/friendlyelec-nanopc-t6n-review_tts.mp3" type="audio/mpeg"&gt;
&lt;/source&gt;&lt;/audio&gt;
&lt;div class="audio-widget-footer"&gt;51 min · AI-generated narration&lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
table, th, td {
  border: 1px solid #aaa;
  border-collapse: collapse;
  padding: 5px;
}
&lt;/style&gt;

&lt;p&gt;I reviewed the &lt;a href="https://tinycomputers.io/posts/friendlyelec-nanopc-t6-review.html"&gt;NanoPC-T6&lt;/a&gt; back in March 2025, but that piece was a specification comparison - a paper exercise against the Raspberry Pi 5 and the Radxa X4. This time I have the hardware on my bench, in the form of FriendlyELEC's &lt;strong&gt;NanoPC-T6N&lt;/strong&gt;, and I ran it through the same treatment every other board here gets: a from-clean Rust compile, three times, plus crypto, memory, storage, network, and thermal characterization.&lt;/p&gt;
&lt;p&gt;The short version is that the T6N is the fastest ARM single-board computer I have benchmarked. It posted a &lt;strong&gt;52.55-second&lt;/strong&gt; mean clean release build, edging out the &lt;a href="https://tinycomputers.io/posts/rk3588-orange-pi-5-max-review.html"&gt;Orange Pi 5 Max&lt;/a&gt; - the previous ARM leader, and a board built on the same RK3588 silicon. It pushes over two gigabytes per second of AES-128-GCM. Under 120 seconds of eight-core stress it peaked at 56.4 °C and never dropped a single clock bin. For a board that has been shipping in one revision or another since 2023, the RK3588 is aging with remarkable grace.&lt;/p&gt;
&lt;p&gt;But the more interesting thing I found had nothing to do with the board, and I want to lead with it because it changes how you should read every number below.&lt;/p&gt;
&lt;h3&gt;The Benchmark That Outgrew Itself&lt;/h3&gt;
&lt;p&gt;My standard SBC test is a clean &lt;code&gt;cargo build --release&lt;/code&gt; of a &lt;a href="https://github.com/ajokela/ballistics-engine"&gt;ballistics simulation engine&lt;/a&gt; I maintain. Three runs, &lt;code&gt;cargo clean&lt;/code&gt; between each, averaged. It is a good test because it is real work: it hammers the CPU, the memory subsystem, the storage, and the compiler all at once, and it is the kind of thing I actually do on these machines.&lt;/p&gt;
&lt;p&gt;The problem is that the benchmark is a &lt;em&gt;live project&lt;/em&gt;, and live projects grow.&lt;/p&gt;
&lt;p&gt;When I ran the October 2025 fleet sweep that produced the comparison table I have been citing ever since - Orange Pi 5 Max at 62.31 s, Raspberry Pi CM5 at 71.04 s, Raspberry Pi 5 at 76.65 s - the engine was at commit &lt;code&gt;2821bba&lt;/code&gt;: &lt;strong&gt;43 Rust source files, 16,639 lines of code, 13 direct dependencies.&lt;/strong&gt; As of today, &lt;code&gt;HEAD&lt;/code&gt; is &lt;code&gt;edd333d&lt;/code&gt;: &lt;strong&gt;158 source files, 117,002 lines, 281 crates in the resolved dependency graph.&lt;/strong&gt; Seven times the code.&lt;/p&gt;
&lt;p&gt;So when the T6N's first timed run came back at 353 seconds, I did not have a slow board. I had an invalid comparison. Against the current tree the T6N looks like it belongs down near the Cortex-A53 machines; against the tree every archived number was measured on, it is at the top of the table. Same board, same afternoon, same toolchain — a 6.66x difference that says nothing whatsoever about the hardware.&lt;/p&gt;
&lt;p&gt;The fix was to check out &lt;code&gt;2821bba&lt;/code&gt; on the T6N and run the benchmark against the exact tree the fleet was measured on. Everything I present as a fleet comparison below uses that pinned tree. I am also reporting the current-tree number, because it is a genuinely useful data point about what a 2026-sized Rust project costs on this class of hardware — it is just not a number you can put in the same column as a 2025 result.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Two caveats I cannot engineer away.&lt;/strong&gt; First, my run used rustc 1.97.1; the archived fleet runs used 1.90.0 and 1.91.0. Second, that commit predates the repository having a &lt;code&gt;Cargo.lock&lt;/code&gt;, so dependency versions resolve fresh at build time and my build pulled newer crates than the October build did. Same source tree, different compiler, drifting dependencies. I would have preferred to re-run a reference board alongside the T6N under identical conditions, and I tried — but every candidate in my fleet was pinned under fuzzing jobs at load averages of 5 to 38, and a contaminated reference number is worse than an honest caveat. &lt;strong&gt;Treat the ~19% margin over the Orange Pi 5 Max as directional, not decisive.&lt;/strong&gt; The safe claim is that the T6N is at the front of the pack, not that it has a measurable lead over its RK3588 sibling.&lt;/p&gt;
&lt;h3&gt;Hardware Architecture: The RK3588, Four Years On&lt;/h3&gt;
&lt;p&gt;The T6N is built on Rockchip's &lt;a href="https://www.rock-chips.com/a/en/products/RK35_Series/2022/0926/1660.html"&gt;RK3588&lt;/a&gt; - the device tree reports &lt;code&gt;friendlyelec,nanopc-t6n&lt;/code&gt; / &lt;code&gt;rockchip,rk3588&lt;/code&gt;, so this is the full RK3588, not the reduced-I/O RK3588S. It is an 8 nm big.LITTLE part that has become the default answer for "I want a fast ARM SBC," and it powers a large fraction of the boards on my shelf.&lt;/p&gt;
&lt;p&gt;What &lt;code&gt;lscpu&lt;/code&gt; reports on my unit is more specific than the marketing:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cluster&lt;/th&gt;
&lt;th&gt;Cores&lt;/th&gt;
&lt;th&gt;Frequency range&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Little&lt;/td&gt;
&lt;td&gt;4x Cortex-A55 (r2p0)&lt;/td&gt;
&lt;td&gt;408 - 1800 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Big, cluster 0 (cpu4-5)&lt;/td&gt;
&lt;td&gt;2x Cortex-A76 (r4p0)&lt;/td&gt;
&lt;td&gt;408 - &lt;strong&gt;2304 MHz&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Big, cluster 1 (cpu6-7)&lt;/td&gt;
&lt;td&gt;2x Cortex-A76 (r4p0)&lt;/td&gt;
&lt;td&gt;408 - &lt;strong&gt;2352 MHz&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The RK3588 is usually advertised at "up to 2.4 GHz." The operating point tables in this image top out at 2304 MHz on one big cluster and 2352 MHz on the other — a real asymmetry, visible in &lt;code&gt;scaling_available_frequencies&lt;/code&gt;, and the sort of thing you only see when you go looking. It is not a defect; RK3588 splits its four A76s into two dual-core clusters with independent DVFS, and per-cluster binning is normal. It does mean the headline clock is a rounding-up.&lt;/p&gt;
&lt;p&gt;Cache is generous: 384 KiB L1d and 384 KiB L1i across eight instances, 2.5 MiB of L2, and 3 MiB of shared L3. The full ARMv8 crypto feature set is present — &lt;code&gt;aes&lt;/code&gt;, &lt;code&gt;pmull&lt;/code&gt;, &lt;code&gt;sha1&lt;/code&gt;, &lt;code&gt;sha2&lt;/code&gt;, &lt;code&gt;crc32&lt;/code&gt;, plus &lt;code&gt;asimddp&lt;/code&gt; (dot product) and &lt;code&gt;fphp&lt;/code&gt;/&lt;code&gt;asimdhp&lt;/code&gt; (half-precision) — and as the crypto section shows, those instructions are doing real work.&lt;/p&gt;
&lt;p&gt;My unit carries &lt;strong&gt;16 GB of LPDDR4X&lt;/strong&gt; (15 GiB usable after the kernel and GPU carve-outs) with no swap configured, and a &lt;strong&gt;64 GB eMMC module&lt;/strong&gt;. Alongside the CPU sit the parts that make an RK3588 more than a CPU:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Mali-G610&lt;/strong&gt; GPU (&lt;code&gt;mali fb000000.gpu&lt;/code&gt;, kernel DDK &lt;code&gt;g29p0-00eac0&lt;/code&gt;), idling at 300 MHz against a 1000 MHz ceiling.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;6 TOPS NPU&lt;/strong&gt; across three cores (&lt;code&gt;fdab0000.npu&lt;/code&gt;), with its devfreq pinned at 1000 MHz.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two RKVENC encoder cores&lt;/strong&gt; plus the Rockchip MPP video stack.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three 2D acceleration engines&lt;/strong&gt; — dual RGA3 (&lt;code&gt;hw_version 3.0.76831&lt;/code&gt;) and one RGA2 (&lt;code&gt;3.2.63318&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;hardware crypto engine&lt;/strong&gt; exposed through the &lt;code&gt;rk_crypto&lt;/code&gt; and &lt;code&gt;cryptodev&lt;/code&gt; kernel modules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A note on the model name: I could not find authoritative public documentation for the "T6N" suffix specifically. FriendlyELEC's public pages cover the NanoPC-T6, the T6 LTS, and the newer T6 Plus (which moves to LPDDR5). Both &lt;code&gt;/proc/device-tree/compatible&lt;/code&gt; and &lt;code&gt;/etc/friendlyelec-release&lt;/code&gt; on my board say &lt;code&gt;NanoPC-T6N&lt;/code&gt; unambiguously, and everything I measured is consistent with the T6 family's RK3588 platform. Where I cite a port or interface I did not personally exercise, I flag it as a vendor specification for the T6 family rather than something I verified.&lt;/p&gt;
&lt;h3&gt;The Board As Configured&lt;/h3&gt;
&lt;p&gt;Physically the T6 family is a 110 x 80 mm eight-layer board — noticeably larger than a Raspberry Pi's 85 x 56 mm footprint, and denser with I/O. The headline feature, and the reason to pick a T6 over an Orange Pi 5 Max, is &lt;strong&gt;dual 2.5-gigabit Ethernet&lt;/strong&gt;. My unit has two Realtek RTL8125 controllers, each sitting behind its own PCIe bridge:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;-[0002:20]---00.0-[21]----00.0  Realtek RTL8125 2.5GbE Controller
-[0004:40]---00.0-[41]----00.0  Realtek RTL8125 2.5GbE Controller
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Both negotiate PCIe Gen 2 x1 links, which is the correct provisioning: 5 GT/s x1 is about 500 MB/s of usable bandwidth, comfortably above the 312 MB/s a saturated 2.5GbE link needs. The device tree exposes five PCIe controllers in total. Two carry the NICs. &lt;code&gt;pcie@fe150000&lt;/code&gt; — the PCIe 3.0 controller that feeds the M.2 M-key slot — spent boot cycling through &lt;code&gt;LTSSM&lt;/code&gt; states and eventually logged &lt;code&gt;PCIe Link Fail&lt;/code&gt;, which is exactly what an empty slot looks like. &lt;strong&gt;My unit has no NVMe installed&lt;/strong&gt;, so I could not measure the board's fastest storage path, and I have not verified the M-key slot electrically.&lt;/p&gt;
&lt;p&gt;The board came to me headless, reached over an attached JetKVM (visible in &lt;code&gt;lsusb&lt;/code&gt; as a USB HID gadget), so the display side — two HDMI 2.1 outputs, the HDMI &lt;em&gt;input&lt;/em&gt; that is the T6's genuinely unusual party trick, the dual MIPI-DSI and dual MIPI-CSI connectors — is vendor specification I did not exercise. &lt;code&gt;/dev/dri/card0&lt;/code&gt; is present and bound to the display subsystem, so the plumbing is there.&lt;/p&gt;
&lt;h4&gt;Storage: The Part That Bothered Me&lt;/h4&gt;
&lt;p&gt;Here is the configuration detail with the biggest practical consequence. The kernel command line reads &lt;code&gt;storagemedia=sd&lt;/code&gt;, &lt;code&gt;root=/dev/mmcblk0p8&lt;/code&gt;. Checking the block devices:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Device&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mmcblk0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SD&lt;/td&gt;
&lt;td&gt;SanDisk &lt;code&gt;SN64G&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;59.5 GB&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Boots and runs the system&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mmcblk2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;MMC&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A3A561&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;57.6 GB&lt;/td&gt;
&lt;td&gt;Onboard eMMC — populated, fully partitioned, unused&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;The board is running from a microSD card while a perfectly good 64 GB eMMC module sits idle underneath it.&lt;/strong&gt; The root filesystem is an overlay (&lt;code&gt;lowerdir=/root&lt;/code&gt;, &lt;code&gt;upperdir=/data/root&lt;/code&gt;) on the SD card's partitions — FriendlyELEC's standard layout, just pointed at the wrong medium.&lt;/p&gt;
&lt;p&gt;I measured what that costs, read-only on both devices so nothing was written to the eMMC:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Measurement&lt;/th&gt;
&lt;th&gt;microSD (&lt;code&gt;mmcblk0&lt;/code&gt;)&lt;/th&gt;
&lt;th&gt;eMMC (&lt;code&gt;mmcblk2&lt;/code&gt;)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Buffered disk read (&lt;code&gt;hdparm -t&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;64.85 MB/s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;302.05 MB/s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cached read (&lt;code&gt;hdparm -T&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;4,446 MB/s&lt;/td&gt;
&lt;td&gt;6,878 MB/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Filesystem write, 1 GB &lt;code&gt;dd conv=fdatasync&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;54.6 MB/s&lt;/td&gt;
&lt;td&gt;not tested (would require writing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Filesystem read, 1 GB after cache drop&lt;/td&gt;
&lt;td&gt;67.9 MB/s&lt;/td&gt;
&lt;td&gt;not tested&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;The eMMC reads 4.66x faster than the card the system is booted from.&lt;/strong&gt; The microSD is turning in respectable UHS-I numbers — 65 MB/s buffered read is about what SDR104 gives you — but it is the slowest component in an otherwise quick machine.&lt;/p&gt;
&lt;p&gt;How much is it actually costing? Less than you would guess for the compile benchmark, and that is worth being precise about. Rust compilation is overwhelmingly CPU-bound once the dependency sources are on disk; the T6N still posted the fastest ARM time on my bench &lt;em&gt;from a microSD&lt;/em&gt;. But the run-to-run standard deviation on the pinned tree was 2.27 s against a 52.55 s mean (4.3%), noticeably looser than the 1.4% I saw on the 350-second HEAD run, and the first run of each series was consistently the slowest — the signature of cold cache being refilled over a slow device. For workloads that are actually I/O-bound — a NAS, a container host, a database, anything doing bulk writes — the gap would be the whole story.&lt;/p&gt;
&lt;p&gt;If you buy one of these, install to the eMMC, or better, populate the M.2 slot. I did not reflash my unit because the eMMC's partition table suggests something is installed there that is not mine to overwrite.&lt;/p&gt;
&lt;h3&gt;Software: FriendlyELEC's Debian 13 BSP&lt;/h3&gt;
&lt;p&gt;The board runs &lt;strong&gt;Debian GNU/Linux 13.3 (trixie)&lt;/strong&gt; on kernel &lt;strong&gt;6.1.141&lt;/strong&gt;, built &lt;code&gt;Sat Jul 18 2026&lt;/code&gt;. That combination deserves unpacking, because it is the standard Rockchip vendor-BSP bargain.&lt;/p&gt;
&lt;p&gt;Trixie is genuinely current — a 2025 Debian stable with a modern userland, OpenSSL 3.5.6, and a package archive that has everything you would want. &lt;code&gt;apt install build-essential git curl pkg-config libssl-dev&lt;/code&gt; worked without a hitch, and &lt;code&gt;rustup&lt;/code&gt; installed rustc 1.97.1 with no drama. From userspace this feels like any other Debian machine.&lt;/p&gt;
&lt;p&gt;The kernel does not. 6.1 is the Rockchip vendor tree, not mainline, and &lt;code&gt;/etc/friendlyelec-release&lt;/code&gt; reports &lt;code&gt;LINUXFAMILY=nanopi6&lt;/code&gt;, &lt;code&gt;BRANCH=dev&lt;/code&gt;. The board firmware — &lt;code&gt;ddr-v1.17&lt;/code&gt;, &lt;code&gt;bl31-v1.56&lt;/code&gt;, &lt;code&gt;bl32-v1.21&lt;/code&gt;, U-Boot dated &lt;code&gt;07/10/2026&lt;/code&gt; — is recent, and a kernel built eleven days before I tested it says FriendlyELEC is actively maintaining this image. That is better vendor hygiene than most. But it is still a 6.1 vendor kernel, which means the NPU, the video codecs, and the GPU all depend on out-of-tree drivers and Rockchip's userspace libraries. Mainline RK3588 support has come a long way, and if you want it you can run Armbian or Debian with a mainline kernel — you will simply give up the accelerators.&lt;/p&gt;
&lt;p&gt;The one thing that surprised me was the default CPU frequency governor: &lt;strong&gt;&lt;code&gt;conservative&lt;/code&gt;&lt;/strong&gt;. Not &lt;code&gt;schedutil&lt;/code&gt;, not &lt;code&gt;ondemand&lt;/code&gt;, not &lt;code&gt;performance&lt;/code&gt; — &lt;code&gt;conservative&lt;/code&gt;, which is the most cautious ramp-up policy in the kernel and an unusual default for a board sold on its performance. All six governors are available.&lt;/p&gt;
&lt;p&gt;I assumed this was costing measurable throughput, so I tested it: three pinned-tree builds under &lt;code&gt;conservative&lt;/code&gt;, three under &lt;code&gt;performance&lt;/code&gt;, back to back on an otherwise idle board.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Governor&lt;/th&gt;
&lt;th&gt;Run 1&lt;/th&gt;
&lt;th&gt;Run 2&lt;/th&gt;
&lt;th&gt;Run 3&lt;/th&gt;
&lt;th&gt;Mean&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;conservative&lt;/code&gt; (shipped default)&lt;/td&gt;
&lt;td&gt;55.00 s&lt;/td&gt;
&lt;td&gt;51.28 s&lt;/td&gt;
&lt;td&gt;54.18 s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;53.49 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;performance&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;54.59 s&lt;/td&gt;
&lt;td&gt;54.83 s&lt;/td&gt;
&lt;td&gt;52.44 s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;53.95 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;No difference — 0.9% in favor of the shipped default, comfortably inside the noise.&lt;/strong&gt; I was wrong about this one, and the reason is straightforward: a sustained compile keeps every core busy, so even a conservative governor ramps to maximum within the first second and stays there. I confirmed the big cores sat at 2304 MHz throughout the &lt;code&gt;performance&lt;/code&gt; runs and throughout sustained stress testing.&lt;/p&gt;
&lt;p&gt;Where &lt;code&gt;conservative&lt;/code&gt; could still bite you is bursty, latency-sensitive, interactive work — a desktop session, a request-response server with idle gaps — where the ramp-up delay lands inside the thing you care about. I did not measure that, so I will not claim it. For sustained compute, leave the default alone. (I restored the board to &lt;code&gt;conservative&lt;/code&gt; after testing.)&lt;/p&gt;
&lt;h3&gt;Compile Performance&lt;/h3&gt;
&lt;p&gt;Three clean release builds, &lt;code&gt;cargo clean&lt;/code&gt; between each, on an otherwise idle board.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pinned tree (&lt;code&gt;2821bba&lt;/code&gt; — 43 files, 16,639 LOC), the fleet-comparable workload:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run 1: 55.17 s&lt;/li&gt;
&lt;li&gt;Run 2: 51.42 s&lt;/li&gt;
&lt;li&gt;Run 3: 51.07 s&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mean: 52.55 s&lt;/strong&gt; (median 51.42 s, σ 2.27 s)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Current tree (&lt;code&gt;edd333d&lt;/code&gt; — 158 files, 117,002 LOC, 281 crates):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run 1: 353.36 s&lt;/li&gt;
&lt;li&gt;Run 2: 352.23 s&lt;/li&gt;
&lt;li&gt;Run 3: 344.19 s&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mean: 349.93 s&lt;/strong&gt; (median 352.23 s, σ 5.00 s)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="NanoPC-T6N Rust compilation performance" src="https://tinycomputers.io/images/nanopc-t6n-compile-comparison.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Left: the fleet on the pinned Sept-2025 tree. Right: the same board and toolchain against both sizes of the same project — 6.66x the build time for 7.03x the code.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Against the archived fleet, on the tree they were all measured against:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;System&lt;/th&gt;
&lt;th&gt;SoC / CPU&lt;/th&gt;
&lt;th&gt;Cores&lt;/th&gt;
&lt;th&gt;Mean&lt;/th&gt;
&lt;th&gt;vs. T6N&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NanoPC-T6N&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;RK3588 — 4x A76 + 4x A55&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;52.55 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.00x (baseline)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orange Pi 5 Max&lt;/td&gt;
&lt;td&gt;RK3588 — 4x A76 + 4x A55&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;62.31 s&lt;/td&gt;
&lt;td&gt;1.19x slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Raspberry Pi CM5&lt;/td&gt;
&lt;td&gt;BCM2712 — 4x A76&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;71.04 s&lt;/td&gt;
&lt;td&gt;1.35x slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LattePanda IOTA&lt;/td&gt;
&lt;td&gt;Intel N150&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;72.21 s&lt;/td&gt;
&lt;td&gt;1.37x slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Raspberry Pi 5&lt;/td&gt;
&lt;td&gt;BCM2712 — 4x A76&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;76.65 s&lt;/td&gt;
&lt;td&gt;1.46x slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Banana Pi CM5-Pro&lt;/td&gt;
&lt;td&gt;RK3576 — 4x A72 + 4x A53&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;167.15 s&lt;/td&gt;
&lt;td&gt;3.18x slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Horizon X3 CM&lt;/td&gt;
&lt;td&gt;4x Cortex-A53&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;378.81 s&lt;/td&gt;
&lt;td&gt;7.21x slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Banana Pi R2 Pro&lt;/td&gt;
&lt;td&gt;RK3568 — 4x A55&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;418.18 s&lt;/td&gt;
&lt;td&gt;7.96x slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orange Pi RV2&lt;/td&gt;
&lt;td&gt;Ky X1 — RISC-V&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;650.60 s&lt;/td&gt;
&lt;td&gt;12.38x slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Milk-V Mars&lt;/td&gt;
&lt;td&gt;JH7110 — RISC-V, 4x U74&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;936.18 s&lt;/td&gt;
&lt;td&gt;17.82x slower&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;Archived figures are from the October 2025 fleet sweep on rustc 1.90/1.91; the T6N figure is from July 2026 on rustc 1.97.1 against the same source tree. See the caveats above — the T6N's position at the top is solid, its exact margin is not.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The honest reading: &lt;strong&gt;the T6N belongs in the top tier, alongside the Orange Pi 5 Max and ahead of the four-core A76 machines.&lt;/strong&gt; It should be ahead of the Orange Pi 5 Max on clocks alone — 2304/2352 MHz against the 5 Max's 2256 MHz is a 2-4% edge — and it had 16 GB of RAM and an idle system working for it. Whether the remaining margin is real silicon or compiler version, I cannot say from this data.&lt;/p&gt;
&lt;p&gt;The 350-second figure on the current tree is the one to internalize if you are choosing hardware for real 2026 development work. A 117,000-line Rust project with 281 crates takes about six minutes to build from clean on the best ARM SBC I have. That is a coffee break, not a lunch break, and it is genuinely usable — but it is a different world from the sub-90-second numbers that made the 2025 table look so friendly.&lt;/p&gt;
&lt;h3&gt;CPU: Sysbench and Core Scaling&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;sysbench cpu --cpu-max-prime=20000&lt;/code&gt;, 15-second runs:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Threads&lt;/th&gt;
&lt;th&gt;Events/sec&lt;/th&gt;
&lt;th&gt;Scaling vs. 1 thread&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;967.41&lt;/td&gt;
&lt;td&gt;1.00x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 (big cluster width)&lt;/td&gt;
&lt;td&gt;3,861.78&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3.99x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 (all cores)&lt;/td&gt;
&lt;td&gt;5,324.94&lt;/td&gt;
&lt;td&gt;5.50x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The four-thread result is the interesting one: &lt;strong&gt;3.99x scaling on four threads is essentially perfect&lt;/strong&gt;, which tells you the two big clusters are genuinely independent and the memory subsystem is not contending under parallel load. That is a well-built SoC.&lt;/p&gt;
&lt;p&gt;Going from four threads to eight adds only &lt;strong&gt;37.9%&lt;/strong&gt;, not the 100% a naive core count would suggest. This is exactly what big.LITTLE is supposed to look like: the four A55s are efficiency cores, not performance cores, and on a compute-bound integer workload each contributes roughly a third of what an A76 does. It is not a disappointment — it is the design. Anyone sizing a workload should think of the RK3588 as "four fast cores plus useful background capacity," not "eight cores."&lt;/p&gt;
&lt;p&gt;For comparison against the numbers in my &lt;a href="https://tinycomputers.io/posts/rk3588-orange-pi-5-max-review.html"&gt;Orange Pi 5 Max review&lt;/a&gt;: that piece reported 13,688 events/sec, but at sysbench's default &lt;code&gt;--cpu-max-prime=10000&lt;/code&gt;. Doubling the prime limit roughly quarters the event rate, so the two figures are not comparable. Mine are all at 20000.&lt;/p&gt;
&lt;h3&gt;Cryptography&lt;/h3&gt;
&lt;p&gt;For a board with two 2.5-gigabit interfaces, crypto throughput determines whether it can serve as a VPN endpoint, a TLS terminator, or an encrypted NAS at line rate. OpenSSL 3.5.6, single thread, 16 KB blocks:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Algorithm&lt;/th&gt;
&lt;th&gt;Throughput&lt;/th&gt;
&lt;th&gt;Hardware accelerated?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AES-128-GCM&lt;/td&gt;
&lt;td&gt;2,185.7 MB/s (~17.5 Gb/s)&lt;/td&gt;
&lt;td&gt;Yes (ARMv8 AES + PMULL)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AES-128-CBC&lt;/td&gt;
&lt;td&gt;1,831.8 MB/s (~14.7 Gb/s)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AES-256-GCM&lt;/td&gt;
&lt;td&gt;1,763.9 MB/s (~14.1 Gb/s)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHA-256&lt;/td&gt;
&lt;td&gt;1,429.4 MB/s (~11.4 Gb/s)&lt;/td&gt;
&lt;td&gt;Yes (ARMv8 SHA2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChaCha20-Poly1305&lt;/td&gt;
&lt;td&gt;674.4 MB/s (~5.4 Gb/s)&lt;/td&gt;
&lt;td&gt;No (software, NEON)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHA-512&lt;/td&gt;
&lt;td&gt;376.1 MB/s (~3.0 Gb/s)&lt;/td&gt;
&lt;td&gt;No (no SHA-512 extension)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSA-2048&lt;/td&gt;
&lt;td&gt;269.6 sign/s, 9,828 verify/s&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ECDSA P-256&lt;/td&gt;
&lt;td&gt;16,917 sign/s, 5,072 verify/s&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;A single A76 core encrypts AES-128-GCM at 2.19 GB/s.&lt;/strong&gt; Saturating one 2.5-gigabit port with authenticated encryption needs 312.5 MB/s; saturating both needs 625 MB/s. One core, with seven others idle, produces &lt;strong&gt;3.5x&lt;/strong&gt; what both ports combined can consume. Whatever else you throw at this board, crypto will not be the bottleneck.&lt;/p&gt;
&lt;p&gt;The ChaCha20-Poly1305 line is worth dwelling on because it directly determines WireGuard performance — WireGuard uses ChaCha20-Poly1305 exclusively and there is no hardware acceleration for it on ARMv8. At 674 MB/s (~5.4 Gb/s) it runs 2.6x slower than AES-256-GCM. That is a much narrower gap than the 4x+ I measured on the Cortex-A73 in the &lt;a href="https://tinycomputers.io/posts/banana-pi-bpi-r4-pro-review.html"&gt;Banana Pi BPI-R4 Pro&lt;/a&gt; — the A76's wider execution resources close a lot of it in software. At 5.4 Gb/s, &lt;strong&gt;a single core covers one 2.5GbE port more than twice over&lt;/strong&gt;, and just clears the 5 Gb/s both ports can carry together — with seven more cores available if you need headroom. Unlike on the R4 Pro, WireGuard is a non-issue on this board.&lt;/p&gt;
&lt;p&gt;ECDSA P-256 at 16,917 signatures/sec is far more TLS handshake capacity than this board will ever need. RSA-2048 signing at 269.6/sec is the weak spot in the table, but it is only a constraint for a busy public-facing web frontend using RSA certificates — use ECDSA and it evaporates.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rk_crypto&lt;/code&gt; and &lt;code&gt;cryptodev&lt;/code&gt; are both loaded, meaning Rockchip's dedicated crypto engine is available in addition to the ARMv8 instructions. Every figure above is from the CPU instructions via OpenSSL's default provider; I did not route OpenSSL through the hardware engine, so the dedicated accelerator's throughput remains unmeasured.&lt;/p&gt;
&lt;h3&gt;Memory Bandwidth&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;sysbench memory&lt;/code&gt; with 1 MB blocks across 8 threads reported 58,114 MiB/s read and 55,902 MiB/s write.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do not believe those numbers as DRAM bandwidth.&lt;/strong&gt; A 64-bit LPDDR4X interface has a theoretical ceiling in the low tens of GB/s, and 58 GB/s exceeds what this memory controller can physically deliver. &lt;code&gt;sysbench memory&lt;/code&gt; is well known to measure something closer to cache throughput and compiler-optimized memory operations than actual main-memory bandwidth. I am reporting the figures because they are what the standard tool produced and because they are a valid relative data point against other boards measured the same way — but I am not going to dress them up as a DRAM measurement, and neither should anyone else.&lt;/p&gt;
&lt;p&gt;What I can say with confidence is the practical part: 16 GB is a lot of RAM for an SBC, the board never touched swap (there is none configured), and nothing I ran came close to memory pressure. The near-perfect four-thread sysbench CPU scaling is indirect evidence that the memory subsystem keeps up with the big cluster under load.&lt;/p&gt;
&lt;h3&gt;Network&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;iperf3&lt;/code&gt; with four parallel streams between the T6N and another host on the same LAN segment:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Direction&lt;/th&gt;
&lt;th&gt;Throughput&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Board receives&lt;/td&gt;
&lt;td&gt;944 Mb/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Board transmits&lt;/td&gt;
&lt;td&gt;936 Mb/s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Both directions hit gigabit line rate&lt;/strong&gt; — 944 Mb/s with zero retransmissions on the receive path is about as clean as TCP over a 1 Gb link gets. The transmit path matched it at 936 Mb/s but logged 3,850 retransmissions across the four streams; I would not read much into that, since the peer on the other end was carrying a load average around 38 at the time.&lt;/p&gt;
&lt;p&gt;The caveat is that this measures my wiring, not the board. &lt;code&gt;eth1&lt;/code&gt; negotiated at &lt;strong&gt;1000 Mb/s&lt;/strong&gt;, not 2.5 Gb/s, because the switch it is plugged into is a gigabit switch. &lt;code&gt;eth0&lt;/code&gt; had no link. The RTL8125 controllers are 2.5GbE parts on adequately-provisioned PCIe Gen 2 x1 links, so the silicon is there — I simply do not have the infrastructure to prove it, and I am not going to claim a 2.5-gigabit result I did not measure.&lt;/p&gt;
&lt;p&gt;One driver quirk worth flagging for anyone debugging: the &lt;code&gt;r8125&lt;/code&gt; driver (version &lt;code&gt;9.016.01-NAPI-g61ed2fd&lt;/code&gt;) misreports its capabilities to &lt;code&gt;ethtool&lt;/code&gt;, advertising &lt;code&gt;Supported link modes: 10baseT/Half 10baseT/Full&lt;/code&gt; — obviously wrong for a 2.5GbE controller. The link negotiates correctly regardless; it is cosmetic, but it will confuse you if you are chasing a link-speed problem through &lt;code&gt;ethtool&lt;/code&gt; output.&lt;/p&gt;
&lt;h3&gt;Thermals: The Best Result on the Board&lt;/h3&gt;
&lt;p&gt;I ran &lt;code&gt;stress-ng --cpu 8&lt;/code&gt; for 120 seconds, sampling every 10 seconds.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Elapsed&lt;/th&gt;
&lt;th&gt;SoC&lt;/th&gt;
&lt;th&gt;Big core 0&lt;/th&gt;
&lt;th&gt;Big core 1&lt;/th&gt;
&lt;th&gt;Big cluster clock&lt;/th&gt;
&lt;th&gt;Little cluster clock&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Idle&lt;/td&gt;
&lt;td&gt;47.2 °C&lt;/td&gt;
&lt;td&gt;48.1 °C&lt;/td&gt;
&lt;td&gt;48.1 °C&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10 s&lt;/td&gt;
&lt;td&gt;54.5 °C&lt;/td&gt;
&lt;td&gt;55.5 °C&lt;/td&gt;
&lt;td&gt;55.5 °C&lt;/td&gt;
&lt;td&gt;2304 MHz&lt;/td&gt;
&lt;td&gt;1800 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40 s&lt;/td&gt;
&lt;td&gt;55.5 °C&lt;/td&gt;
&lt;td&gt;56.4 °C&lt;/td&gt;
&lt;td&gt;56.4 °C&lt;/td&gt;
&lt;td&gt;2304 MHz&lt;/td&gt;
&lt;td&gt;1800 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;70 s&lt;/td&gt;
&lt;td&gt;55.5 °C&lt;/td&gt;
&lt;td&gt;56.4 °C&lt;/td&gt;
&lt;td&gt;57.3 °C&lt;/td&gt;
&lt;td&gt;2304 MHz&lt;/td&gt;
&lt;td&gt;1800 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;110 s&lt;/td&gt;
&lt;td&gt;56.4 °C&lt;/td&gt;
&lt;td&gt;57.3 °C&lt;/td&gt;
&lt;td&gt;57.3 °C&lt;/td&gt;
&lt;td&gt;2304 MHz&lt;/td&gt;
&lt;td&gt;1800 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+30 s cooldown&lt;/td&gt;
&lt;td&gt;46.2 °C&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;408 MHz&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Peak SoC temperature of 56.4 °C after two minutes of full eight-core load, with zero throttling.&lt;/strong&gt; The big cores held 2304 MHz and the little cores held 1800 MHz for the entire run — not one clock bin dropped. The board shed the heat and returned to 46.2 °C within 30 seconds of the load ending. &lt;code&gt;stress-ng&lt;/code&gt; recorded 149,890 bogo-ops at 1,248 bogo-ops/sec.&lt;/p&gt;
&lt;p&gt;For context, RK3588 boards have a reputation for needing serious cooling, and thermal throttling under sustained load is a common complaint across the family. My unit shows none of it. A ~9 °C rise from idle to sustained full load means substantial headroom — the thermal solution on this board is doing its job with room to spare. If you are planning a sustained-compute deployment, this is the number that should reassure you.&lt;/p&gt;
&lt;h3&gt;Accelerators: What Is There, and What I Verified&lt;/h3&gt;
&lt;p&gt;I want to be careful here, because it is easy to inventory silicon and imply you benchmarked it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What I verified is present and driver-bound:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;NPU&lt;/strong&gt; is live. &lt;code&gt;rknpu&lt;/code&gt; driver &lt;strong&gt;v0.9.8&lt;/strong&gt; is loaded, the devfreq node &lt;code&gt;fdab0000.npu&lt;/code&gt; is pinned at 1000 MHz, and it is exposed as a DRM device — &lt;code&gt;/dev/dri/card1&lt;/code&gt; and &lt;code&gt;/dev/dri/renderD129&lt;/code&gt;, symlinked from &lt;code&gt;platform-fdab0000.npu-card&lt;/code&gt;. Note it is &lt;em&gt;not&lt;/em&gt; at &lt;code&gt;/dev/rknpu&lt;/code&gt;; if you are following an older tutorial expecting that path, this is why it seems missing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/usr/lib/librknnrt.so&lt;/code&gt; ships in the image&lt;/strong&gt; (7.2 MB, dated January 2026). FriendlyELEC including the RKNN runtime out of the box is a genuinely nice touch — on several other Rockchip boards I have had to source it myself. The Python &lt;code&gt;rknnlite&lt;/code&gt; bindings are &lt;em&gt;not&lt;/em&gt; installed; you will need to add those.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Mali-G610&lt;/strong&gt; is bound (&lt;code&gt;mali fb000000.gpu&lt;/code&gt;, DDK &lt;code&gt;g29p0-00eac0&lt;/code&gt;) with devfreq from 300 MHz to 1000 MHz.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Video encode/decode&lt;/strong&gt; is available through Rockchip's MPP stack — &lt;code&gt;/dev/mpp_service&lt;/code&gt; and &lt;code&gt;librockchip_mpp.so&lt;/code&gt; are present, and two RKVENC cores probed cleanly. Note there is &lt;strong&gt;no &lt;code&gt;/dev/video*&lt;/code&gt;&lt;/strong&gt;: this is not a V4L2 M2M interface, so anything expecting mainline-style hardware codecs will need the Rockchip libraries instead. That is a meaningful integration cost if your pipeline assumes V4L2.&lt;/li&gt;
&lt;li&gt;All three &lt;strong&gt;RGA 2D engines&lt;/strong&gt; probed successfully.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What I did not measure: NPU inference throughput.&lt;/strong&gt; Running a meaningful RKLLM or RKNN benchmark requires converting models on an x86 host and building out the toolkit, which was outside the scope of this session. The T6N carries the same 6 TOPS NPU, the same three-core architecture, and the same driver generation as the Orange Pi 5 Max, so my existing &lt;a href="https://tinycomputers.io/posts/rockchip-rk3588-npu-benchmarks.html"&gt;RK3588 NPU benchmarks&lt;/a&gt; — TinyLlama 1.1B at 10-15 tokens/sec, ResNet18 at 244 FPS and 4.09 ms latency — should transfer closely. I am pointing at those rather than inventing numbers for this board.&lt;/p&gt;
&lt;p&gt;Also unmeasured, for the record: NVMe performance (empty M.2 slot), 2.5-gigabit throughput (gigabit switch), GPU graphics performance (no &lt;code&gt;glmark2&lt;/code&gt;/&lt;code&gt;vulkaninfo&lt;/code&gt; installed, headless unit), HDMI input and output, and the MIPI DSI/CSI connectors.&lt;/p&gt;
&lt;h3&gt;Comparative Context&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Against the &lt;a href="https://tinycomputers.io/posts/rk3588-orange-pi-5-max-review.html"&gt;Orange Pi 5 Max&lt;/a&gt;&lt;/strong&gt; — the closest comparison, same SoC, same 16 GB. These boards are performance twins; treat my 19% margin as unproven. The real difference is I/O. The T6N has &lt;strong&gt;two 2.5GbE ports&lt;/strong&gt; to the 5 Max's one, an HDMI &lt;em&gt;input&lt;/em&gt;, and a larger 110 x 80 mm board with denser connectors. The 5 Max is a more conventional desktop-shaped SBC. If you want a router, firewall, NAS head, or anything that needs two fast network interfaces, the T6N is the obvious pick. If you want a small ARM desktop, the 5 Max is cheaper and gives up nothing important.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Against the Raspberry Pi 5 and &lt;a href="https://tinycomputers.io/posts/raspberry-pi-compute-module-5-review.html"&gt;CM5&lt;/a&gt;&lt;/strong&gt; — the T6N is roughly 1.35-1.46x faster on the compile benchmark, has twice the maximum RAM, adds a 6 TOPS NPU the Pi entirely lacks, and brings dual 2.5GbE against the Pi's single gigabit port. The Pi's counterargument is the one it always makes and always wins: ecosystem. Raspberry Pi OS is polished, mainline kernel support is a given, documentation is excellent, and the community is orders of magnitude larger. If you value never fighting your kernel over raw throughput, that trade is still worth making. If you have run vendor BSPs before and know what you are signing up for, the T6N is more machine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Against the &lt;a href="https://tinycomputers.io/posts/banana-pi-cm5-pro-review.html"&gt;Banana Pi CM5-Pro&lt;/a&gt; (RK3576)&lt;/strong&gt; — 3.18x faster on the compile benchmark. The RK3576's A72/A53 pairing is a genuine generation behind the RK3588's A76/A55. The CM5-Pro's case is the CM4-compatible compute-module form factor and a lower price; on performance there is no contest.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Against the &lt;a href="https://tinycomputers.io/posts/banana-pi-bpi-r4-pro-review.html"&gt;Banana Pi BPI-R4 Pro&lt;/a&gt;&lt;/strong&gt; — an instructive contrast, because both boards want to be network appliances from opposite directions. The R4 Pro is a router that computes adequately: 10-gigabit MACs, a hardware packet-processing engine, a switch, WiFi 7, OpenWRT, and a modest quad A73. The T6N is a computer that networks well: far more CPU, an NPU, a GPU, a full Debian userland, and two 2.5GbE ports with no hardware offload engine behind them. For line-rate routing at 10G, the R4 Pro wins on silicon designed for the job. For a firewall or gateway that also runs containers, does inference, or serves files, the T6N is the better foundation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Against x86&lt;/strong&gt; — the &lt;a href="https://tinycomputers.io/posts/lattepanda-iota-a-review.html"&gt;LattePanda IOTA&lt;/a&gt;'s Intel N150 came in at 72.21 s, about 1.37x behind. The T6N wins on compile throughput, RAM ceiling, NPU, and networking. x86 wins on software compatibility, mainline everything, and never having to think about device trees. And for a genuine sense of scale: the AMD AI Max+ 395 desktop in the same archived sweep did the pinned tree in 13.71 s, about 3.8x faster than the best ARM SBC on my bench. These boards are remarkable for their size and power envelope, not in absolute terms.&lt;/p&gt;
&lt;h3&gt;Use Cases and Recommendations&lt;/h3&gt;
&lt;h4&gt;Choose the NanoPC-T6N if you:&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Need two fast network interfaces on a capable compute platform.&lt;/strong&gt; This is the core case. Dual 2.5GbE with a CPU that can encrypt at 2.19 GB/s and eight cores to spare makes an excellent firewall, gateway, VPN concentrator, or NAS head — one that also runs Docker, serves web applications, and does inference without breaking a sweat.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Want the fastest ARM SBC compile times available.&lt;/strong&gt; On the pinned benchmark it is at the front of the field. For a headless ARM build box, CI runner, or development machine, this is the top of my bench.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Are doing edge AI with the Rockchip stack.&lt;/strong&gt; 6 TOPS, three NPU cores, and &lt;code&gt;librknnrt.so&lt;/code&gt; shipped in the image. If you have already invested in RKNN or RKLLM tooling, this is a well-provisioned host for it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Need sustained load in a constrained thermal environment.&lt;/strong&gt; 56.4 °C peak with zero throttling under full eight-core load is the best sustained-load result I have measured on an RK3588 board. Enclosed or fanless deployments are realistic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Want 16 GB of RAM on an ARM SBC.&lt;/strong&gt; Still uncommon, and it makes containers, large builds, and in-memory workloads comfortable.&lt;/p&gt;
&lt;h4&gt;Choose something else if you:&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Want mainline kernel support and a hands-off experience.&lt;/strong&gt; This is a 6.1 vendor BSP. The accelerators are out-of-tree, video is Rockchip MPP rather than V4L2, and you are dependent on FriendlyELEC's image cadence for the full feature set. A Raspberry Pi 5 will never make you think about any of this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Are buying primarily for a desktop.&lt;/strong&gt; The T6N is a headless-shaped board with router-grade I/O. An Orange Pi 5 Max costs less and does the desktop job as well. And I did not test the display path at all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Need line-rate 10-gigabit routing.&lt;/strong&gt; No hardware packet-processing engine, no switch, no SFP+ cages. The BPI-R4 Pro is built for that; the T6N is not.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Are cost-sensitive.&lt;/strong&gt; The T6 family is priced above a Raspberry Pi, and the dual 2.5GbE, HDMI input, and dual M.2 slots are what you are paying for. If you will not use them, you are buying capability you do not need. (I do not have verified current pricing for the T6N specifically, so shop it before you commit.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Want a beginner's first SBC.&lt;/strong&gt; Vendor images, overlay root filesystems, out-of-tree NPU drivers, and a &lt;code&gt;conservative&lt;/code&gt; governor default are all things that reward knowing what you are doing.&lt;/p&gt;
&lt;h3&gt;Build Quality and Physical Characteristics&lt;/h3&gt;
&lt;p&gt;The T6 family is a 110 x 80 mm board (eight-layer, per FriendlyELEC's specifications for the line), and the density shows — two Ethernet jacks, two M.2 slots, HDMI in and out, MIPI connectors, and header banks in a footprint only moderately larger than a Raspberry Pi. My unit arrived cleanly manufactured with no defects, has been stable through every benchmark I threw at it, and the thermal numbers indicate a competent cooling solution. Over several hours of sustained testing I saw no instability, no unexpected resets, and no kernel errors beyond the expected empty-M.2-slot PCIe link failures at boot.&lt;/p&gt;
&lt;h3&gt;Conclusion: The RK3588 Is Aging Well&lt;/h3&gt;
&lt;p&gt;The NanoPC-T6N is the best-performing ARM single-board computer on my bench, and the margins that matter are not the compile times — those put it in a statistical tie with the Orange Pi 5 Max, and I have been careful to say so. What separates it is the I/O: two 2.5-gigabit ports on properly-provisioned PCIe lanes, backed by a CPU that can encrypt at over two gigabytes per second and eight cores that never throttled once in my testing. That combination makes it something more interesting than a fast SBC. It makes it a credible small network appliance that happens to have a 6 TOPS NPU and 16 GB of RAM attached.&lt;/p&gt;
&lt;p&gt;The RK3588 has been shipping since 2022, and in 2026 it remains competitive against everything I can put next to it. That says something about how good the part was and something less flattering about the pace of ARM SBC silicon since.&lt;/p&gt;
&lt;p&gt;My complaints are configuration and ecosystem, not hardware. The unit came booting from a microSD card while a 64 GB eMMC module — 4.66x faster on reads — sat unused beneath it, which is a five-minute fix that ships wrong. The 6.1 vendor kernel means the accelerators live outside mainline and video runs through Rockchip's MPP stack rather than V4L2. The &lt;code&gt;r8125&lt;/code&gt; driver lies to &lt;code&gt;ethtool&lt;/code&gt;. None of these are dealbreakers; all of them are the texture of living with a Rockchip vendor BSP, and they are the same texture you will find on every board in this family.&lt;/p&gt;
&lt;p&gt;The thing I will carry forward from this review, though, is not about the T6N at all. It is that my benchmark grew seven times larger while I was busy citing its old numbers, and I nearly published a result showing an excellent board as a mediocre one. &lt;strong&gt;A benchmark that tracks a live project stops being a benchmark the moment the project changes.&lt;/strong&gt; From here on, the fleet comparison runs against a pinned tree, and I will be re-running the fleet on the current one to build a table that means something in 2026.&lt;/p&gt;
&lt;h3&gt;Specifications Summary&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Processor (measured):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rockchip RK3588 (&lt;code&gt;rockchip,rk3588&lt;/code&gt;), 8 nm, aarch64&lt;/li&gt;
&lt;li&gt;4x Cortex-A76 (r4p0): cpu4-5 up to 2304 MHz, cpu6-7 up to 2352 MHz&lt;/li&gt;
&lt;li&gt;4x Cortex-A55 (r2p0): up to 1800 MHz&lt;/li&gt;
&lt;li&gt;L1 384 KiB d + 384 KiB i (8 instances), L2 2.5 MiB, L3 3 MiB shared&lt;/li&gt;
&lt;li&gt;ARMv8 crypto: &lt;code&gt;aes&lt;/code&gt;, &lt;code&gt;pmull&lt;/code&gt;, &lt;code&gt;sha1&lt;/code&gt;, &lt;code&gt;sha2&lt;/code&gt;, &lt;code&gt;crc32&lt;/code&gt;; also &lt;code&gt;asimddp&lt;/code&gt;, &lt;code&gt;fphp&lt;/code&gt;, &lt;code&gt;asimdhp&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Memory &amp;amp; Storage (as tested):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;16 GB LPDDR4X (15 GiB usable), no swap&lt;/li&gt;
&lt;li&gt;64 GB microSD (SanDisk &lt;code&gt;SN64G&lt;/code&gt;) — the boot and root device on my unit&lt;/li&gt;
&lt;li&gt;64 GB onboard eMMC (&lt;code&gt;A3A561&lt;/code&gt;) — present, partitioned, unused for boot&lt;/li&gt;
&lt;li&gt;M.2 M-key slot (&lt;code&gt;pcie@fe150000&lt;/code&gt;, PCIe 3.0) — empty on my unit, untested&lt;/li&gt;
&lt;li&gt;Root on overlayfs (&lt;code&gt;lowerdir=/root&lt;/code&gt;, &lt;code&gt;upperdir=/data/root&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Networking (measured):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2x Realtek RTL8125 2.5GbE, each on its own PCIe Gen 2 x1 link&lt;/li&gt;
&lt;li&gt;Driver &lt;code&gt;r8125&lt;/code&gt; 9.016.01-NAPI-g61ed2fd (misreports link modes to &lt;code&gt;ethtool&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;eth1&lt;/code&gt; negotiated 1000 Mb/s on my gigabit switch; 2.5G capability untested&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Accelerators (present, inference throughput untested):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NPU: 6 TOPS, 3 cores, &lt;code&gt;rknpu&lt;/code&gt; v0.9.8, devfreq 1000 MHz, DRM node &lt;code&gt;/dev/dri/card1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;librknnrt.so&lt;/code&gt; 7.2 MB shipped in image; &lt;code&gt;rknnlite&lt;/code&gt; Python bindings not installed&lt;/li&gt;
&lt;li&gt;GPU: Mali-G610, DDK &lt;code&gt;g29p0-00eac0&lt;/code&gt;, 300-1000 MHz&lt;/li&gt;
&lt;li&gt;Video: 2x RKVENC cores, &lt;code&gt;/dev/mpp_service&lt;/code&gt;, &lt;code&gt;librockchip_mpp.so&lt;/code&gt; (no V4L2 &lt;code&gt;/dev/video*&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;2D: 2x RGA3 (&lt;code&gt;3.0.76831&lt;/code&gt;) + 1x RGA2 (&lt;code&gt;3.2.63318&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Crypto: &lt;code&gt;rk_crypto&lt;/code&gt; + &lt;code&gt;cryptodev&lt;/code&gt; modules loaded (dedicated engine untested)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Software (as shipped):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Debian GNU/Linux 13.3 (trixie), kernel 6.1.141 built 2026-07-18 (FriendlyELEC BSP, &lt;code&gt;LINUXFAMILY=nanopi6&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Firmware: &lt;code&gt;ddr-v1.17&lt;/code&gt;, &lt;code&gt;bl31-v1.56&lt;/code&gt;, &lt;code&gt;bl32-v1.21&lt;/code&gt;, U-Boot &lt;code&gt;07/10/2026&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;OpenSSL 3.5.6; default CPU governor &lt;code&gt;conservative&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Toolchain installed for testing: rustc/cargo 1.97.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Benchmark Results:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rust clean release build, pinned tree (&lt;code&gt;2821bba&lt;/code&gt;, 16,639 LOC): &lt;strong&gt;52.55 s&lt;/strong&gt; mean (σ 2.27 s) — fastest ARM board on my bench&lt;/li&gt;
&lt;li&gt;Rust clean release build, current tree (&lt;code&gt;edd333d&lt;/code&gt;, 117,002 LOC, 281 crates): &lt;strong&gt;349.93 s&lt;/strong&gt; mean (σ 5.00 s)&lt;/li&gt;
&lt;li&gt;Governor &lt;code&gt;conservative&lt;/code&gt; vs &lt;code&gt;performance&lt;/code&gt;: 53.49 s vs 53.95 s — no meaningful difference&lt;/li&gt;
&lt;li&gt;sysbench CPU (&lt;code&gt;--cpu-max-prime=20000&lt;/code&gt;): 967 / 3,862 / 5,325 events per sec at 1 / 4 / 8 threads (3.99x scaling on the big cluster)&lt;/li&gt;
&lt;li&gt;AES-128-GCM 2,185.7 MB/s; AES-256-GCM 1,763.9 MB/s; SHA-256 1,429.4 MB/s; ChaCha20-Poly1305 674.4 MB/s&lt;/li&gt;
&lt;li&gt;ECDSA P-256 16,917 sign/s; RSA-2048 269.6 sign/s, 9,828 verify/s&lt;/li&gt;
&lt;li&gt;Storage read: microSD 64.85 MB/s vs onboard eMMC 302.05 MB/s (4.66x)&lt;/li&gt;
&lt;li&gt;iperf3: 944 Mb/s receive, 936 Mb/s transmit (gigabit-limited wiring)&lt;/li&gt;
&lt;li&gt;Thermals: 47.2 °C idle, 56.4 °C peak under 120 s of eight-core load, zero throttling&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; The strongest general-purpose ARM SBC I have benchmarked, and an unusually good foundation for a compute-capable network appliance. Install it to eMMC or NVMe, and know you are buying into a Rockchip vendor BSP.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Review Date: July 29, 2026&lt;/p&gt;
&lt;p&gt;Hardware Tested: FriendlyElec NanoPC-T6N (Rockchip RK3588) with 16 GB LPDDR4X, 64 GB eMMC, booted from 64 GB microSD, dual RTL8125 2.5GbE&lt;/p&gt;
&lt;p&gt;OS Tested: Debian GNU/Linux 13.3 (trixie), kernel 6.1.141 (FriendlyELEC BSP, built 2026-07-18)&lt;/p&gt;
&lt;p&gt;Benchmark Workload: &lt;a href="https://github.com/ajokela/ballistics-engine"&gt;ballistics-engine&lt;/a&gt; clean release builds at commits &lt;code&gt;2821bba&lt;/code&gt; (fleet-comparable) and &lt;code&gt;edd333d&lt;/code&gt; (current), rustc 1.97.1&lt;/p&gt;
&lt;p&gt;Conclusion: The RK3588 remains competitive four years on, and the T6N is its best expression on my bench — fast, cool, and unusually well-connected, held back only by a vendor BSP and a boot medium that should have been the eMMC.&lt;/p&gt;</description><category>2.5 gigabit ethernet</category><category>benchmarks</category><category>cortex-a55</category><category>cortex-a76</category><category>cpufreq governor</category><category>debian trixie</category><category>emmc</category><category>friendlyelec</category><category>hardware review</category><category>mali-g610</category><category>microsd</category><category>nanopc t6</category><category>nanopc t6n</category><category>openssl</category><category>rknpu</category><category>rockchip rk3588</category><category>rust compilation</category><category>single board computers</category><category>thermals</category><guid>https://tinycomputers.io/posts/friendlyelec-nanopc-t6n-review.html</guid><pubDate>Wed, 29 Jul 2026 14:15:00 GMT</pubDate></item></channel></rss>