SunFounder has sent me a review sample of the Pironman 5 Max Tower PC case for the Raspberry Pi 5 SBC. We had already reviewed the Pironman 5 last year, but the new Max model has various improvements, including a sleeker design made of black aluminum and semi-transparent black acrylic panels, a dual NVMe PiP expansion board for two M.2 NVMe SSDs (optionally in RAID 0/1 configuration), or one NVMe SSD and one AI accelerator module, a Tap-to-Wake feature for the OLED information display, and programmable RGB LEDs for the two fans.
So the Pironman 5 Max deserves another review of its own. I’ll be doing an unboxing, going through the assembly instructions and software installation, before testing the new features, and finally, the cooling efficiency of the solution.
Pironman 5 Max unboxing
I received the Pironman 5 Max in its retail package along with a Raspberry Pi AI Kit because SunFounder wanted me to test the enclosure with an M.2 Hailo-8L accelerator beside M.2 NVMe SSDs.
The side of the package has basic specs about the PC Tower, which we won’t reproduce here since we’ve already covered those in the announcement.
The kit comes with an assembly guide, acrylic plates, a power button, a tower cooler, a metal case with two parts, two fans, a 0.96 OLED, a USB HDMI adapter board, an IO expander port, a dual NVME PiP board, a microSD extender, and various wires, cables, screws, standoffs, thermal pads, and tools for the assembly.
The bags with screws and standoffs all comes with stickers with description that will make the assembly easier. All boards are the same as for the original Pironman 5 kit, except for the Dual NVMe PIP board that now takes two M.2 modules and features an ASMedia ASM1182e PCIe Gen2 switch, which sadly means PCIe Gen3 x1 speed won’t be supported. It might not be too bad since random I/Os are usually the most important here.
The assembly guide lists all parts and 27 steps showing how to assemble the Pironman 5 Max tower PC enclosure with a Raspberry Pi 5 and accessories.
You’ll also find more detailed documentation online with not only an assembly guide, but also instructions to install and use the software.
Pironman 5 Max assembly with Raspberry Pi 5, NVMe SSD, Hailo-8L AI accelerator, and camera.
I had to prepare some accessories not included in the kit before the assembly: a Raspberry Pi 5 8GB, 256GB MAKERDISK and Raspberry Pi NVMe SSDs, an M.2 Hailo-8L AI accelerator, and a Raspberry Pi AI camera. Only the Raspberry Pi 5 is required, and other accessories are optional, but recommended if you want to make full use of the enclosure capabilities.
For the first step of the assembly, I had to loosen the two screws holding the two pieces of the metal enclosure together, and install a few standoffs of different heights.
I also removed the active cooler from my Raspberry Pi 5, connected the microSD extender and Pi 5 USB HDMI adapter boards, inserted the provided RTC battery and 4-pin header, and connected the 2-pin RTC wire to the Raspberry Pi 5, as well as one of the FPC PCIe cables. Note: Make sure the orientation of the FPC cable is correct.
I moved all that on the standoffs I previously installed and secured it with more standoffs and screws.
Most people will likely skip that part, but I inserted a flat cable into the CAM/DISP 1 connector of the Raspberry Pi 5 to connect the AI camera to it later on. At this stage, the three thermal pads should be installed on top of the Broadcom BCM2712 SoC, the wireless module, and the power circuitry. That’s straightforward, but just remember to peel off the plastic film from the pads.
I could not install the tower cooler by clipping it into the Raspberry Pi 5. I also connected the 4-wire fan cable and stuck the transparent insulation piece on the side of the cooler.
Next up was the installation of the Pi 5 Power Switch Converter board. It’s important to ensure it’s properly inserted into the 4-pin header. The FPC camera cable had to be twisted a bit here, as it got in the way. I also connected the FPC PCIe cable to the Dual NVMe PIP adapter.
The following step was to secure the Pironman 5 Dual NVMe PIP with three screws and install two M.2 module with the help of two small standoffs and screws. I went with the 256GB Raspberry Pi SSD and the Hailo-8L module for now.
We can now go back to the second part of the metal enclosure to install the RGB LED fans…
It turns out I did that wrong… The ICECUBE text must face inside the enclosure, or the fans will be noisy or not turn properly. So I switched sides later to solve the issue.
If you plan to install the camera, now is the time to pass the camera cable through the opening in the metal case. That’s also a new feature in the Pironman 5 Max that was not present in the original model.
The IO Expander board can now be inserted into the 40-pin GPIO header of the Raspberry Pi 5, and we can connect the OLED display to it and stick it on the metal enclosure after removing the 3M protective film.
I could now reassemble the two metal parts of the enclosure and secure them with six screws.
Time to work on the acrylic plates. I removed the protective film on both sides of the smaller one and installed the power button on it.
I then secured it with four screws and inserted the power button cable in the connector on the Power Switch Converter board as shown below in the red circle.
That’s when I realized I forgot to connect the fans to the IO Extender board earlier, but it was still fine to do it at this stage.
I removed the protective films from the larger acrylic plate, but the GPIO pinout markings were not perfectly clean. So I did like last year with the Pironman 5, and used a wet sponge to clean it up.
The final steps are to install the acrylic plate and secure it with four screws, and stick the four rubber at the bottom of the enclosure.
The first time I made another mistake here, as I placed the rubber feet on the other side of the metal part, close to the GPIO header. It would also have worked since we can rotate the OLED, but then it would be on the bottom right side…
So the assembly is now complete, and it was mostly straightforward. Adding a camera is a bit awkward since there’s no mounting mechanism here, and you need to use or make your own. This is what the rear panel looks like.
The front view.
I also took a photo on the grass (without flash) to show that the black acrylic plates are quite reflective.
OS support and Raspberry Pi OS configuration
As noted in the software documentation, the Pironman 5 Max enclosure is fully supported by Raspberry Pi OS Desktop/Lite, Ubuntu 24.04 Desktop/Server, Home Assistant OS 12.3, Homebridge, and Batocera Linux, but the GPIO fan is not working on Kali Linux. Support for other Linux distributions may vary.
I did not have to install Raspberry Pi OS, since I installed an official Raspberry Pi NVMe SSD preloaded with the OS. So I just connected the system to an HDMI monitor, a wireless mouse and keyboard, and a 5V/5A power adapter, and Raspberry Pi OS would boot normally. However, features like the RGB LED on the IO Extender board and PWM fans, and the OLED information display would not work. That’s normal, since we need to configure it and install a script for everything to work normally.
I first updated Raspberry Pi OS to the latest version with the usual commands:
1 2 |
sudo apt update sudo apt dist-upgrade |
To prevent the OLED screen and RGB fans from remaining active post-shutdown, we need to make sure that POWER_OFF_ON-HALT is set to 1. Let’s check our current configuration.
1 2 3 4 5 |
pi@raspberrypi:~ $ rpi-eeprom-config [all] BOOT_UART=1 POWER_OFF_ON_HALT=0 BOOT_ORDER=0xf461 |
We can change it with:
1 |
sudo rpi-eeprom-config -e |
and modified the relevant line to:
1 2 3 4 |
[all] BOOT_UART=1 POWER_OFF_ON_HALT=1 BOOT_ORDER=0xf461 |
Exit, save, and reboot. For some unknown reason, I had to do that twice, since it was not saved properly the first time.
I could then install the pironman5 module and dependencies as instructed in the documentation:
1 2 3 4 5 |
sudo apt install python3 python3-pip python3-setuptools cd ~ git clone https://github.com/sunfounder/pironman5.git -b 1.2.7 cd ~/pironman5 sudo python3 install.py |
After restarting the system, I could see the RGB LEDs were turned on, but the RGB LED fans were turning at all times despite the CPU temperature being at about 42-43°C, and the OLED would not display anything even after tapping the mini tower PC since the Pironman 5 Max implements a Tap-to-Wake feature.
It took me a while to find solutions to both issues. I eventually went to the dashboard at http:<IP_address>:34001, clicked on the icon in the top right corner, and noted the GPIO Fan Mode was set to Always On.
So I set the GPIO Fan Mode to Performance, and both RGB LED fans stopped since the CPU temperature was low enough.
The OLED issue was solved after I went to the GitHub repo and noticed a new version 1.2.15 had been released. So I reinstalled the Pironman5 module using the same instructions, just changing the branch used:
1 |
git clone https://github.com/sunfounder/pironman5.git -b 1.2.15 |
Users should just check the releases on GitHub and select the latest version.
As noted in the assembly section, the RGB LED fans were quite noisy, but that was because I had installed them incorrectly. After changing the orientation to have the ICECUBE text face inwards, everything was good.
Web interface and CLI
The Pironman5 can be configured through a web interface accessible on port 34001 or the pironman5 CLI. Let’s have a closer look at both.
The web dashboard shows the CPU and GPU temperature, the CPU fan speed, and GPIO fan state, as well as information about storage devices, the memory, network interfaces, and the CPU usage.
Clicking on the top left icon brings up a menu with Dashboard as shown above, History, and Log. The History section shows charts of user-selected variables such as temperature, CPU usage, CPU frequency, memory/storage usage, and more.
The Log shows the system’s log that can be filtered from Debug to Critical, depending on how verbose you want the log to be.
The icon on the top right brings up the Settings, where the user can configure various parameters. This includes setting Dark mode, showing unmounted disks and all CPU cores, switching between Celsius and Fahrenheit, enabling the OLED, and setting related parameters like disk, network interface, rotation (0/180°), and sleep timeout in seconds from 1 to 600 seconds.
That means it’s not possible to have the OLED always on if that’s something you’d like to do. The RGB LEDs on the IO Extender board can be enabled, set to a specific color, the brightness adjusted from 0 to 100%, and the users can also set the style and speed of the effects.
Eight styles are available: None, Solid, Breathing (default), Flow, Flow Reverse, Rainbow, Rainbow Reverse, and Hue Cycle. The RGB LEDs on the fans can be configured to be turned off, always on, or only turned on when the fans are activated. The behaviour of the fans themselves can be triggered at various temperatures with the GPIO fan mode: Quiet (70°C), Balanced (67.5°C), Cool ( 60°C), Performance (50°C), or Always On.
Finally, it’s also possible to clear all history data from the settings.
Another way to control the enclosure is through the pironman5 command line utility:
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 |
pi@raspberrypi:~ $ pironman5 usage: pironman5-service [-h] [-v] [-c] [-dl {debug,info,warning,error,critical}] [--background [BACKGROUND]] [-rd] [-cp [CONFIG_PATH]] [-rc [RGB_COLOR]] [-rb [RGB_BRIGHTNESS]] [-rs [{solid,breathing,flow,flow_reverse,rainbow,rainbow_reverse,hue_cycle}]] [-rp [RGB_SPEED]] [-re [RGB_ENABLE]] [-rl [RGB_LED_COUNT]] [-u [{C,F}]] [-gm [GPIO_FAN_MODE]] [-gp [GPIO_FAN_PIN]] [-fl [GPIO_FAN_LED]] [-fp [GPIO_FAN_LED_PIN]] [-oe [OLED_ENABLE]] [-od [OLED_DISK]] [-oi [OLED_NETWORK_INTERFACE]] [-or [{0,180}]] [-vp [VIBRATION_SWITCH_PIN]] [-vu [VIBRATION_SWITCH_PULL_UP]] [-os [OLED_SLEEP_TIMEOUT]] [{start,restart,stop}] Pironman 5 Max command line interface positional arguments: {start,restart,stop} Command options: -h, --help show this help message and exit -v, --version Show version -c, --config Show config -dl {debug,info,warning,error,critical}, --debug-level {debug,info,warning,error,critical} Debug level --background [BACKGROUND] Run in background -rd, --remove-dashboard Remove dashboard -cp [CONFIG_PATH], --config-path [CONFIG_PATH] Config path -rc [RGB_COLOR], --rgb-color [RGB_COLOR] RGB color in hex format without # (e.g. 00aabb) -rb [RGB_BRIGHTNESS], --rgb-brightness [RGB_BRIGHTNESS] RGB brightness 0-100 -rs [{solid,breathing,flow,flow_reverse,rainbow,rainbow_reverse,hue_cycle}], --rgb-style [{solid,breathing,flow,flow_reverse,rainbow,rainbow_reverse,hue_cycle}] RGB style -rp [RGB_SPEED], --rgb-speed [RGB_SPEED] RGB speed 0-100 -re [RGB_ENABLE], --rgb-enable [RGB_ENABLE] RGB enable True/False -rl [RGB_LED_COUNT], --rgb-led-count [RGB_LED_COUNT] RGB LED count int -u [{C,F}], --temperature-unit [{C,F}] Temperature unit -gm [GPIO_FAN_MODE], --gpio-fan-mode [GPIO_FAN_MODE] GPIO fan mode, 0: Always On, 1: Performance, 2: Cool, 3: Balanced, 4: Quiet -gp [GPIO_FAN_PIN], --gpio-fan-pin [GPIO_FAN_PIN] GPIO fan pin -fl [GPIO_FAN_LED], --gpio-fan-led [GPIO_FAN_LED] GPIO fan LED state on/off/follow -fp [GPIO_FAN_LED_PIN], --gpio-fan-led-pin [GPIO_FAN_LED_PIN] GPIO fan LED pin -oe [OLED_ENABLE], --oled-enable [OLED_ENABLE] OLED enable True/true/on/On/1 or False/false/off/Off/0 -od [OLED_DISK], --oled-disk [OLED_DISK] Set to display which disk on OLED. 'total' or the name of the disk, like mmbclk or nvme -oi [OLED_NETWORK_INTERFACE], --oled-network-interface [OLED_NETWORK_INTERFACE] Set to display which ip of network interface on OLED, 'all' or the interface name, like eth0 or wlan0 -or [{0,180}], --oled-rotation [{0,180}] Set to rotate OLED display, 0, 180 -vp [VIBRATION_SWITCH_PIN], --vibration-switch-pin [VIBRATION_SWITCH_PIN] Vibration switch pin -vu [VIBRATION_SWITCH_PULL_UP], --vibration-switch-pull-up [VIBRATION_SWITCH_PULL_UP] Vibration switch pull up True/False -os [OLED_SLEEP_TIMEOUT], --oled-sleep-timeout [OLED_SLEEP_TIMEOUT] OLED sleep timeout in seconds |
It can control all the parameters from the web dashboard, and even a bit more since the user could also disable the dashboard, and adjust some vibration switch parameters.
There are two main reasons I see for disabling the dashboard. First, it’s not password-protected, so anybody with access to your LAN could change the settings easily. Second, it will uninstall InfluxDB, which continuously runs in the background and uses the CPU (2 to 13% when I checked). Removing it may slightly improve the performance. The pironman5 script also takes CPU cycles in the background, but you’ll probably want to keep it…
We can read the current configuration as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
pi@raspberrypi:~ $ pironman5 -c { "system": { "data_interval": 1, "rgb_color": "#0a1aff", "rgb_brightness": 100, "rgb_style": "rainbow", "rgb_speed": 100, "rgb_enable": true, "rgb_led_count": 4, "temperature_unit": "C", "oled_enable": true, "oled_rotation": 0, "oled_disk": "total", "oled_network_interface": "all", "gpio_fan_pin": 6, "gpio_fan_mode": 1, "gpio_fan_led": "follow", "gpio_fan_led_pin": 5, "oled_sleep_timeout": 600, "vibration_switch_pin": 26, "vibration_switch_pull_up": false } } |
I tried to turn on the OLED forever by setting the sleep timeout to 0 and restarting pironman5:
1 2 3 |
pi@raspberrypi:~ $ sudo pironman5 -os 0 Set OLED sleep timeout: 0 pi@raspberrypi:~ $ sudo pironman5 restart --background |
It looks to have done the trick.
Pironman 5 Max features testing
Let’s carry on the review with tests of the key features enabled by the Pironman 5 Max tower PC enclosure.
OLED
By default, the OLED will turn on at boot and automatically turn off after a sleep timeout set to 10 seconds by default. After that, the user needs to tap on the case to wake up the display. The OLED will display CPU, RAM, and Disk Usage, the CPU Temperature, and the Raspberry Pi’s IP Address. No changes from the previous model here.
The user can enable or disable the OLED and set the sleep timeout between 1 and 600 seconds in the web dashboard. The pironman5 command seems to be more versatile, as I also managed to set the OLED always on as noted above. Other options include network interface and disk selection, and the orientation of the display between 0 and 180°.
RGB LEDs on the IO Expandander board
The four WS2812 RGB LEDs will light up in blue in breathing mode. I took a video in this mode after setting the brightness to 100%
Users can adjust the style and speed through the web interface or CLI.
LED RGB fans
By default, the RGB fan will rotate at all times. But as we’ve just seen above, they can be configured to be triggered when the CPU reaches a specific temperature threshold: Quiet (70°C), Balanced (67.5°C), Cool ( 60°C), Performance (50°C). The Quiet mode is probably the best choice for most users.
The RGB LEDs are on by default, but they can be turned off (as in the video above), turned off at all times, or only turned on when the fans are rotating. Contrary to the RGB LED on the IO Expander board, there’s no special effect. The video below shows the Pironman 5 Max with all LEDs enabled.
IR receiver
The IR receiver can be tested with LIRC:
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 |
pi@raspberrypi:~ $ sudo apt install lirc pi@raspberrypi:~ $ sudo mode2 --driver default -d /dev/lirc0 Using driver default on device /dev/lirc0 Trying device: /dev/lirc0 Using device: /dev/lirc0 Running as regular user pi pulse 186 space 15374 pulse 210 timeout 129788 pulse 86 space 93606 pulse 701 space 2319 pulse 281 space 1914 pulse 89 space 11880 pulse 128 timeout 131312 pulse 82 space 117866 pulse 839 space 1695 pulse 165 space 334 pulse 220 space 10875 pulse 90 timeout 131318 |
Power button
The power button can be used to turn on the mini PC or turn it off safely. If you press it once when Raspberry Pi OS is running, it will bring up the Shutdown Options pop-up with Shutdown, Reboot, Lock Screen, and Logout, but you don’t need to use the mouse to turn the system off; simply press the button again.
RTC clock and battery
We can read the RTC time with the following command:
1 2 |
pi@raspberrypi:~ $ sudo hwclock -r 2025-06-29 13:43:16.519633+07:00 |
Now let’s disconnect the Ethernet cable, if any, and disable Wireless LAN before rebooting the system. if the RTC is working, we should get the right time and date even without any network connectivity.
June 29, 2025, that’s today, and the time is also right.
M.2 sockets with NVMe SSDs and Hailo-8L AI accelerator
Let’s now test the new Dual NVMe PIP with one NVMe SSD and Hailo-8L AI accelerator, then with two SSDs.
I’ll run iozone3 on the Raspberry Pi SSD first:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@raspberrypi:~ $ 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.489 $ Compiled for 64 bit mode. Build: linux random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 124888 146841 163611 164306 57355 141186 102400 16 249136 267441 302985 304097 157448 284724 102400 512 413343 412693 424725 425967 398901 404067 102400 1024 415127 416200 429995 427345 416615 415719 102400 16384 420343 418412 439137 440130 438884 420377 iozone test complete. |
Those results are similar to when I tested the same SSD with the Raspberry Pi M.2 HAT+ in PCIe Gen2 x1 mode. The write/rewrite speeds are actually a bit better (420 MB/s vs 390 MB/s), maybe because of some optimization since then. The PCIe interface on my Raspberry Pi 5 was already set to use PCIe Gen3 x1 mode, but it does not help since the PCIe signals are going through a PCIe Gen2 switch. So that’s one downside compared to the original Pironman 5 case.
Let’s now test the Hailo-8L module using the same instructions as for the Raspberry Pi AI HAT+. Let’s install the dependencies and check whether the module is detected:
1 2 3 |
sudo apt install hailo-all sudo reboot hailortcli fw-control identify |
Here’s the output:
1 2 3 4 5 6 7 8 9 10 11 |
pi@raspberrypi:~ $ hailortcli fw-control identify Executing on device: 0001:04:00.0 Identifying board Control Protocol Version: 2 Firmware Version: 4.20.0 (release,app,extended context switch buffer) Logger Version: 0 Board Name: Hailo-8 Device Architecture: HAILO8L Serial Number: HLDDLBB243902465 Part Number: HM21LB1C2LAE Product Name: HAILO-8L AI ACC M.2 B+M KEY MODULE EXT TMP |
A Hailo-8L accelerator is detected. All good!
Let’s run one of the rpicam-apps samples using the Raspberry Pi camera attached to the Pi 5:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
git clone --depth 1 https://github.com/raspberrypi/rpicam-apps.git ~/rpicam-apps cd rpicam-apps/ DISPLAY=:0 rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_inference.json --lores-width 640 --lores-height 640 --rotation 180 [0:07:03.268178398] [11419] INFO Camera camera_manager.cpp:326 libcamera v0.5.0+59-d83ff0a4 [0:07:03.275422568] [11422] INFO RPI pisp.cpp:720 libpisp version v1.2.1 981977ff21f3 29-04-2025 (14:13:50) [0:07:03.292492543] [11422] INFO RPI pisp.cpp:1179 Registered camera /base/axi/pcie@1000120000/rp1/i2c@80000/imx708@1a to CFE device /dev/media2 and ISP device /dev/media0 using PiSP variant BCM2712_C0 Made X/EGL preview window Postprocessing requested lores: 640x640 BGR888 Reading post processing stage "hailo_yolo_inference" Reading post processing stage "object_detect_draw_cv" Mode selection for 2304:1296:12:P SRGGB10_CSI2P,1536x864/0 - Score: 3400 SRGGB10_CSI2P,2304x1296/0 - Score: 1000 SRGGB10_CSI2P,4608x2592/0 - Score: 1900 Stream configuration adjusted [0:07:03.614197453] [11419] INFO Camera camera.cpp:1205 configuring streams: (0) 2304x1296-YUV420 (1) 640x640-BGR888 (2) 2304x1296-RGGB_PISP_COMP1 [0:07:03.614322254] [11422] INFO RPI pisp.cpp:1483 Sensor: /base/axi/pcie@1000120000/rp1/i2c@80000/imx708@1a - Selected sensor format: 2304x1296-SRGGB10_1X10 - Selected CFE format: 2304x1296-PC1R |
Good. Let’s now keep the AI demo program running and test the NVMe SSD performance again when PCIe bandwidth is shared between the SSD and AI accelerator:
1 2 3 4 5 6 7 8 |
pi@raspberrypi:~ $ iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 86976 90728 106096 109130 45648 92314 102400 16 172121 189690 198148 195551 117638 185899 102400 512 293834 286977 318676 320840 309418 290653 102400 1024 292028 297656 324662 329635 322158 296072 102400 16384 300008 301422 337596 338850 338400 300401 |
As expected, both sequential and random I/Os are impacted. The sequential read speed drops to about 337 MB/s (was 439 MB/s) and the write speed to 300 MB/s (was 420 MB/s). That’s still acceptable, and that means both the SSD and Hailo-8L can run simultaneously.
Time to shut down the Raspberry Pi 5 to replace the Hailo-8 with a 256GB MAKERDISK SSD. It’s relatively easy, as the user would only have to remove the acrylic cover and replace one module with the other. The trickiest part was removing the small standoff and installing it close to the fan for the M.2 2280 SSD. It’s probably easier with small fingers…
After booting the system, we can see our two SSDs: nvme0n1 and nvme1n1.
1 2 3 4 5 6 7 8 9 10 11 12 |
pi@raspberrypi:~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 259:0 0 238.5G 0 disk ├─nvme0n1p1 259:1 0 512M 0 part /boot/firmware └─nvme0n1p2 259:2 0 238G 0 part / nvme1n1 259:3 0 238.5G 0 disk ├─nvme1n1p1 259:4 0 256K 0 part ├─nvme1n1p2 259:5 0 64K 0 part ├─nvme1n1p3 259:6 0 1M 0 part ├─nvme1n1p4 259:7 0 2M 0 part ├─nvme1n1p5 259:8 0 256M 0 part └─nvme1n1p6 259:9 0 238.2G 0 part |
After mounting the /dev/nvme1n1p6, we can check the performance of the MAKERDISK SSD:
1 2 3 4 5 6 7 8 |
pi@raspberrypi:/media/nvme1n1p6 $ sudo iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 149379 164679 20232 20180 51778 150577 102400 16 275923 285764 80526 80899 188838 286462 102400 512 408955 407301 414969 417480 416987 396826 102400 1024 406373 419117 425834 427259 426654 412768 102400 16384 419206 420079 432124 433040 433695 406370 |
It’s similar to the Raspberry Pi SSD, which should not be surprising since the bottleneck is the PCIe Gen2 interface (5 GT/s).
Let’s try to run iozone3 on both disks simultaneously. But it did not work the way I expected. I thought both runs would roughly run in the same amount of time. But the iozone3 test on the Raspberry Pi SSD would complete first, then the one on the MAKERDISK SSD would complete later, as if it was throttled. The video below shows the test on the Raspberry Pi (left) and MAKERDISK (right) SSDs.
I’m not sure what happens here, but it’s as if the PCIe switch prioritizes the first PCIe interface. In any case, the Pironman 5 Max can support two NVMe SSDs just fine, but bear in mind one may be prioritized over the other if data requests are sent at the same time.
Performance and thermal cooling
To test the cooling ability of the Pironman 5 Max, I ran sbc-bench.sh in Quiet mode after disabling the CPU usage validation in the 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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
pi@raspberrypi:~ $ sudo ./sbc-bench.sh -r Starting to examine hardware/software for review purposes... sbc-bench v0.9.68 Installing needed tools: distro packages already installed, cpuminer. 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 (38 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Too much background activity (%system): 1% avg, 2% max -> https://tinyurl.com/mr2wy5uv * Too much other background activity: 2% avg, 4% max -> https://tinyurl.com/mr2wy5uv * No throttling * 8 different clusters but capacity-dmips-mhz property not set Full results uploaded to https://0x0.st/8UAr.txt # Raspberry Pi 5 Model B Rev 1.0 Tested with sbc-bench v0.9.68 on Sun, 29 Jun 2025 15:59:10 +0700. Full info: [https://0x0.st/8UAr.txt](http://0x0.st/8UAr.txt) ### General information: Information courtesy of cpufetch: SoC: Broadcom BCM2712 Technology: 16nm Microarchitecture: Cortex-A76 Max Frequency: 2.400 GHz Cores: 4 cores Features: NEON,SHA1,SHA2,AES,CRC32 The CPU features 8 clusters of same core type: 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 1500 2400 Cortex-A76 / r4p1 1 0 0 1500 2400 Cortex-A76 / r4p1 2 0 0 1500 2400 Cortex-A76 / r4p1 3 0 0 1500 2400 Cortex-A76 / r4p1 8059 KB available RAM ### Governors/policies (performance vs. idle consumption): Original governor settings: cpufreq-policy0: performance / 2400 MHz (conservative ondemand userspace powersave performance schedutil / 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.5°C: cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2397 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2400 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2399 cpu0-cpu3 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 After at 70.5°C: cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2400 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2400 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu3 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 ### Performance baseline * cpu0 (Cortex-A76): memcpy: 5802.8 MB/s, memchr: 14369.8 MB/s, memset: 8773.6 MB/s * cpu0 (Cortex-A76): memcpy: 5904.9 MB/s, memchr: 14432.3 MB/s, memset: 8786.4 MB/s * cpu0 (Cortex-A76): memcpy: 5880.6 MB/s, memchr: 14346.7 MB/s, memset: 8712.7 MB/s * cpu0 (Cortex-A76): memcpy: 5822.9 MB/s, memchr: 13933.4 MB/s, memset: 8701.6 MB/s * cpu0 (Cortex-A76): memcpy: 5579.9 MB/s, memchr: 13693.7 MB/s, memset: 8274.2 MB/s * cpu0 (Cortex-A76): memcpy: 5569.4 MB/s, memchr: 13659.3 MB/s, memset: 8441.4 MB/s * cpu0 (Cortex-A76): memcpy: 5613.1 MB/s, memchr: 13626.8 MB/s, memset: 8520.4 MB/s * cpu0 (Cortex-A76): memcpy: 5709.6 MB/s, memchr: 13803.5 MB/s, memset: 8516.8 MB/s * cpu0 (Cortex-A76) 16M latency: 109.8 106.7 109.2 104.1 106.2 112.3 145.9 191.4 * cpu0 (Cortex-A76) 16M latency: 107.8 108.8 105.1 109.4 104.8 114.0 144.1 187.3 * cpu0 (Cortex-A76) 16M latency: 106.5 107.8 106.9 105.1 110.8 111.4 146.5 194.7 * cpu0 (Cortex-A76) 16M latency: 108.6 107.5 103.7 108.5 107.4 114.4 141.5 183.4 * cpu0 (Cortex-A76) 16M latency: 103.6 103.7 109.1 109.8 104.0 111.7 142.3 185.4 * cpu0 (Cortex-A76) 16M latency: 102.2 107.9 112.2 105.7 103.0 110.5 146.5 184.7 * cpu0 (Cortex-A76) 16M latency: 108.8 105.7 103.1 103.4 111.0 112.6 142.0 192.9 * cpu0 (Cortex-A76) 16M latency: 103.2 108.3 106.2 111.5 106.7 111.6 143.2 178.7 * cpu0 (Cortex-A76) 128M latency: 118.8 117.8 119.7 118.5 118.3 119.2 119.3 124.0 * cpu0 (Cortex-A76) 128M latency: 118.6 117.9 119.6 117.1 119.5 117.5 120.4 124.2 * cpu0 (Cortex-A76) 128M latency: 119.7 117.8 119.9 117.9 118.8 118.4 119.5 123.8 * cpu0 (Cortex-A76) 128M latency: 119.2 118.4 119.5 117.5 119.6 117.6 119.8 124.5 * cpu0 (Cortex-A76) 128M latency: 119.7 124.7 118.3 118.5 119.4 117.5 119.0 124.0 * cpu0 (Cortex-A76) 128M latency: 119.9 117.1 118.3 120.0 118.3 117.1 119.2 124.6 * cpu0 (Cortex-A76) 128M latency: 118.5 117.1 121.6 117.1 118.3 117.2 121.1 124.2 * cpu0 (Cortex-A76) 128M latency: 119.7 118.3 119.8 117.1 120.4 117.3 119.2 124.7 * 7-zip MIPS (3 consecutive runs): 11156, 11153, 11171 (11160 avg), single-threaded: 3264 * `aes-256-cbc 537338.90k 1002041.30k 1253641.73k 1330746.37k 1363561.13k 1365912.23k (Cortex-A76)` * `aes-256-cbc 539711.76k 1002669.74k 1254003.37k 1330769.58k 1363036.84k 1365595.48k (Cortex-A76)` * `aes-256-cbc 539677.10k 1002709.72k 1254107.99k 1330062.68k 1363435.52k 1365988.69k (Cortex-A76)` * `aes-256-cbc 539400.02k 1002469.80k 1254300.76k 1330708.82k 1363268.95k 1366283.61k (Cortex-A76)` * `aes-256-cbc 539675.38k 1002485.23k 1254375.08k 1330787.33k 1363132.42k 1365650.09k (Cortex-A76)` * `aes-256-cbc 539275.28k 1002480.64k 1254301.35k 1330483.54k 1363271.68k 1366398.29k (Cortex-A76)` * `aes-256-cbc 539657.11k 1002297.39k 1254385.24k 1330881.19k 1363268.95k 1366452.91k (Cortex-A76)` * `aes-256-cbc 539494.14k 1001723.39k 1254484.05k 1330861.74k 1362755.58k 1366179.84k (Cortex-A76)` ### PCIe and storage devices: * Raspberry RP1 PCIe 2.0 South Bridge: Speed 5GT/s, Width x4, driver in use: rp1, ASPM Disabled * 238.5GB "SAMSUNG MZ9LQ256HBJD-00BVL" SSD as /dev/nvme0: Speed 5GT/s (downgraded), Width x1 (downgraded), 0% worn out, drive temp: 49°C, ASPM Disabled * 238.5GB "PCIe SSD" SSD as /dev/nvme1: Speed 5GT/s (downgraded), Width x1 (downgraded), 0% worn out, drive temp: 48°C, ASPM Disabled ### Swap configuration: * /var/swap on /dev/nvme0n1p2: 200.0M (0K used) ### 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+deb12u1) 12.2.0 / aarch64-linux-gnu * OpenSSL 3.0.16, built on 11 Feb 2025 (Library: OpenSSL 3.0.16 11 Feb 2025) * ThreadX: 69471177 / 2025/05/08 15:13:17 ### Kernel info: * `/proc/cmdline: reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe cgroup_disable=memory numa_policy=interleave numa=fake=8 system_heap.max_order=0 smsc95xx.macaddr=2C:CF:67:28:FD:27 vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000 console=ttyAMA10,115200 console=tty1 root=PARTUUID=c15065e6-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.12.25+rpt-rpi-2712 / CONFIG_HZ=250 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) 15:59:11: 2400/2400MHz 3.55 27% 1% 25% 0% 0% 0% 62.8°C 0.8905V 3.4W 5.10V ... Cleaning up. Done. Checking cpufreq OPP again. Done. Clockspeeds now at 63.4°C: cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2399 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu-1 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 cpu0-cpu3 (Cortex-A76): OPP: 2400, ThreadX: 2400, Measured: 2398 |
The CPU temperature started at about 45°C at idle, and topped at 75°C under load (stress-ng). Most of the test was done fanless
Performance-wise, the system achieved 11,160 MIPS in 7-zip on average, which compares to 10,930 MIPS on the Raspberry Pi 5 with an active cooler or 10,520 MIPS with the Pironman 5 case, so no problem here.
I then switched the GPIO Fan Mode to “Always On” and the CPU temperature dropped back to about 45°C within about 10 minutes and stabilized at that temperature. I run stress-ng directly to check the max CPU temperature with the fans:
1 |
stress-ng --cpu 4 --iomix 4 --vm 4 --vm-bytes 128M |
The CPU temperature will quickly jump by a few degrees once we start the stress test, but quickly stabilize at just under 60°C for the rest of the test.
All tests were done at an ambient temperature of about 28°C.
Power Consumption
One would think people buying this type of enclosure with fancy RGB LEDs don’t care too much about the power consumption, but I still measured it with a wall power meter under various conditions
- Power off – 0.0 – 0.1 Watts
- Idle
- OLED off, all RGB LEDs off, PWM fan set to Quiet – 5.4 – 5.9 Watts
- OLED on, all RGB LEDs off, PWM fan set to Quiet – 5.5 – 6.0 Watts
- OLED on, RGB LEDs breathing with 100% speed, PWM fan set to Quiet – 6.0 – 6.5 Watts
- OLED on, RGB LEDs breathing with 100% speed, RGB LEDs of the fan on, PWM fan set to Quiet – 6.4 – 6.9 Watts
- OLED on, RGB LEDs breathing with 100% speed, RGB LEDs of the fan on, PWM fan set to Always On – 7.0 – 7.6 Watts
Measurements were done with a USB RF dongle for a keyboard and mouse combo, a WiFi connection, an HDMI display, and two NVMe SSDs installed.
Conclusion
Like its predecessor, SunFounder’s Pironman 5 Max is a great little PC Tower case for the Raspberry Pi 5 that further improves on last year’s Pironman 5. It gains a slicker design, a dual NVMe PIP board to support up to two M.2 NVMe SSDs or one SSD and one M.2 AI accelerator, and small features like Tap-to-Wake for the OLED, a camera cable opening, and RGB LED fans.
It’s quite fancy with the OLED and RGB LEDs all configurable through an easy-to-use interface or a CLI for more advanced users. It keeps all the features of the Raspberry Pi 5 with Gigabit Ethernet, four USB ports, two (full-size) HDMI ports, a USB-C port for power, and external access to the 40-pin GPIO header.
It’s over-engineered, but I suppose that’s part of the charm of the enclosure, and cooling works great with the large heatsink and two RGB fans. The latter two can actually be turned off most of the time since the heatsink already does a proper job. One downside compared to the Pironman 5 is that the new Max model does not support PCIe Gen3 x1 since it relies on a PCI Gen2 switch to support two M.2 PCIe sockets. The Pironman5 script and InfluxDB (for logging) also use more CPU (around 2 to 15%) than one would have expected.
I’d like to thank SunFounder for sending the Pironman 5 Max for review, along with a Raspberry Pi AI Kit. The Raspberry Pi 5 Tower PC enclosure can be purchased for $94.99 and up, with the price depending on the options selected by the user, like a power supply, a Raspberry Pi 5 SBC, one or two SSDs, an AI Kit, etc… The company also runs AliExpress and Amazon stores, but in my experience, it may take several months before new products are listed there.

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. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.