We’ve already checked out the hardware of the ZimaBoard 2 micro server in the first part of the review with an unboxing and a teardown of the Intel N150 mini PC, followed by a first boot to ZimaOS and a walk-through of the web dashboard to see what features it had to offer.
I’ve now connected two SATA drives to the ZimaBoard 2 and done further testing with ZimaOS, notably checking system information and testing storage and networking performance. I also installed Ubuntu 24.04 on the ZimaBoard 2 for further testing for people preferring to use the system as a mini PC with SATA storage.
ZimaOS v1.4.1 update
When I connected to the web dashboard again, there was a new update for ZimaOS v1.4.1.
Before and after the update is completed, I was shown the change log with new features like a scheduled shutdown function and a list of bug fixes.
Enabling SATA storage and data access methods
The two SATA drives were properly detected with all partitions listed in the Storage section. From there, two options are available: Format all or Enable all.
I went with the Enable all option to keep the data on the drives. This had to be done for sda and sdb.
We can access the drives through the Files application in the web dashboard. You can create folders, delete files/folders, copy, upload, and download files. It’s also possible to play videos from there, but when I tried an MKV video (Sintel-2010.4k.mkv), it was just stuck at 00:00.
I tried another MP4 video, and that one played fine within the web browser.
Most people are likely to access the drives from their computer’s file manager. Two ways are offered here: ZimaOS (Remote Login) and ZimaOS (File Sharing). The former is an SFTP server, and the latter provides access to configured SAMBA shares.
If we click on ZimaOS (Remote Login), we are asked to enter the Zimaboard 2’s username and password.
That’s easy and straightforward with the user having access to all files on the system, both on the system drive (eMMC flash) and the SATA drives. It’s somewhat convenient, but also dangerous, as a bad manipulation could delete important files.
I had no problem navigating to the Videos folder and playing the sintel-2010.4k.mkv video on an Ubuntu 24.04 host.
It’s not ideal when the plan is to share drives with multiple users, since it would allow access to all files, unless you get clever and manually set permissions and groups for various folders and drives. The best way to share drives with other family members is the ZimaOS (File Sharing) option. But if I click on it, it’s empty. It’s perfectly normal because we have to configure the SAMBA shares first.
We can do that in the Files application on the ZimaOS dashboard, right-click on a folder, and select Share via SAMBA.
From here, we can add members and define who has access with granularity for read or write. In the example below, I shared the Videos folder, giving Read & Write access to user aey, and Read access to anybody who accesses the share.
The Videos share showed up on Nautilus managed in Ubuntu, and when I clicked on it, I connected as an Anonymous user since I just wanted to check file access and play a video.
Again, no problem playing the 4K video from a SAMBA share.
Another option is to use the Zima Client for remote access. You can find it on the home page on the dashboard as “Remote Access”. Click on Learn more to access the configuration.
Once you have the parameters like virtual network name and Remote ID, you can download the Zima Client. It’s only available for Windows and macOS right now, and mobile support is coming soon. Not ideal for an Ubuntu and Android user like myself.
Luckily, there’s another option, and we can perform a web scan instead. There’s just a little problem: it won’t find my ZimaBoard 2 even though my laptop and the micro server are on the same subnet.
A quick try on an Android mobile phone, and it’s the same result. I’ll skip that test.
2.5GbE networking and storage performance
The Zimaboard 2 comes with two 2.5GbE RJ45 ports. I’ll test both with iperf3:
Right port:
- Download to the laptop:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
jaufranc@CNX-LAPTOP-5:~$ iperf3 -t 60 -c 192.168.31.159 -i 10 -R Connecting to host 192.168.31.159, port 5201 Reverse mode, remote host 192.168.31.159 is sending [ 5] local 192.168.31.112 port 53276 connected to 192.168.31.159 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.01 sec 2.74 GBytes 2.35 Gbits/sec [ 5] 10.01-20.01 sec 2.74 GBytes 2.35 Gbits/sec [ 5] 20.01-30.01 sec 2.74 GBytes 2.35 Gbits/sec [ 5] 30.01-40.01 sec 2.74 GBytes 2.35 Gbits/sec [ 5] 40.01-50.01 sec 2.74 GBytes 2.35 Gbits/sec [ 5] 50.01-60.01 sec 2.74 GBytes 2.35 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.01 sec 16.4 GBytes 2.35 Gbits/sec 0 sender [ 5] 0.00-60.01 sec 16.4 GBytes 2.35 Gbits/sec receiver iperf Done. |
- Upload:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
jaufranc@CNX-LAPTOP-5:~$ iperf3 -t 60 -c 192.168.31.159 -i 10 Connecting to host 192.168.31.159, port 5201 [ 5] local 192.168.31.112 port 51024 connected to 192.168.31.159 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.01 sec 2.74 GBytes 2.36 Gbits/sec 0 1.32 MBytes [ 5] 10.01-20.01 sec 2.74 GBytes 2.35 Gbits/sec 0 2.02 MBytes [ 5] 20.01-30.01 sec 2.74 GBytes 2.35 Gbits/sec 0 2.02 MBytes [ 5] 30.01-40.01 sec 2.74 GBytes 2.35 Gbits/sec 0 2.02 MBytes [ 5] 40.01-50.00 sec 2.74 GBytes 2.35 Gbits/sec 0 2.02 MBytes [ 5] 50.00-60.01 sec 2.74 GBytes 2.35 Gbits/sec 0 2.02 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.01 sec 16.4 GBytes 2.35 Gbits/sec 0 sender [ 5] 0.00-60.01 sec 16.4 GBytes 2.35 Gbits/sec receiver iperf Done. |
- Bidirectional (full-duplex):
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 |
jaufranc@CNX-LAPTOP-5:~$ iperf3 -t 60 -c 192.168.31.159 -i 10 --bidir Connecting to host 192.168.31.159, port 5201 [ 5] local 192.168.31.112 port 45010 connected to 192.168.31.159 port 5201 [ 7] local 192.168.31.112 port 45020 connected to 192.168.31.159 port 5201 [ ID][Role] Interval Transfer Bitrate Retr Cwnd [ 5][TX-C] 0.00-10.01 sec 2.73 GBytes 2.34 Gbits/sec 0 1.64 MBytes [ 7][RX-C] 0.00-10.01 sec 2.73 GBytes 2.35 Gbits/sec [ 5][TX-C] 10.01-20.01 sec 2.73 GBytes 2.35 Gbits/sec 0 2.58 MBytes [ 7][RX-C] 10.01-20.01 sec 2.73 GBytes 2.35 Gbits/sec [ 5][TX-C] 20.01-30.01 sec 2.73 GBytes 2.35 Gbits/sec 0 2.58 MBytes [ 7][RX-C] 20.01-30.01 sec 2.73 GBytes 2.35 Gbits/sec [ 5][TX-C] 30.01-40.01 sec 2.73 GBytes 2.35 Gbits/sec 0 2.58 MBytes [ 7][RX-C] 30.01-40.01 sec 2.73 GBytes 2.35 Gbits/sec [ 5][TX-C] 40.01-50.01 sec 2.73 GBytes 2.35 Gbits/sec 0 2.58 MBytes [ 7][RX-C] 40.01-50.01 sec 2.73 GBytes 2.35 Gbits/sec [ 5][TX-C] 50.01-60.01 sec 2.73 GBytes 2.35 Gbits/sec 0 2.58 MBytes [ 7][RX-C] 50.01-60.01 sec 2.73 GBytes 2.35 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID][Role] Interval Transfer Bitrate Retr [ 5][TX-C] 0.00-60.01 sec 16.4 GBytes 2.35 Gbits/sec 0 sender [ 5][TX-C] 0.00-60.01 sec 16.4 GBytes 2.35 Gbits/sec receiver [ 7][RX-C] 0.00-60.01 sec 16.4 GBytes 2.35 Gbits/sec 0 sender [ 7][RX-C] 0.00-60.01 sec 16.4 GBytes 2.35 Gbits/sec receiver iperf Done. |
Left port bidirectional:
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 |
jaufranc@CNX-LAPTOP-5:~$ iperf3 -t 60 -c 192.168.31.158 -i 10 --bidir Connecting to host 192.168.31.158, port 5201 [ 5] local 192.168.31.112 port 53638 connected to 192.168.31.158 port 5201 [ 7] local 192.168.31.112 port 53652 connected to 192.168.31.158 port 5201 [ ID][Role] Interval Transfer Bitrate Retr Cwnd [ 5][TX-C] 0.00-10.01 sec 2.74 GBytes 2.35 Gbits/sec 0 1.12 MBytes [ 7][RX-C] 0.00-10.01 sec 2.73 GBytes 2.35 Gbits/sec [ 5][TX-C] 10.01-20.01 sec 2.73 GBytes 2.35 Gbits/sec 0 1.18 MBytes [ 7][RX-C] 10.01-20.01 sec 2.73 GBytes 2.35 Gbits/sec [ 5][TX-C] 20.01-30.01 sec 2.70 GBytes 2.32 Gbits/sec 0 2.69 MBytes [ 7][RX-C] 20.01-30.01 sec 2.60 GBytes 2.24 Gbits/sec [ 5][TX-C] 30.01-40.01 sec 2.70 GBytes 2.32 Gbits/sec 0 2.69 MBytes [ 7][RX-C] 30.01-40.01 sec 2.71 GBytes 2.33 Gbits/sec [ 5][TX-C] 40.01-50.01 sec 2.72 GBytes 2.34 Gbits/sec 0 2.69 MBytes [ 7][RX-C] 40.01-50.01 sec 2.72 GBytes 2.33 Gbits/sec [ 5][TX-C] 50.01-60.01 sec 2.73 GBytes 2.34 Gbits/sec 0 2.69 MBytes [ 7][RX-C] 50.01-60.01 sec 2.73 GBytes 2.35 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID][Role] Interval Transfer Bitrate Retr [ 5][TX-C] 0.00-60.01 sec 16.3 GBytes 2.34 Gbits/sec 0 sender [ 5][TX-C] 0.00-60.01 sec 16.3 GBytes 2.34 Gbits/sec receiver [ 7][RX-C] 0.00-60.01 sec 16.2 GBytes 2.32 Gbits/sec 44 sender [ 7][RX-C] 0.00-60.01 sec 16.2 GBytes 2.32 Gbits/sec receiver iperf Done. |
Everything looks good here. Note that the Zimaboard 2 does not come with a WiFi module, and does not support M.2 wireless expansion, so in case you need WiFi, you’d need to connect a USB WiFi dongle.
To test storage, I would usually rely on iozone3, but it’s not installed on ZimaOS, and the Linux distribution lacks a package manager like apt, plus the gcc toolchain is not installed, so we can’t build anything ourselves from the machines. So instead, I went with the Fio utility like I did with the i-Pi SMARC 1200 (MediaTek Genio 1200) devkit.
The root filesystem is also read-only..
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 |
aey@ZimaOS:~ ➜ $ sudo lsblk /dev/mmcblk0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS mmcblk0 179:0 0 29.1G 0 disk ├─mmcblk0p1 179:1 0 32M 0 part /mnt/boot ├─mmcblk0p2 179:2 0 24M 0 part ├─mmcblk0p3 179:3 0 6G 0 part / ├─mmcblk0p4 179:4 0 24M 0 part ├─mmcblk0p5 179:5 0 6G 0 part ├─mmcblk0p6 179:6 0 8M 0 part ├─mmcblk0p7 179:7 0 96M 0 part /var/lib/zerotier-one │ /var/lib/rauc │ /mnt/overlay └─mmcblk0p8 259:0 0 17G 0 part /var/log /var/lib/libvirt /var/lib/icewhale /var/lib/extensions /var/lib/docker /var/lib/casaos /opt /DATA /var/lib/bluetooth /media /var/lib/casaos_data aey@ZimaOS:~ ➜ $ mount | grep mmcblk03 aey@ZimaOS:~ ➜ $ mount | grep mmcblk0p3 /dev/mmcblk0p3 on / type squashfs (ro,relatime,errors=continue) aey@ZimaOS:~ ➜ $ mount | grep mmcblk0p8 | grep log /dev/mmcblk0p8 on /var/log type ext4 (rw,relatime,commit=30) |
However, the /var/log directory is not, and the partition is 17GB large, so I’ll test the eMMC flash there.
1 2 3 4 5 6 7 8 |
sudo mkdir /var/log/fiotest cd /var/log/fiotest sudo fio --directory=/var/log/fiotest --direct=1 --rw=read --bs=1024k --ioengine=libaio --iodepth=64 --size=1G --runtime=10 --numjobs=4 --group_reporting --name=fio-rand-read-sequential --eta-newline=1 | grep READ READ: bw=326MiB/s (342MB/s), 326MiB/s-326MiB/s (342MB/s-342MB/s), io=3294MiB (3454MB), run=10104-10104msec sudo rm fio* -rf sudo fio --directory=/var/log/fiotest --direct=1 --rw=write --bs=1024k --ioengine=libaio --iodepth=64 --size=1G --runtime=10 --numjobs=4 --group_reporting --name=fio-rand-write-sequential --eta-newline=1 | grep WRITE WRITE: bw=189MiB/s (199MB/s), 189MiB/s-189MiB/s (199MB/s-199MB/s), io=2005MiB (2102MB), run=10589-10589msec sudo rm fio* -rf |
342MB/s sequential read speed and 199MB/s sequential write speed are rather good for an eMMC flash
Let’s now try the same test on the SATA drives. One of the drives is a slow HDD (about 100MB/s expected), and the other is a low-end 128GB CHUANG JIU SATA SSD previously tested at 229 MB/s sequential read speed and 160MB/s sequential write speed in the GEEKOM A5 mini PC with CrystalDiskMark.
- SATA interface (HDD – EXT-4)
1 2 3 4 5 |
sudo mkdir /media/sda2/fiotest sudo fio --directory=/media/sda2/fiotest --direct=1 --rw=read --bs=1024k --ioengine=libaio --iodepth=64 --size=1G --runtime=10 --numjobs=4 --group_reporting --name=fio-rand-read-sequential --eta-newline=1 | grep READ READ: bw=90.1MiB/s (94.4MB/s), 90.1MiB/s-90.1MiB/s (94.4MB/s-94.4MB/s), io=955MiB (1001MB), run=10603-10603msec sudo fio --directory=/media/sda2/fiotest --direct=1 --rw=write --bs=1024k --ioengine=libaio --iodepth=64 --size=1G --runtime=10 --numjobs=4 --group_reporting --name=fio-rand-write-sequential --eta-newline=1 | grep WRITE WRITE: bw=115MiB/s (120MB/s), 115MiB/s-115MiB/s (120MB/s-120MB/s), io=1190MiB (1248MB), run=10359-10359msec |
- SATA interface (SSD – exFAT)
1 2 3 4 5 |
sudo mkdir /media/sdb1/fiotest sudo fio --directory=/media/sdb1/fiotest --direct=1 --rw=read --bs=1024k --ioengine=libaio --iodepth=64 --size=1G --runtime=10 --numjobs=4 --group_reporting --name=fio-rand-read-sequential --eta-newline=1 | grep READ READ: bw=249MiB/s (261MB/s), 249MiB/s-249MiB/s (261MB/s-261MB/s), io=2559MiB (2683MB), run=10272-10272msec sudo fio --directory=/media/sdb1/fiotest --direct=1 --rw=write --bs=1024k --ioengine=libaio --iodepth=64 --size=1G --runtime=10 --numjobs=4 --group_reporting --name=fio-rand-write-sequential --eta-newline=1 | grep WRITE WRITE: bw=145MiB/s (152MB/s), 145MiB/s-145MiB/s (152MB/s-152MB/s), io=1450MiB (1520MB), run=10023-10023msec |
Those are about the numbers I would have expected for those two drives, although the read speed for the SATA HDD is a bit lower than expected at 94.4MB/s.
Let’s now test file transfers. First over “Remote Login” (SFTP), where a 4.9 GB file was transferred in about 22 seconds, or about 228.8 MB/s.
Then with “File Sharing” (SAMBA) where the transfer took 28 seconds, or about 164.5 MB/s.
I tested several times. It’s important to note that the file was stored on the SATA HDD, so the first transfer was slower, sometimes as low as 80MB/s with SAMBA. Subsequent transfers benefited from caching, which explains why they were faster.
Let’s try a similar test on the SATA SSD, copying a 6.11GB Ubuntu 24.04 Desktop ISO file. Using the “Remote Login” (SFTP) takes over one minute. I tried several times, and the result is the same with high variations. This would result in under 100MB/s transfers.
When I switched to “File Sharing” (SAMBA), I had the same behavior. So I decided to copy the file from SAMBA to /dev/null, just in case the NVMe SSD on my laptop introduced some bottleneck. That’s the result I got:
1 2 3 4 5 |
jaufranc@CNX-LAPTOP-5:/run/user/1000/gvfs/smb-share:server=zimaos.local,share=ubuntu-iso$ time cp ubuntu-24.04-desktop-amd64.iso /dev/null real 1m11.559s user 0m0.066s sys 0m3.792s |
That would be 87.5 MB/s on average. I double-checked I was still connected over 2.5 Gbps Ethernet just in case, but no issues here. We can also see that the chart peaked at about 300 MB/s in the chart above.
I tried the same test in the command line using the 4.9GB file on the SATA HDD:
1 2 3 4 5 |
jaufranc@CNX-LAPTOP-5:/run/user/1000/gvfs/smb-share:server=zimaos.local,share=videos$ time cp Sintel.2010.4k.mkv /dev/null real 0m52.776s user 0m0.050s sys 0m2.972s |
That’s 95 MB/s per second, and closer to the results we would expect from the SATA hard drive than in my very first test.
I decided to repeat that test with SFTP using the Ubuntu ISO image in the SATA SSD:
1 2 3 4 5 6 7 8 |
aey@ZimaOS:/media/sdb1/Ubuntu-ISO ➜ $ time scp ubuntu-24.04-desktop-amd64.iso jaufranc@192.168.31.112:/dev/null jaufranc@192.168.31.112's password: ubuntu-24.04-desktop-amd64.iso 100% 5831MB 189.0MB/s 00:30 scp: remote fsetstat: Bad message real 0m35.982s user 0m14.920s sys 0m6.889s |
Accepting the certificate (not saved by ZimaOS) and typing the password probably took about 2 seconds. So let’s assume the transfer took 34 seconds. That would convert into 184 MB/s for the 6.1GB file, again closer to what we should expect in theory.
ZimaOS Applications
As noted previously, ZimaOS lacks apt, yum, pacman, or other package managers, and the root file system is read-only, with some R/W partitions like /var/log. The only way to easily add a new program is to use the App Store. There are 334 apps, but some are repeats. Filtering for “home”, we can see AdGuard Home (three times), Home Assistant (two or three times, see ESPHome), HomeBridge, WireGuard, OpenHAB, etc…
It’s meant to make installing those popular programs easier for regular users. I haven’t really used that part, and focused my efforts on other parts.
ZimaOS system information
Le’ts check some system information with common tools:
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 |
aey@ZimaOS:~ ➜ $ uname -a Linux ZimaOS 6.6.48 #1 SMP PREEMPT_DYNAMIC Tue May 20 09:49:10 UTC 2025 x86_64 GNU/Linux aey@ZimaOS:~ ➜ $ cat /etc/issue Welcome to ZimaOS aey@ZimaOS:~ ➜ $ free -mh total used free shared buff/cache available Mem: 7.5Gi 1.2Gi 3.7Gi 1.6Mi 2.8Gi 6.3Gi Swap: 2.5Gi 487Mi 2.0Gi aey@ZimaOS:~ ➜ $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 1.5G 1.5G 0 100% / devtmpfs 3.8G 0 3.8G 0% /dev /dev/mmcblk0p7 85M 181K 78M 1% /mnt/overlay overlayfs 85M 181K 78M 1% /etc tmpfs 3.8G 0 3.8G 0% /dev/shm tmpfs 1.6G 5.2M 1.5G 1% /run tmpfs 3.8G 20K 3.8G 1% /tmp tmpfs 3.8G 2.2M 3.8G 1% /var tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-network-generator.service tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-udev-load-credentials.service tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-tmpfiles-setup-dev-early.service tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-tmpfiles-setup-dev.service /dev/mmcblk0p8 17G 9.5G 7.1G 58% /DATA /dev/mmcblk0p1 32M 732K 32M 3% /mnt/boot tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-vconsole-setup.service tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-sysctl.service tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-tmpfiles-setup.service /dev/sda1 511M 6.2M 505M 2% /media/sda1 /dev/sda2 802G 570G 192G 75% /media/sda2 /dev/sda3 116G 93M 116G 1% /media/sda3 /dev/sdb1 118G 5.7G 113G 5% /media/sdb1 sysext 3.8G 8.0K 3.8G 1% /usr aey@ZimaOS:~ ➜ $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 190 model name : Intel(R) N150 stepping : 0 microcode : 0x1c cpu MHz : 3038.185 cache size : 6144 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 32 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l2 cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdt_a rdseed adx smap clflushopt clwb intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves split_lock_detect avx_vnni dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req vnmi umip pku ospke waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize arch_lbr ibt flush_l1d arch_capabilities vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs ept_mode_based_exec tsc_scaling usr_wait_pause bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs rfds bhi bogomips : 1612.80 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 190 model name : Intel(R) N150 stepping : 0 microcode : 0x1c cpu MHz : 2994.983 cache size : 6144 KB physical id : 0 siblings : 4 core id : 1 cpu cores : 4 apicid : 2 initial apicid : 2 fpu : yes fpu_exception : yes cpuid level : 32 wp : yes |
ZimaOS is run on top of Linux 6.6.48. The read-only rootfs partition is 1.5GB, but there are other R/W partitions for the system that make use of the 32GB eMMC flash. We can confirm that an Intel N150 is used by the system and the 8GB of RAM. I was unable to run inxi, since it’s not preinstalled.
While checking htop, I noticed high CPU usage on one core by a process called x2t.
It’s apparently a converter for OnlyOffice:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
aey@ZimaOS:~ ➜ $ /usr/bin/x2t/x2t ------------------------------------------------------------------------------- OOX/binary file converter. Version: 8.2.2.22 ------------------------------------------------------------------------------- USAGE: x2t "path_to_params_xml" or USAGE: x2t "path_to_file_1" "path_to_file_2" ["path_to_font_selection"] WHERE: "path_to_file_1" is a path to file to be converted "path_to_file_2" is a path to the corresponding output file "path_to_font_selection" is a path to 'font_selection.bin' location NOTE: conversion direction will be calculated from file extensions |
I have no idea how it got triggered. I initially assumed the system was just scanning the whole drive for office files or similar, and decided to let it run for a few days. However, when I checked it again almost 6 days later, the x2t process was still running, and I noticed it was with the same file as before…
So I decided to kill it manually:
1 |
sudo kill 1507063 |
I waited for a few minutes, and the x2t process was not triggered again. So it looks better now.
I did all the network and storage tests above after the x2t process was killed, or so I thought, because it came back – likely after I went to the Files app on the web dashboard – and got stuck with the same file.
Thermal considerations
The video output (mini DP with HDMI adapter) is not super stable, and when I tried to adjust the cable and adjust, I touched the enclosure. Ouch! It was really hot. Since the enclosure has a light grey/silver color, I placed some black tape in one location because measuring with an Xtherm II TS2+ thermal imager, but it looks like it was not necessary, as it did not change the results: about 74°C when x2t was running.
After I killed x2t, and waited a few hours, the temperature dropped to about 63°C. Still pretty hot. It means cooling is working, but if you have young kids, or simply when you want to insert or plug in a USB peripheral, it’s not ideal.
Finally, I ran stress-ng on Ubuntu 24.04:
1 |
stress-ng --cpu 4 --iomix 4 --vm 4 --vm-bytes 128M |
sbc-bench.sh reported the CPU throttling rather quickly and then stabilizing at 95 to 97°C:
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 |
jaufranc@ZimaBoard-2-CNX:~$ sudo ./sbc-bench.sh -m N150, Kernel: x86_64, Userland: amd64 CPU sysfs topology (clusters, cpufreq members, clockspeeds) cpufreq min max CPU cluster policy speed speed core type 0 0 0 700 3600 - 1 0 1 700 3600 - 2 0 2 700 3600 - 3 0 3 700 3600 - Thermal source: /sys/devices/virtual/thermal/thermal_zone1/ (x86_pkg_temp) Time CPU load %cpu %sys %usr %nice %io %irq Temp 15:23:45: 2006MHz 2.94 32% 5% 14% 0% 12% 0% 70.0°C 15:23:50: 3084MHz 2.79 22% 2% 14% 5% 0% 0% 91.0°C 15:23:55: 2900MHz 2.56 5% 1% 4% 0% 0% 0% 67.0°C 15:24:00: 1800MHz 2.52 5% 1% 3% 0% 0% 0% 66.0°C 15:24:05: 1700MHz 2.32 4% 1% 2% 0% 0% 0% 67.0°C 15:24:10: 1655MHz 2.13 5% 1% 3% 0% 1% 0% 67.0°C 15:24:15: 1700MHz 1.88 5% 1% 3% 0% 0% 0% 67.0°C 15:24:20: 2900MHz 3.17 73% 5% 65% 1% 0% 0% 92.0°C 15:24:25: 2918MHz 3.07 89% 13% 48% 8% 18% 1% 88.0°C 15:24:30: 1700MHz 2.83 18% 1% 3% 12% 1% 0% 67.0°C 15:24:35: 2900MHz 7.81 96% 4% 91% 0% 0% 0% 92.0°C 15:24:40: 2900MHz 11.91 100% 4% 95% 0% 0% 0% 93.0°C 15:24:45: 2900MHz 15.12 100% 4% 95% 0% 0% 0% 94.0°C 15:24:50: 2900MHz 18.31 100% 4% 95% 0% 0% 0% 92.0°C Time CPU load %cpu %sys %usr %nice %io %irq Temp 15:24:55: 2900MHz 21.09 100% 5% 94% 0% 0% 0% 92.0°C 15:25:00: 2900MHz 24.04 100% 7% 92% 0% 0% 0% 92.0°C 15:25:05: 2900MHz 27.08 100% 5% 94% 0% 0% 0% 94.0°C 15:25:10: 2900MHz 29.32 99% 5% 93% 0% 0% 0% 95.0°C 15:25:15: 2900MHz 31.86 100% 5% 94% 0% 0% 0% 96.0°C 15:25:20: 2900MHz 34.11 100% 4% 95% 0% 0% 0% 95.0°C 15:25:26: 2900MHz 35.86 100% 5% 94% 0% 0% 0% 95.0°C 15:25:31: 2900MHz 37.16 100% 8% 91% 0% 0% 0% 96.0°C 15:25:36: 2900MHz 38.43 100% 6% 93% 0% 0% 0% 96.0°C 15:25:41: 2900MHz 40.07 100% 5% 94% 0% 0% 0% 95.0°C 15:25:46: 2900MHz 41.75 100% 6% 93% 0% 0% 0% 97.0°C |
If I wait a little longer, the temperature even goes higher up to 103°C, and the CPU frequency drops further:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Time CPU load %cpu %sys %usr %nice %io %irq Temp 16:02:49: 2500MHz 62.33 100% 16% 83% 0% 0% 0% 102.0°C 16:02:54: 2300MHz 62.14 100% 18% 80% 0% 0% 0% 98.0°C 16:02:59: 2500MHz 62.85 100% 17% 82% 0% 0% 0% 102.0°C 16:03:04: 2375MHz 63.26 100% 16% 81% 0% 0% 0% 98.0°C 16:03:09: 2400MHz 63.16 100% 14% 85% 0% 0% 0% 99.0°C 16:03:14: 2400MHz 63.07 100% 15% 83% 0% 0% 0% 98.0°C 16:03:19: 2400MHz 63.30 100% 16% 83% 0% 0% 0% 100.0°C 16:03:24: 2400MHz 64.24 100% 14% 85% 0% 0% 0% 100.0°C 16:03:29: 2400MHz 64.94 100% 15% 84% 0% 0% 0% 103.0°C 16:03:35: 2500MHz 64.87 100% 15% 83% 0% 0% 0% 103.0°C 16:03:40: 2300MHz 64.56 100% 16% 83% 0% 0% 0% 98.0°C 16:03:45: 2500MHz 63.31 100% 14% 85% 0% 0% 0% 102.0°C 16:03:50: 2400MHz 63.21 100% 13% 86% 0% 0% 0% 102.0°C |
The metal enclosure temperature rose to about 76°C. It’s super hot to the touch, and you wouldn’t want to remove a USB thumb drive when the case is that hot.
All tests were done at about 28°C ambient.
ZimaBoard 2 Ubuntu 24.04 Review
Despite a few bugs here and there, ZimaOS is fine for micro server applications, but if you’d like to use the device as a mini PC too, you’ll need another operating system. I wanted to install Ubuntu 24.04 on the ZimaBoard 2. There are two methods: Proxmox VE to use ZimaOS and Ubuntu 24.04 at the same time, or a more traditional dual-boot setup. Since I have the Zimaboard 2 832 with 8GB RAM and 32GB eMMC flash, the second solution is probably a better bet, while the Zimaboard 2 1664 with 16GB RAM and 64GB eMMC flash might handle Proxmox VE just fine.
Since I didn’t want to wipe out ZimaOS from the eMMC flash, I installed Ubuntu 24.04 on the SATA SSD attached to the Zimaboard 2. I had to manually define the partition for the root filesystem and bootloader driver, and after that, it went smoothly.
Let’s check the system information with inxi:
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 |
jaufranc@ZimaBoard-2-CNX:~$ sudo inxi -Fc0 System: Host: ZimaBoard-2-CNX Kernel: 6.11.0-26-generic arch: x86_64 bits: 64 Console: pty pts/2 Distro: Ubuntu 24.04.2 LTS (Noble Numbat) Machine: Type: Desktop Mobo: N/A model: N/A serial: N/A UEFI: American Megatrends LLC. v: 5.27 date: 04/27/2025 CPU: Info: quad core model: Intel N150 bits: 64 type: MCP cache: L2: 2 MiB Speed (MHz): avg: 3171 min/max: 700/3600 cores: 1: 3385 2: 3020 3: 3178 4: 3103 Graphics: Device-1: Intel Alder Lake-N [Intel Graphics] driver: i915 v: kernel Display: server: X.org v: 1.21.1.11 with: Xwayland v: 23.2.6 driver: gpu: i915 tty: 90x25 resolution: 1920x1080 API: EGL v: 1.5 drivers: iris,swrast platforms: gbm,surfaceless,device API: OpenGL v: 4.6 compat-v: 4.5 vendor: mesa v: 24.2.8-1ubuntu1~24.04.1 note: console (EGL sourced) renderer: Mesa Intel Graphics (ADL-N), llvmpipe (LLVM 19.1.1 256 bits) Audio: Device-1: Intel Alder Lake-N PCH High Definition Audio driver: snd_hda_intel API: ALSA v: k6.11.0-26-generic status: kernel-api Network: Device-1: Intel Ethernet I226-V driver: igc IF: enp1s0 state: up speed: 2500 Mbps duplex: full mac: 00:e0:4c:40:6d:28 Device-2: Intel Ethernet I226-V driver: igc IF: enp2s0 state: up speed: 2500 Mbps duplex: full mac: 00:e0:4c:40:6d:27 Drives: Local Storage: total: 1.05 TiB used: 10 GiB (0.9%) ID-1: /dev/mmcblk0 model: C9A551 size: 29.14 GiB type: Removable ID-2: /dev/sda vendor: Toshiba model: HDWL110 size: 931.51 GiB ID-3: /dev/sdb model: CJ225128TC size: 118 GiB Partition: ID-1: / size: 115.59 GiB used: 9.99 GiB (8.6%) fs: ext4 dev: /dev/sdb1 ID-2: /boot/efi size: 31.9 MiB used: 6.1 MiB (19.2%) fs: vfat dev: /dev/mmcblk0p1 Swap: ID-1: swap-1 type: file size: 4 GiB used: 92.8 MiB (2.3%) file: /swap.img Sensors: System Temperatures: cpu: 95.0 C mobo: N/A Fan Speeds (rpm): N/A Info: Memory: total: 8 GiB available: 7.51 GiB used: 2.62 GiB (34.9%) igpu: 60 MiB Processes: 249 Uptime: 1h 7m Init: systemd target: graphical (5) Shell: Sudo inxi: 3.3.34 |
Everything looks to be detected properly: A quad-core Intel N150 system with Intel UHD graphics, 8GB RAM, 32GB eMMC flash, two SATA drives (1TB Toshiba HDD and 128GB SSD), and two 2.5 Gbps Ethernet ports with a link. I did not check the PCIe slot as I forgot to take my old graphics card with me. The CPU temperature is really high at 95°C, and it does not match the 72°C reported by sbc-bench.sh at that time. Both utilities must be using different sensors:
1 2 3 4 5 6 7 8 9 10 11 12 |
jaufranc@ZimaBoard-2-CNX:~$ sensors acpitz-acpi-0 Adapter: ACPI interface temp1: +27.8°C coretemp-isa-0000 Adapter: ISA adapter Package id 0: +70.0°C (high = +105.0°C, crit = +105.0°C) Core 0: +66.0°C (high = +105.0°C, crit = +105.0°C) Core 1: +66.0°C (high = +105.0°C, crit = +105.0°C) Core 2: +66.0°C (high = +105.0°C, crit = +105.0°C) Core 3: +66.0°C (high = +105.0°C, crit = +105.0°C) |
Let’s now run sbc-bench.sh benchmarks to check the performance:
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 |
jaufranc@ZimaBoard-2-CNX:~$ sudo ./sbc-bench.sh -r Starting to examine hardware/software for review purposes... sbc-bench v0.9.71 Installing needed tools: apt-get -f -qq -y install gcc make build-essential powercap-utils curl git links mmc-utils smartmontools, p7zip 16.02, tinymembench, ramlat, mhz, cpufetch., 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 (11 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * Too much other background activity: 5% avg, 17% max -> https://tinyurl.com/mr2wy5uv * Powercap detected. Details: "sudo powercap-info -p intel-rapl" -> https://tinyurl.com/4jh9nevj Full results uploaded to https://0x0.st/8gY5.bin # / N150 Tested with sbc-bench v0.9.71 on Sun, 08 Jun 2025 16:39:24 +0700. Full info: [https://0x0.st/8gY5.bin](http://0x0.st/8gY5.bin) ### General information: Information courtesy of cpufetch: Name: Intel(R) N150 Microarchitecture: Alder Lake Technology: 10nm Max Frequency: 3.600 GHz Cores: 4 cores AVX: AVX,AVX2 FMA: FMA3 L1i Size: 64KB (256KB Total) L1d Size: 32KB (128KB Total) L2 Size: 2MB L3 Size: 6MB N150, Kernel: x86_64, Userland: amd64 CPU sysfs topology (clusters, cpufreq members, clockspeeds) cpufreq min max CPU cluster policy speed speed core type 0 0 0 700 3600 - 1 0 1 700 3600 - 2 0 2 700 3600 - 3 0 3 700 3600 - 7687 KB available RAM ### Policies (performance vs. idle consumption): 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 83.0°C: cpu0: OPP: 3600, Measured: 3572 After at 99.0°C: cpu0: OPP: 3600, Measured: 3572 ### Performance baseline * memcpy: 9826.6 MB/s, memchr: 14322.0 MB/s, memset: 9645.6 MB/s * 16M latency: 162.7 149.0 163.2 150.3 162.3 128.2 119.3 122.5 * 128M latency: 164.4 162.1 164.1 165.5 183.8 157.8 144.2 141.3 * 7-zip MIPS (3 consecutive runs): 9767, 9851, 9562 (9730 avg), single-threaded: 3592 * `aes-256-cbc 855498.22k 1207024.81k 1266842.54k 1283782.66k 1289502.72k 1281185.11k` * `aes-256-cbc 857583.05k 1174585.90k 1265287.94k 1201383.08k 1242447.87k 1260142.59k` ### PCIe and storage devices: * Intel Alder Lake-N [Intel Graphics] (Onboard - Video): driver in use: i915 * Intel Device 54fc (Onboard - Other): driver in use: intel_ish_ipc * Intel Alder Lake-N PCH USB 3.2 xHCI Host (Onboard - Other): driver in use: xhci_hcd * Intel Alder Lake-N SATA AHCI (Onboard - SATA): driver in use: ahci * Intel Device 54c4 (Onboard - Other): driver in use: sdhci-pci * Intel Alder Lake-N PCH High Definition Audio (Onboard - Sound): driver in use: snd_hda_intel * Intel Ethernet I226-V: Speed 5GT/s, Width x1, driver in use: igc, * Intel Ethernet I226-V: Speed 5GT/s, Width x1, driver in use: igc, * 931.5GB "Toshiba TOSHIBA HDWL110" HDD as /dev/sda: SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s), drive temp: 35°C * 118GB "CJ225128TC" SSD as /dev/sdb: SATA 2.6, 3.0 Gb/s (current: 3.0 Gb/s), drive temp: 40°C * 29.1GB "Foresee C9A551" HS400 Enhanced strobe eMMC 5.1 card as /dev/mmcblk0: date 02/2024, manfid/oemid: 0x0000d6/0x2903, hw/fw rev: 0x0/0x1000000000000000 * Winbond W25Q128 16MB SPI NOR flash, drivers in use: spi-nor/intel-spi ### Challenging filesystems: The following partitions are NTFS: sda3 -> https://tinyurl.com/mv7wvzct ### Swap configuration: * /swap.img on /dev/sdb1: 4.0G (92.8M used) ### Software versions: * Ubuntu 24.04.2 LTS (noble) * Compiler: /usr/bin/gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 / x86_64-linux-gnu * OpenSSL 3.0.13, built on 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024) ### Kernel info: * `/proc/cmdline: BOOT_IMAGE=/boot/vmlinuz-6.11.0-26-generic root=UUID=db612c04-e81d-4329-abfd-fb02e8019a85 ro quiet splash` * Vulnerability Reg file data sampling: Mitigation; Clear Register File * Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl * Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization * Kernel 6.11.0-26-generic / CONFIG_HZ=1000 Waiting for the device to cool down. .. .......................... 76.0°C |
As we’ll see in more detail below, the system runs fine for single-core tasks, but struggles with CPU throttling during multi-core benchmarks.
Let’s check PL1 and PL2 power limits:
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 |
jaufranc@ZimaBoard-2-CNX:~$ sudo powercap-info -p intel-rapl enabled: 1 Zone 0 name: package-0 enabled: 1 max_energy_range_uj: 262143328850 energy_uj: 47345877817 Constraint 0 name: long_term power_limit_uw: 12000000 time_window_us: 27983872 max_power_uw: 6000000 Constraint 1 name: short_term power_limit_uw: 20000000 time_window_us: 2440 max_power_uw: 0 Constraint 2 name: peak_power power_limit_uw: 78000000 max_power_uw: 0 Zone 0:0 name: core enabled: 0 max_energy_range_uj: 262143328850 energy_uj: 31533143396 Constraint 0 name: long_term power_limit_uw: 0 time_window_us: 976 Zone 0:1 name: uncore enabled: 0 max_energy_range_uj: 262143328850 energy_uj: 53491623 Constraint 0 name: long_term power_limit_uw: 0 time_window_us: 976 Zone 1 name: psys enabled: 0 max_energy_range_uj: 262143328850 energy_uj: 1751683626 Constraint 0 name: long_term power_limit_uw: 0 time_window_us: 27983872 Constraint 1 name: short_term power_limit_uw: 0 time_window_us: 976 |
That would be PL1 set to 20 Watts and PL2 to 12 Watts. For reference, the MINIX Z100-0dB fanless Intel N100 mini PC has its limits set to PL1 is set to 6W and PL2 to 12W, respectively.
Geekbench 6 can allow us to further test single-core and multi-core performance.
The Zimaboard 2 achieved 1201 points in the single-core benchmark and 2,364 points in the multi-core test.
Let’s now test the Intel UHD iGPU with Unigine Heaven Benchmark 4.0. The Zimaboard 2 could render the scene at 14.2 FPS with a score of 358 at the standard 1920 x 1080 resolution.
And finally, let’s run Speedometer 2.0 in the latest version of Firefox.
That would be 118 runs per minute on average.
Let’s compare the ZimaBoard 2 Intel N150 Twin Lake fanless mini PC against other Alder Lake-N systems running Ubuntu (or Fedora), namely the Blackview MP80 (N97), MINIX Z100-0dB (fanless N100), GEEKOM Mini Air12 (N100), and Weibu N10 (Core i3-N305).
Blackview MP80 (N97) | MINIX Z100-0dB | GEEKOM Mini Air12 | Weibu N10 Core i3-N305 | Zimaboard 2 832 | |
---|---|---|---|---|---|
OS | Fedora 39 | Ubuntu 22.04 | Ubuntu 22.04 | Ubuntu 22.04 | Ubuntu 24.04 |
sbc-bench.sh | |||||
- memcpy | 8989.0 MB/s | 9,572.6 MB/s, | 10,459.3 MB/s | 9,949.4 MB/s | 9,826.6 MB/s |
- memset | 12881.2 MB/s | 8,552.2 MB/s | 10,665.4 MB/s | 8,991.6 MB/s | 9645.6 MB/s |
- 7-zip (average) | 13,230 | 10,680 | 13,940 | 17,615 | 9,730 |
- 7-zip (top result) | 13,270 | 12,324 | 13,976 | 20,002 | 9,851 |
- OpenSSL AES-256 16K | 1302822.91k | 1,232,743.08k | 1,233,283.75k | 1,377,211.73k | 1,260,142.59k |
Geekbench 6 Single | 1,251 | 1,243 | 1,213 | 1,177 (Geekbench 5) | 1,201 |
Geekbench 6 Multi | 3,141 | 3,189 | 3,272 | 4,856 (Geekbench 5) | 2,364 |
Unigine Heaven score | 404 | 294 | 303 | 451 | 358 |
Speedometer 2.0 (Firefox) | 152 | 146 | 149 | N/A | 118 |
In theory, the Intel N150 is supposed to offer a small boost in performance compared to the Intel N100. But as we can see from the table above, cooling is quite important, and the Zimaboard 2 struggles due to its fanless design and compact size, even against the MINIX Z100-0dB fanless mini PC. Single-core benchmarks are fine, but the mini PC struggles in multi-core benchmarks with much lower scores than competitors tested in similar conditions (i.e., 28°C to 30°C ambient temperature). A bright spot is the GPU, but the Speedometer 2.0 score is disappointing as it’s supposed to be a mostly single-core test.
Users operating the device at a lower ambient temperature should experience better performance. I also did one more test with sbc-bench.sh. That’s because I’m using the cardboard stand offered by the company to test the device, and it’s placed vertically, so cooling may not be optimal. That’s why I ran the script again after placing the mini PC horizontally to see if there could be any differences.
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 |
jaufranc@ZimaBoard-2-CNX:~$ sudo ./sbc-bench.sh -r [sudo] password for jaufranc: Starting to examine hardware/software for review purposes... sbc-bench v0.9.71 Installing needed tools: distro packages already installed. 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 (11 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * Too much other background activity: 4% avg, 20% max -> https://tinyurl.com/mr2wy5uv * Powercap detected. Details: "sudo powercap-info -p intel-rapl" -> https://tinyurl.com/4jh9nevj Full results uploaded to https://0x0.st/8gge.bin # / N150 Tested with sbc-bench v0.9.71 on Sun, 08 Jun 2025 17:30:31 +0700. Full info: [https://0x0.st/8gge.bin](http://0x0.st/8gge.bin) ### General information: Information courtesy of cpufetch: Name: Intel(R) N150 Microarchitecture: Alder Lake Technology: 10nm Max Frequency: 3.600 GHz Cores: 4 cores AVX: AVX,AVX2 FMA: FMA3 L1i Size: 64KB (256KB Total) L1d Size: 32KB (128KB Total) L2 Size: 2MB L3 Size: 6MB N150, Kernel: x86_64, Userland: amd64 CPU sysfs topology (clusters, cpufreq members, clockspeeds) cpufreq min max CPU cluster policy speed speed core type 0 0 0 700 3600 Alder Lake 1 0 1 700 3600 Alder Lake 2 0 2 700 3600 Alder Lake 3 0 3 700 3600 Alder Lake 7687 KB available RAM ### Policies (performance vs. idle consumption): 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 84.0°C: cpu0: OPP: 3600, Measured: 3570 After at 95.0°C: cpu0: OPP: 3600, Measured: 3586 ### Performance baseline * memcpy: 9908.1 MB/s, memchr: 14351.2 MB/s, memset: 9622.6 MB/s * 16M latency: 163.1 149.3 162.4 147.8 154.6 130.1 119.5 120.8 * 128M latency: 184.6 172.3 184.5 171.7 184.0 157.8 144.6 140.2 * 7-zip MIPS (3 consecutive runs): 9160, 9693, 9758 (9540 avg), single-threaded: 3488 * `aes-256-cbc 859215.26k 1200076.46k 1267805.10k 1283739.99k 1199857.66k 1186288.98k` * `aes-256-cbc 843426.65k 1221622.85k 1274675.46k 1294671.53k 1296864.60k 1297001.13k` |
Sadly, I don’t see much difference here, and it did not help.
Zimaboard 2 power consumption
I’ve checked the power consumption of the Zimaboard 2 running Ubuntu in NAS mode (two SATA, 1x 2.5GbE), soft router mode (2x 2.5GbE + one SATA), and mini PC (two SATA, 1x 2.5GbE, USB keyboard/mouse RF dongle, HDMI display through provided miniDP adapter). A wall adapter was used. I used Ubuntu since the installer likely failed to detect ZimaOS on the eMMC flash, and booting without the SSD now goes to grub, even after selecting “UEFI OS” in the BIOS. It’s possible to reinstall ZimaOS, but the image is 13GB uncompressed (crazy for a server OS image), and I don’t have a USB flash drive with sufficient capacity with me.
- Power off – 0.5 – 0.8 Watt
- Idle
- Mini PC – 8.1 – 8.3 Watts
- NAS – 6.8 – 6.9 Watts
- Soft router – 8.6 – 9.0 Watts (should be a bit lower when a SATA drive is not used for the OS)
- 4K/60fps YouTube Video Playback (Firefox) – 20.2 – 25.3 Watts (Note: YouTube 4K 60 FPS videos are unwatchable due to CPU throttling, 1080p60 is fine)
- Stress test (stress-ng) – 10.3 – 25.1 Watts (large variations due to throttling. Most of the time in the 20 – 21 Watts range)
Conclusion
On paper, the Zimaboard 2 looks like a promising fanless device as a mini low-cost NAS, soft router, and/or mini PC with two SATA ports and a PCIe slot not found on other systems in that price range. The pre-installed ZimaOS makes it easy to get started with file sharing and installing popular software packages like AdGuard Home, Home Assistant, OpenHAB, JellyFin, and so on. Low-level 2.5GbE and SATA performance were all as expected.
Sadly, there are also many flaws. While ZimaOS is easy to use with a web dashboard to handle every task, advanced users may find it limited as the rootfs is read-only and it lacks a package manager found on typical Linux distributions. I also found a few bugs here and there, such as the inability to play an MKV video in the Files app (MP4 was fine), the x2t utility running in the background was stuck on a specific file in an infinite loop taking 100% of one core, and sometimes I was unable to access the web dashboard requiring a reboot. The performance of SAMBA and SFTP transfers fluctuates more than I had expected.
I also found the video output to be finicky, and sometimes I would lose video output because I moved the mouse or touched the cable when adding a USB dongle. I had to twist the miniDP adapter’s cable a few times to solve this recurring issue. It’s not an issue with ZimaOS, but it can be annoying when running a desktop OS like Ubuntu 24.04 or wanting to access the BIOS. Although that’s understandable due to the fanless design and compact size, the Intel N150 is not fully utilized because of throttling during multi-core workloads, so it is slower than all Alder Lake-N systems (N97/N100) I have tested in most tests. The metal enclosure also gets very hot, up to 76°C, so you have to be careful when adding USB peripherals, and you may want to keep it out of reach of small kids. Having a setup with external SATA drives is also a bit messy, and people who can afford it will prefer a neater solution like a complete NAS or an ODROID-H4+ SBC with a case.
I’d like to thank IceWhale Technology for sending a sample of the Zimaboard 2 for review. The official Kickstarter campaign just finished with over 2000 backers, and around $680,000 US raised. If, despite its flaws, you are still interested, you can pre-order the Zimaboard 2 on the company’s store for $199 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. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.