Disclosure: the review sample was provided by DFRobot, the makers of LattePanda. I am allowed to keep the review sample indefinitely, no money exchanged hands, and as always, this post covers my own thoughts and views on the product.1

In 2023, I happened to find a LattePanda V1 for sale at a good price. Given the then-poor availability of affordable Raspberry Pi units, I got one for testing and finding potential use cases for it in my setup. However, it was just a little bit too weak for any practical uses in 2023, with its CPU and USB connectivity being just slow enough to be of less use, and the networking being capped at 100 Mbit/s.

In 2025, we have the spiritual successor to it: the LattePanda IOTA. It keeps the same form factor, but the connectivity and raw power have all received a significant jump, with the CPU performance rivalling my current home server, the trusty ThinkPad T430.

The marketing materials list all sorts of sensible use cases for it. I’m sure that it works fine for those, but I’m only interested in one thing: how close does this board get to being the perfect home server?

The perfect home server uses very little power, offers plenty of affordable storage and provides a lot of performance when it’s actually being relied upon.

In my case, low power means less than 5 W while idling, 10+ TB of redundant storage for data resilience and integrity concerns, and performance means about 4 modern CPU cores’ worth (low-to-midrange desktop CPU performance).

The model and accessories

The model I’m reviewing is the 8GB RAM/64GB eMMC one, with a Windows 11 installation on it (not activated).

The LattePanda IOTA.
The LattePanda IOTA.
My wife said that the logo for the LattePanda is cute. I agree.
My wife said that the logo for the LattePanda is cute. I agree.
Side view, including the PCIe x1 connector.
Side view, including the PCIe x1 connector.
Side view, with GPIO connections prominent.
Side view, with GPIO connections prominent.
Side view, including USB-C PD-compatible port, microSD card reader, a port forgotten by all smartphone makers, and
gigabit Ethernet.
Side view, including USB-C PD-compatible port, microSD card reader, a port forgotten by all smartphone makers, and gigabit Ethernet.
Side view, including three USB 3 10 Gbps ports, and a full-sized HDMI port.
Side view, including three USB 3 10 Gbps ports, and a full-sized HDMI port.

Along with the review unit itself, I got sent the following accessories:

The board was tested with a Lenovo 65W USB-C power adapter, because that’s what I had available. Given the specs of the board and the accessories, that should be plenty. As far as I know, USB power delivery seems to work fine and it’s not just a weird USB-C connector that requires specific voltages to work.

The M.2 NVMe SSD used in this review is a 512 GB Samsung PM9A1. I got that one from another PC that really didn’t need a boot drive that large.

Most of the testing was done with a fresh Fedora Server 43 installation, kernel version 6.17.7.

The hardware

I suggest looking at the spec sheet if you’re interested in all the fine details and available configurations.

In short:

  • CPU: Intel N150, 4 cores, 4 threads, up to 3.6 GHz
  • RAM: 8/16 GB (depending on model)
  • Onboard storage: 64/128GB eMMC (depending on model)
  • Networking: gigabit Ethernet port
  • Real-time clock: yes!

The overall connectivity has been improved with the new version of this board compared to the old board. The USB ports are all fast 10 Gbit/s ones, and we have actual PCIe connectivity to play with, although the available bandwidth is quite limited with a PCIe 3.0 x1 lane available on the port that both the M.2 M-key and PoE adapter connect to.

What caught my eye was the CPU performance I’ve been proudly running an old ThinkPad T430 as a server for a while now, with some failed attempts to find a more low-power and efficient solution.

The Intel N150 is now offering similar levels of performance, but in a much smaller power envelope.

When it comes to more specialized functionalities, such as GPIO and the RP2040 microcontroller, I don’t currently have a solid use case for them, so they won’t be covered in this review. I might fancy giving them a go in the future though, it would be nice to get some environmental sensors on it to monitor the temperature and humidity of the server room (which is a closet).

Since I also don’t have an 4G LTE modem available, I did not test the associated adapter.

M.2 M-key adapter

The way you can add expansion boards to the LattePanda IOTA is quite similar to how Raspberry Pi 5 and other similar single board computers do it: you simply run a flexible cable to an adapter board, and bam, you have extra connectivity!

With the M.2 M-key adapter kit, you get the adapter itself, some mounting screws and brass stand-offs, and a tiny little flexible cable for the PCIe signal.

Packaging of the M.2 M-key adapter.
Packaging of the M.2 M-key adapter.
The adapter itself.
The adapter itself.
Bottom of the adapter (or top, depending on how you mount it).
Bottom of the adapter (or top, depending on how you mount it).
Adapter installed to the SBC.
Adapter installed to the SBC.
Adapter with an M.2 2280 NVMe SSD. This Western Digital SSD was used for some quick testing.
Adapter with an M.2 2280 NVMe SSD. This Western Digital SSD was used for some quick testing.

The link speed is PCIe 3.0, with one lane available. In theory, this means a maximum of 1 GB/s of throughput. In practice and with this board and SSD combination, I got a maximum of ~810 MB/s. I expect some levels of losses with these types of setups, so in my view this seems normal. For the test, I just did a dd if=/dev/nvme0n1 of=/dev/null bs=8M status=progress. The SSD itself supports up to 4 lanes of PCIe connectivity so that should not be a limiting factor here.

The lovely part about M.2 NVMe ports is that you can use it for a lot of off-label use cases.

Fancy some SATA ports? There’s an adapter for that.2

Or a network card? Some fancy AI accelator thingy? Or a full-sized GPU? Anything will work (probably), as long as the cables and adapters are high quality, and you provide extra power to the device through other means.

PoE expansion board

The only device on my network that is connected over PoE is currently an Ubiquiti Wi-Fi access point, and that is unlikely to change in the near future because that would require a full replacement of my networking gear.3

However, I still gave this board a quick go, and I’m happy to report that it also works as an additional standalone Ethernet port. The Ethernet controller seems to be similar or the same as on the main board, and it shows up as a separate networking device. Both are Realtek NIC-s (Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller), and they work with the r8169 driver. Realtek has a spotty compatibility story overall on Linux from what I’ve read, but this one seems to work fine on Fedora Server 43.

PoE adapter.
PoE adapter.
PoE adapter, other side.
PoE adapter, other side.
PoE adapter, installed.
PoE adapter, installed.
Detected network interfaces on Fedora Server 43. Both work!
Detected network interfaces on Fedora Server 43. Both work!

I was very close to pulling the trigger and turning it into a beefy router so that I can finally move my Wireguard networks on the router as my current one cannot do more than 20 Mbit/s of Wireguard traffic, but I didn’t end up going through with that idea because of how well the SBC did in other areas.

UPS expansion board

As some of you might know, I’m a fan of playing with fir- 18650 Li-ion battery cells, and I’m hoping to one day build a solar-powered server of my own (of which there are many examples).

I took some spare 18650 cells that came from an old ThinkPad battery, made sure that the voltages are more-or-less the same, and threw them on the board.

UPS adapter.
UPS adapter.
UPS adapter, other side.
UPS adapter, other side.
UPS adapter, installed on the board.
UPS adapter, installed on the board.
UPS adapter, running off of batteries.
UPS adapter, running off of batteries.
UPS adapter, charging.
UPS adapter, charging.

Connecting the UPS board with the standoffs was fine, but the cable connecting it with the SBC was finicky. I triple-checked that the connector was the right way, but had to still use an uncomfortable amount of force to connect it all up. The battery cells themselves sit snugly on the board, and unless you drop the board, they should not fall out on their own. You’d still want to build a case around it if you’re going to actually put it to use in rough environments.

The manual for the UPS board emphasizes that it only works on Windows 10/11, and sadly that seems to be the case, the UPS does not seem to show up as an USB-listed device, and tools like NUT did not find anything to monitor with a quick 5-minute investigation.

The UPS board also has an interesting selection of switches that you can use to adjust the behaviour of the board, like automatically turning the board on when power comes back on, and setting an 80% battery charge limit. The first one was not really necessary to use, the board would follow whatever setting you have enabled on the SBC itself. I configured mine via UEFI settings to automatically turn on with a power adapter connected, and that worked here as well.

The run time of your LattePanda IOTA with the UPS expansion board will heavily depend on your workloads and quality of your battery cells. Mine were used cells, and then I hit the board with stress -c 4 to create some load on it. It ran for over an hour like that, and then I got bored and wanted to proceed with testing other accessories. The marketing materials mention up to 8 hours of runtime, and I suspect that with good Li-ion cells and workloads where you idle most of the time, it will likely be achievable.

The board seems to trigger a hard shutdown on Linux because the host OS is not aware of a battery being connected. Not that catastrophic for most modern filesystems and database engines, but something to consider in your own workloads in case they are Linux-based.

The UPS board seems to handle power connection and disconnection events well enough, it did not do anything weird when repeatedly plugging and unplugging the USB-C cable.4

Based on the readings from a wall outlet energy meter, the board uses up to 20W when charging the cells. It’s possible for the board to pull more than that with a maximum CPU load and connected peripherals, so I wonder if that may be an issue with more intense usage scenarios.

During charging and discharging cycles, even under heavy loads, the battery cells did not get hot and were at best warm to touch.

Ethernet

It’s gigabit.

Fine for my use case given that I still live in 2006 and only have devices that support gigabit Ethernet speeds at best (excluding the Ubiquiti Wi-Fi AP), but certainly less than some competing products.

eMMC and USB storage

Compared to the LattePanda V1, the USB port performance is actually decent for my use case. I can connect up to three USB-connected storage devices to the board, so that’s exactly what I did.

I set up three different USB-connected devices:

  • USB hard drive (Seagate Basic)
  • USB SATA SSD (Samsung QVO 4TB in ICY BOX USB-SATA adapter)
  • USB NVMe SSD (512 GB Samsung PM9A1 with some random cheap USB to M.2 NVMe adapter)

For each device (including on-board eMMC device), I ran a while true; do dd if=/dev/X of=/dev/null bs=8M status=progress; sleep 5; done, which puts a sequential read workload on all the drives in an infinite loop.

After about 72 TB of data read in less than 24 hours, I checked the kernel logs and there were no stability issues whatsoever. The NVMe SSD started throttling due to heat, which was expected with that cheap adapter.

Results of the storage stress test.
Results of the storage stress test.

Assuming no issues with any cables and adapters, the USB ports seem to be solid enough for running storage devices off of. Yes, it can be a horrible idea in some use cases, but at the same time my ThinkPad T430 has been excellent with USB-based storage, and that’s with one of the USB ports being coffee-stained!

The eMMC chip is also more performant compared to the previous iteration, with sequential read speeds averaging around 316 MB/s, writes around 175 MB/s, and average read latency being around 0.15 ms. Certainly good enough for a boot drive.

Display connectivity

The LattePanda V1 struggled with larger displays, and when I gave it a go during this review, it would not properly display an image on my 3440x1440p monitor.

The LattePanda IOTA just did it, at 60 Hz. On Fedora Workstation and GNOME, the experience was smooth. Once you start doing things in the browser, like video playback, the situation is less optimal, but as a makeshift desktop PC it is alright for most low/mid-range activities.

The display output working as intended on Windows 11.
The display output working as intended on Windows 11.

Windows compatibility

The board came with a Windows 11 installation (not activated). As is tradition with Windows, the initial impressions are horrible, update processes running in the background made the active cooler go wild and the device felt sluggish.

But after that process is done, the experience is not bad at all if you look past the OS being Windows.

I did not do a thorough investigation and I suggest formatting the device boot drive either way when receiving it, but the Windows 11 installation looked clean enough, with no obvious bloatware.

The typical Windows experience.
The typical Windows experience.

Linux compatibility

The LattePanda V1 had some quirks. The performance was iffy, and you had to specify a Linux kernel parameter on first boot so that Fedora Linux does not confuse the optional display interface to be an always-connected primary display.

The previous version also didn’t include a real-time clock (RTC) by default, which meant that it was impossible to schedule some systemd timers as the time would always jump on boot years ahead on distros like Fedora Server. I got stuck in a reboot loop with a scheduled reboot job that way, was not fun to recover from.

With the LattePanda IOTA, I have not observed any weird oddities and quirks with it. Even the kernel logs don’t show anything that’s problematic, and the RTC is handy to have around as that helps avoid the issue mentioned above.

Active cooler

With the LattePanda V1, the cooler was not strictly required, but strongly recommended if you were going to use the board with moderate to high sustained loads. My solution was to slap an inappropriately sized heat sink to it with a thermal pad and zip ties and/or velcro strips, which looked horrible, because it was.

With the LattePanda IOTA, the cooler is now a mandatory part of the assembly. It can be fitted with either a passive cooler, a case with passive cooling, or an active cooler.

LattePanda IOTA next to the active cooler.
LattePanda IOTA next to the active cooler.
The bottom of the active cooler.
The bottom of the active cooler.

The active cooler does a good job of keeping the board cool, but it does get super loud at higher loads. The default fan curve is very primitive, with the fan changing it speeds in big and sudden increments. Bursty workloads certainly feel bursty with this fan. You will not want to be in the same room with this active cooler.

The sound profile is very similar to a thin and light laptop, and the fan has a very strong high-pitched whine to it.

Here’s an audio recording of the noise under heavy load if you’re interested (MP3 file). Recorded using a Google Pixel 8a.

You can mitigate the active cooler noise issue by reducing the CPU clock speed by setting a lower power limit in UEFI settings, or on Linux, setting a lower CPU performance ceiling using intel_pstate driver max_perf_pct option once on boot. This comes at the obvious cost of some raw performance, but given that CPU power scales non-linearly, you may not even notice it that much.

If you are sensitive to fan noise, then do get the passive cooler and slap a Noctua fan on it, it will likely be a much better experience with both the cooling performance and noise levels.

Oh, and fun fact: I got so carried away with testing that I actually forgot to remove the plastic film on the larger thermal pad that cools supporting components.

And then I did about 24 hours of stress testing with that arrangement.

I can confirm that the design of the board is idiot-proof, as I did not actually notice any severe throttling or thermal issues with that mistake. You can actually see the plastic film being present in a few photos of the board in this review. I still can’t believe that after all these years I ended up making that one mistake that you usually see online in tech support gore posts.

Power consumption

The idle power consumption of the LattePanda IOTA seems to be around 4.0W, which is more than the Raspberry Pi 5 8GB with its power consumption being around 3.2W. Slightly higher compared to that, but lower than most x86 mini PC-s with idle power consumption typically in the range of 6-14W.

During the disk read speed stress test, I saw a maximum of 24.4W pulled from the wall.

With the disk read stress test and a full CPU stress test, I saw a peak of 36.3W, with it quickly dropping down as the CPU settled down at a lower clock speed.

Home server

This board came surprisingly close to my perfect home server criteria that I had outlined earlier this year.

Less than 5W when idling? Check.

10+ TB of redundant storage? Check.

4 modern cores’ worth of CPU performance? Check.

Enough performance during bursty workloads? So far, yes.

I then installed a fresh copy of Fedora Server 43 and moved all my home server workloads to it. The eMMC storage is used as a boot drive, journald writes are disabled, workloads requiring good latency and speed are on the 512GB NVMe SSD, and bulk storage is connected via two existing USB-SATA adapters taken from one of those WD Elements/MyBook external hard drive enclosures.

Then it just worked. No issues.5

The drop in the overall power consumption of my whole home server and networking stack was also immediately noticeable.

Solid 10W drop in normal use.
Solid 10W drop in normal use.
CPU usage on the ThinkPad T430 vs the LattePanda IOTA (the gap is the server migration). Same workloads in both.
CPU usage on the ThinkPad T430 vs the LattePanda IOTA (the gap is the server migration). Same workloads in both.
Memory consumption, ThinkPad T430 (16GB DDR3) vs LattePanda IOTA (8GB DDR5).
Memory consumption, ThinkPad T430 (16GB DDR3) vs LattePanda IOTA (8GB DDR5).
Temperature readings, ThinkPad T430 vs LattePanda IOTA with the active cooler.
Temperature readings, ThinkPad T430 vs LattePanda IOTA with the active cooler.

Here are my observations of the CPU performance and behaviour after hitting it with an all-core CPU load:

  • 2.9 GHz for a short time period (10-15 seconds), with CPU hovering around 80°C
  • 2.2-2.3 GHz after that, with the CPU dropping to around 70°C

I have seen the CPU hit around 3.6 GHz with a single core load while there is nothing running in the background, but during my normal home server operations the cores are doing enough work across all 4 cores, so that doesn’t happen all that often, and 2.9 GHz is the ceiling for single core performance.

The only limiting factor so far has been the 8 GB of memory on my review unit, but on the bright side that limitation forced me to review the memory usage of some of the jobs that I run on my home server, which ended up with me finding a few resource hogs and then fixing them all up. Now I can run about 30 Docker containers of various resource consumption on a single board computer, and with less than 4GB of RAM used. I set up an 8GB swap file on the SSD, just in case.

Thanks to the relatively small boot drive, I also learned that even if you move the Docker data-root folder to another location, containerd will still clutter up your boot drive, so you’ll have to change that path in its /etc/containerd/config.toml file root setting.

I’m genuinely impressed with how well the LattePanda IOTA runs as a home server. The board isn’t really designed with that use case in mind, and I suspect that the Intel N150 might be doing most of the heavy lifting here, but still, very impressive!

Is it the perfect home server? No, but it’s pretty damn close to my definition of it.

UEFI settings tour

For those interested in what options are available on the board via its UEFI settings, here are some screenshots of the settings.6

Conclusion

If the LattePanda IOTA with its adapters fits your project requirements, you’re aware of its limitations, and the price is right, then I believe it’s a solid choice for your next project. My testing didn’t immediately break it, even when I forgot to remove the plastic film on one of the thermal pads.

The current pricing of it and its accessories seem to be roughly in the ballpark of the Raspberry Pi 5 8GB (based on prices in Estonia). Boards like the Zimaboard 2 (have not tested it myself) are more expensive, but they’re also catering to a slightly different audience and have better specs, like 2.5G Ethernet ports and SATA ports with power delivery suitable for running two 3.5" hard drives straight from the board.

It’s hard to beat the bargain that you can get from a used mini PC or NAS, but it won’t come with the charm, low power consumption and bragging rights that a single board computer gets you, especially if you’re using it for an off-label use case like I am.7

In the meantime, I’ll keep rocking it as a home server. In case something noteworthy happens, I’ll update this post, which is brought to you by the very same LattePanda IOTA at the time of publishing.


  1. this also marks the first time that I’ve been sent a review sample throughout the course of running this blog! ↩︎

  2. do note that with most M.2 PCIe->SATA adapters, the controller of the adapter determines how good of an experience you will have. With some, I’ve read that the controllers may not handle some failure scenarios well, one device having issues may throw off the whole controller, and now you have a bigger mess. ↩︎

  3. the earliest PC motherboard with a gigabit Ethernet connection that I’ve personally used was manufactured in 2006. That’s how long gigabit Ethernet has been around for in the consumer space. ↩︎

  4. say that 10 times in a row! ↩︎

  5. I know, that usually does not happen on this blog. ↩︎

  6. being a prolific open source influencer does not bring in as much money as you’d think, so I haven’t bought a proper capture device yet. ↩︎

  7. no, but seriously, I cannot be the only one who has a strange affection towards SBC-s with their bare PCB-s. I can’t tell a capacitor from a resistor, but the boards are just so damn cool, right? ↩︎