
I’ve received a review sample of the LattePanda IOTA single-board computer (SBC) from DFRobot. It is a compact, palm-sized SBC powered by an Intel Processor N150 quad-core Twin Lake CPU, and featuring 8 GB of LPDDR5 RAM and 64 GB of onboard eMMC storage. It also integrates a Raspberry Pi RP2040 co-processor for handling I/O operations, providing greater flexibility for embedded and automation applications.
LattePanda IOTA unboxing
The parcel was shipped from China and arrived safely in a standard cardboard box. Inside were several smaller boxes containing the following components, with foam padding that was slightly loose but still provided adequate protection. All components arrived in good condition. I received a total of seven items from DFRobot, which are listed below.
- LattePanda IOTA (8GB RAM, 64GB eMMC flash)
- Smart UPS Expansion Board: A plug-and-play UPS module for the LattePanda IOTA that provides stable, continuous power with intelligent management and supports up to eight hours of operation using three 18650 cells.
- 51W PoE Expansion Board: A high-performance power and network solution designed specifically for the LattePanda IOTA, enabling the delivery of up to 51 W of power and Gigabit Ethernet connectivity through a single Ethernet cable.
- LattePanda IOTA M.2 4G LTE Expansion Board: A dedicated hardware adapter designed to seamlessly add 4G LTE mobile network connectivity to the LattePanda IOTA single-board computer, supporting plug-and-play installation with an M.2 B-key module (not provided).
- LattePanda IOTA M.2 M-Key Expansion Board: An interface adapter designed to allow the connection of M.2 NVMe SSDs or AI accelerator cards (sizes 2230 and 2280).
- M.2 (A+E Key) AX210 WiFi 6E Network Card for LattePanda IOTA / Sigma / Alpha / Delta: This network card supports three-band (2.4 GHz, 5 GHz, and 6 GHz) operation, extending Wi-Fi into the 6 GHz band.
- LattePanda IOTA Active Cooler: An ultra-thin heatsink specifically designed for the LattePanda IOTA, featuring an adjustable-speed fan.

The below figure shows the photos of the recieved components.
- LattePanda IOTA M.2 4G LTE Expansion Board
- M.2 (A+E Key) AX210 WiFi 6E Network Card for LattePanda IOTA / Sigma / Alpha / Delta
- LattePanda IOTA M.2 M-Key Expansion Board
- LattePanda IOTA
- LattePanda IOTA Active Cooler (installed underneath)
- Smart UPS Expansion Board
- 51W PoE Expansion Board

Initial setup
According to the official board documentation, the manufacturer supports multiple operating systems, including Ubuntu 22.04 LTS (with HWE Kernel), Ubuntu 24.04 LTS, Windows 10, and Windows 11. The installation procedures for Windows 10 and Windows 11 are identical. The official Windows image provided by the LattePanda team includes all necessary drivers preinstalled and is available for download via Dropbox and Google Drive links. For Ubuntu, the 64-bit version is recommended and can be obtained directly from the official Ubuntu website.
In my case, I was not entirely certain which operating system version was included, as the received parcels were labeled but did not indicate any information about the operating system. I assumed that the board came with a preinstalled but unactivated version of Windows. I began assembling the system following the Getting Started guide, which was straightforward. I installed the active cooling fan, CR2032 RTC battery, and M.2 Wi-Fi module.




The figures below show the connectivity options and ports of the LattePanda IOTA board.




Then I inserted three 3.7V 18650 batteries into the LattePanda UPS Expansion Board and connected a 12V 60W AC adapter via the 5.5 × 2.5 mm power barrel connector. After connecting my wireless mouse and keyboard through USB dongles and attaching my BenQ EL2870U monitor using the HDMI port, I pressed the boot switch. Within a few minutes, the Windows 11 welcome screen appeared. Both peripherals functioned immediately, and after entering my Wi-Fi credentials, the Internet connection was successfully established.

Checking hardware with Windows Settings and HWiNFO64
Next, I verified the device specifications using the Windows Settings’ Activation panel and HWiNFO64 utility. The system reported that the LattePanda IOTA was running an unactivated version of Windows 11 Pro, version 24H2 (build 26100.4351). That’s expected since the company sells the SBC with either activated or non-activated Windows OS, selectable at order.

HWiNFO64 8.32-5840 confirms that the LattePanda IOTA integrates an Intel Processor N150 quad-core Alder Lake-N (Twin Lake) processor with Intel UHD Graphics (GT1), and 8GB of RAM clocked at 2294.9 MHz

Note the Task Manager reports that the system memory consists of 8 GB of LPDDR5, operating at 4600 MT/s, with approximately 225 MB reserved for hardware. With the default OS setup, the system uses about 3.3 GB of the total 8 GB of memory when idle.

The onboard storage was identified as a Samsung CUTB42 eMMC device, which was pre-formatted as a single partition with a reported capacity of 58.2 GB.

Device Manager confirmed full hardware detection with no missing drivers.

The network interfaces included Intel Wi-Fi 6E AX210, Realtek PCIe GbE, and Bluetooth provided through the Intel module. The firmware version of the Bluetooth device was reported as LMP 12.14171, which corresponds to Bluetooth 5.3.


More details about the Intel AX210 WiFi 6E and Bluetooth 5.3 module can be found in HWiNFO64.


The external UPS expansion was also correctly detected and appeared in Device Manager.

I also did a final test with the Intel Processor Diagnostic Tool 4.1.9 (IPDT). The tool correctly detected the Intel N150 processor. Most functional modules passed, including the Genuine Intel verification, Cache, Floating Point, and Math tests, confirming that the CPU operated normally under standard workloads. However, the Brand String test failed, causing the final test status to display FAIL despite all other checks passing. This issue is likely related to microcode identification rather than an actual hardware fault.

LattePanda IOTA benchmarks
Internal storage
Next, I tested the internal storage using the CrystalDiskMark 9.0.1 tool with its default configuration. The results showed that the 64 GB eMMC achieved sequential read and write speeds of around 312 MB/s and 221 MB/s, with random 4K performance reaching about 49 MB/s (read) and 39 MB/s (write). These results demonstrate solid and consistent performance for an eMMC-based storage device.

Geekbench 6.5
Since LattePanda claims that the SBC can achieve 1,193 points (single-core) and 2,820 points (multi-core) in Geekbench 6 benchmark tests, I wanted to verify these results. I installed Geekbench 6.5.0 for Windows and ran both CPU and GPU benchmarks on my LattePanda IOTA. In my tests, the CPU achieved a single-core score of 1,163 and a multi-core score of 2,632, both of which were slightly lower compared to the official results. The difference could be due to firmware, background processes, or differences in the test environment (e.g., ambient temperature).

I also ran the OpenCL GPU benchmark, where the integrated Intel Graphics scored 4,085 points. This performance level is typical for integrated GPUs of this class.

Even though my benchmark scores were slightly lower than the official figures, the overall performance still felt smooth and stable. Additional information from the Geekbench results is shown below. The single-core performance covered a wide range of everyday tasks, with strong results in text processing (1460), navigation (1429), and PDF rendering (1283).

Multi-core scaling was effective, showing clear gains in tasks such as asset compression (3525), PDF rendering (3228), and navigation (3540).

Cinebench R23 and 2024
For the next test, I further evaluated the CPU, doing 3D rendering, using Cinebench R23 from the Microsoft Store. I obtained a multi-core score of 2,294 points and a single-core score of 930 points. The multi-core to single-core ratio (MP Ratio) of 2.47× shows that the CPU scales somewhat across all four cores.

I also manually installed Cinebench 2024.1.0 to compare results. In this version, the CPU achieved a single-core score of 57 points, but the multi-core test failed with the error message: Failed to allocate necessary GPU recyclable memory. This issue was likely caused by the limitation of the integrated GPU, as shown in the figure below.


WebGL 3D rendering with the Aquarium demo
Next, I tested WebGL 3D rendering performance using the WebGL Aquarium demo at a resolution of 1024×1024. The system maintained smooth rendering from 1 to 1,000 fish models at approximately 50 fps, gradually dropping to around 22 fps with 10,000 fish models. GPU utilization ranged between 50–80%, with memory usage at about 1.1 GB out of 3.9 GB of shared memory.

At 30,000 fish, the scene remained visually stable, but the frame rate dropped to nearly 0 fps, marking the system’s practical upper limit for real-time WebGL rendering.




Overall, these results show that the integrated GPU can efficiently handle 3D browser-based graphics and moderate visualization tasks.
Speedometer 3.1 web browser benchmark
The Speedometer 3.1 benchmark using the Firefox web browser achieved a score of 9.46 ± 0.31, with a geometric mean test total of 105.87 ms. While adequate for standard web browsing and light content, this performance suggests that more demanding, JavaScript-heavy applications, such as dynamic dashboards or single-page frameworks like React and Angular, may exhibit lag or reduced responsiveness.

YouTube video playback
Video playback tests on YouTube were performed across resolutions from 144p to 2160p using the Stats for Nerds diagnostic overlay. The LattePanda IOTA delivered smooth performance at lower resolutions, with 144p, 240p, and 360p showing 0% frame drops and minimal CPU utilization below 20%. At 480p, playback remained perfectly stable with less than 1% frame loss and an average bit rate of around 2–3 Mbps. When increased to 720p (HD), the video continued to play smoothly with only minor frame loss of about 1–2%, while 1080p (Full HD) playback showed slightly higher frame drops in the range of 5–8%. The 1440p (2K) stream showed noticeable stuttering, reaching 20–30% dropped frames as GPU usage climbed toward 80%. At the highest 2160p (4K) resolution, playback became very laggy, rendering only 3–4 seconds of video before pausing for 4–5 seconds. This behavior corresponded to over 60% frame loss and near-maximum GPU memory use of approximately 1.3 GB out of 3.9 GB shared memory.
![]() 144p. |
![]() 240p. |
![]() 360p. |
![]() 480p. |
![]() 720p. |
![]() 1080p. |
![]() 1440p. |
![]() 2160p. |
During YouTube playback, the CPU consistently operated near its full clock range of 2.9–3.1 GHz across all tested resolutions. This indicates that video decoding relied primarily on CPU-side processing rather than on dedicated hardware acceleration. Although the processor maintained stable frequencies, the sustained 100% CPU utilization suggests limited efficiency in offloading streaming workloads, particularly at higher resolutions, where frame buffering and rendering became more demanding.
GPU activity remained moderate at lower resolutions, ranging between 30–45% utilization with approximately 1.0 GB of shared memory in use at 144p–480p. At 720p, GPU load increased to 50–60%, and at 1080p playback, usage rose to 80–90% with memory consumption near 1.3 GB. Notably, both the Video Decode and Video Processing engines exhibited minimal activity throughout the tests, confirming that most decoding tasks were handled by the CPU rather than the GPU.


As a result, the system achieved efficient playback performance up to 1080p, but exhibited noticeable lag and frame drops beyond 1440p, potentially due to thermal throttling similar to what we experience in the N150-powered Zimaboard 2. The Intel Alder Lake-N/Twin Lake processors are perfectly capable of playing 4K YouTube videos, as demonstrated in our review of the Intel N100-based GEEKOM Mini Air12 Lite, and other similar mini PCs. It’s just odd that it happens with the active cooler installed.
Raspberry Pi RP2040 programming with MicroPython
Next, I checked the integrated Raspberry Pi RP2040 microcontroller, which communicates with the main CPU via USB 2.0, using the programming guide.
There are two buttons used to control the MCU: the reset button (RST) and the boot select button (BOOTSEL). These buttons can be used to upload new firmware. By pressing and holding RST, then pressing and releasing BOOTSEL, and finally releasing RST, the operating system detects the MCU as a USB Mass Storage Device with the default name RPI-RP2. At this point, a firmware file (.uf2) can be uploaded to the MCU by simply dragging and dropping it into the drive, after which the MCU reboots automatically. The latest MicroPython firmware is available from the official MicroPython website. It’s just the Raspberry Pi Pico firmware, so MicroPython programming works the same way, and the hardware is just integrated into the x86 board.


In this review, I did not update the firmware and continued using the pre-flashed RPi Pico MicroPython firmware. Next, I installed the Thonny IDE, set the default interpreter to MicroPython (Raspberry Pi Pico), and selected the appropriate communication port.

After that, I used the example blink code provided on the LattePanda IOTA MicroPython documentation page to test the onboard LED. When the script is named main.py, it runs automatically when the MCU is powered on or reset. The example script executed successfully without any issues.


Next, I used a simple Python script to retrieve RP2040 system information, and it worked as expected.

The above LED blinking code tested the onboard LED connected to the RP2040’s GPIO 25. To test other GPIOs, I selected GPIO 26, which is connected to the MCU’s ADC function. I connected my custom biosignal amplifier PCB to this pin and used the following simple Python script to sample the signal at approximately 50 Hz.



|
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 |
from machine import Pin from machine import ADC import utime fs = 50 # Hz t_interval_ms = 1000.0/fs # milliseconds PIN_ADC = 26 # ADC0 on RP PIN_LED = 25 # LattePanda IOTA onboard blue LED led = Pin(PIN_LED, Pin.OUT) adc = ADC(PIN_ADC) led_state = False t_now = utime.ticks_ms() t_prev = t_now t_delta = t_now - t_prev # Simple loop while True: # check elapsed time t_now = utime.ticks_ms() t_delta = t_now - t_prev if(t_delta >= t_interval_ms): # Simply read one ADC value val = (adc.read_u16() * (3.3/65535.0)) # Update tick counter and LED status t_prev = t_now led_state = not led_state if(led_state == True): led.on() else: led.off() print(f"{t_delta}, {val}") |
The first value shown in the Shell output represented the elapsed time between consecutive samples. It was 20 milliseconds, which correctly corresponds to a sampling rate of 50 Hz.

I placed the electrodes on my left and right chest and visualized the sampled data using the Arduino IDE Serial Plotter tool. Everything worked as expected, and the sampled ADC values correctly reflected the ECG waveform.

LattePanda IOTA’s active cooler
All tests above were performed with the active cooler. Let’s look into it in more detail.

Although not disturbing, the cooling fan produced a noticeable noise during operation. To analyze this, I used the Physics Toolbox Pro app on a Vivo Y27 5G smartphone, and the results are shown below.

The primary noise frequency ranged between 3,600–4,100 Hz, depending on fan speed. The left and middle images show measurements taken at 10 cm and 25 cm above the fan, respectively. The right image is a spectrogram that displays consistent peaks around 3.6 kHz and frequency shifts corresponding to changes in fan rotation speed.
Checking out the Smart UPS Expansion Board for the LattePanda IOTA

The official documentation states that the UPS expansion board provides up to 2 hours of operation under full load and approximately 8 hours when idle. To verify this, I tested the power consumption using three 18650 batteries charged to the default 80% level, as configured by the board’s DIP switch default setting. Windows was set to High Performance mode. Two tests were performed. In the first test, all applications were closed and the AC adapter was unplugged to record battery discharge in standby mode. The system was then recharged to 80% before running a 4K YouTube video in full screen mode until the battery dropped to 30%. The results, illustrated in the figure, show that power consumption during 4K playback was significantly higher than in standby mode.

It is also worth noting that after the first test, the system displayed an 80% battery level within about 20 minutes of recharging. However, the indicator LED did not turn green to indicate a full charge even after an additional 20 minutes. This suggests that the actual charge level might not have reached the same state as in the first test, which could have caused a slight discrepancy in the second test’s results.
Testing the 51W PoE Expansion Board
Setting up the 51 W PoE Expansion Board for the LattePanda IOTA was also straightforward. I connected the 4-pin power cable and the 16-pin FPC cable to their respective interfaces, making sure the gold contacts on the FPC faced downward. Then, I connected the expansion board to my Zyxel PoE12-30W PoE Injector using a LAN cable. After turning on the main power, the red LED on the expansion board lit up, indicating normal power delivery. Next, I powered on the mainboard. The expansion board worked as expected. It successfully delivered power and provided stable Ethernet connectivity.


Testing the M.2 4G M-Key Expansion Board
For this M.2 4G M-Key Expansion Board, an M.2 B-Key 4G LTE module is required. However, I was unable to obtain one during the review period, so I only tested the physical installation of the board.
This expansion board can be installed either on top of the Wi-Fi module or used independently. In my setup, I installed it on top of the Wi-Fi module by placing the provided M2 hex spacer between them. The board also includes a 1×04 male pin header, which must be connected to the 5V, D-, D+, and GND pins of the RP2040 GPIO socket, as shown in the figures below.


Adding an NVMe SSD via the M.2 M-Key Expansion Board
The next test was the M.2 M-Key Expansion Board. I followed the setup instructions from the product’s official website and then installed a new 500 GB WD Blue SN5000 NVMe SSD.

After inserting the SSD into the expansion HAT and booting the board, the operating system correctly detected it as a 500 GB WD Blue SN5000 SSD. I then formatted the drive and assigned it as Drive D: for testing.

I also tested the performance using CrystalDiskMark 9.0.1 with two test sizes: 1 GiB and 512 MiB. In the 1 GiB test, the drive achieved sequential read and write speeds of 894.7 MB/s and 835.6 MB/s, respectively. In the 512 MiB test, the sequential performance remained consistent at 887.4 MB/s (read) and 839.5 MB/s (write). For random 4K access, the drive reached up to 509.8 MB/s (read) and 462.3 MB/s (write) in the 1 GiB test, showing similar results in the 512 MiB run. The consistent results across both test sizes suggest that the M.2 expansion board communicates reliably with the system, and the reported speeds are consistent with a PCIe Gen3 x1 interface.


Checking the temperature and heat distribution
My final test was measuring the temperature and heat distribution of the LattePanda IOTA mainboard and the UPS Expansion Board using my FLIR E4 thermal camera. I booted the system and left it idle for about 10 minutes before capturing the first thermal image. Next, I played a 4K YouTube video in full-screen mode for approximately 15 minutes and then captured the second image. The figures below show the thermal patterns for both conditions.
In the idle state, the hottest area on the mainboard reached around 42 °C, while the overall board temperature stayed between 38 °C and 40 °C. The UPS board ran slightly cooler, averaging about 3–5 °C lower, with its hottest spots reaching similar temperatures to the mainboard.

During 4K video playback, the mainboard temperature increased to around 50 °C, showing a moderate rise under load, but I believe it is still within safe operating limits for continuous use.

Conclusion
Overall, I found the LattePanda IOTA to perform well for my needs. The hardware setup process was straightforward, and the pre-installed Windows 11 Pro was ready to use out of the box. All of the expansion boards worked as expected, except for the M.2 4G LTE Expansion Board, which I could only test for physical fitting due to time limitations. No major issues were encountered during the review.
I did notice a few minor issues, though they may be specific to my experience. For example, some expansion boards can be stacked using M3 hex column spacers, but the exact lengths required for each board are not clearly mentioned in the user manuals. Once mixed, it became a bit confusing to match the correct spacers according to the manufacturer’s intended design. Another small issue is that the M2/M3 screws provided with the boards have head styles that differ slightly from the flat-head screws shown in the manuals.
For those interested, the LattePanda IOTA is available from the official store for $166.80 (8 GB RAM, 64 GB eMMC flash, fanless heatsink, Intel AX210 Wi-Fi 6E, and unactivated Windows 11 Pro), and users can also customize their own set directly through the store.

My main research areas are digital image/audio processing, digital photogrammetry, AI, IoT, and UAV. I am open to other subjects as well.
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.











