-
-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Labels
Description
Basic information
- Board URL (official): https://www.arduino.cc/product-uno-q
- Board purchased from: Arduino store
- Board purchase date: October 7, 2025
- Board specs (as tested): 2GB RAM / 16 GB eMMC
- Board price (as tested): $44
Linux/system information
# output of `screenfetch`
_,met$$$$$gg. arduino@uno-q
,g$$$$$$$$$$$$$$$P. OS: Debian
,g$$P"" """Y$$.". Kernel: aarch64 Linux 6.16.0-geffa8626771a
,$$P' `$$$. Uptime: 9m
',$$P ,ggs. `$$b: Packages: 910
`d$$' ,$P"' . $$$ Shell: bash 5.2.37
$$P d$' , $$P Resolution: 1920x1080
$$: $$. - ,d$$' DE: Xfce
$$\; Y$b._ _,d$P' WM: Xfwm4
Y$$. `.`"Y$$$$P"' WM Theme: Adwaita
`$$b "-.__ GTK Theme: Adwaita-dark [GTK2]
`Y$$ Icon Theme: Tango
`Y$$. Font: Sans 10
`$$b. Disk: 7.2G / 15G (54%)
`Y$$b. CPU: Qualcomm Kryo-V2 @ 4x 2.016GHz
`"Y$b._ GPU:
`"""" RAM: 639MiB / 1741MiB
# output of `uname -a`
Linux uno-q 6.16.0-geffa8626771a #1 SMP PREEMPT Wed Aug 6 14:24:25 UTC 2025 aarch64 GNU/Linux
Benchmark results
CPU
- Geekbench 6: (187 single / 530 multi - https://browser.geekbench.com/v6/cpu/14705280/)
- 9.597 Gflops at 3.5W, for 2.74 Gflops/W (geerlingguy/top500-benchmark HPL result)
Power
- Idle power draw (at wall): 0.5 W
- Maximum simulated power draw (
stress-ng --matrix 0): 1.9 W - During Geekbench multicore benchmark: 2.5 W
- During
top500HPL benchmark: 3.5 W
Note: Power measurements taking with Uno Q plugged directly into USB-C power adapter, using SSH to access the Uno Q via WiFi. When used as a desktop, with an external USB-C docking station, the full setup used 4-5W more than when plugged in directly.
Disk
Built-in eMMC (Kingston MW2816)
| Benchmark | Result |
|---|---|
| iozone 4K random read | 11.42 MB/s |
| iozone 4K random write | 3.43 MB/s |
| iozone 1M random read | 211.33 MB/s |
| iozone 1M random write | 40.12 MB/s |
| iozone 1M sequential read | 208.89 MB/s |
| iozone 1M sequential write | 80.52 MB/s |
Network
iperf3 results over WiFi:
iperf3 -c $SERVER_IP: 277 Mbpsiperf3 -c $SERVER_IP --reverse: 174 Mbpsiperf3 -c $SERVER_IP --bidir: 217 Mbps up, 65 Mbps down
GPU
glmark2
glmark2-es2 results:
=======================================================
glmark2 2023.01
=======================================================
OpenGL Information
GL_VENDOR: freedreno
GL_RENDERER: FD702
GL_VERSION: OpenGL ES 3.1 Mesa 25.1.0-1qcom1
Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
Surface Size: 800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 379 FrameTime: 2.643 ms
[build] use-vbo=true: FPS: 419 FrameTime: 2.389 ms
[texture] texture-filter=nearest: FPS: 401 FrameTime: 2.496 ms
[texture] texture-filter=linear: FPS: 399 FrameTime: 2.509 ms
[texture] texture-filter=mipmap: FPS: 396 FrameTime: 2.531 ms
[shading] shading=gouraud: FPS: 364 FrameTime: 2.751 ms
[shading] shading=blinn-phong-inf: FPS: 351 FrameTime: 2.850 ms
[shading] shading=phong: FPS: 317 FrameTime: 3.161 ms
[shading] shading=cel: FPS: 305 FrameTime: 3.280 ms
[bump] bump-render=high-poly: FPS: 275 FrameTime: 3.639 ms
[bump] bump-render=normals: FPS: 416 FrameTime: 2.409 ms
[bump] bump-render=height: FPS: 381 FrameTime: 2.625 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 247 FrameTime: 4.049 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 143 FrameTime: 7.013 ms
[pulsar] light=false:quads=5:texture=false: FPS: 402 FrameTime: 2.490 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 152 FrameTime: 6.618 ms
[desktop] effect=shadow:windows=4: FPS: 228 FrameTime: 4.387 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 140 FrameTime: 7.148 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 147 FrameTime: 6.839 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 194 FrameTime: 5.170 ms
[ideas] speed=duration: FPS: 305 FrameTime: 3.287 ms
[jellyfish] <default>: FPS: 229 FrameTime: 4.377 ms
[terrain] <default>: FPS: 32 FrameTime: 31.668 ms
[shadow] <default>: FPS: 217 FrameTime: 4.618 ms
[refract] <default>: FPS: 62 FrameTime: 16.336 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 366 FrameTime: 2.736 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 311 FrameTime: 3.218 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 366 FrameTime: 2.739 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 345 FrameTime: 2.900 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 308 FrameTime: 3.249 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 342 FrameTime: 2.926 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 345 FrameTime: 2.905 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 326 FrameTime: 3.069 ms
=======================================================
glmark2 Score: 290
=======================================================
vkmark
vkmark results:
MESA: error: DRM_IOCTL_VIRTGPU_GET_CAPS failed with Bad file descriptor
MESA: error: DRM_IOCTL_VIRTGPU_CONTEXT_INIT failed with Bad file descriptor, continuing without context...
MESA: error: DRM_VIRTGPU_RESOURCE_CREATE_BLOB failed with Bad file descriptor
MESA: error: Failed to create virtgpu AddressSpaceStream
MESA: error: DRM_VIRTGPU_RESOURCE_CREATE_BLOB failed with Bad file descriptor
MESA: error: Failed to create virtgpu AddressSpaceStream
MESA: error: DRM_VIRTGPU_RESOURCE_CREATE_BLOB failed with Bad file descriptor
MESA: error: Failed to create virtgpu AddressSpaceStream
MESA: error: DRM_VIRTGPU_RESOURCE_CREATE_BLOB failed with Bad file descriptor
MESA: error: Failed to create virtgpu AddressSpaceStream
MESA: error: DRM_VIRTGPU_RESOURCE_CREATE_BLOB failed with Bad file descriptor
MESA: error: Failed to create virtgpu AddressSpaceStream
=======================================================
vkmark 2025.01
=======================================================
Vendor ID: 0x5143
Device ID: 0x7000200
Device Name: Turnip Adreno (TM) 702
Driver Version: 104861696
Device UUID: b437e45a5ddf5c12279db589b9834ecd
=======================================================
[vertex] device-local=true: FPS: 491 FrameTime: 2.037 ms
[vertex] device-local=false: FPS: 494 FrameTime: 2.024 ms
[texture] anisotropy=0: FPS: 442 FrameTime: 2.262 ms
[texture] anisotropy=16: FPS: 435 FrameTime: 2.299 ms
[shading] shading=gouraud: FPS: 408 FrameTime: 2.451 ms
[shading] shading=blinn-phong-inf: FPS: 410 FrameTime: 2.439 ms
[shading] shading=phong: FPS: 355 FrameTime: 2.817 ms
[shading] shading=cel: FPS: 336 FrameTime: 2.976 ms
[effect2d] kernel=edge: FPS: 558 FrameTime: 1.792 ms
[effect2d] kernel=blur: FPS: 93 FrameTime: 10.753 ms
[desktop] <default>: FPS: 592 FrameTime: 1.689 ms
[cube] <default>: FPS: 2303 FrameTime: 0.434 ms
[clear] <default>: FPS: 2724 FrameTime: 0.367 ms
=======================================================
vkmark Score: 741
=======================================================
GravityMark
GravityMark results:
1. Download the latest version of GravityMark: https://gravitymark.tellusim.com
2. Run `chmod +x [downloaded_filename].run`
3. Run `sudo ./[downloaded_filename].run` and press `y` to accept the terms.
4. Open the link it prints, and run the Benchmark defaults, changing to 720p resolution and 50,000 asteroids.
Note: These benchmarks require an active display on the device. Not all devices may be able to run glmark2-es2, so in that case, make a note and move on!
AI / LLM Inference
Basic ollama LLM model inference results:
Running benchmark 3 times using model: tinyllama:1.1b
| Run | Eval Rate (Tokens/Second) |
|---|---|
| 1 | 5.34 tokens/s |
| 2 | 5.50 tokens/s |
| 3 | 5.50 tokens/s |
| Average Eval Rate | 5.44 tokens/second |
System used around 6.1W during inference.
Memory
tinymembench results:
Click to expand memory benchmark result
tinymembench v0.4.10 (simple benchmark for memory throughput and latency)
==========================================================================
== Memory bandwidth tests ==
== ==
== Note 1: 1MB = 1000000 bytes ==
== Note 2: Results for 'copy' tests show how many bytes can be ==
== copied per second (adding together read and writen ==
== bytes would have provided twice higher numbers) ==
== Note 3: 2-pass copy means that we are using a small temporary buffer ==
== to first fetch data into it, and only then write it to the ==
== destination (source -> L1 cache, L1 cache -> destination) ==
== Note 4: If sample standard deviation exceeds 0.1%, it is shown in ==
== brackets ==
==========================================================================
C copy backwards : 2159.4 MB/s (4.2%)
C copy backwards (32 byte blocks) : 2147.8 MB/s (4.2%)
C copy backwards (64 byte blocks) : 2203.5 MB/s (1.9%)
C copy : 2212.0 MB/s (1.8%)
C copy prefetched (32 bytes step) : 1171.3 MB/s (1.9%)
C copy prefetched (64 bytes step) : 1268.1 MB/s (0.7%)
C 2-pass copy : 1310.6 MB/s (0.5%)
C 2-pass copy prefetched (32 bytes step) : 937.4 MB/s (1.8%)
C 2-pass copy prefetched (64 bytes step) : 858.8 MB/s (1.0%)
C fill : 11757.8 MB/s (0.4%)
C fill (shuffle within 16 byte blocks) : 11748.6 MB/s (0.3%)
C fill (shuffle within 32 byte blocks) : 11764.3 MB/s (0.2%)
C fill (shuffle within 64 byte blocks) : 11786.0 MB/s (0.3%)
NEON 64x2 COPY : 2300.0 MB/s (0.4%)
NEON 64x2x4 COPY : 2297.3 MB/s (0.4%)
NEON 64x1x4_x2 COPY : 2292.1 MB/s (0.5%)
NEON 64x2 COPY prefetch x2 : 380.8 MB/s (0.8%)
NEON 64x2x4 COPY prefetch x1 : 2785.0 MB/s (0.9%)
NEON 64x2 COPY prefetch x1 : 2783.8 MB/s (0.5%)
NEON 64x2x4 COPY prefetch x1 : 2790.5 MB/s (0.6%)
---
standard memcpy : 2225.5 MB/s (0.8%)
standard memset : 11793.2 MB/s (0.1%)
---
NEON LDP/STP copy : 2268.5 MB/s (0.9%)
NEON LDP/STP copy pldl2strm (32 bytes step) : 1090.2 MB/s (1.0%)
NEON LDP/STP copy pldl2strm (64 bytes step) : 1275.3 MB/s (0.3%)
NEON LDP/STP copy pldl1keep (32 bytes step) : 2715.2 MB/s (0.8%)
NEON LDP/STP copy pldl1keep (64 bytes step) : 2732.3 MB/s (0.4%)
NEON LD1/ST1 copy : 2305.8 MB/s (0.5%)
NEON STP fill : 11796.4 MB/s (0.9%)
NEON STNP fill : 11271.1 MB/s (2.0%)
ARM LDP/STP copy : 2270.0 MB/s (0.6%)
ARM STP fill : 11796.2 MB/s (0.2%)
ARM STNP fill : 11260.5 MB/s (2.6%)
==========================================================================
== Framebuffer read tests. ==
== ==
== Many ARM devices use a part of the system memory as the framebuffer, ==
== typically mapped as uncached but with write-combining enabled. ==
== Writes to such framebuffers are quite fast, but reads are much ==
== slower and very sensitive to the alignment and the selection of ==
== CPU instructions which are used for accessing memory. ==
== ==
== Many x86 systems allocate the framebuffer in the GPU memory, ==
== accessible for the CPU via a relatively slow PCI-E bus. Moreover, ==
== PCI-E is asymmetric and handles reads a lot worse than writes. ==
== ==
== If uncached framebuffer reads are reasonably fast (at least 100 MB/s ==
== or preferably >300 MB/s), then using the shadow framebuffer layer ==
== is not necessary in Xorg DDX drivers, resulting in a nice overall ==
== performance improvement. For example, the xf86-video-fbturbo DDX ==
== uses this trick. ==
==========================================================================
NEON LDP/STP copy (from framebuffer) : 220.4 MB/s (2.5%)
NEON LDP/STP 2-pass copy (from framebuffer) : 198.0 MB/s
NEON LD1/ST1 copy (from framebuffer) : 54.7 MB/s
NEON LD1/ST1 2-pass copy (from framebuffer) : 52.6 MB/s
ARM LDP/STP copy (from framebuffer) : 108.8 MB/s
ARM LDP/STP 2-pass copy (from framebuffer) : 103.6 MB/s
==========================================================================
== Memory latency test ==
== ==
== Average time is measured for random memory accesses in the buffers ==
== of different sizes. The larger is the buffer, the more significant ==
== are relative contributions of TLB, L1/L2 cache misses and SDRAM ==
== accesses. For extremely large buffer sizes we are expecting to see ==
== page table walk with several requests to SDRAM for almost every ==
== memory access (though 64MiB is not nearly large enough to experience ==
== this effect to its fullest). ==
== ==
== Note 1: All the numbers are representing extra time, which needs to ==
== be added to L1 cache latency. The cycle timings for L1 cache ==
== latency can be usually found in the processor documentation. ==
== Note 2: Dual random read means that we are simultaneously performing ==
== two independent memory accesses at a time. In the case if ==
== the memory subsystem can't handle multiple outstanding ==
== requests, dual random read has the same timings as two ==
== single reads performed one after another. ==
==========================================================================
block size : single random read / dual random read, [MADV_NOHUGEPAGE]
1024 : 0.0 ns / 0.0 ns
2048 : 0.0 ns / 0.0 ns
4096 : 0.0 ns / 0.0 ns
8192 : 0.0 ns / 0.0 ns
16384 : 0.0 ns / 0.0 ns
32768 : 0.0 ns / 0.0 ns
65536 : 3.5 ns / 5.8 ns
131072 : 5.3 ns / 8.1 ns
262144 : 6.2 ns / 9.1 ns
524288 : 8.1 ns / 11.5 ns
1048576 : 89.8 ns / 137.7 ns
2097152 : 134.2 ns / 176.4 ns
4194304 : 160.6 ns / 196.2 ns
8388608 : 171.7 ns / 200.1 ns
16777216 : 175.5 ns / 204.6 ns
33554432 : 190.4 ns / 209.1 ns
67108864 : 196.1 ns / 214.1 ns
block size : single random read / dual random read, [MADV_HUGEPAGE]
1024 : 0.0 ns / 0.0 ns
2048 : 0.0 ns / 0.0 ns
4096 : 0.0 ns / 0.0 ns
8192 : 0.0 ns / 0.0 ns
16384 : 0.0 ns / 0.0 ns
32768 : 0.0 ns / 0.0 ns
65536 : 3.5 ns / 5.7 ns
131072 : 5.3 ns / 8.2 ns
262144 : 6.2 ns / 9.1 ns
524288 : 8.2 ns / 11.9 ns
1048576 : 91.7 ns / 139.5 ns
2097152 : 135.9 ns / 178.3 ns
4194304 : 157.7 ns / 191.9 ns
8388608 : 168.3 ns / 194.3 ns
16777216 : 171.2 ns / 197.7 ns
33554432 : 176.5 ns / 198.3 ns
67108864 : 177.8 ns / 198.7 ns
Core to Core Memory Latency
sbc-bench results
Run sbc-bench and paste a link to the results here:
wget https://raw.githubusercontent.com/ThomasKaiser/sbc-bench/master/sbc-bench.sh
sudo /bin/bash ./sbc-bench.sh -r
Phoronix Test Suite
Results from pi-general-benchmark.sh:
- pts/encode-mp3: 37.043 sec
- pts/x264 4K: TODO fps
- pts/x264 1080p: TODO fps
- pts/phpbench: 107127
- pts/build-linux-kernel (defconfig): TODO sec
