<?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 debootstrap)</title><link>https://tinycomputers.io/</link><description></description><atom:link href="https://tinycomputers.io/categories/debootstrap.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Original site content © 2022–2026 Tiny Machines Workshop, LLC, except where otherwise noted. Some rights reserved.</copyright><lastBuildDate>Fri, 11 Sep 2026 16:07:31 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>The MangoPi MQ Pro: One RISC-V Core, Two Hours, and What That Actually Proves</title><link>https://tinycomputers.io/posts/mangopi-mq-pro-riscv-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/mangopi-mq-pro-riscv-review_tts.mp3" type="audio/mpeg"&gt;
&lt;/source&gt;&lt;/audio&gt;
&lt;div class="audio-widget-footer"&gt;19 min · AI-generated narration&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The MangoPi MQ Pro compiled my benchmark in &lt;strong&gt;7,824 seconds&lt;/strong&gt;. Two hours and ten minutes for a 16,639-line Rust project that a NanoPC-T6N finishes in 52.55 seconds. That is 149 times slower, and it puts the MangoPi last of the twelve boards on my bench by a margin larger than the entire spread of the other eleven.&lt;/p&gt;
&lt;p&gt;That number is not the reason to read about this board.&lt;/p&gt;
&lt;p&gt;Three other things came out of the run, and each one contradicted what I expected going in. Per core, this chip is only 4.2x behind the SiFive U74 in the &lt;a href="https://tinycomputers.io/posts/pine64-star64-riscv-review.html"&gt;Pine64 Star64&lt;/a&gt;, so most of that 149x is core count rather than core quality. Its 486 MB of RAM, which I was sure would be the thing that killed the build, never became the bottleneck at all, and the reason is counterintuitive. And getting a Rust toolchain onto the board in the first place was the hard part, harder than the two-hour compile, for a reason that has nothing to do with performance.&lt;/p&gt;
&lt;h3&gt;The hardware&lt;/h3&gt;
&lt;p&gt;&lt;img alt="MangoPi MQ Pro powered on, a magenta Raspberry Pi Zero sized board with the Allwinner D1-H SoC at center, an Fn-Link 6223A-SRD wireless module, a 32 GB microSD card inserted, mini-HDMI and two USB-C ports, a partially populated 40-pin header, and a lit green power LED" src="https://tinycomputers.io/images/mangopi-mq-pro/IMG_4643.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Running. The D1-H is the bare die at center, unlidded and without a heatsink, which is all it needs: this board completed a two hour ten minute compile without passing 50 °C. The 32 GB card is the one the benchmark ran from, and the whole thing is Raspberry Pi Zero sized.&lt;/em&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SoC&lt;/td&gt;
&lt;td&gt;Allwinner &lt;strong&gt;D1&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;1x T-Head &lt;strong&gt;C906&lt;/strong&gt;, single core, no cpufreq&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ISA&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rv64imafdc_zicntr_zicsr_zifencei_zihpm_zca_zcd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;486 MB&lt;/strong&gt; usable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;32 GB microSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Host OS&lt;/td&gt;
&lt;td&gt;OpenWrt 25.12.5, kernel 6.12.94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Idle temp&lt;/td&gt;
&lt;td&gt;44.7 °C&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Two entries decide everything that follows. The core count is &lt;strong&gt;one&lt;/strong&gt;, which is not a configuration choice or a boot-time limitation but the whole chip: &lt;code&gt;/proc/cpuinfo&lt;/code&gt; lists &lt;code&gt;processor : 0&lt;/code&gt; and stops. And the ISA string is RV64GC plus six &lt;code&gt;Z&lt;/code&gt; extensions that are all counters, CSRs, fences and compressed-instruction variants. No &lt;code&gt;V&lt;/code&gt;, so no vector unit. No &lt;code&gt;K&lt;/code&gt;, so no scalar crypto.&lt;/p&gt;
&lt;p&gt;I checked that ISA string with the &lt;code&gt;rv64&lt;/code&gt; prefix stripped before matching, because a naive substring search for &lt;code&gt;v&lt;/code&gt; finds the &lt;code&gt;v&lt;/code&gt; in &lt;code&gt;rv64&lt;/code&gt; and cheerfully reports a vector unit that does not exist. That mistake cost me an hour on the Star64 review and I am not repeating it.&lt;/p&gt;
&lt;p&gt;The C906 does have RVV 0.7.1 in silicon, a draft vector extension that predates the ratified 1.0 spec. The kernel does not advertise it, no toolchain targets it usefully, and nothing in a Rust compile would touch it regardless. Treat it as absent.&lt;/p&gt;
&lt;h3&gt;The part that was actually hard&lt;/h3&gt;
&lt;p&gt;The board runs OpenWrt. That is a reasonable choice for a 486 MB router-class SoC, and it is also why the standard benchmark would not run.&lt;/p&gt;
&lt;p&gt;OpenWrt is musl. There is a &lt;code&gt;/lib/ld-musl-riscv64.so.1&lt;/code&gt; and there is no glibc loader anywhere on the system. rustup distributes &lt;code&gt;riscv64gc-unknown-linux-musl&lt;/code&gt; as a &lt;em&gt;target&lt;/em&gt;, meaning something you cross-compile &lt;em&gt;to&lt;/em&gt;, but not as a &lt;em&gt;host&lt;/em&gt;, meaning there are no prebuilt compiler binaries that run on a musl riscv64 machine. OpenWrt's package repository has &lt;code&gt;gcc&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;make&lt;/code&gt; and 10,503 other things, but no &lt;code&gt;rust&lt;/code&gt; and no &lt;code&gt;cargo&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So the options were: cross-bootstrap &lt;code&gt;rustc&lt;/code&gt; itself for a musl host, which is a multi-hour &lt;code&gt;x.py&lt;/code&gt; build on a separate machine and fragile in ways that would have eaten the day; reflash the board to Debian and lose the OpenWrt install; or supply glibc some other way.&lt;/p&gt;
&lt;p&gt;I supplied glibc some other way. The 32 GB card had 30.8 GB of unallocated space sitting after the 109 MB OpenWrt root, so I created a third partition there, put a Debian trixie riscv64 rootfs on it, and chrooted in. OpenWrt was never modified. It still owns &lt;code&gt;mmcblk0p2&lt;/code&gt; and still boots. The chroot is native execution, not emulation: &lt;code&gt;uname -m&lt;/code&gt; inside it returns &lt;code&gt;riscv64&lt;/code&gt; and the binaries are riscv64 ELFs running on the C906.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;Host OS : OpenWrt 25.12.5   kernel 6.12.94
Chroot  : Debian GNU/Linux 13 (trixie)
rustc 1.98.1 (48a229cea 2026-09-01)
Default host: riscv64gc-unknown-linux-gnu
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;That rustc version matters more than it looks. It is byte-for-byte the same compiler the Star64 and the &lt;a href="https://tinycomputers.io/posts/milk-v-mars-review.html"&gt;Milk-V Mars&lt;/a&gt; ran. Every cross-board comparison in this fleet normally carries a "different toolchain version, treat the margin as directional" caveat. This one does not.&lt;/p&gt;
&lt;p&gt;I also gave it a 6 GB swapfile on the new partition and set &lt;code&gt;vm.swappiness=60&lt;/code&gt;. On the Star64 I added swap as insurance and it went completely unused. Here I was certain it would be load-bearing. I was wrong about that too, and I will come back to it.&lt;/p&gt;
&lt;h3&gt;The result&lt;/h3&gt;
&lt;p&gt;Pinned tree &lt;code&gt;2821bba&lt;/code&gt;: 43 source files, 16,639 lines, 144 crates. Three runs after &lt;code&gt;cargo clean&lt;/code&gt;, same as every other board.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Run&lt;/th&gt;
&lt;th&gt;Time&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;7,856 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;7,839 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;7,777 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mean&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7,824 s&lt;/strong&gt; (2 h 10 min, σ 41.6 s, &lt;strong&gt;0.53% CV&lt;/strong&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The warm-up build came in at 7,864 seconds, within 0.51% of the timed mean. A half-percent coefficient of variation across three two-hour builds is tighter than most of the fast boards manage, which tells you there is nothing dynamic happening on this chip at all: fixed clock, no boost, no thermal headroom being negotiated, no scheduler deciding anything. It just grinds.&lt;/p&gt;
&lt;p&gt;I did not attempt the current-HEAD tier. That tree is 155,867 lines and 243 crates, roughly nine times the pinned one, and the Star64 took 6.36x longer on it. Extrapolating puts the MangoPi somewhere near fourteen hours per run, three runs deep. There is no question worth answering that badly.&lt;/p&gt;
&lt;h4&gt;Where it lands&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;System&lt;/th&gt;
&lt;th&gt;SoC&lt;/th&gt;
&lt;th&gt;Cores&lt;/th&gt;
&lt;th&gt;Arch&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;1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://tinycomputers.io/posts/friendlyelec-nanopc-t6n-review.html"&gt;NanoPC-T6N&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Rockchip RK3588&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;arm64&lt;/td&gt;
&lt;td&gt;52.55 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a href="https://tinycomputers.io/posts/raspberry-pi-compute-module-5-review.html"&gt;Raspberry Pi 5&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;BCM2712&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;arm64&lt;/td&gt;
&lt;td&gt;76.65 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://tinycomputers.io/posts/freebsd-on-a-2011-macbook-pro.html"&gt;MacBookPro8,1 (FreeBSD)&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Core i5-2435M&lt;/td&gt;
&lt;td&gt;2C/4T&lt;/td&gt;
&lt;td&gt;x86_64&lt;/td&gt;
&lt;td&gt;131.00 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;a href="https://tinycomputers.io/posts/horizon-robotics-x3-cm-review.html"&gt;Horizon X3 CM&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Sunrise X3 (A53)&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;arm64&lt;/td&gt;
&lt;td&gt;378.81 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;a href="https://tinycomputers.io/posts/milk-v-mars-review.html"&gt;Milk-V Mars&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;StarFive JH7110&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;riscv64&lt;/td&gt;
&lt;td&gt;458.00 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;a href="https://tinycomputers.io/posts/pine64-star64-riscv-review.html"&gt;Pine64 Star64&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;StarFive JH7110&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;riscv64&lt;/td&gt;
&lt;td&gt;461.28 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a href="https://tinycomputers.io/posts/the-orangepi-rv2.html"&gt;Orange Pi RV2&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Ky X1&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;riscv64&lt;/td&gt;
&lt;td&gt;650.60 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MangoPi MQ Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Allwinner D1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;riscv64&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7,824.00 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Eleven boards fit inside a 12x spread. Adding this one stretches the bench to 149x.&lt;/p&gt;
&lt;h3&gt;Per core, it is a different story&lt;/h3&gt;
&lt;p&gt;&lt;img alt="Four RISC-V boards compared on wall clock and on core-seconds" src="https://tinycomputers.io/images/mangopi-riscv-percore.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Left: wall clock, where the MangoPi takes 17x the Star64. Right: the same four boards in core-seconds, wall clock multiplied by core count. The MangoPi bar is identical in both panels because it has one core. Everyone else's bar grows, which is the point: they were spending four or eight cores to get their number.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Multiply each board's time by the cores it used and the picture inverts:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Board&lt;/th&gt;
&lt;th&gt;Cores&lt;/th&gt;
&lt;th&gt;Wall clock&lt;/th&gt;
&lt;th&gt;Core-seconds&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Milk-V Mars&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;458.00 s&lt;/td&gt;
&lt;td&gt;1,832&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pine64 Star64&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;461.28 s&lt;/td&gt;
&lt;td&gt;1,845&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orange Pi RV2&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;650.60 s&lt;/td&gt;
&lt;td&gt;5,205&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MangoPi MQ Pro&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;7,824.00 s&lt;/td&gt;
&lt;td&gt;7,824&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The MangoPi is &lt;strong&gt;16.96x slower than the Star64 in wall clock but 4.24x slower per core&lt;/strong&gt;. Roughly a quarter of that headline gap is the C906 being a weaker core. The rest is simply having one of them.&lt;/p&gt;
&lt;p&gt;A 4.2x per-core deficit is a real and large gap, and I am not going to dress it up as a moral victory. The C906 is a simple in-order pipeline at about 1 GHz against the U74's dual-issue in-order design at 1.5 GHz, and the clock alone accounts for 1.5x of it. But 4.2x is the number that describes the silicon. 149x describes a product decision about how many cores to put on a $20 board, and those are different claims about different things.&lt;/p&gt;
&lt;p&gt;The Orange Pi RV2 is the interesting comparison in that table. Eight Ky X1 cores spend &lt;strong&gt;5,205 core-seconds&lt;/strong&gt; to finish in 650.60 s, while four U74s spend 1,845 to finish in 461.28 s. The RV2 burns 2.8x more silicon-time and still loses. Per core, SpacemiT's newer eight-core design is closer to the MangoPi's single C906 than it is to SiFive's U74. That was true in the Star64 review and having a third and fourth data point makes it harder to dismiss.&lt;/p&gt;
&lt;h3&gt;The memory surprise&lt;/h3&gt;
&lt;p&gt;I provisioned 6 GB of swap because 486 MB against 144 crates looked like the run-ending problem. Peak swap usage across the entire benchmark was &lt;strong&gt;5.6 MB&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Not 5.6 GB. Five point six megabytes, out of six thousand available. Free memory sat at 460 MB before each run and 278 MB after.&lt;/p&gt;
&lt;p&gt;Being single-core is what saved it. &lt;code&gt;cargo&lt;/code&gt; schedules one &lt;code&gt;rustc&lt;/code&gt; per available core, so on this board exactly one compilation unit is resident at a time and peak memory is whatever the largest single crate needs. On a four-core board, &lt;code&gt;-j4&lt;/code&gt; puts four &lt;code&gt;rustc&lt;/code&gt; processes in memory simultaneously, and that is where the 486 MB would have died. The constraint I was worried about was neutralized by the limitation I was complaining about.&lt;/p&gt;
&lt;p&gt;This has a practical consequence worth stating plainly: if you are building large Rust projects on a memory-starved board, &lt;code&gt;cargo build -j1&lt;/code&gt; is not merely a slower option, it is sometimes the only option that completes. The MangoPi gets that for free by having nothing else to offer.&lt;/p&gt;
&lt;h3&gt;Thermals, briefly&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Temperature&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;44.7 °C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Under a 2.2-hour build&lt;/td&gt;
&lt;td&gt;48.6 to 49.8 °C&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Five degrees of rise across two hours of continuous compilation, peaking under 50 °C, on a bare board with no heatsink. There is no &lt;code&gt;cpufreq&lt;/code&gt; driver, so the clock is fixed and there is no throttling behaviour to characterize and no governor to second-guess. This is the one area where the board is genuinely, completely untroubled.&lt;/p&gt;
&lt;p&gt;It is also a reminder of what the 149x buys in the other direction. The MangoPi did that build at a power draw I would estimate in single-digit watts, and it never got warm enough to need cooling.&lt;/p&gt;
&lt;h3&gt;What this board is for&lt;/h3&gt;
&lt;p&gt;Not this. Compiling Rust on a MangoPi MQ Pro is a benchmark stunt, and I ran it because a number with a commit hash attached is worth more than a guess.&lt;/p&gt;
&lt;p&gt;What the board is genuinely good for is the thing OpenWrt implies: a tiny, cool, cheap RISC-V target for embedded and networking work. It has a real ISA with a real mainline kernel, the package repository has 10,506 packages including gcc and git, and it will sit at 45 °C indefinitely. If you want to find out whether your daemon, driver or protocol implementation works on RISC-V hardware, this is a legitimate and inexpensive way to find out, and the answer you get is a real answer rather than a QEMU approximation.&lt;/p&gt;
&lt;p&gt;What it is not is a machine you develop &lt;em&gt;on&lt;/em&gt;. Build your code somewhere with four cores, then run it here.&lt;/p&gt;
&lt;p&gt;The comparison that puts this in perspective is the Horizon X3 CM, a board I reviewed as a cautionary tale. Its quad Cortex-A53, a core design Arm announced in 2012, finishes the same build in 378.81 seconds, &lt;strong&gt;20.7x faster&lt;/strong&gt; than the MangoPi. Current-generation RISC-V application silicon at the low end is not competing with modern ARM. It is competing with the bottom of ARM's fourteen-year-old catalogue, and losing.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The MangoPi MQ Pro is the slowest machine I have benchmarked, by a wide margin, and the number that proves it is the least interesting thing I learned from it.&lt;/p&gt;
&lt;p&gt;Per core it is 4.2x behind a SiFive U74, which is a genuine deficit and also five times smaller than the wall-clock gap implies. Its 486 MB never became a problem because single-core scheduling kept exactly one &lt;code&gt;rustc&lt;/code&gt; in memory, which is the kind of thing you only discover by running the build instead of reasoning about it. And the real work of this review was not the two-hour compile but the forty minutes of partition, rootfs and chroot plumbing needed to put a glibc userland on a musl board, because rustup has no musl-hosted riscv64 compiler and probably never will.&lt;/p&gt;
&lt;p&gt;That last point is the one I would generalize. RISC-V's hardware gap is closing slowly and measurably. Its software gap shows up as an afternoon spent on &lt;code&gt;debootstrap&lt;/code&gt; before you can run the benchmark at all, and that gap does not appear in any performance table.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;By the numbers:&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, 144 crates): &lt;strong&gt;7,824.00 s&lt;/strong&gt; mean, 2 h 10 min (σ 41.6 s, 0.53% CV)&lt;/li&gt;
&lt;li&gt;Warm-up build: 7,864 s, within 0.51% of the timed mean&lt;/li&gt;
&lt;li&gt;Fleet position: &lt;strong&gt;12th of 12&lt;/strong&gt;, 148.9x the NanoPC-T6N&lt;/li&gt;
&lt;li&gt;vs Pine64 Star64 (same ISA baseline, same rustc 1.98.1): &lt;strong&gt;16.96x&lt;/strong&gt; wall clock, &lt;strong&gt;4.24x&lt;/strong&gt; per core&lt;/li&gt;
&lt;li&gt;vs Horizon X3 CM (quad Cortex-A53, a 2012 core design): &lt;strong&gt;20.7x&lt;/strong&gt; slower&lt;/li&gt;
&lt;li&gt;Core-seconds: 7,824 against the Star64's 1,845 and the Orange Pi RV2's 5,205&lt;/li&gt;
&lt;li&gt;Peak swap used: &lt;strong&gt;5.6 MB&lt;/strong&gt; of 6,144 MB provisioned&lt;/li&gt;
&lt;li&gt;Thermals: 44.7 °C idle, 49.8 °C peak across a 2.2-hour build, no throttling, no cpufreq&lt;/li&gt;
&lt;li&gt;HEAD tier: not attempted, extrapolates to roughly fourteen hours per run&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Caveats.&lt;/strong&gt; The build ran inside a Debian trixie riscv64 chroot on a separate partition, not on the OpenWrt host userland. Execution was native, but glibc and Debian's toolchain packaging are not what the host OS provides. Commit &lt;code&gt;2821bba&lt;/code&gt; predates the project having a &lt;code&gt;Cargo.lock&lt;/code&gt;, so dependency versions resolved fresh. The chroot partition and swapfile are not persistent across reboot, since I added no fstab entry. Power draw was not measured.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Review Date: September 10, 2026&lt;/p&gt;
&lt;p&gt;Hardware Tested: MangoPi MQ Pro, Allwinner D1 (1x T-Head C906), 486 MB RAM, 32 GB microSD&lt;/p&gt;
&lt;p&gt;OS Tested: OpenWrt 25.12.5 (kernel 6.12.94) hosting a Debian 13 riscv64 chroot&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 build at commit &lt;code&gt;2821bba&lt;/code&gt;, rustc 1.98.1&lt;/p&gt;
&lt;p&gt;Conclusion: The slowest board on my bench and a perfectly reasonable embedded RISC-V target, which are not contradictory statements. Per core it is 4.2x behind SiFive's U74 rather than the 17x the wall clock suggests, and the afternoon it took to get a compiler onto a musl-only board says more about where RISC-V actually stands than the compile time does.&lt;/p&gt;</description><category>allwinner d1</category><category>benchmarks</category><category>chroot</category><category>debian</category><category>debootstrap</category><category>glibc</category><category>hardware review</category><category>mangopi</category><category>mq pro</category><category>musl</category><category>openwrt</category><category>risc v</category><category>riscv64</category><category>rust compilation</category><category>single board computers</category><category>single core</category><category>swap</category><category>t-head c906</category><guid>https://tinycomputers.io/posts/mangopi-mq-pro-riscv-review.html</guid><pubDate>Fri, 11 Sep 2026 14:30:00 GMT</pubDate></item></channel></rss>