I’ve been asked to review three Intel-based UP AI development kits running Ubuntu 24.04 Pro. Last time, I tested the UP TWL SBC with Nx Meta and UP AI Toolkit, and most AI workloads would pass, but since these were running on the Intel N150 CPU or GPU, the performance was not optimal for most. I’ll now switch to the UP Squared Pro TWL “mid-range” AI devkit review with another Intel Processor N150 SBC fitted with a 13 TOPS Hailo-8L M.2 AI accelerator.
Both the UP TWL and UP Squared Pro TWL come with a 64GB eMMC flash, and I found out it was rather tight since AI software and models can take a lot of space. The UP Squared Pro TWL has a few M.2 sockets, so I’ll install an NVMe SSD to expand storage before installing the UP AI toolkit. As usual, I’ll run a few benchmarks and test the board’s key hardware features before focusing on the AI part.
UP Squared Pro TWL SBC system information
Like the UP TWL, the UP Squared Pro TWL Intel N150 SBC is preloaded with Ubuntu 24.04.3 LTS installed on a 64GB (62.6GB) eMMC flash, and ships with 8GB of RAM.
Let’s get more details with the inxi 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 |
devkit@devkit-UPN-TWL01:~$ sudo inxi -Fc0 System: Host: devkit-UPN-TWL01 Kernel: 6.14.0-32-generic arch: x86_64 bits: 64 Console: pty pts/1 Distro: Ubuntu 24.04.3 LTS (Noble Numbat) Machine: Type: Desktop Mobo: AAEON model: UPN-TWL01 v: V1.0 serial: 250162900 UEFI: American Megatrends LLC. v: UNTWAM10 date: 03/11/2025 CPU: Info: quad core model: Intel N150 bits: 64 type: MCP cache: L2: 2 MiB Speed (MHz): avg: 700 min/max: 700/3600 cores: 1: 700 2: 700 3: 700 4: 700 Graphics: Device-1: Intel Alder Lake-N [Intel Graphics] driver: i915 v: kernel Device-2: Sunplus Innovation FHD Camera driver: snd-usb-audio,uvcvideo type: USB Display: server: X.org v: 1.21.1.11 with: Xwayland v: 23.2.6 driver: gpu: i915 tty: 101x23 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: 25.0.7-0ubuntu0.24.04.2 note: console (EGL sourced) renderer: Mesa Intel Graphics (ADL-N), llvmpipe (LLVM 20.1.2 256 bits) Audio: Device-1: Intel driver: intel-ipu6 Device-2: Intel Alder Lake-N PCH High Definition Audio driver: snd_hda_intel Device-3: Sunplus Innovation FHD Camera driver: snd-usb-audio,uvcvideo type: USB API: ALSA v: k6.14.0-32-generic status: kernel-api Network: Device-1: Intel Ethernet I226-IT driver: igc IF: enp1s0 state: up speed: 2500 Mbps duplex: full mac: 00:07:32:c9:de:a0 Device-2: Intel Ethernet I226-IT driver: igc IF: enp2s0 state: down mac: 00:07:32:c9:de:a1 IF-ID-1: docker0 state: down mac: ca:0a:2f:54:5d:93 Drives: Local Storage: total: 58.32 GiB used: 12.65 GiB (21.7%) ID-1: /dev/mmcblk0 model: TY2964 size: 58.32 GiB type: Removable Partition: ID-1: / size: 56.07 GiB used: 12.64 GiB (22.5%) fs: ext4 dev: /dev/mmcblk0p2 ID-2: /boot/efi size: 1.05 GiB used: 6.1 MiB (0.6%) fs: vfat dev: /dev/mmcblk0p1 Swap: ID-1: swap-1 type: file size: 4 GiB used: 0 KiB (0.0%) file: /swap.img Sensors: System Temperatures: cpu: 39.0 C mobo: N/A Fan Speeds (rpm): N/A Info: Memory: total: 8 GiB available: 7.5 GiB used: 1.17 GiB (15.6%) igpu: 60 MiB Processes: 210 Uptime: 55m Init: systemd target: graphical (5) Shell: Sudo inxi: 3.3.34 |
Most main features seem to be detected properly, including the two 2.5GbE RJ45 ports (only one connected) and the UP USB camera connected to the board. The Hailo-8L module is not listed here, but we can locate it with lspci.
|
1 2 |
devkit@devkit-UPN-TWL01:~$ lspci | grep -i Hailo 03:00.0 Co-processor: Hailo Technologies Ltd. Hailo-8 AI Processor (rev 01) |
Benchmarks
Before I run any benchmark on the UP Squared Pro, I’ll check the 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 |
devkit@devkit-UPN-TWL01:~$ sudo apt install powercap-info devkit@devkit-UPN-TWL01:~$ sudo powercap-info -p intel-rapl enabled: 1 Zone 0 name: package-0 enabled: 1 max_energy_range_uj: 262143328850 energy_uj: 8620533961 Constraint 0 name: long_term power_limit_uw: 6000000 time_window_us: 27983872 max_power_uw: 6000000 Constraint 1 name: short_term power_limit_uw: 25000000 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: 1227366303 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: 1736689 Constraint 0 name: long_term power_limit_uw: 0 time_window_us: 976 |
PL1 is set to 6W and PL2 to 25W by default. As we’ve seen in the UP TWL review, this limits the performance in benchmarks like sbc-bench.sh. Since we are not talking about a consumer device here, it may make sense since the UP TWL and UP Squared Pro TWL SBCs are designed to operate in the -20°C to 70°C temperature range with their respective active coolers, and reliability may be more important than performance. It’s up to the customer to decide whether increasing power limits is appropriate for their application.
For comparison purposes, I went to the BIOS to set PL1 to 12W since this value is used in other Intel Alder Lake-N/Twin Lake processors.
Time to run sbc-bench.sh:
|
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 |
devkit@devkit-UPN-TWL01:~$ sudo ./sbc-bench.sh -r Starting to examine hardware/software for review purposes... sbc-bench v0.9.72 Installing needed tools: apt-get -f -qq -y install links mmc-utils smartmontools stress-ng, 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 * Powercap detected. Details: "sudo powercap-info -p intel-rapl" -> https://tinyurl.com/4jh9nevj # AAEON UPN-TWL01 V1.0 / N150 Tested with sbc-bench v0.9.72 on Thu, 20 Nov 2025 11:44:14 +0100. ### 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 - 7682 KB available RAM ### Clockspeeds (idle vs. heated up): Before at 43.0°C: cpu0: OPP: 3600, Measured: 3582 After at 66.0°C: cpu0: OPP: 3600, Measured: 3584 ### Performance baseline * memcpy: 10235.4 MB/s, memchr: 15241.1 MB/s, memset: 10065.4 MB/s * 16M latency: 161.3 141.3 162.2 141.8 160.5 122.7 113.0 115.2 * 128M latency: 185.6 170.8 186.4 172.4 185.7 161.7 142.7 137.4 * 7-zip MIPS (3 consecutive runs): 12462, 10946, 10927 (11440 avg), single-threaded: 3679 * `aes-256-cbc 939480.61k 1245106.62k 1287293.78k 1296532.14k 1301331.97k 1299933.87k` * `aes-256-cbc 953569.31k 1239079.40k 1286866.86k 1298183.85k 1299472.38k 1301288.28k` ### PCIe and storage devices: * Intel Ethernet I226-IT: Speed 5GT/s, Width x1, driver in use: igc, * Intel Ethernet I226-IT: Speed 5GT/s, Width x1, driver in use: igc, * 58.3GB "Kingston TY2964" HS400 Enhanced strobe eMMC 5.1 card as /dev/mmcblk0: date 05/2025, manfid/oemid: 0x000070/0x0100, hw/fw rev: 0x0/0x5b00000000000000 * Winbond W25Q256JW 32MB SPI NOR flash, drivers in use: spi-nor/intel-spi ### Swap configuration: * /swap.img on /dev/mmcblk0p2: 4.0G (0K used) on MMC storage ### Software versions: * Ubuntu 24.04.3 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.14.0-35-generic root=UUID=622b74e1-28c3-43d7-bbda-67313e3e422b ro quiet splash vt.handoff=7` * 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 * Vulnerability Vmscape: Mitigation; IBPB before exit to userspace * Kernel 6.14.0-35-generic / CONFIG_HZ=1000 Waiting for the device to cool down........................................................... 33.0°C^C |
There’s no thermal throttling here with the CPU temperature measured at 66.0°C after the benchmark. Performance is roughly in line with other Intel N100/N150 systems based on the average 7-zip score: 11,440 MIPS. For reference, the UP TWL achieved 11,690 MIPS in the same test. If you need to extract a bit more performance, switching to PL1=15W is also possible, and for reference, the GEEKOM Mini Air12 Lite mini PC reached 12750 MIPS with this power limit.
I switched back to PL1 = 6W for the rest of the test since it is the default value.
UP Squared Pro TWL SBC features testing
I’ve also checked most hardware features of the UP Squared Pro TWL SBC:
- HDMI – Video OK, Audio OK
- DisplayPort – Video OK, Audio OK (improvement over the UP 7100 SBC for which DisplayPort audio was not working for me)
- eDP – Skipped, no hardware to test
- Storage
- eMMC flash – OK: 314 MB/s sequential reads, 230 MB/s sequential writes.
12345678devkit@devkit-UPN-TWL01:~$ iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2random random bkwd record stridekB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread102400 4 55207 60063 39987 39734 36383 58683102400 16 129433 132180 95092 94934 73105 126342102400 512 201964 207886 251420 252583 248249 199515102400 1024 219621 218312 280656 280788 280001 218985102400 16384 230705 235964 314221 315697 315242 231700 - M.2 2280 PCIe socket tested with 2TB WD Black SN850X NVMe SSD – OK for PCIe Gen3 x2: 1,703 MB/s sequential reads, 1,700 MB/s sequential writes.
12345678devkit@devkit-UPN-TWL01:/media/nvme0n1p1$ iozone -e -I -a -s 1000M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2random random bkwd record stridekB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread1024000 4 163308 263404 179035 180555 84427 2405881024000 16 471697 634324 544889 545648 221468 6462261024000 512 1530045 1553857 1524317 1525846 1320891 15523161024000 1024 1599613 1611895 1551181 1553878 1491969 16089901024000 16384 1700501 1699858 1703352 1704833 1700982 1700776
- eMMC flash – OK: 314 MB/s sequential reads, 230 MB/s sequential writes.
- 2.5 Gbps Gigabit Ethernet
- LAN1 (top) – OK (iperf3 DL: 2.35 Gbps, UL: 2.35 Gbps, full-duplex: 2.35/2.35 Gbps)
- LAN2 (bottom) – OK (iperf3 DL: 2.35 Gbps, UL: 2.35 Gbps, full-duplex: 2.35/2.35 Gbps)
- USB ports tested with an ORICO NVMe SSD enclosure (EXT-4 partition), RF dongle for a wireless keyboard/mouse combo, and USB camera
- Top – 10 Gbps; tested up to 1,0007 MB/s with iozone3
- Bottom – 10 Gbps; tested up to 1,008 MB/s with iozone3
- RTC – OK
1234567891011devkit@devkit-UPN-TWL01:~$ sudo apt install util-linux-extradevkit@devkit-UPN-TWL01:~$ timedatectlLocal time: Mon 2025-11-24 04:54:18 CETUniversal time: Mon 2025-11-24 03:54:18 UTCRTC time: Mon 2025-11-24 03:54:18Time zone: Europe/Amsterdam (CET, +0100)System clock synchronized: yesNTP service: activeRTC in local TZ: nodevkit@devkit-UPN-TWL01:~$ sudo hwclock -r2025-11-24 04:54:20.985502+01:00 - GPIOS – OK – Also see the 40-pin GPIO header layout for all UP boards.
123456789101112131415161718192021222324devkit@devkit-UPN-TWL01:~$ ls /dev/gpiochip*/dev/gpiochip0 /dev/gpiochip1devkit@devkit-UPN-TWL01:~$ sudo gpioinfo 0gpiochip0 - 360 lines:line 0: unnamed unused input active-highline 1: unnamed unused input active-highline 2: unnamed unused input active-highline 3: unnamed unused input active-highline 4: unnamed unused input active-highline 5: unnamed unused input active-highline 6: unnamed unused input active-highline 7: unnamed unused input active-high...devkit@devkit-UPN-TWL01:~$ sudo gpioinfo 1gpiochip1 - 28 lines:line 0: unnamed unused input active-highline 1: unnamed unused input active-highline 2: unnamed unused input active-highline 3: unnamed unused input active-highline 4: unnamed unused input active-highline 5: unnamed unused input active-highline 6: unnamed unused input active-highline 7: unnamed unused input active-high...
I also tested a dual display setup using a portable HDMI full HD monitor (CrowView) and a 4K Google TV monitor (KTC A32Q8) with a DisplayPort input, and no problems here. It should even support up to three displays using the eDP connector.
I had no audio at first because the HDMI display lacks speakers, but I could switch to HDMI / DisplayPort 2 to get audio through the KTC monitor’s speakers.
Besides the two audio output devices, the microphone from the UP USB camera also showed up as a n audio input device.
So all features work to expectation, and no major issue here.
AI testing on the UP Squared Pro TWL Intel N150 SBC with Hailo-8 AI accelerator
I will now run several AI workloads on the system using Network Optix Nx Meta and the AAEON UP AI toolkit, as I did on the UP TWL, but leveraging the 13 TOPS Hailo-8L AI accelerator included in the kit.
Network Optix Nx Meta
For this test, I’ll use the UP Squared Pro TWL’s built-in eMMC flash and the Hailo-8L equipped with a heatsink for cooling.
Let’s install with Nx AI Certification Test:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
sudo apt dist-upgrade sudo apt install python3-pip python3-venv mkdir nxai_test cd nxai_test wget https://artifactory.nxvms.dev/artifactory/nxai_open/NXAITest/nxai_test.tgz tar -xvf nxai_test.tgz python3 -m venv ./ source ./bin/activate # activate python venv pip3 install -r requirements.txt ./Utilities/install_nxai_manager.sh python3 Utilities/install_acceleration_library.py python3 Utilities/download_models.py |
It’s basically the same process as for the UP TWL AI Dev Kit, except for the install_acceleration_library.py step, where I selected ONNX-HailoRT:
|
1 2 3 4 5 6 7 8 |
(nxai_test) devkit@devkit-UPN-TWL01:~/nxai_test$ python3 Utilities/install_acceleration_library.py Detecting compatible acceleration hardware... ls: cannot access '/dev/memx*': No such file or directory ls: cannot access '/dev/dxrt*': No such file or directory System detected more than one compatible acceleration runtime for your device. Please choose one to install: 1 : Nx CPU 2 : ONNX-HailoRT 3 : OpenVino |
Once the installation is complete, we can run the test with the following command:
|
1 |
python3 all_suites.py |
Everything runs within the terminal as expected, but I got a lot of failed benchmarks:
|
1 2 3 4 |
Running test: Model-Yolo5su-[256x256] Error: Could not find compatible model: cd6c24d5-e1ae-4c87-a481-8ac9dd426efc Loading test settings... Failed to load test settings. Aborting test. |
Eventually, only 6 benchmarks would complete successfully against 46 when using the Nx CPU option:
|
1 2 3 4 5 6 7 8 9 10 |
################################################### All model benchmarks completed. Benchmark results: 80-classes-object-detector[640x640]: 38.04 FPS 80-classes-object-detector[320x320]: 90.31 FPS postprocessor-python-example: 88.40 FPS postprocessor-python-image-example: 90.55 FPS postprocessor-c-image-example: 83.18 FPS postprocessor-c-example: 89.15 FPS ################################################### |
Several stability tests could not run:
|
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 |
################################################### -------------------------------------------------------- Running test suite: Stability-Test-Suite -------------------------------------------------------- Running Stability Test Suite --------------------------------------------------- Running test: multi_model_test Creating backup settings file... Error: Could not find compatible model: 5d321a44-1d21-11ec-88ac-9600004e79cc Loading test settings... Failed to load test settings. Aborting test. --------------------------------------------------- --------------------------------------------------- Running test: overload_test Creating backup settings file... Loading test settings... Creating Unix socket server... Starting Edge AI Manager Sending socket input Waiting for response from Edge AI Manager... Messages: 100534 Rate: 27.9 Transfer: 694.93MB/s Sclblmod Memory: 120.20 MB Relative to start: 104% Sclbld Memory: 79.20 MB Relative to start: 112% Stopping Edge AI Manager Terminated AI Manager: 0 Test completed succesfully. Restoring backup settings file... Test completed without unhandled exception. |
… but the three that could, passed just fine:
|
1 2 3 4 |
------------------------------------------------------- Tests passed: 3 / 3 ------------------------------------------------------- |
See the full log on CNX Software’s pastebin.
I asked AAEON if it was normal, and here’s their answer:
Certain AI accelerators have compatibility with only with some models so it is expected.If CNX Software want to run the tests for Hailo, they have to select hailo and perform the tests.Then they can do the same for openvino and select the specific compute unit (e.g. GPU) to run the tests on the Intel SoC), Nx CPU is generic and I would not do it.
I selected Nx CPU for the UP TWL AI Dev Kit, so I decided to try OpenVino accelerator libraries and models since the UP Squared Pro TWL is based on the same Intel N150 CPU:
|
1 2 3 4 5 6 7 8 9 10 |
(nxai_test) devkit@devkit-UPN-TWL01:~/nxai_test$ python3 Utilities/install_acceleration_library.py Detecting compatible acceleration hardware... ls: cannot access '/dev/memx*': No such file or directory ls: cannot access '/dev/dxrt*': No such file or directory System detected more than one compatible acceleration runtime for your device. Please choose one to install: 1 : Nx CPU 2 : ONNX-HailoRT 3 : OpenVino ... (nxai_test) python3 Utilities/download_models.py |
Results:
|
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 |
################################################### All model benchmarks completed. Benchmark results: Model-Yolov8s-[640x640]: 2.06 FPS Model-Clip: 6.07 FPS Pipeline-Conditional: 229.10 FPS Model-Yolov9-[640x640]: 0.59 FPS Model-Mobilenet-V3: 56.08 FPS Model-Yolov9-m-converted-[640x640]: 0.75 FPS Model-Yolov9-e-converted-[640x640]: 0.31 FPS Model-Yolo5su-[256x256]: 14.01 FPS Empty-Large: 108.94 FPS Model-Yolov7x-[640x640]: 0.20 FPS Model-Yolov9-m-[640x640]: 0.64 FPS 80-classes-object-detector[640x640]: 3.73 FPS Multi-Model: 19.48 FPS Model-Yolov9-c-[640x640]: 0.36 FPS Quantized-INT8: 10.66 FPS Model-Resnet-18: 18.72 FPS Model-Face-Locator: 97.93 FPS 80-classes-object-detector[320x320]: 14.73 FPS Pipeline-Feature-Extraction: 85.01 FPS Model-PPE: 9.20 FPS Model-Regnet-Y: 76.02 FPS Model-Emotion-Recognizer: 368.50 FPS Model-Yolo5su-[1280x1280]: 0.55 FPS Model-Densenet: 0.30 FPS Model-Yolov9-e-[640x640]: 0.59 FPS Model-Yolov4-[128x128]: 73.90 FPS Model-Yolov9-converted-[640x640]: 0.59 FPS Model-Yolo5su-[640x640]: 2.31 FPS Model-Resnet-50: 8.49 FPS Model-Yolov4-[1280x1280]: 0.94 FPS Model-Yolov8l-[640x640]: 0.42 FPS Model-Yolov4-[640x640]: 3.78 FPS Model-Yolov7-Tiny-[1280x1280]: 1.02 FPS Empty-Small: 1057.12 FPS Quantized-FP32: 8.88 FPS Model-Yolov7x-[1280x1280]: 0.09 FPS Model-Yolov7-Tiny-[640x640]: 4.01 FPS Quantized-FP16: 6.17 FPS Model-ViT-Tiny: 37.05 FPS Model-Yolov4-[320x320]: 14.68 FPS Pipeline-Direct: 14.60 FPS Postprocessor-Illegal-Dumping: 3.91 FPS postprocessor-python-example: 14.73 FPS postprocessor-python-image-example: 15.17 FPS postprocessor-c-image-example: 14.75 FPS postprocessor-c-example: 14.76 FPS ################################################### -------------------------------------------------------- |
See full output on pastebin.
We now have some data so we can compare Intel N150 with Nx CPU, OpenVino, and Hailo-8L AI accelerator.
UP TWL | UP Squared Pro TWL |
||
|---|---|---|---|
Nx CPU | OpenVino | Hailo-8L |
|
| 80-classes-object-detector[640x640] | 3.91 FPS | 3.73 FPS | 38.04 FPS |
| 80-classes-object-detector[320x320] | 15.24 FPS | 14.73 FPS | 90.31 FPS |
| postprocessor-python-example | 14.98 FPS | 14.73 FPS | 88.40 FPS |
| Postprocessor-python-image-example | 15.73 FPS | 15.17 FPS | 90.55 FPS |
| postprocessor-c-image-example | 14.77 FPS | 14.75 FPS | 83.18 FPS |
| postprocessor-c-example | 14.75 FPS | 14.76 FPS | 89.15 FPS |
| Model-Yolov9-e-converted-[640x640] | 0.32 FPS | 0.59 FPS | Failed |
| Model-Yolov4-[320x320] | 15.25 FPS | 14.68 FPS | Failed |
| Model-Mobilenet-V3 | 48.45 FPS | 56.08 FPS | Failed |
The first remark is that there’s little difference between Nx CPU and OpenVino in most cases. While Hailo-8L support is only implemented in a few tests in Nx Meta, it does offer significant benefits in the tests where it is, with 6 to 10+ times higher FPS.
Since I’d like to have more storage for AI testing, I also installed a 2TB NVMe SSD. But the way the board has been designed, it also means I had to remove the Hailo-8L heatsink. So let’s run the Nx AI certification test one more time.
Note that I had issues executing commands on the NVMe SSD because, for whatever reason, it was mounted with the noexec tag. I had to remount it as follows:
|
1 |
sudo mount -o remount,exec /media/nvme0n1p1 |
Alternatively, the following command does the trick:
|
1 |
pmount -e /dev/nvme0n1p1 |
I ran the NX AI Benchmarks again with the same six successful tests:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
... ################################################### All model benchmarks completed. Benchmark results: 80-classes-object-detector[320x320]: 110.10 FPS 80-classes-object-detector[640x640]: 29.80 FPS postprocessor-c-example: 88.98 FPS postprocessor-python-example: 88.07 FPS postprocessor-c-image-example: 80.70 FPS postprocessor-python-image-example: 84.76 FPS ################################################### -------------------------------------------------------- ... ------------------------------------------------------- Tests passed: 3 / 3 ------------------------------------------------------- |
You can check the full log if you want. The postprocessor tests are not impacted, but the 80-classes-object-detector results vary quite a lot: 110.10 FPS with 320×320 images (instead of 90.31 FPS) and 29.80 FPS with 640×640 images (instead of 38.04 FPS).
AAEON UP AI toolkit demos
In the second part of the AI demos, I planned to use the UP AI toolkit examples available on GitHub.
Those are the steps to install and launch the AAEON UP AI toolkit on the NVMe SSD:
|
1 2 3 4 5 6 7 8 |
cd /media/nvme0n1p1 git clone https://github.com/up-division/up-ai/ cd up-ai chmod +x prepare.sh start_app.sh ./prepare.sh sudo reboot cd ~/up-ai ./start_app.sh |
Like in the UP TWL AI Dev Kit review, I had to run the prepare.sh script several times due to HTTP errors, maybe because I’m based in Thailand.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Starting EAST application with PM2... pm2 [ 'start', 'npm', '--name', '"EAST"', '--', 'start' ] [PM2] Starting /usr/bin/npm in fork_mode (1 instance) [PM2] Done. ┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐ │ id │ name │ mode │ ↺ │ status │ cpu │ memory │ ├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤ │ 0 │ "EAST" │ fork │ 0 │ online │ 0% │ 38.4mb │ └────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘ Running driver installation script... [sudo] password for devkit: Find hailo bash: /home/devkit/inst/linux/app/install_hailo.sh: No such file or directory Driver is already installed ! Enviroment Installation is Complete! Please Reboot! |
It looks like there was a hardcoded path in the script, so I ran it manually.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
(.venv) devkit@devkit-UPN-TWL01:/media/nvme0n1p1/up-ai$ chmod +x ./inst/linux/app/install_hailo.sh (.venv) devkit@devkit-UPN-TWL01:/media/nvme0n1p1/up-ai$ ./inst/linux/app/install_hailo.sh Reading package lists... Done Building dependency tree... Done Reading state information... Done dkms is already the newest version (3.0.11-1ubuntu13). linux-headers-6.14.0-35-generic is already the newest version (6.14.0-35.35~24.04.1). linux-headers-6.14.0-35-generic set to manually installed. The following package was automatically installed and is no longer required: libllvm19 Use 'sudo apt autoremove' to remove it. 0 upgraded, 0 newly installed, 0 to remove and 28 not upgraded. Install Hailo pcie driver now...... ii hailort-pcie-driver 4.20.0 all Hailo PCIe driver and firmware Hailort-pcie-driver is already installed. Install HailoRT now...... ii hailort 4.20.0 amd64 HailoRT HailoRT is already installed. |
At this point, I rebooted the system as recommended and started the script in a terminal on the Ubuntu desktop:
|
1 2 3 4 |
sudo reboot pmount -e /dev/nvme0n1p1 cd /media/nvme0n1p1/up-ai ./start_app.sh |
The UP Edge Sizing Tool dashboard was opened in Firefox, as in our review of the UP TWL AI Dev Kit.
But there’s just a little problem… The NPU is “not available”. So I tried other options by launching the menu:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
============================= Function Menu ============================= 1. Object detect -- Video 2. Object detect -- Camera 3. Chatbot 0. Exit ============================= Please input : 2 Find hailo ==================================================== Install Hailo Object Detect Packages ==================================================== Install Hailo tappas packages...... ... |
But I encountered issues due to a mismatch between the setuptools version and Python 3.12. I tried to install new Hailo-8/8L packages from the Hailo website, but it didn’t help. Eventually, I contacted AAEON, and they provided an updated script within 3 days. It still failed with the error:
|
1 2 3 4 5 6 |
Xlib: extension "DRI2" missing on display ":0". /GstPipeline:pipeline0/GstFPSDisplaySink:hailo_display/GstXvImageSink:xvimagesink0: sync = false [HailoRT] [error] HEF format is not compatible with device. Device arch: HAILO8L, HEF arch: HAILO8 [HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_HEF_NOT_COMPATIBLE_WITH_DEVICE(93) [HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_HEF_NOT_COMPATIBLE_WITH_DEVICE(93) [HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_HEF_NOT_COMPATIBLE_WITH_DEVICE(93) |
At this point, I was told that the UP AI toolkit only works with Hailo-8 and Hailo-10H AI accelerators, but not the Hailo-8L, which happens to be the default option (M.2 2230-Hailo 8L) when somebody purchases the kit. The Hailo-8L will be supported in an upcoming version of the toolkit, but it may take a while, especially since holidays are coming soon. So I’ll skip it in this review…
Power Consumption
I also measured the power consumption of the Twin Lake + Hailo-8L AI development kit using a wall power meter:
- Power off – 3.4 Watts
- Idle – 9.6 – 10.3 Watts (fan active at all times) | with SSD: 11.5 – 12.0 Watts
- Stress test (stress -c 4)
- First few couple of seconds – 24.3 – 24.4 Watts | with SSD: 25.8 – 26.2 Watts
- Longer runs – 15.1 – 15.3 Watts | with SSD: 16.5 – 16.7 Watts
- Object detection – Camera + GPU – Not test (Hailo-8L not supported in UP AI Toolkit for now)
The board was connected to an HDMI monitor, 2.5GbE, a USB RF dongle for a wireless keyboard/mouse combo, and a USB camera.
Conclusion
The UP Squared Pro TWL AI Dev Kit is potentially a good platform for AI development thanks to the great price/performance ratio. All basic features work well, and compared to the UP TWL AI Dev Kit, it adds extra features like DisplayPort video output and M.2 expansion sockets. The AI performance is almost as good as on the Intel Core Ultra 5 225H-based UP Xtreme ARL (review published soon) for benchmarks that are supported. However, software support is not optimal, with only a few tests working in Nx Meta, and the UP AI Toolkit is not supported yet when combining the Intel N150 SBC with an Hailo-8L AI accelerator. It’s also limited by the 64GB eMMC flash (like on the UP TWL AI Dev Kit), but you can also add an M.2 NVMe SSD for additional storage after removing the heatsink on the Hailo-8L M.2 module. So as things stand now, it’s less than ideal, but once software support improves, it might be an interesting mid-range platform.
I’d like to thank AAEON for sending the UP Squared Pro TWL AI Dev Kit for review with an Hailo-8L AI accelerator. It can currently be purchased for $469.00 with the Hailo-8L AI accelerator, a Full HD USB camera, and a 12V/6A power supply. In the future, the company plans to offer other AI accelerators from DeepX and Axelera for up to 214 TOPS of AI performance.
Continue reading UP Xtreme ARL AI Dev Kit review – Benchmarks and AI workloads on an Intel Core Ultra 5 225H Arrow Lake SBC.

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.












> There’s no thermal throttling here with the CPU temperature measured at 66.0°C after the benchmark
Speaking of 66°C there may be thermal throttling (maybe only memory controller) since
In case time permits you could share /var/log/sbc-bench.log for further insights.
I had no idea the log was stored in /var/log/sbc-bench.log. I just noticed it was not uploaded anymore.
Anyway. Here it is: https://pastebin.cnx-software.com/?acf7e1a2787ae78a#DQHJLYYVkisfsSpWQ4YfCAhST8cYv2yjn5SBhvbcX1Cs
For reference, the values in LattePanda Mu reviewed here were higher, but not quite as high as the results on GitHub:
Sadly, the reviewer did not check power limits (Probably PL1=15W).
https://www.cnx-software.com/2024/07/30/lattepanda-mu-intel-n100-som-and-carrier-board-review-part-2-ubuntu-24-04/#lattepanda-mu-benchmarks-on-ubuntu-24-04
Performance degradation is all over the place, the N150 should be able to clock at 3600 MHz but exceeds 3000 MHz only with light tasks. Even single-threaded the older N100 thingy outperforms it (3900 vs. 3700 7-ZIP MIPS) since clocking 150-200 MHz higher during this benchmark.
But looking at measured temperatures it seems the degraded performance is more likely caused by power than thermal limits.
[ “Performance degradation is all over the place”
Do we recognize a hardware capabilities vs. cost optimization ‘stabilization’ with current situations in economy, international affairs, energy provision and change in goods distribution?
There’s a big change from DDR3 to DDR4 performance (and smaller increase in cost, 32bit(4GB) to 64bit(up to th. 64GB/ch.) vs. DDR4 to DDR5 (th.512GB/ch., with higher cost for absolute bigger doubling for the memory capabilities, maybe not for the cost/GB, but the systems are more demanding for overall memory supply, ‘DDR6’?)?
A mobile (Twin Lake) core 3 would be N350/N355.
Desktop core 3/5/7 is Bartlett Lake. (thx) ]
[ There’s no PCH (platform controller hub) with cpus later than 810/860/890 (800 series, additional 8-24 PCIe 4.0), because it gets an integrated chiplet within the cpu case (on-package, new socket LGA 1851 (previous LGA 1700), then LGA 1954)? (thx) ]
I set PL1 to 25W for fun and tried again:
Full log for reference: https://pastebin.cnx-software.com/?40c28cebee3d137c#EB1MAjtS9QpkzzNFgD96xqE2nxCfznJSRdGrnTm5YDTX
Thank you.
So it looks like it’s only power limits and I start to think that N150 is even a worse SKU than N100 in terms of energy efficiency (N100 being only popular amongst consumers due to Intel’s successful TDP marketing BS)