A few days ago I finally went through the Raspberry Pi 5 kit I received last September going through the items and booting it with Raspberry Pi OS bookworm. I’ve now had time to perform more tests to check out the performance with benchmarks and test various features on the Raspberry Pi 5. So I’ll report my experience in the second part of the review and compare the Raspberry Pi 5 to the Raspberry Pi 4 and some other Arm Linux SBCs.
System information in Raspberry Pi OS Bookworm
Last time around, I installed the Raspberry Pi 5 in its official case, but for most of the testing, I decided to go back to the bare board fitted with its active cooler since it’s the best cooling option as we’ll see further in the review.
Let’s first check some of the system information:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
pi@raspberrypi:~ $ cat /etc/issue Debian GNU/Linux 12 \n \l pi@raspberrypi:~ $ uname -a Linux raspberrypi 6.1.0-rpi4-rpi-2712 #1 SMP PREEMPT Debian 1:6.1.54-1+rpt2 (2023-10-05) aarch64 GNU/Linux pi@raspberrypi:~ $ df -h Filesystem Size Used Avail Use% Mounted on udev 3.8G 0 3.8G 0% /dev tmpfs 806M 5.8M 800M 1% /run /dev/mmcblk0p2 29G 4.7G 23G 17% / tmpfs 4.0G 368K 4.0G 1% /dev/shm tmpfs 5.0M 48K 5.0M 1% /run/lock /dev/mmcblk0p1 510M 73M 438M 15% /boot/firmware tmpfs 806M 144K 806M 1% /run/user/1000 pi@raspberrypi:~ $ cat /proc/cpuinfo processor : 0 BogoMIPS : 108.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x4 CPU part : 0xd0b CPU revision : 1 ... processor : 3 BogoMIPS : 108.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x4 CPU part : 0xd0b CPU revision : 1 Hardware : BCM2835 Revision : d04170 Serial : 77b8297ac79ffbf1 Model : Raspberry Pi 5 Model B Rev 1.0 |
The Raspberry Pi 5 runs Debian 12 with Linux 6.1 as expected and the Broadcom BCM2712 processor (still shown as BCM2835 as in all RPi boards) does come with four Cortex-A76 cores.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
pi@raspberrypi:~ $ inxi -Fc0 System: Host: raspberrypi Kernel: 6.1.0-rpi4-rpi-2712 arch: aarch64 bits: 64 Console: pty pts/0 Distro: Debian GNU/Linux 12 (bookworm) Machine: Type: ARM System: Raspberry Pi 5 Model B Rev 1.0 details: BCM2835 rev: d04170 serial: 77b8297ac79ffbf1 CPU: Info: quad core model: N/A variant: cortex-a76 bits: 64 type: MCP Speed (MHz): avg: 1000 min/max: 1000/2400 cores: 1: 1000 2: 1000 3: 1000 4: 1000 Graphics: Device-1: bcm2712-hdmi0 driver: vc4_hdmi v: N/A Device-2: bcm2712-hdmi1 driver: vc4_hdmi v: N/A Display: wayland server: X.org v: 1.21.1.7 with: Xwayland v: 22.1.9 compositor: wayfire v: 0.7.5 driver: gpu: vc4-drm,vc4_crtc,vc4_dpi,vc4_dsi,vc4_firmware_kms,vc4_hdmi,vc4_hvs,vc4_txp,vc4_v3d,vc4_vec tty: 80x24 resolution: 1280x800 API: EGL/GBM Message: No known Wayland EGL/GBM data sources. Audio: Device-1: bcm2712-hdmi0 driver: vc4_hdmi Device-2: bcm2712-hdmi1 driver: vc4_hdmi API: ALSA v: k6.1.0-rpi4-rpi-2712 status: kernel-api Server-1: PipeWire v: 0.3.65 status: active Network: Device-1: driver: rp1 IF: wlan0 state: up mac: d8:3a:dd:7b:e6:58 IF-ID-1: eth0 state: down mac: d8:3a:dd:7b:e6:56 Bluetooth: Device-1: bcm7271-uart driver: bcm7271_uart Report: hciconfig ID: hci0 state: up address: D8:3A:DD:7B:E6:59 bt-v: 3.0 Device-2: bcm7271-uart driver: N/A Drives: Local Storage: total: 29.72 GiB used: 4.69 GiB (15.8%) ID-1: /dev/mmcblk0 model: SL32G size: 29.72 GiB Partition: ID-1: / size: 28.7 GiB used: 4.62 GiB (16.1%) fs: ext4 dev: /dev/mmcblk0p2 Swap: ID-1: swap-1 type: file size: 100 MiB used: 0 KiB (0.0%) file: /var/swap Sensors: System Temperatures: cpu: 59.0 C mobo: N/A Fan Speeds (RPM): cpu: 2951 Info: Processes: 181 Uptime: 17h 24m Memory: 7.87 GiB used: 525.5 MiB (6.5%) gpu: 4 MiB Init: systemd target: graphical (5) Shell: Bash inxi: 3.3.26 |
inxi utility further confirms my board comes with 8GB RAM, the 2.4 GHz frequency advertised for the BCM2712 CPU, and lists the peripherals with two HDMI ports, Ethernet, WiFi, and Bluetooth, and we can also see Wayland and PipeWire as now used in Raspberry Pi OS as was announced during the release of the Bookworm version of the operating system. The microSD card capacity is reported correctly at around 32GB, and we can see 100MB of it is used for swap. There also appears to be a reference to the Raspberry Pi RP1 chip in the Network section, although it’s the same for the driver…
If anybody is interested I also saved the Raspberry Pi 5 Linux boot log.
Raspberry Pi 5 Benchmarks
Let’s start the Raspberry Pi 5 benchmarks with Thomas sbc-bench.sh script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
pi@raspberrypi:~ $ sudo ./sbc-bench.sh -r Starting to examine hardware/software for review purposes... sbc-bench v0.9.50 Installing needed tools: Done. Checking cpufreq OPP. Done. Executing tinymembench. Done. Executing RAM latency tester. Done. Executing OpenSSL benchmark. Done. Executing 7-zip benchmark. Done. Throttling test: heating up the device, 5 more minutes to wait. Done. Checking cpufreq OPP again. Done (12 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * No throttling Full results uploaded to http://ix.io/4KDM # Raspberry Pi 5 Model B Rev 1.0 Tested with sbc-bench v0.9.50 on Sat, 04 Nov 2023 11:21:04 +0700. Full info: [http://ix.io/4KDM](http://ix.io/4KDM) ### General information: BCM2712, Kernel: aarch64, Userland: arm64 CPU sysfs topology (clusters, cpufreq members, clockspeeds) cpufreq min max CPU cluster policy speed speed core type 0 0 0 1000 2400 Cortex-A76 / r4p1 1 0 0 1000 2400 Cortex-A76 / r4p1 2 0 0 1000 2400 Cortex-A76 / r4p1 3 0 0 1000 2400 Cortex-A76 / r4p1 8053 KB available RAM ### Governors/policies (performance vs. idle consumption): Original governor settings: cpufreq-policy0: ondemand / 1800 MHz (conservative ondemand userspace powersave performance schedutil / 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400) Tuned governor settings: cpufreq-policy0: performance / 2400 MHz Status of performance related policies found below /sys: /sys/module/pcie_aspm/parameters/policy: default [performance] powersave powersupersave ### Clockspeeds (idle vs. heated up): Before at 48.0°C: cpu0 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 After at 65.5°C: cpu0 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 ### Performance baseline * memcpy: 5158.3 MB/s, memchr: 13463.2 MB/s, memset: 11671.4 MB/s * 16M latency: 122.3 122.6 127.0 120.9 121.5 131.2 142.4 155.4 * 128M latency: 141.0 151.6 141.3 140.0 140.9 140.6 140.8 142.7 * 7-zip MIPS (3 consecutive runs): 10840, 10973, 10980 (10930 avg), single-threaded: 3136 * `aes-256-cbc 589992.63k 1051401.64k 1273872.30k 1338653.35k 1365144.92k 1367588.86k` * `aes-256-cbc 590378.41k 1051301.08k 1273969.32k 1340480.17k 1365131.26k 1367736.32k` ### PCIe and storage devices: * Raspberry Pi Ltd. RP1: Speed 5GT/s, Width x4, driver in use: rp1 * 29.7GB "SanDisk SL32G" UHS SDR104 SD card as /dev/mmcblk0: date 02/2023, manfid/oemid: 0x000003/0x5344, hw/fw rev: 0x8/0x0 ### Swap configuration: * /var/swap on /dev/mmcblk0p2: 100.0M (0K used) on ultra slow SD card storage ### Software versions: * Debian GNU/Linux 12 (bookworm) * Build scripts: http://archive.raspberrypi.com/debian/ bookworm main * Compiler: /usr/bin/gcc (Debian 12.2.0-14) 12.2.0 / aarch64-linux-gnu * ThreadX: c2da2ae7 / 2023/10/18 18:30:17 ### Kernel info: * `/proc/cmdline: coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 smsc95xx.macaddr=D8:3A:DD:7B:E6:56 vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000 console=ttyAMA10,115200 console=tty1 root=PARTUUID=57655639-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=TH` * Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl * Vulnerability Spectre v1: Mitigation; __user pointer sanitization * Vulnerability Spectre v2: Mitigation; CSV2, BHB * Kernel 6.1.0-rpi4-rpi-2712 / CONFIG_HZ=250 Kernel 6.1.0 is not latest 6.1.61 LTS that was released on 2023-11-02. See https://endoflife.date/linux for details. It is somewhat likely that a lot of exploitable vulnerabilities exist for this kernel as well as many unfixed bugs. All known settings adjusted for performance. Device now ready for benchmarking. Once finished stop with [ctrl]-[c] to get info about throttling, frequency cap and too high background activity all potentially invalidating benchmark scores. All changes with storage and PCIe devices as well as suspicious dmesg contents will be reported too. Time fake/real load %cpu %sys %usr %nice %io %irq Temp VCore PMIC DC(V) 11:21:04: 2400/2400MHz 3.82 1% 0% 1% 0% 0% 0% 57.9°C 0.9100V 3.5W 5.14V 11:22:04: 2400/2400MHz 1.40 0% 0% 0% 0% 0% 0% 52.4°C 0.9100V 3.1W 5.15V 11:23:05: 2400/2400MHz 0.51 0% 0% 0% 0% 0% 0% 53.5°C 0.9100V 3.1W 5.15V |
First, the good news is that there was no CPU throttling and the temperature never exceeded 66.1°C when using the active cooler in a room with an ambient temperature of around 28°C.
Let’s compare the memory bandwidth and 7-zip results against the Raspberry Pi 4 and other SBCs such as Khadas VIM4 (Amlogic A311D2), ODROID-N2+ (Amlogic S922X), Radxa Rock 5B (Rockchip RK3588), and others.
The memory bandwidth of the Raspberry Pi 5 is much higher than the Raspberry Pi 4, but based on memcpy and memset results the Rockchip RK3588 platforms are still way ahead in that metric, and they also outperform the Raspberry Pi 5 in 7-zip benchmarks which benefit from a larger number of cores (Rockchip RK3588 comes with 4x Cortex-A76 cores, 4x Cortex-A55 cores). The Raspberry Pi 5’s 7-zip performance is about the same as the Khadas VIM4 and ODROID-N2+ SBCs, and about double the performance of the previous generation Raspberry Pi 4.
The Broadcom BCM2712 is the first processor used in a Raspberry Pi board that comes with Armv8 Crypto extension and that shows in AES-256 benchmarks with the new Raspberry Pi 5 over 21 times faster than the Raspberry Pi 4.
Time to have a look a web browsing performance, especially since the Raspberry Pi OS Bookworm introduced an optimized version of Firefox besides the usual Chromium browser.
We’ll first use Speedometer 2.0 to check the performance in Chromium…
… and in Firefox.
Firefox is often significantly slower than Chromium in benchmarks, so Raspberry Pi Ltd and Mozilla have done a relatively good job optimizing Firefox for the Raspberry Pi 5 with Chromium achieving 63.5 runs per minute against 56.6 on Firefox. The chart below compares that performance against the Amlogic A311D2-based Khadas VIM4 (35.6 points), the Amlogic A311D-powered Khadas VIM3 (against 25.6 points), the Rockchip RK3588S-based Khadas Edge2 Pro, and a Raspberry Pi 4 overclocked at 2.0 GHz (21 points).
Please note that web browsers are constantly evolving with performance optimizations (or bloat) getting added after each release, and we did not redo the tests on older platforms due to time constraints.
I also ran the glmark2 benchmark to test graphics performance on the Raspberry Pi 5.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
pi@raspberrypi:~ $ DISPLAY=:0 glmark2 WARNING: v3d support for hw version 71 is neither a complete nor a conformant OpenGL implementation. Testing use only. ======================================================= glmark2 2023.01 ======================================================= OpenGL Information GL_VENDOR: Broadcom GL_RENDERER: V3D 7.1 GL_VERSION: 3.1 Mesa 23.2.1-0+rpt2 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: 1074 FrameTime: 0.932 ms [build] use-vbo=true: FPS: 1220 FrameTime: 0.820 ms [texture] texture-filter=nearest: FPS: 1097 FrameTime: 0.912 ms [texture] texture-filter=linear: FPS: 1090 FrameTime: 0.918 ms [texture] texture-filter=mipmap: FPS: 1101 FrameTime: 0.909 ms [shading] shading=gouraud: FPS: 1121 FrameTime: 0.892 ms [shading] shading=blinn-phong-inf: FPS: 1117 FrameTime: 0.895 ms [shading] shading=phong: FPS: 1078 FrameTime: 0.928 ms [shading] shading=cel: FPS: 1068 FrameTime: 0.937 ms [bump] bump-render=high-poly: FPS: 793 FrameTime: 1.261 ms [bump] bump-render=normals: FPS: 1170 FrameTime: 0.855 ms [bump] bump-render=height: FPS: 1129 FrameTime: 0.886 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 704 FrameTime: 1.422 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 368 FrameTime: 2.723 ms [pulsar] light=false:quads=5:texture=false: FPS: 1260 FrameTime: 0.794 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 286 FrameTime: 3.500 ms [desktop] effect=shadow:windows=4: FPS: 1048 FrameTime: 0.955 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 457 FrameTime: 2.189 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 445 FrameTime: 2.248 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 542 FrameTime: 1.846 ms [ideas] speed=duration: FPS: 1123 FrameTime: 0.891 ms [jellyfish] <default>: FPS: 904 FrameTime: 1.107 ms [terrain] <default>: FPS: 67 FrameTime: 14.928 ms [shadow] <default>: FPS: 160 FrameTime: 6.280 ms [refract] <default>: FPS: 73 FrameTime: 13.854 ms [conditionals] fragment-steps=0:vertex-steps=0: FPS: 1288 FrameTime: 0.777 ms [conditionals] fragment-steps=5:vertex-steps=0: FPS: 1255 FrameTime: 0.797 ms [conditionals] fragment-steps=0:vertex-steps=5: FPS: 1288 FrameTime: 0.777 ms [function] fragment-complexity=low:fragment-steps=5: FPS: 1283 FrameTime: 0.780 ms [function] fragment-complexity=medium:fragment-steps=5: FPS: 1116 FrameTime: 0.896 ms [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1282 FrameTime: 0.780 ms [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1281 FrameTime: 0.781 ms [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1118 FrameTime: 0.895 ms ======================================================= glmark2 Score: 920 ======================================================= |
920 points look to be on the low side, as a Rockchip RK3588 hardware such as the NanoPi R6S mini PC router achieved 4,525 points with glmark2-es2-wayland… [Update: I was unable to find glmark2-es2-wayland yesterday, but it’s just an apt install:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
pi@raspberrypi:~ $ glmark2-es2-wayland WARNING: v3d support for hw version 71 is neither a complete nor a conformant OpenGL implementation. Testing use only. ======================================================= glmark2 2023.01 ======================================================= OpenGL Information GL_VENDOR: Broadcom GL_RENDERER: V3D 7.1 GL_VERSION: OpenGL ES 3.1 Mesa 23.2.1-0+rpt2 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: 2731 FrameTime: 0.366 ms [build] use-vbo=true: FPS: 3490 FrameTime: 0.287 ms [texture] texture-filter=nearest: FPS: 2725 FrameTime: 0.367 ms [texture] texture-filter=linear: FPS: 2677 FrameTime: 0.374 ms [texture] texture-filter=mipmap: FPS: 2786 FrameTime: 0.359 ms [shading] shading=gouraud: FPS: 2776 FrameTime: 0.360 ms [shading] shading=blinn-phong-inf: FPS: 2762 FrameTime: 0.362 ms [shading] shading=phong: FPS: 2414 FrameTime: 0.414 ms [shading] shading=cel: FPS: 2384 FrameTime: 0.420 ms [bump] bump-render=high-poly: FPS: 1479 FrameTime: 0.676 ms [bump] bump-render=normals: FPS: 3272 FrameTime: 0.306 ms [bump] bump-render=height: FPS: 3020 FrameTime: 0.331 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1245 FrameTime: 0.804 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 480 FrameTime: 2.085 ms [pulsar] light=false:quads=5:texture=false: FPS: 3070 FrameTime: 0.326 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 292 FrameTime: 3.427 ms [desktop] effect=shadow:windows=4: FPS: 1081 FrameTime: 0.926 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 487 FrameTime: 2.055 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 469 FrameTime: 2.135 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 574 FrameTime: 1.743 ms [ideas] speed=duration: FPS: 2244 FrameTime: 0.446 ms [jellyfish] <default>: FPS: 1393 FrameTime: 0.718 ms [terrain] <default>: FPS: 72 FrameTime: 13.990 ms [shadow] <default>: FPS: 178 FrameTime: 5.647 ms [refract] <default>: FPS: 76 FrameTime: 13.177 ms [conditionals] fragment-steps=0:vertex-steps=0: FPS: 3487 FrameTime: 0.287 ms [conditionals] fragment-steps=5:vertex-steps=0: FPS: 2687 FrameTime: 0.372 ms [conditionals] fragment-steps=0:vertex-steps=5: FPS: 3384 FrameTime: 0.296 ms [function] fragment-complexity=low:fragment-steps=5: FPS: 3073 FrameTime: 0.325 ms [function] fragment-complexity=medium:fragment-steps=5: FPS: 2308 FrameTime: 0.433 ms [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 2979 FrameTime: 0.336 ms [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 2987 FrameTime: 0.335 ms [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2164 FrameTime: 0.462 ms ======================================================= glmark2 Score: 2036 ======================================================= |
The score is indeed different, and does not look as bad. But 2,036 points is still significantly lower than the 4,000-4,500 points achieved on Rockchip RK3588 hardware.
]
The WebGL Aquarium demo works fine with Chromium and Firefox, although the frame rate is significantly better with the Chromium browser.
For reference, in the NanoPi R6S review, I mentioned that “the demo renders smoothly with 1000 fish at 60 fps, and it’s still good with 5,000 fish at around 30 fps”, so the Raspberry Pi 5 is indeed not quite as performant as Rockchip RK3588/RK3588S system when it comes to graphics either.
So far, we can say the benchmarks show that Raspberry Pi 5 is a clear step up compared to the Raspberry Pi 4 with typically 2 to 3 times better performance, and even over 20 times for cryptographic workload (like AES, TLS, etc…), but it does not quite reach the performance of the popular Rockchip RK3588 CPU although it can get close for some specific workloads.
microSD storage and USB 3.0 benchmarks
I built iozone for the Raspberry Pi to run the storage benchmarks on both the provided 32GB Class A1 microSD card as part of the Raspberry Pi 5 kit and a USB 3.0 NVMe SSD drive.
Results for the microSD card:
1 2 3 4 5 6 7 8 9 10 11 12 |
pi@raspberrypi:~/$ sudo iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 Iozone: Performance Test of File I/O Version $Revision: 3.506 $ Compiled for 64 bit mode. Build: linux-arm random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 4434 4568 14278 14268 11953 2372 102400 16 6470 8731 35712 35647 28960 6648 102400 512 17973 19024 89484 89484 88337 18580 102400 1024 18912 21470 87139 89739 89001 17230 102400 16384 19198 18610 89380 89382 89369 19610 |
SD card performance is supposed to be improved thanks to the RP1 chipset, but it’s hard to see with that specific microSD card. Reads are up to about 89MB/s and writes max out at 19MB/s. Random read and write speed is also important, and it looks decent which is probably why I didn’t notice any massive slowdowns due to I/Os during use. But note that (more expensive) competing boards with built-in 32GB or 64GB eMMC flash are usually much faster and more responsive.
I also tested the USB 3.0 bandwidth (5 Gbps) with an ORICO enclosure fitted with an Apacer NVMe SSD formatted with EXT-4.
Top USB 3.0 port:
1 2 3 4 5 6 7 8 |
pi@raspberrypi:/media/pi/CNXSOFT-ORICO $ sudo iozone -e -I -a -s 1000M -r 16384k -i 0 -i 1 Iozone: Performance Test of File I/O Version $Revision: 3.506 $ Compiled for 64 bit mode. Build: linux-arm random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024000 16384 411901 411707 388762 389020 |
Bottom USB 3.0 port:
1 2 3 4 5 |
pi@raspberrypi:/media/pi/CNXSOFT-ORICO $ sudo iozone -e -I -a -s 1000M -r 16384k -i 0 -i 1 random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024000 16384 411677 410461 388602 388934 |
In both cases, we got about 388MB/s sequential read speeds and 411MB/s write speeds, or about as expected for a 5 Gbps USB link. It’s unclear why writes are faster than reads as we disabled caching in the iozone command.
Gigabit Ethernet, WiFi, and Bluetooth
We’ll now use iperf3 to test gigabit Ethernet and WiFi 5 network performance. I’ll also test Bluetooth with my phone and a Bluetooth headset.
Here’s the Raspberry Pi 5’s gigabit Ethernet download speed using UP Xtreme 11 Edge mini PC‘s 2.5 GbE port on the other side of the connection.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
devkit@UPX-i11:~$ iperf3 -t 60 -c 192.168.31.209 -i 10 Connecting to host 192.168.31.209, port 5201 [ 5] local 192.168.31.12 port 42968 connected to 192.168.31.209 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 1.10 GBytes 944 Mbits/sec 0 583 KBytes [ 5] 10.00-20.00 sec 1.10 GBytes 942 Mbits/sec 0 666 KBytes [ 5] 20.00-30.00 sec 1.10 GBytes 942 Mbits/sec 0 666 KBytes [ 5] 30.00-40.00 sec 1.10 GBytes 942 Mbits/sec 0 988 KBytes [ 5] 40.00-50.00 sec 1.10 GBytes 942 Mbits/sec 0 988 KBytes [ 5] 50.00-60.00 sec 1.10 GBytes 942 Mbits/sec 0 988 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 6.58 GBytes 942 Mbits/sec 0 sender [ 5] 0.00-60.00 sec 6.58 GBytes 942 Mbits/sec receiver |
Now for upload:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
devkit@UPX-i11:~$ iperf3 -t 60 -c 192.168.31.209 -i 10 -R Connecting to host 192.168.31.209, port 5201 Reverse mode, remote host 192.168.31.209 is sending [ 5] local 192.168.31.12 port 56822 connected to 192.168.31.209 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 1.09 GBytes 936 Mbits/sec [ 5] 10.00-20.00 sec 1.09 GBytes 936 Mbits/sec [ 5] 20.00-30.00 sec 1.09 GBytes 936 Mbits/sec [ 5] 30.00-40.00 sec 1.09 GBytes 936 Mbits/sec [ 5] 40.00-50.00 sec 1.09 GBytes 936 Mbits/sec [ 5] 50.00-60.00 sec 1.09 GBytes 936 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 6.54 GBytes 937 Mbits/sec 0 sender [ 5] 0.00-60.00 sec 6.54 GBytes 936 Mbits/sec receiver |
Both are great and around 940 is expected in either direction. Let’s now try a more demanding full-duplex (bi-directional) transfer:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
devkit@UPX-i11:~$ iperf3 -t 60 -c 192.168.31.209 -i 10 --bidir Connecting to host 192.168.31.209, port 5201 [ 5] local 192.168.31.12 port 51906 connected to 192.168.31.209 port 5201 [ 7] local 192.168.31.12 port 51916 connected to 192.168.31.209 port 5201 [ ID][Role] Interval Transfer Bitrate Retr Cwnd [ 5][TX-C] 0.00-10.00 sec 1.09 GBytes 936 Mbits/sec 0 831 KBytes [ 7][RX-C] 0.00-10.00 sec 1.08 GBytes 925 Mbits/sec [ 5][TX-C] 10.00-20.00 sec 1.09 GBytes 935 Mbits/sec 0 1.22 MBytes [ 7][RX-C] 10.00-20.00 sec 1.08 GBytes 925 Mbits/sec [ 5][TX-C] 20.00-30.00 sec 1.09 GBytes 935 Mbits/sec 0 1.22 MBytes [ 7][RX-C] 20.00-30.00 sec 1.08 GBytes 925 Mbits/sec [ 5][TX-C] 30.00-40.00 sec 1.09 GBytes 936 Mbits/sec 0 1.22 MBytes [ 7][RX-C] 30.00-40.00 sec 1.08 GBytes 925 Mbits/sec [ 5][TX-C] 40.00-50.00 sec 1.09 GBytes 936 Mbits/sec 0 1.22 MBytes [ 7][RX-C] 40.00-50.00 sec 1.08 GBytes 925 Mbits/sec [ 5][TX-C] 50.00-60.00 sec 1.09 GBytes 936 Mbits/sec 0 1.22 MBytes [ 7][RX-C] 50.00-60.00 sec 1.08 GBytes 925 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID][Role] Interval Transfer Bitrate Retr [ 5][TX-C] 0.00-60.00 sec 6.54 GBytes 936 Mbits/sec 0 sender [ 5][TX-C] 0.00-60.00 sec 6.54 GBytes 936 Mbits/sec receiver [ 7][RX-C] 0.00-60.00 sec 6.46 GBytes 925 Mbits/sec 199 sender [ 7][RX-C] 0.00-60.00 sec 6.46 GBytes 925 Mbits/sec receiver |
Again excellent.
Let’s now test WiFi 5 (at 5 GHz) connected with a 433 Mbps link to Xiaomi Mi AX6000 router.
1 2 3 4 5 6 7 8 9 |
pi@raspberrypi:~ $ iwconfig wlan0 wlan0 IEEE 802.11 ESSID:"CNX_Software_Xiaomi_5G" Mode:Managed Frequency:5.18 GHz Access Point: 3C:CD:57:F5:AF:91 Bit Rate=433.3 Mb/s Tx-Power=31 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on Link Quality=70/70 Signal level=-24 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 |
Download:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
devkit@UPX-i11:~$ iperf3 -t 60 -c 192.168.31.211 -i 10 Connecting to host 192.168.31.211, port 5201 [ 5] local 192.168.31.12 port 59618 connected to 192.168.31.211 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 257 MBytes 216 Mbits/sec 0 3.15 MBytes [ 5] 10.00-20.00 sec 261 MBytes 219 Mbits/sec 0 3.15 MBytes [ 5] 20.00-30.00 sec 284 MBytes 238 Mbits/sec 0 3.15 MBytes [ 5] 30.00-40.00 sec 279 MBytes 234 Mbits/sec 0 3.15 MBytes [ 5] 40.00-50.00 sec 269 MBytes 225 Mbits/sec 0 3.15 MBytes [ 5] 50.00-60.00 sec 254 MBytes 213 Mbits/sec 0 3.15 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 1.57 GBytes 224 Mbits/sec 0 sender [ 5] 0.00-60.00 sec 1.57 GBytes 224 Mbits/sec receiver |
Upload:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
devkit@UPX-i11:~$ iperf3 -t 60 -c 192.168.31.211 -i 10 -R Connecting to host 192.168.31.211, port 5201 Reverse mode, remote host 192.168.31.211 is sending [ 5] local 192.168.31.12 port 49566 connected to 192.168.31.211 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 306 MBytes 256 Mbits/sec [ 5] 10.00-20.00 sec 309 MBytes 259 Mbits/sec [ 5] 20.00-30.00 sec 309 MBytes 259 Mbits/sec [ 5] 30.00-40.00 sec 309 MBytes 259 Mbits/sec [ 5] 40.00-50.00 sec 308 MBytes 258 Mbits/sec [ 5] 50.00-60.00 sec 309 MBytes 259 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 1.81 GBytes 259 Mbits/sec 0 sender [ 5] 0.00-60.00 sec 1.81 GBytes 259 Mbits/sec receiver |
The performance is fairly good with 224 Mbps uploads and 259 Mbps downloads, but if you want better network performance Ethernet should be used when possible. As a side note, high-end platforms with WiFi 6 can deliver over 1 Gbps transfer rates with that testbed.
Finally, I tested Bluetooth with my Android smartphone. The good news is that pairing worked flawlessly. The bad news is that Raspberry Pi OS does not know what to do with my phone with the error message:
Pairing successful – this device has no services which can be used with Raspberry Pi
So I can’t transfer files or do anything else for that matter.
Let’s try with a Bluetooth audio headset…
It works! I could listen to the audio from a YouTube video, but the volume control is not working right. I can only mute the audio or turn it on at 100% at whatever position it is on the slider. However, if I use the volume buttons on my headset, then the volume slider is properly synchronized in Raspberry Pi OS… That means I can control the volume from my headset, but not from Raspberry Pi OS except for mute/unmute.
YouTube and 4K video playback
I then tested YouTube videos up to 1920×1080 resolution at 30 fps in both Chromium and Firefox. 4K (2160p) resolution was not an option despite selecting a 4K video.
The video played smoothly in both web browsers with only a few frames dropped according to the “Stats for Nerds” overlay window.
Let’s now try to play some local 4K H.265 videos as well since the Broadcom BCM2712 SoC is supposed to support H.265 video decoding. So I connected a hard drive with some 4K video samples and played them by clicking on the file which opened VLC video player:
- Beauty_3840x2160_120fps_420_8bit_HEVC_MP4.mp4 (H.265, no audio) – OK
- MHD_2013_2160p_ShowReel_R_9000f_24fps_RMN_QP23_10b.mkv (10-bit HEVC, 24 fps, no audio) – First frame only for the duration of the video
- Fifa_WorldCup2014_Uruguay-Colombia_4K-x265.mp4 (4K, H.265, 60 fps) – Video and audio OK
While two of the video could play fine if I enter full-screen mode, I can see a thick black bar at the bottom of the video (but no such thing at the top), and changing the aspect ratio does not help.
CPU usage while playing a 4K H.265 video at 60 fps is rather low which should indicate hardware video decoding is indeed working. For comparison, If I switch to a 4K H.264 video at 30 fps, the CPU usage is higher as software video decoding is used instead.
It should be the same for other video codecs, as I understand Broadcom BCM2712 only supports H.265 hardware video decoding, and all other codecs must be handled by software.
Raspberry Pi camera
I still have a Raspberry Pi camera module 3, but I had to skip testing because the camera connectors on the Raspberry Pi 5 are now smaller… It’s not such a big issue, as I understand it’s simply a matter of getting a $1 cable and you should be good to go with the new Raspberry Pi SBC and existing official camera modules.
Note that Broadcom BCM2712 does not support hardware video encoding, and it is now handled by software as well.
Thermal considerations
We’ve already seen the Raspberry Pi 5 offers a significant boost in performance compared to the Raspberry Pi 4, but we did so with a large heatsink and a PWM fan part of the “active cooler”. The fan is not particularly noisy, but some people may prefer to have a fanless system. Would that work with just the heatsink? What happens when we use the official Raspberry Pi 5 case? Let’s find out.
Note that usually perform testing in a room with 28°C ambient temperature which may impact the performance of the system. Just to show how ambient temperature may impact the CPU temperature I left the system run idly overnight (19:00 to about 10:00) just running sbc-bench.sh -m monitor temperature and rpi-monitor to draw the temperature chart.
The CPU temperature dropped from about 55°C to 50°C following the ambient temperature delta from about 26°C at 19:00 down to 21°C at 6:00 and going up from there.
Let’s check out the temperature chart starting from idle and running sbc-bench.sh script using the active cooler.
The idle temperature was about 46-47°C and went up to around 66°C during CPUminer. No throttling occurred and we are far from the 85°C limit, so the active cooler perfectly did its job.
The heatsink is quite large covering most of the board, so let’s disconnect the fan and see what happens:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
pi@raspberrypi:~ $ sudo ./sbc-bench.sh -r Starting to examine hardware/software for review purposes... sbc-bench v0.9.50 Installing needed tools: Done. Checking cpufreq OPP. Done. Executing tinymembench. Done. Executing RAM latency tester. Done. Executing OpenSSL benchmark. Done. Executing 7-zip benchmark. Done. Throttling test: heating up the device, 5 more minutes to wait. Done. Checking cpufreq OPP again. Done (12 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * Throttling / frequency capping occured Full results uploaded to http://ix.io/4KEa ### Performance baseline * memcpy: 5149.9 MB/s, memchr: 13453.4 MB/s, memset: 12362.2 MB/s * 16M latency: 123.9 119.8 126.3 121.6 121.7 126.2 150.7 155.6 * 128M latency: 141.3 143.7 146.4 140.2 141.1 140.8 140.9 142.6 * 7-zip MIPS (3 consecutive runs): 10890, 10818, 10293 (10670 avg), single-threaded: 3138 * `aes-256-cbc 590088.22k 1051428.71k 1273858.47k 1338664.62k 1365114.88k 1367490.56k` * `aes-256-cbc 590457.53k 1051552.92k 1274097.32k 1342024.36k 1365286.91k 1368244.22k` |
The idle temperature was quite higher at around 60°C, and we reached 85°C with both 7-zip and CPUminer, and throttling occurred with the CPU frequency dropping as low as 1,500 MHz from the usual 2,400 Mhz. That was only during short periods, so if your workload only requires bursts of performance, it should be possible to use the heatsink only. I’m also confident some will come with fanless cases for the Raspberry Pi 5.
Raspberry Pi also sent me the official case. So let’s remove the active cooler, stick the small heatsink from the kit on the Broadcom BCM2712 processor, and connect the fan…
before installing the cover and reconnecting everything.
Time to run sbc-bench.sh again:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
pi@raspberrypi:~ $ sudo ./sbc-bench.sh sbc-bench v0.9.50 Installing needed tools: Done. Checking cpufreq OPP. Done (results will be available in 7-10 minutes). Executing tinymembench. Done. Executing RAM latency tester. Done. Executing OpenSSL benchmark. Done. Executing 7-zip benchmark. Done. Checking cpufreq OPP again. Done (8 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * No throttling Memory performance memcpy: 5142.9 MB/s memset: 11781.0 MB/s 7-zip total scores (3 consecutive runs): 10676,10847,10657, single-threaded: 3108 OpenSSL results: type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 636995.34k 1313348.50k 1720131.67k 1853066.24k 1907924.99k 1911674.20k aes-128-cbc 637428.34k 1312076.65k 1719778.99k 1853592.92k 1906480.47k 1913421.82k aes-192-cbc 599322.82k 1171677.76k 1465508.27k 1545036.80k 1591457.11k 1594949.63k aes-192-cbc 599599.38k 1171923.56k 1465062.66k 1543467.01k 1591375.19k 1595441.15k aes-256-cbc 590231.97k 1051307.07k 1273963.52k 1340034.73k 1365352.45k 1367468.71k aes-256-cbc 590235.99k 1051512.96k 1273754.28k 1338839.72k 1364970.15k 1368003.93k Full results uploaded to http://ix.io/4KJo pi@raspberrypi:~ $ |
The good news that is CPU throttling did not occur. But the idle temperature is a bit higher at 56°C, and under load, it peaked at about 75°C. That also means the official case performs its cooling duty just fine, but the fan may be activated more often than with the active cooler because of the much smaller heatsink.
Now let’s turn off the system, disconnect the fan, and run the script with the Raspberry Pi 5 in its case without any active cooling.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
pi@raspberrypi:~ $ sudo ./sbc-bench.sh sbc-bench v0.9.50 Installing needed tools: Done. Checking cpufreq OPP. Done (results will be available in 8-12 minutes). Executing tinymembench. Done. Executing RAM latency tester. Done. Executing OpenSSL benchmark. Done. Executing 7-zip benchmark. Done. Checking cpufreq OPP again. Done (9 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * Throttling / frequency capping occured Memory performance memcpy: 5168.5 MB/s memset: 11322.4 MB/s 7-zip total scores (3 consecutive runs): 7603,7477,7482, single-threaded: 2536 OpenSSL results: type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 505376.33k 1044658.20k 1401074.43k 1479606.61k 1574813.70k 1534121.30k aes-128-cbc 446999.16k 993373.27k 1393114.97k 1466749.27k 1501372.42k 1534945.96k aes-192-cbc 462834.45k 920687.94k 1137528.15k 1235878.57k 1225586.01k 1249946.28k aes-192-cbc 437606.93k 888128.30k 1077913.00k 1187423.91k 1213527.38k 1208232.62k aes-256-cbc 458931.29k 806966.14k 977979.31k 1039390.38k 1054946.65k 1089536.00k aes-256-cbc 429332.22k 758800.09k 945642.75k 943875.41k 995794.94k 1006638.42k Full results uploaded to http://ix.io/4KJt |
It does not look good at all. I waited for about 20 minutes before starting the benchmark, and the idle temperature was already around 67-68°C, but when we ran sbc-bench.sh the temperature quickly shot up to 85°C and even peaked at about 88°C.
The benchmark ended about 15:30 and I first thought there must be some background process keeping it at an elevated (85°C) temperature. But htop did not show anything…
sbc-bench.sh monitor mode also reported the high temperature and virtually zero CPU load:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
pi@raspberrypi:~ $ ./sbc-bench.sh -m BCM2712, Kernel: aarch64, Userland: arm64 CPU sysfs topology (clusters, cpufreq members, clockspeeds) cpufreq min max CPU cluster policy speed speed core type 0 0 0 1000 2400 Cortex-A76 / r4p1 1 0 0 1000 2400 Cortex-A76 / r4p1 2 0 0 1000 2400 Cortex-A76 / r4p1 3 0 0 1000 2400 Cortex-A76 / r4p1 Thermal source: /sys/devices/virtual/thermal/thermal_zone0/ (cpu-thermal) Time fake/real load %cpu %sys %usr %nice %io %irq Temp VCore PMIC DC(V) 16:05:49: 2400/1500MHz 0.00 6% 0% 6% 0% 0% 0% 84.2°C 0.9150V 3.6W 5.14V 16:05:54: 2400/1500MHz 0.00 0% 0% 0% 0% 0% 0% 84.8°C 0.7200V 2.7W 5.14V 16:05:59: 2400/2201MHz 0.00 0% 0% 0% 0% 0% 0% 83.7°C 0.7200V 2.7W 5.15V 16:06:04: 2400/2146MHz 0.00 0% 0% 0% 0% 0% 0% 83.2°C 0.7200V 2.6W 5.14V 16:06:09: 2400/2256MHz 0.00 1% 0% 0% 0% 0% 0% 84.8°C 0.9150V 2.7W 5.15V 16:06:15: 2400/1500MHz 0.00 0% 0% 0% 0% 0% 0% 83.2°C 0.7200V 2.6W 5.14V 16:06:20: 2400/1500MHz 0.08 0% 0% 0% 0% 0% 0% 84.2°C 0.7200V 2.7W 5.15V 16:06:25: 2400/2201MHz 0.07 0% 0% 0% 0% 0% 0% 83.7°C 0.7200V 2.7W 5.15V 16:06:30: 2400/2146MHz 0.07 0% 0% 0% 0% 0% 0% 83.2°C 0.7200V 2.7W 5.14V 16:06:35: 2400/1500MHz 0.06 0% 0% 0% 0% 0% 0% 85.9°C 0.7200V 2.7W 5.15V 16:06:41: 2400/2201MHz 0.14 1% 0% 0% 0% 0% 0% 83.2°C 0.7200V 2.7W 5.15V 16:06:46: 2400/2256MHz 0.13 0% 0% 0% 0% 0% 0% 84.8°C 0.7200V 2.7W 5.14V 16:06:51: 2400/2146MHz 0.12 1% 0% 0% 0% 0% 0% 84.8°C 0.9150V 2.7W 5.15V 16:06:56: 2400/2201MHz 0.17 0% 0% 0% 0% 0% 0% 84.8°C 0.7200V 3.6W 5.15V |
It’s like the temperature sensor was stuck at around 85°C… and it would not come back down…
So I opened the case and reconnected the fan while the board was still running (probably not recommended) and the temperature dropped immediately…
So if your plan was to use a tiny heatsink and put the Raspberry Pi 5 in an enclosure without a fan you can forget about it. That’s why Raspberry Pi provides an optional active cooler and the official case comes with an integrated fan, although it should perfectly be possible to create a fanless metal case for the board.
Power consumption
I measured Raspberry Pi 5’s power consumption with its active cooler using a wall power meter.
- Power off – 1.7 Watts
- Idle
- 3.0 Watts (headless, WiFi only)
- 3.6 Watts (Ethernet + WiFi, USB mouse & keyboard, HDMI connected)
- “4K” YouTube Video in Firefox (full screen @ Full HD – avc1 (H.264) codec) – 5.5 to 6.2 Watts
- “4K” YouTube Video in Chromium (full screen @ Full HD – avc1 (H.264) codec) – 5.7 to 6.8 Watts
- Stress test on all 4 cores (stress -c 4) – 8.8 Watts
My Raspberry Pi kit comes with a USB PD power supply that supports 5.1V/5V or a little over 25W. The maximum in my test above is 8.8 Watts so that’s a lot of legroom when it comes to the power draw. So I tried to increase that by playing a 4K H.265 from a USB hard drive and run iozone on an external SSD while running stress -c 4 at the same time.
It did manage to peak at 16.8 Watts (and stabilize at 15.9 Watts), and so for that use case, a 5V/3V USB power supply as used with the Raspberry Pi 4 would not have been sufficient. For what it’s worth sbc-bench.sh does not report any drop in voltage under this specific stress test:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
pi@raspberrypi:~ $ ./sbc-bench.sh -m BCM2712, Kernel: aarch64, Userland: arm64 CPU sysfs topology (clusters, cpufreq members, clockspeeds) cpufreq min max CPU cluster policy speed speed core type 0 0 0 1000 2400 Cortex-A76 / r4p1 1 0 0 1000 2400 Cortex-A76 / r4p1 2 0 0 1000 2400 Cortex-A76 / r4p1 3 0 0 1000 2400 Cortex-A76 / r4p1 Thermal source: /sys/devices/virtual/thermal/thermal_zone0/ (cpu-thermal) Time fake/real load %cpu %sys %usr %nice %io %irq Temp VCore PMIC DC(V) 20:06:31: 2400/2400MHz 6.27 9% 0% 7% 0% 0% 0% 74.3°C 0.9150V 6.8W 5.16V 20:06:37: 2400/2400MHz 6.25 100% 9% 88% 0% 0% 1% 71.0°C 0.9150V 7.2W 5.14V 20:06:42: 2400/2400MHz 6.23 99% 9% 88% 0% 0% 1% 74.3°C 0.9150V 7.7W 5.13V 20:06:47: 2400/2400MHz 6.21 99% 9% 89% 0% 0% 1% 74.3°C 0.9150V 7.6W 5.14V |
That makes me believe it should be possible to use a 5V/3A power adapter with the Raspberry Pi 5 for many use cases unless you are connecting USB peripherals that draw a lot of current like mass storage devices. Raspberry Pi confirms that saying:
When using a standard 5V, 3A (15W) USB-C power adapter with Raspberry Pi 5, by default we must limit downstream USB current to 600mA to ensure that we have sufficient margin to support these workloads.
I’m running out of time to test this in detail, however.
Conclusion
The Raspberry Pi 5 SBC is a great upgrade to the Raspberry Pi 4 if you feel the earlier SBC is sluggish with two to three times the performance depending on the workload. The Broadcom BCM2721 is also the first “Raspberry Pi” processor with Armv8 crypto extension catching up with the competition and delivering a 20 times boost in performance for AES-256 against the Raspberry Pi. If you are familiar with the Raspberry Pi ecosystem and want something faster, the Raspberry Pi 5 is almost a no-brainer.
Having said that, there are some changes to the layout that make previous cases incompatible, the MIPI CSI and DSI connectors are smaller and users must purchase new flat cables, a new power adapter is potentially needed, there aren’t any official fanless solutions yet, and some features like H.264 hardware video decoding, or any sort of hardware video encoding are now missing since the BCM2712 can handle that in software. That’s more flexible but also consumes more power.
More advanced users that are mostly vendor-agnostic may be disappointed with the performance and features compared to platforms based on Rockchip RK3588 processor with a similar price point, support for 8K video output, 8K/4K AV1/VP9/H.264 hardware video decoding, hardware video encoding, an AI accelerator, and more. Raspberry Pi hardware still probably benefits from a larger community and possibly better software support although the current Raspberry Pi OS Bookworm has a bit more bugs than I expected such as Bluetooth audio volume issues or a thick black bar under full-screen videos in VLC.
I’d like to thank Raspberry Pi for sending a complete Raspberry Pi 5 kit for review and testing. You should be able to purchase the board and accessories from any local distributor for $80 (8GB RAM as reviewed here) and up.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
The idle power consumption looks very bad. The board at its powered off state consumes more power than similar SBCs in idle state is…. ridiculous. The 3W idle is even more than some x86 systems.
> The board at its powered off state consumes more power than similar SBCs in idle state is…. ridiculous.
Was already the same with RPi 4 (1.2W when ‘powered off’).
I just posted some more info that I _thought_ I had already posted to my sbc-reviews thread regarding the poweroff power consumption: https://github.com/geerlingguy/sbc-reviews/issues/21#issuecomment-1793836873
(The short of it is if you set POWER_OFF_ON_HALT=1 and WAKE_ON_GPIO=0, you can get it to 0.01W, or 0.09W with PCIe peripherals attached.)
Interesting what backward compatibility can do…
Do they have private forums on Raspberry Pi now? Clicking on the last link to a forum thread returns the following error after login:
“You are not authorized to read this forum.”
The Pi5 seems both a bit rushed and also hobnailed by backward compatibility.
Its interesting where Raspberry go as the Broadcom base is looking extremely tired.
I wonder if the Pi5 might be a last in that line and a jump to ArmV9 and new silicon sources?
There have long been private forums for distributors, resellers, and other special interest groups within their ecosystem.
This is also officially documented. Don’t know why it isn’t default.
https://www.raspberrypi.com/documentation/computers/raspberry-pi-5.html
I assume the idle power consumption test was either performed with the ondemand or the conservative setting? (It was not mentioned which mode was used so I assume ‘performance’.
I am very much prejudiced against the RPI5, but rating the power consumption using the ‘performance’ settings seems unfair.)
It would be a second condition to also use the “power_of_on_halt=1” rule. but I assume it should not matter (when powered of you’d better cut the power completely if your aim is powersaving).
I still feel this might be unfair since wifi might be using pcie lanes which could have been put to ‘powersave’ but that probably still is more than a general user could establish.
There are allways many switches to try when switching from ‘performance’ to some powersave mode.
Can I at least assume you did enable ‘ondemand’, ‘powersave’ or ‘conservative’ before publishing some outragious consumption?
I hate to say I am very much prejudiced against the RPI5, but whne I lean on unreasonable colored reviews, these only tag me as anti-raspberry when I point out the RPI5 is not ideal.
Idle power consumption >3W is bad 🙁 Odroid H3/H3+ with x86 Intel N5105 / N6005 10W have 1.2—1.5 W ⚡️ idle – I mean when running Debian 12 with kernel 6.2 or newer, with newest BIOS.
My Odroid H3 has ~1.5 W idle with 2x RAM DDR4 modules (16GB + 32GB) + 1TB Samsung 980 Pro m.2 SSD. Power consumption was measured on DC side.
And it’s completely fanless system, very powerful, very efficient, with great support and community on forum.odroid.com 🙂
Note: such low power consumption is achieved not with defaults (ASPM needs to be enabled in BIOS and some SW tweaks via
powertop
)I have powerful PC/home server with desktop 13th gen Intel i3-13100 (TDP 60W) with idle power consumption only 2—3 W :-O
I enabled power-saving features in BIOS like C-states and ASPM.
OS: Debian 12 with DietPi, kernel
6.1.0-13-amd64
, keyboard and LCD unplugged.Power consumption measured on DC side (12V). It’s fanless build.
idle: 2—3 W
load: 50—60W
[spoiler title=”see idle power consumption”] https://forum.level1techs.com/uploads/default/original/4X/8/6/5/86523c2520b4191e9a649a031bc813edbfe0bda0.gif [/spoiler]
“multi-year co-development effort” with Renesas on a custom designed PMIC and still no proper 0W power off mode, eh.
Yeah. And still no proper USB-C PD support. (although i much prefer a 12V screw terminal on SBCs)
Also the omission of an av1 decoder seems painful for future desktop use, as all high volume 2023 devices have it. H265 support seems like a waste, as thats never going to achieve critical mass.
> H265 support seems like a waste, as thats never going to achieve critical mass.
Isn’t HEVC currently the standard for IPTV and as such SoCs designed for the STB market (like BroadCom 2712) only need a HW decoder for this single codec?
I don’t think it is the case with Raspberry Pi 5. In this generation, the only HEVC codec is developed in-house by Raspberry Pi themselves according to
this blog. I don’t even **think** the BCM2712 is designed for IPTV initially as the Raspberry Pi is the only user and with Raspberry Pi’s own IP blocks. The code choice is just a cost-down measure. They don’t want to pay the license from Broadcom for other codecs and they don’t want to put resources to implement other codecs either.
AFAIK, those are all still using h264. Or rather the IPTV providers are still using it.
H265 was too much of a licensing mess, which made everyone but the biggest of players, avoid it
H.265 does get used. Lack of AV1 decode is annoying, dropping H.264 and lacking VP9 is bad altogether. LibreELEC attempted to excuse these, but it’s a power-hungry mess.
Just use $50-150 x86 for desktop people. Same for TV, or some other ARM option.
> Lack of AV1 decode is annoying, dropping H.264 and lacking VP9 is bad altogether.
Do these codecs matter in the IPTV/STB business?
Over a decade ago when (former) BroadCom employees started with RPi and used one of their VideoCore SoCs these chips were used in a variety of devices that dictated the SoC’s interfaces.
But nowadays VideoCore is only used by BroadCom’s STB division any more and as such both interfaces and capabilities were adjusted. And Raspberry Pi Ltd. had to deal with this (developing their RP1 chip bringing back the original interfaces to whatever PCIe attached main SoC)
It sort of begs the question as to why they wouldn’t move on to a general purpose SoC.
People going on about how the RP1 is their most important design, then when you think about it, it’s a South Bridge at a time where everyone is going in the opposite direction
There can be good reasons for why it happened while sticking to Broadcom. I’m not sure how much credence we can give to that given that RPi is as popular as ever and pushing millions of units. They should have enough leverage to get something customized for them. Also, Broadcom sells TV SoCs that support AV1, presumably H.264/VP9 (good luck finding out what exactly): cnx-software.com/2019/09/25/broadcom-bcm7218x-stb-soc-av1-hardware-decoding-wifi-6/
But the point is that RPi is half-baked and makes less sense than ever before for use cases like desktop and TV.
Eh? h.265/hevc has already reached critical mass. It’s effectively the default codec for UHD HDR streaming used by all the main OTT streaming platforms like Netflix, Prime, Disney+, Apple TV+ etc. and is supported by pretty much every Smart TV, Media Player (Apple TV, Amazon Fire TV, Google Chromecast, nVidia Shield TV, Roku etc.). Pretty much every phone and tablet that can play modern media in Dolby Vision etc. supports it. It’s also the standard codec for the most recent linear TV platforms (Germany and Netherlands are both using it with DVB-T2 as are other countries, and the US ATSC 3.0 standard uses it).
I think I will good for n100/n200 instead…
I already grabbed low power Skylake. Intel will need Crestmont cores to entice me.
> You should be able to purchase the board and accessories from any local distributor
Nope, not where I live (RPi locator agrees on that). Maybe sometimes in 2024…
> It did manage to peak at 16.8 Watts (and stabilize at 15.9 Watts)
With Rasperry Pi Ltd.’s fixed cable PSU the input voltage reported by sbc-bench -m (using vcgencmd pmic_read_adc | grep EXT5V_V under the hood) never dropped below 5.13V (for reasons why a PSU with fixed cable can avoid the usual voltage drop see here).
Would be interesting to repeat such a test with another USB PD PSU and any random USB-C cable in between.15W limit doesn’t matter, the voltage (drop) is the interesting bit when approaching the 3A area…
Designing such an SBC with a 5 V / 5 A power supply is such a dumb idea. They don’t seem to have learned anything from the mistakes with their earlier boards, with all those voltage drop issues.
With USB PD they could have easily used 9 V or even 15 V, which would avoid such high currents and at the same time make voltage drops due to cheap cables rather irrelevant.
Overall, I find the Raspberry Pi 5 to be a very disappointing product.
When I read “So, we decided to do something a little bit non-standard, which is what we often do in search of performance, and create a five-volt, five-amp profile for our power supply.” here, I was like “are you guys insane?!”, and I still haven’t fully recovered from that.
Yeah, that’s crazy. What do they think people should do if they want to integrate a Pi 5 into some project where it isn’t possible to use their special snowflake power supply?
Similar situation with the PCIe interface. They could have used a standard connector on the bottom side of the board, but no, they decided again to go with something proprietary, requiring an additional addon board, driving the cost up even more.
It’s very nutty. 3A cables are already extremely thick. They’re basically doing this because they don’t want to spend the money on step down regulation.
Unfortunately those costs are passed to the consumer because finding cables and PSUs that handle that voltage and current is quite hard.
Even a lot of lab bench PSUs don’t go to 5A
Generally, comparing glmark2 against glmark2-es2-wayland is not a good idea.
Comparing glmark2 on one board against glmark2-es2-wayland on another board is even worse…
Would it be possible to run glmark2-es2-wayland on Pi5 please?
Sorry about that. I tried to find it yesterday, but no luck. It’s actually just an apt install… I must have been tired…
I’ve updated the post with the results for glmark2-es2-wayland. The score is a little over 2,000 points.
Thank you!
Lack of 4k Youtube video could be due to the reason Youtube 4k videos are encoded in VP9 or AV1 only?
Since Pi5 not supporting hardware decoding of VP9 or AV1, and software decoding of 4k H.264 already takes more than 50% of the CPU power, it is definitely not able to support smooth 4k software decodings of VP9 & AV1, which are much more power demanding.
Thanks for this review Jean-Luc. So in the end it’s not *that* bad, except if you expect low idle consumption or high performance. They followed their long tradition of low memory performance that cripples everything, resulting in a 7-zip performance that’s on par with 2-years old devices that did not require a fan…
Thus in short it looks like this device remains an improvement for those who are only able to operate RPi products and that as a punishment they’ll get more noise and an increased power bill.
For now I’ll pass. My 15 month-old pre-release Rock5B is significantly faster, fanless, cold to the touch, and not much more expensive. Ah and it has eMMC and M2 connectors on board and a more convenient form factor 🙂
Amen.
Yeah, Opi5 here and quite happy.
I will give them credit for a few things, though. They finally use a core with the crypto extensions! About damn time. And, um,,,, uhhh, oh.. Yeah, I guess that’s about it. The USB-C is still messed up, the tiny video connectors is still a horrible choice, the processor is still super hot and inefficient, the memory interface isn’t as horribly slow as usual, they stripped all of the useful video encode/decode, etc. So much NIH.
Could anyone test if Pi5 has Pi4 like problems with WiFi when showing 4K 60Hz on HDMI?
Apparently, the Raspberry Pi 5 uses the same WiFi chip as the Pi 4 and as such still does not support WPA3. That is pretty terrible for a devices released in 2023.
https://rachelbythebay.com/w/2023/11/06/wpa3/
[ “Pricing for the Raspberry Pi 5 is still very attractive, costing only $5 more than the Raspberry Pi 4 in equivalent configurations with the 4GB model going for $60 and the 8GB model for $80. Sales should start by the end of October, and the Raspberry Pi 5 will remain in production until at least January 2035, or about 11-year are of guaranteed availability.”
https://www.cnx-software.com/2023/09/28/raspberry-pi-5-sbc-broadcom-bcm2712-quad-core-cortex-a76-soc/
one can add an USB wifi adapter (low prices ~$10-12), for this a ~$60-85 SBC]
I tried a mild OC to 2.6 Ghz and it was stable but strangely slower than stock and maybe usuing SIMD with an OC has some internal power limit?
pi@raspberrypi:~/whisper.cpp $ ./extra/bench-all.sh
Usage: ./bench.sh [n_threads] [encoder-only]
Running memcpy benchmark
memcpy: 5.66 GB/s (1 thread)
sum: 136902081526.000000
Running ggml_mul_mat benchmark with 4 threads
64 x 64: Q4_0 5.5 GFLOPS (128 runs) | Q4_1 5.5 GFLOPS (128 runs)
64 x 64: Q5_0 1.8 GFLOPS (128 runs) | Q5_1 5.2 GFLOPS (128 runs) | Q8_0 1.9 GFLOPS (128 runs)
64 x 64: F16 5.6 GFLOPS (128 runs) | F32 1.7 GFLOPS (128 runs)
128 x 128: Q4_0 24.4 GFLOPS (128 runs) | Q4_1 11.5 GFLOPS (128 runs)
128 x 128: Q5_0 21.1 GFLOPS (128 runs) | Q5_1 11.2 GFLOPS (128 runs) | Q8_0 26.1 GFLOPS (128 runs)
128 x 128: F16 27.4 GFLOPS (128 runs) | F32 25.1 GFLOPS (128 runs)
256 x 256: Q4_0 49.9 GFLOPS (128 runs) | Q4_1 50.4 GFLOPS (128 runs)
256 x 256: Q5_0 41.5 GFLOPS (128 runs) | Q5_1 31.9 GFLOPS (128 runs) | Q8_0 59.6 GFLOPS (128 runs)
256 x 256: F16 65.5 GFLOPS (128 runs) | F32 48.6 GFLOPS (128 runs)
512 x 512: Q4_0 62.8 GFLOPS (128 runs) | Q4_1 61.3 GFLOPS (128 runs)
512 x 512: Q5_0 50.3 GFLOPS (128 runs) | Q5_1 47.1 GFLOPS (128 runs) | Q8_0 77.5 GFLOPS (128 runs)
512 x 512: F16 85.4 GFLOPS (128 runs) | F32 50.4 GFLOPS (128 runs)
1024 x 1024: Q4_0 68.0 GFLOPS ( 32 runs) | Q4_1 69.6 GFLOPS ( 33 runs)
1024 x 1024: Q5_0 54.0 GFLOPS ( 26 runs) | Q5_1 51.0 GFLOPS ( 24 runs) | Q8_0 85.7 GFLOPS ( 40 runs)
1024 x 1024: F16 93.5 GFLOPS ( 44 runs) | F32 49.0 GFLOPS ( 23 runs)
2048 x 2048: Q4_0 71.0 GFLOPS ( 5 runs) | Q4_1 72.9 GFLOPS ( 5 runs)
2048 x 2048: Q5_0 56.0 GFLOPS ( 4 runs) | Q5_1 52.9 GFLOPS ( 4 runs) | Q8_0 87.9 GFLOPS ( 6 runs)
2048 x 2048: F16 93.4 GFLOPS ( 6 runs) | F32 44.1 GFLOPS ( 3 runs)
4096 x 4096: Q4_0 72.3 GFLOPS ( 3 runs) | Q4_1 74.6 GFLOPS ( 3 runs)
4096 x 4096: Q5_0 56.1 GFLOPS ( 3 runs) | Q5_1 52.9 GFLOPS ( 3 runs) | Q8_0 88.6 GFLOPS ( 3 runs)
4096 x 4096: F16 80.0 GFLOPS ( 3 runs) | F32 32.2 GFLOPS ( 3 runs)
Running benchmark for all models
This can take a while!
| CPU | OS | Config | Model | Th | Enc. | Dec. | PP | Commit |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| <todo> | <todo> | NEON | tiny | 4 | 1056.65 | 7.01 | 152.03 | f96e1c5 |
| <todo> | <todo> | NEON | base | 4 | 2495.73 | 12.62 | 359.57 | f96e1c5 |
| <todo> | <todo> | NEON | small | 4 | 8638.57 | 35.89 | 1352.77 | f96e1c5 |
| <todo> | <todo> | NEON | medium | 4 | ms | 105.50 | 4635.39 | f96e1c5 |
| <todo> | <todo> | NEON | large | 4 | ms | 189.43 | 8513.07 | f96e1c5 |
Now with over_voltage_delta=100000 arm_freq=2600
pi@raspberrypi:~/whisper.cpp $ ./extra/bench-all.sh
Usage: ./bench.sh [n_threads] [encoder-only]
Running memcpy benchmark
memcpy: 5.63 GB/s (1 thread)
sum: 136902081526.000000
Running ggml_mul_mat benchmark with 4 threads
64 x 64: Q4_0 5.9 GFLOPS (128 runs) | Q4_1 5.8 GFLOPS (128 runs)
64 x 64: Q5_0 5.0 GFLOPS (128 runs) | Q5_1 5.5 GFLOPS (128 runs) | Q8_0 5.5 GFLOPS (128 runs)
64 x 64: F16 6.0 GFLOPS (128 runs) | F32 5.9 GFLOPS (128 runs)
128 x 128: Q4_0 23.5 GFLOPS (128 runs) | Q4_1 25.3 GFLOPS (128 runs)
128 x 128: Q5_0 12.5 GFLOPS (128 runs) | Q5_1 22.0 GFLOPS (128 runs) | Q8_0 28.5 GFLOPS (128 runs)
128 x 128: F16 12.9 GFLOPS (128 runs) | F32 27.6 GFLOPS (128 runs)
256 x 256: Q4_0 53.8 GFLOPS (128 runs) | Q4_1 54.3 GFLOPS (128 runs)
256 x 256: Q5_0 44.7 GFLOPS (128 runs) | Q5_1 18.9 GFLOPS (128 runs) | Q8_0 64.8 GFLOPS (128 runs)
256 x 256: F16 70.2 GFLOPS (128 runs) | F32 29.7 GFLOPS (128 runs)
512 x 512: Q4_0 54.3 GFLOPS (128 runs) | Q4_1 41.7 GFLOPS (128 runs)
512 x 512: Q5_0 34.0 GFLOPS (127 runs) | Q5_1 35.5 GFLOPS (128 runs) | Q8_0 57.3 GFLOPS (128 runs)
512 x 512: F16 68.6 GFLOPS (128 runs) | F32 38.6 GFLOPS (128 runs)
1024 x 1024: Q4_0 50.9 GFLOPS ( 24 runs) | Q4_1 50.3 GFLOPS ( 25 runs)
1024 x 1024: Q5_0 40.3 GFLOPS ( 19 runs) | Q5_1 39.4 GFLOPS ( 19 runs) | Q8_0 63.7 GFLOPS ( 31 runs)
1024 x 1024: F16 72.3 GFLOPS ( 34 runs) | F32 36.7 GFLOPS ( 18 runs)
2048 x 2048: Q4_0 53.1 GFLOPS ( 4 runs) | Q4_1 55.6 GFLOPS ( 4 runs)
2048 x 2048: Q5_0 42.7 GFLOPS ( 3 runs) | Q5_1 39.3 GFLOPS ( 3 runs) | Q8_0 66.9 GFLOPS ( 5 runs)
2048 x 2048: F16 70.3 GFLOPS ( 5 runs) | F32 33.5 GFLOPS ( 3 runs)
4096 x 4096: Q4_0 53.6 GFLOPS ( 3 runs) | Q4_1 55.0 GFLOPS ( 3 runs)
4096 x 4096: Q5_0 41.5 GFLOPS ( 3 runs) | Q5_1 39.3 GFLOPS ( 3 runs) | Q8_0 65.2 GFLOPS ( 3 runs)
4096 x 4096: F16 66.3 GFLOPS ( 3 runs) | F32 28.6 GFLOPS ( 3 runs)
Running benchmark for all models
This can take a while!
| CPU | OS | Config | Model | Th | Enc. | Dec. | PP | Commit |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| <todo> | <todo> | NEON | tiny | 4 | 1304.46 | 7.55 | 207.36 | f96e1c5 |
| <todo> | <todo> | NEON | base | 4 | 2827.34 | 13.10 | 470.81 | f96e1c5 |
| <todo> | <todo> | NEON | small | 4 | 9890.36 | 39.70 | 1674.03 | f96e1c5 |
| <todo> | <todo> | NEON | medium | 4 | ms | 117.49 | 5718.21 | f96e1c5 |
| <todo> | <todo> | NEON | large | 4 | ms | 220.34 | ms | f96e1c5 |
Which I guess somone will get to the bottom of?
I thought “better buy those better SBC’s”, but … what a prices! More than a x86 NUC with 8GB RAM and SSD and powersupply and housing (120 euro):
Khadas VIM4 (Amlogic A311D2): €200,58
Radxa Rock 5B (Rockchip RK3588): €198,28
You must really love the IO-pin and hardware thinkering to spend your money on that.
I did not mention the Orange Pi 5 because I did not review it, but it should be a better deal: https://www.cnx-software.com/2022/11/11/orange-pi-5-most-affordable-rockchip-rk3588s-sbc/
The£56.93 4gb Orange Pi 5 is likely a much better option and likely the best budget Rk3588s.
Khadas always seem to carry a premium
Orange Pi do do cheaper RK3588 boards but I prefer the single 2.5gbe of the Rock5b from OKdo £135.60 which for me is used as a x6 sata Nas/home server.
You can get some very good deals on Mini Pcs and likely I would dodge some of the ultra cheap ones but you can get a good Intel N95.N100 for £150.
If you just want a general purpose consumer desktop for approx £150 range then there are a few mini pcs and cpus to choose from.
They are just not very good for maker or commercial purposes like Pi & SBC are often used.
These approx 10 watt devices have a lot of horsepower and are extremely efficient and yeah Raspberry have made a bit of a fail in this respect.