Home Blog

UGREEN HomeAgent HA100 – A NAS, Smart Home Hub and Local AI Assistant in One

The UGREEN HomeAgent HA100 is quite a bit more than your typical NAS.

It’s a personal cloud server, smart home hub, home security system and even a local AI assistant, all packed into a single device. It can recognise people and objects in your photos, manage your smart home and security cameras and even answer questions about what’s happening around your home, all locally without relying on cloud-based AI.

It’s an ambitious product from UGREEN, so let’s take a closer look at what it does and how it works.

Here’s my video of the UGREEN HomeAgent HA100, read on for the write-up:

Where To Buy The HomeAgent HA100?

Tools & Equipment Used:

Sound Level Meter – Buy Here
Power Meter – Buy Here

Unboxing the UGREEN HomeAgent HA100

In the box we’ve got the HomeAgent itself and an accessories box.

The accessory box contains the manual and warranty card, an Ethernet cable, power brick, the thickest cooling pad I’ve ever seen, a cover plate, drive screws, a screwdriver and drive bay keys.

Taking a look at the HomeAgent, at the front we’ve got this black bar which is actually a 3.93-inch colour TFT touchscreen. Above it is the four-microphone array with volume adjustment buttons on the left and a microphone isolator button on the right. Then at the bottom is a USB-C port and a full-size SD card reader.

The two sides just have ventilation and a logo on them and around the back we have a removable magnetic dust filter covering a 140mm fan for cooling.

Rear Magnetic Dust Cover

Below that, from left to right, is the power button, 20V DC input, HDMI port, two USB 3.0 Type-A ports, a 2.5G network port and then four 100Mbps PoE ports for surveillance cameras.

HA100 Rear IO

Hardware and Specifications

Internally, the HA100 has an eight-core ARM-based Rockchip RK3588 processor, which from my previous SBC testing is a very power-efficient chip for its performance. We’ll test power consumption a bit later on.

Rockchip RK3588

This chip also has an ARM Mali G610 GPU and an integrated NPU that can do up to 6 TOPS, along with that is 16GB of LPDDR5 RAM, and the operating system is installed on 64GB of eMMC storage.

You may be wondering where the drives go since this is also a NAS. There’s a magnetic top cover hiding them.

HA100 Storage Drives & Accelerator

Underneath this cover we have two 3.5-inch storage drive trays on the left and another for surveillance storage alongside them. These bays all have SATA 3.0 connections.

The trays themselves look quite cool and are finished off well with aluminium labels on the handles. They have a single lockable button to eject them, holes for mounting 2.5-inch drives and tool-free installation for 3.5-inch drives.

They also have rubberised guides on the end which make installing the drives feel very premium. You don’t have any banging or rubbing of plastic on plastic, and there’s a satisfying click into place at the end.

Dedicated AI Accelerator

Alongside the drive bays we’ve got the AI accelerator card. The HomeAgent is heavily marketed towards bringing everything back to your local network, and this is what allows the system to do all of the AI processing locally.

Accelerator Front

This is an RK1828 AI co-processor with 5GB of RAM in a package with what looks like a PCIe connection. I assume it’s removable because it may be upgradable in future or they might release different models, but that’s not confirmed.

Accelerator Connector

The HA100 is advertised as having 26 TOPS of total AI performance, 20 from this accelerator in addition to the 6 from the NPU. This is a pretty cool offering as I can think of very few NAS solutions that ship with a GPU or AI accelerator ready to run.

All three drives and the accelerator can be locked in place using one of the two included basic keys. These disable the release buttons.

Lastly, at the bottom is another removable cover with an NVMe bay. This is a PCIe 3.0 x1 port, and they include a massive thermal pad for this drive in the accessory box.

Bottom PCIe Connector

I don’t know how well the shiny white exterior is going to hold up to home use, but it looks pretty cool now and feels solidly built. Even the cover plate isn’t just a thin piece of plastic. It’s reinforced on the inside and has rubber strips on the mating faces.

Installing Drives and Setting Up the HomeAgent

For testing, I’m installing two WD Red 2TB drives in the general storage bays and one 4TB drive in the surveillance bay.

2TB Storage Drive

Being tool-free trays, installation is really easy. You just pull out the side, place the drive in and align it with the retainers, and then push the side back in.

Toolless Drive Mounting

With the drives installed, we can plug in power and Ethernet and boot it up. Power is supplied from a 20V 180W adaptor.

On boot, the HomeAgent asks you to pick a language and then use the UGREEN app to discover it on the network and complete setup.

You’ll need the app to do most of the setup and to interact with the HA100. The setup process takes about 10 minutes to complete and includes selecting a RAID 0 or RAID 1 configuration for the drives. After setup is complete, you’ll need to install some apps to suit your workflow. The main apps and features that I’m going to be testing, besides the NAS-related features, are the ones that I think differentiate the HA100 from other NAS products. These are primarily the AI-based features like voice recognition and photo recognition, as well as surveillance and the smart home hub. So I’ve gone ahead and installed most of their preconfigured apps.

Toolless Drive Mounting

NAS Performance Testing

Starting out with the standard NAS functionality, I’ve enabled SMB sharing and mapped the NAS drives to a PC on my network, also running over a 2.5G connection.

I ran file transfer tests across two different file sizes, 16GB and 1GB.

NAS Transfer Speed Tests

With larger 16GB files, transfers to the NAS start at around 270MB/s for the first few seconds. Then, as RAM fills up, speeds drop down to around 180MB/s. Reads from the NAS are consistently around 190MB/s.

Smaller 1GB files transfer to the NAS at 270MB/s for the full file, and read from the NAS again at around 190MB/s.

So unsurprisingly, the HA100 functions pretty well as a NAS.

Media Apps – Music, Theatre and Photos

The HomeAgent also has a range of media apps like Music, Photos and Theatre, which do exactly as their names suggest.

Music

Music is a fairly basic media player that organises your library by artist and album, with support for playlists.

Music App

Theatre

Theatre is also what you’d expect. It’s a media streaming app that automatically scrapes your media folders and presents your movies and shows along with artwork, a description and the cast.

You can also transcode media to lower bitrates.

Theatre App

Photos

Photos gives you a typical Google Photos-style interface with photos ordered by date.

It also uses object recognition running locally to categorise photos and identify similar or duplicate photos. It’s got a few other local AI features allowing you to recognise people and extract text from images.

You also get semantic search, so you can easily find photos based on what you remember them including.

Local AI Features and Models

Since we’ve seen some of the AI features in use in the Photos app, let’s look at that a bit closer.

The HA100 runs Qwen3.5 4B by default, although it looks like it’s set up to allow you to choose different models in future. It also allows you to use cloud models if you want more powerful capabilities. It’s a nice inclusion, although this somewhat defeats the “keep it local” philosophy.

The part I like most about how they’ve implemented this on the HA100 is that they allow you to individually toggle which apps are able to use the AI features and even which models are able to be used by these apps. So you have total control over the AI implementation on the device.

Home Security and Surveillance Cameras

That brings me to the home security features.

The addition of the four camera-focused PoE ports is quite a unique feature, and UGREEN have released three new camera models to pair with it. I have two of these here to test, one indoor and one outdoor camera. The outdoor one supports PoE.

These function much the same as other smart home cameras, but they have a wide selection of local AI detection functions which can be individually selected per camera. From my testing, these work fairly well, with the odd misdetection of my toddler as my dog. Being locally processed means they’re also quite responsive.

The outdoor camera is particularly impressive with its auto-tracking of subjects. It has no problem tracking people moving behind objects. It’s actually a bit eerie watching it track you.

Tracking Behind Trampoline

Smart Home Hub and Voice Assistant

The HA100 also functions as a smart home hub, so it can interact with your smart devices directly. This is also what the voice assistant is currently best set up to control, and you can see and control these devices through the UGREEN app.

This smart home control functions alongside your existing setup, so you don’t have to pair your devices exclusively with the HA100.

To confirm that the AI assistant is running locally, I unplugged the network cable and it still responded to my questions.

Power Consumption Testing

I then measured power consumption.

The HA100, with my configuration of drives all spun up, uses around 28W at idle and 33W under load.

Power Consumption Idle

When powering one of the OD600 cameras using its built-in PoE, this goes up by about 4–5W depending on what it’s doing.

Power Consumption With Camera

This just gives you an idea of power consumption. Yours is obviously going to vary depending on the type and quantity of drives you install, as well as the PoE devices you connect to it. But I think this is quite low for all that it’s doing.

Noise Levels

Sound-wise, we’ve seen that the drive trays have rubber damping and the whole device feels solidly built, but even so, it’s really quiet. If you didn’t know this had mechanical drives in it, you probably wouldn’t even notice them. I measured 35 decibels, but that’s pretty much the ambient sound level here in my workshop.

Sound Level

UGREEN HomeAgent HA100 Pricing

In terms of pricing, there are three different versions of the HomeAgent with vastly different hardware, performance and also pricing. This is the consumer-level base version, which costs $799 as their super early bird price and has an MSRP of $1,599. This initial pricing also includes a free indoor camera.

At $800, I think this is pretty good value for money. But at $1,600, the software needs to do a fair bit of work to make this a true all-in-one smart home device and justify the price.

I also say consumer-level because the other two models, the HA100 Pro and the MA100, are significantly more expensive and also more powerful. They’re likely aimed at people who really want to do a lot of AI processing locally, as well as small businesses.

What Could Be Improved?

My only real criticism of the HA100 is that it perhaps does a bit too much in one package. It’s a really functional product that they’ve packed a huge amount of tech into, but realistically you probably don’t want a box of spinning mechanical drives with five network cables emerging from the back in a room where the voice functionality is going to be useful.

Cables Coming Out Back

Fortunately, it looks like they’ve already thought of that, and they have a dedicated smart speaker for Uliya. This is a standalone device that you can still have on the same network, but it looks less out of place in your living room or kitchen.

Being a pre-release product, there are also a few bugs and features that are still in development. The current software is quite restricted compared to UGREEN’s conventional NAS lineup, and currently almost all of the functionality is accessed through the mobile app. But given this is going live as a Kickstarter in November, and that UGREEN have a pretty good NAS lineup available already, I expect they’ll have these ironed out when they start shipping them out.

Final Thoughts – Is the UGREEN HomeAgent HA100 Worth It?

Overall, I think UGREEN have done a pretty good job with the HomeAgent HA100. They’ve managed to combine a NAS, security system and smart home hub into a compact, power-efficient device, and the local AI functionality adds some useful features.

The hardware is certainly promising, but whether the HomeAgent becomes a truly useful all-in-one smart home solution will depend on how UGREEN develops its ecosystem and particularly its compatibility with smart home devices from other brands.

Let me know what you think of the HomeAgent HA100 in the comments below, and if you’ve got any questions about the device or any of my testing, feel free to ask.

GL.iNet Mango 2 – A Tiny Travel Router With Some Big Features

When you’re travelling, connecting to WiFi usually involves finding the hotel’s network and then connecting your phone, laptop and tablet individually, often going through the same login process on each device. Then, when you move to another hotel or location, you have to do it all again.

Fortunately, there’s a much easier way to do this.

The new GL.iNet Mango 2 is a tiny $40 travel router that allows you to take your own WiFi network with you. Rather than connecting each of your devices individually to the hotel’s WiFi, they can all automatically connect to your own familiar network instead. You then only need to connect the Mango 2 to the available internet connection, and it handles the rest.

GLiNet Mango 2 Unboxed

But that’s really only the start of what you can do with a travel router like this. You can run all of your devices through a VPN, securely connect back to your home network, use a wired Ethernet connection when one is available, or even use your phone’s mobile connection as a backup if the hotel WiFi stops working.

So today I’m going to take a look at the new GL.iNet Mango 2, set up my own portable WiFi network and run through some performance tests to see how useful this little travel router actually is.

Here’s my video review of the Mango 2, read on for the write-up:

Where To Buy The GL.iNet Mango 2?

Tools & Equipment Used:

Some of the above parts are affiliate links. By purchasing products through the above links, you’ll be supporting this channel, at no additional cost to you.

First Look At The Mango 2

GL.iNet sent me the new Mango 2 to try out. It’s the successor to their original Mango travel router, with a number of upgrades to its hardware and wireless capabilities.

GLiNet Mango 2 Inclusions

The first thing you’ll notice about it is just how small it is. I’ve been using a GL.iNet Slate 7 for a little over a year now, and the Mango 2 is tiny in comparison. The Slate 7 isn’t particularly large itself, so that gives you an idea of just how compact this new model is.

Mango 2 vs Slate 7

The Mango 2 measures just 89 x 63mm, is 15mm thick and weighs around 100 grams. That’s not much bigger than a credit card, and it’s only slightly thicker than the Ethernet ports on the side.

Despite its size, GL.iNet has managed to pack quite a lot into it.

On the sides, there are two Gigabit Ethernet ports, one for WAN and one for LAN, a USB 3 Type-C port, a separate USB-C port for power, a reset button and a configurable toggle switch with a small status LED alongside it.

Internally, one of the biggest upgrades over the original Mango is the addition of dual-band WiFi. The original Mango only supported 2.4GHz WiFi at speeds of up to 300Mbps. The Mango 2 increases this to 400Mbps on 2.4GHz and adds a 5GHz band capable of up to 866Mbps. It’s also received a processor upgrade, moving from a single-core 580MHz processor to a dual-core 880MHz processor, alongside 128MB of memory.

These upgrades are particularly useful when you start using some of the more advanced features, like running VPN connections directly on the router, which I’ll cover a bit later.

Another useful feature is its low power consumption. The Mango 2 runs from a standard 5V USB-C supply, and GL.iNet specifies a power consumption of less than 5W. In my testing, I measured power consumption of around 3.5 to 4W under typical conditions. This means you don’t need to carry around another proprietary power supply. You can power the travel router from a normal USB-C charger, a USB port on your laptop, or even a small power bank.

What Does a Travel Router Actually Do?

To demonstrate how the Mango 2 works, I’ve created a separate WiFi network in my workshop called “Hotel WiFi”. This simulates the sort of wireless network you’d connect to when travelling.

Hotel WiFi test network

Normally, I’d need to connect each of my devices to this network individually. Instead, I’m going to connect them all to the Mango 2 and then use the Mango 2 to connect to the simulated hotel network.

To get started, I power up the router and connect my laptop to its default 5GHz WiFi network. The first time you connect, the Mango 2 brings up a setup walkthrough to configure the router and get it connected to the internet.

GLiNet Mango 2 Setup

I’m using the default network names for this demonstration, but you can configure your own WiFi network names and passwords to make them easier to identify and remember. Once the initial setup is complete, I can use the GL.iNet app or the router’s web dashboard to select my Hotel WiFi network as the internet connection and enter its password.

The Mango 2 then connects to the hotel network, and everything connected to the Mango 2 now has internet access. So the hotel has its own WiFi network, and I have mine. That’s essentially the idea behind a travel router.

Connected To Travel Router

Wherever I go, all of my devices connect to the same WiFi network that I know and control. I only need to change the internet connection that the Mango 2 is using. This is particularly convenient if you’re travelling with multiple devices, as you don’t need to repeatedly configure each one whenever you move to a different location. And that internet connection doesn’t necessarily have to be WiFi either.

Four Ways to Connect to the Internet

The Mango 2 supports four main methods of connecting to the internet, giving you quite a bit of flexibility depending on what’s available wherever you’re travelling.

Ethernet Connected WAN

1. WiFi Repeater Mode

The first option is WiFi repeater mode, which is what I’ve been using in the demonstration so far.

This is probably the mode you’d use most often in hotels, airports or anywhere else where you’re provided with access to an existing WiFi network. The Mango 2 connects to that network wirelessly and then provides internet access to your own devices through its separate WiFi network.

This allows all of your devices to remain connected to the same familiar network, regardless of which hotel or public WiFi connection you’re using.

2. Wired Ethernet Connection

The second option is to use a wired Ethernet connection. If your hotel room or accommodation has an Ethernet port available, you can connect it directly to the Mango 2’s WAN port. The travel router then uses this wired connection for internet access while continuing to provide WiFi to your other devices.

This can potentially give you a faster and more stable connection than relying on the hotel’s wireless network, particularly in locations where the WiFi is congested or has poor signal strength.

3. USB Tethering From Your Phone

The third option is particularly useful if you don’t have access to a reliable WiFi network. You can connect your phone to the Mango 2 using USB and enable USB tethering. The Mango 2 then uses your phone’s mobile data connection to provide internet access to all of the devices connected to its network.

Cellular Tethering

So rather than enabling a hotspot on your phone and connecting everything to that, you can continue using your existing travel router network.

4. USB Cellular Modem

The fourth option is to connect a compatible USB cellular modem. This allows the Mango 2 to establish its own mobile internet connection without needing to use your phone.

Depending on your setup, this could be useful for travelling or working remotely in locations where fixed internet connections aren’t available.

Automatic Connection Failover

Another useful feature is that the Mango 2 can have multiple internet connections configured and automatically switch between them if one becomes unavailable.

For example, I can configure the hotel WiFi as my primary internet connection and use my phone’s mobile connection as a backup. With both connections configured, I can disable my simulated Hotel WiFi network and the Mango 2 automatically switches over to the backup mobile connection.

Importantly, all of my devices remain connected to the same local WiFi network throughout the process. This is a particularly useful feature when you’re travelling somewhere with unreliable WiFi, as you don’t need to manually reconnect all of your devices whenever the primary internet connection drops out.

Using a VPN With the Mango 2

Another big advantage of having a travel router between your devices and the network you’re connecting to is that the router can handle your VPN connection as well.

GL.iNet supports more than 30 VPN providers. I’ve been using ExpressVPN for this demonstration.

VPN Connections With One Connected

Normally, if I wanted to use a VPN across multiple devices, I’d need to install and configure the VPN application on each device individually. With the Mango 2, I can configure the VPN connection directly on the router instead. I’ve set up three different VPN server locations as examples. From the GL.iNet dashboard, I can select one of these locations and establish a connection to the VPN provider.

Once connected, the devices using the Mango 2 can route their internet traffic through the VPN without needing to run their own VPN clients. Checking the connection on my laptop confirms that its internet traffic is now going through the VPN, and the same applies to my other devices using that connection.

My Location To Show VPN Working

You can also configure which devices or traffic actually use the VPN, so it doesn’t necessarily have to be an all-or-nothing arrangement. This is really useful for devices where installing a conventional VPN application isn’t possible, or where you simply don’t want to manage multiple VPN installations.

VPN Management Rules

VPN Performance and Protocol Support

VPN performance is also one of the areas where the Mango 2 has improved significantly over the original Mango.

GL.iNet claims speeds of up to 184Mbps when using WireGuard and up to 95Mbps using OpenVPN with DCO.

These are impressive figures for such a small and inexpensive travel router, although actual performance will depend on the VPN provider, protocol and network conditions. I’ve also run my own VPN performance tests, which I’ll cover in the performance section below.

Connecting Back to My Home Network With Tailscale

Using a VPN doesn’t necessarily mean routing all of your internet traffic through a commercial VPN provider. The Mango 2 also supports Tailscale, and for somebody with a homelab or home server, this opens up some really useful possibilities.

Tailscale Connection

In my previous project, I built a low-cost home server using a small mini PC running Jellyfin, Immich and Nextcloud. These services allow me to host my own media library, photo backups and cloud storage rather than relying entirely on commercial cloud services. Normally, these applications are accessible from devices connected to my home network. However, with Tailscale configured on the Mango 2, I can establish a secure connection back to my home network even when I’m travelling.

For this demonstration, the Mango 2 is connected to my simulated Hotel WiFi network, but I can still access services running on my home server. For example, I can open Jellyfin and stream movies or TV shows from my own media library.

Jellyfin Remote Access

I can also open Immich and access my photo library, including photos that have been backed up from my devices.

Immich Remote Access

Or I can use Nextcloud to access files that I’ve stored on my home server.

Nextcloud Remote Access

All of these services are running on my home network, but they’re accessible through the Mango 2’s Tailscale connection. The important part is that I don’t need to install and configure Tailscale individually on every device that I’m travelling with. From the perspective of my laptop and other devices, they’re simply connected to the Mango 2’s WiFi network as usual.

The travel router effectively becomes a bridge between the portable network I’ve brought with me and the services I’ve left running at home. For somebody who already has a homelab, NAS or home server, I think this is probably one of the most powerful uses for a travel router. It allows you to take advantage of your own self-hosted services while travelling without needing to configure remote access separately on every device.

GL.iNet Mango 2 Performance Testing

Of course, having all of these features isn’t particularly useful if the router can’t actually keep up with a reasonable internet connection. So I ran a series of performance tests to see how the Mango 2 performs with different network configurations.

As a point of comparison, a wired connection in my workshop typically achieves a little over 500Mbps. This gives me a useful baseline to compare the Mango 2 against.

Workshop Internet Speed Test

Wired Ethernet Performance

For the first test, I wanted to establish the best-case scenario using wired connections on both ends of the router. I connected an Ethernet cable from my existing network to the Mango 2’s WAN port and then connected my laptop to its LAN port.

With this configuration, I again achieved speeds of over 500Mbps.

So at these speeds, the Mango 2 wasn’t introducing any noticeable performance limitation when using wired connections on both sides.

Wired WAN With 5GHz WiFi

For the second test, I kept the wired Ethernet connection as the WAN connection but connected my laptop to the Mango 2 over its 5GHz WiFi network.

This configuration also achieved speeds of over 500Mbps.

So even when using WiFi for the connection between the laptop and the Mango 2, there wasn’t a noticeable reduction in throughput compared to my wired baseline.

WiFi Repeater Performance

The third test is probably the most representative of how most people will actually use the Mango 2 while travelling. For this test, I connected the Mango 2 to my simulated Hotel WiFi network using 5GHz WiFi. I then connected my laptop to the Mango 2’s own 5GHz WiFi network. This means the router is using WiFi for both its connection to the internet and its connection to my laptop.

This was the first test where I saw a significant reduction in speed. Throughput dropped to around 250–275Mbps.

Internet Speed When Connected To Two WiFi Networks

I repeated the test twice more to check the results and achieved approximately the same speeds each time.

To investigate this further, I kept the Mango 2 connected to the Hotel WiFi network in repeater mode but connected my laptop to the router using Ethernet instead. With this configuration, speeds went straight back up to around 500Mbps. This confirms that the reduction in throughput is associated with using WiFi for both sides of the connection.

When the Mango 2 is using the same wireless radio for both its uplink to the hotel network and its downlink to your devices, the available wireless throughput is effectively being shared between those connections.

This is a limitation of this type of WiFi repeater arrangement rather than something unique to the Mango 2.

It’s also worth keeping these results in perspective. Your actual internet speed while travelling is going to depend heavily on the hotel, airport or whatever connection you’re using. In many cases, particularly here in Australia, the available internet connection is likely to become the bottleneck well before the Mango 2 does. Even the reduced 250–275Mbps I achieved in repeater mode is more than sufficient for most typical travel use cases.

VPN Performance Testing

I also tested the Mango 2’s VPN performance, and this is where the protocol you’re using makes quite a significant difference.

I initially configured ExpressVPN using OpenVPN. With this configuration, I was only achieving speeds of around 14–18Mbps.

Internet Speed Test Over OpenVPN

To check whether the limitation was with my internet connection or VPN provider, I also tested ExpressVPN directly from my laptop. Running the VPN directly on the laptop, I was back up to speeds of over 500Mbps.

So the significantly lower speeds were specific to running this OpenVPN configuration through the Mango 2. I then switched to PureVPN using the WireGuard protocol. This made a significant difference, increasing throughput to around 120Mbps.

PureVPN as WireGuard VPN Option

WireGuard is generally much more efficient than OpenVPN, which is particularly important on a small travel router like the Mango 2 where processing power is limited. GL.iNet also rates the Mango 2 for significantly higher VPN throughput using WireGuard than OpenVPN, and my testing reflected that difference.

The 120Mbps result is below GL.iNet’s claimed maximum of 184Mbps, but it’s still a very usable speed for a portable router of this size.

So, if VPN performance is important to you, I’d recommend choosing a VPN provider that supports WireGuard on the Mango 2. It’s also worth checking which protocols your existing VPN provider supports before purchasing the router, as the difference in performance can be quite substantial.

GL.iNet Mango 2 Power Consumption

The last thing I wanted to test was power consumption. One of the advantages of a compact travel router like this is that it doesn’t require much power, making it practical to run from a portable power bank. GL.iNet specifies a power consumption of less than 5W, so I wanted to see what it actually used in a few different configurations.

Wired Connection

With the Mango 2 running in full wired mode, using Ethernet for both the WAN and LAN connections, I measured power consumption of around 3.5W.

Power Test Ethernet Ethernet

That’s already quite low, particularly considering the router is capable of handling over 500Mbps in this configuration.

WiFi Repeater Mode

Next, I tested power consumption with the Mango 2 operating in WiFi repeater mode, with my laptop also connected wirelessly. Interestingly, power consumption dropped to just under 3W.

Power Test WiFi WiFi

I actually expected this configuration to use slightly more power than the wired setup, given that the router was handling wireless connections on both sides. But in my testing, it was a little more efficient.

VPN Connection

Finally, I went back to the wired configuration and enabled the ExpressVPN profile that had previously resulted in much lower throughput. This configuration places additional processing demands on the router while it handles the VPN connection.

Power consumption increased to around 4W, which was the highest result I measured during these tests. Even then, it’s still a very low-power device.

Power Test Under Load and Ethernet

Running the Mango 2 From a Power Bank

With power consumption generally sitting between 3 and 4W, running the Mango 2 from a power bank is quite practical. For example, a typical 10,000mAh power bank should theoretically be able to power the router for around 8–10 hours, allowing for some conversion losses. That means even a relatively small power bank could keep the router running for a full workday.

Mango 2 Powered

This could be particularly useful when travelling, working remotely, or using the router somewhere that doesn’t have a convenient power outlet. And because the Mango 2 uses a standard USB-C power connection, you don’t need to carry a separate charger specifically for it. You can use the same USB-C charger or power bank that you’re already carrying for your other devices.

Final Thoughts on the GL.iNet Mango 2

The Mango 2 is a surprisingly capable little travel router, particularly considering its size and price.

For me, the biggest advantage of travelling with a router like this is being able to configure all of my devices once and then take that same network with me wherever I go. Rather than repeatedly connecting my laptop, phone and other devices to different hotel or public WiFi networks, I only need to connect the Mango 2 to whatever internet connection is available. Everything else can remain connected to my own network.

But there are also quite a few additional features that make it more useful than simply providing a familiar WiFi connection. For somebody running a home server or homelab, the Tailscale integration is particularly useful, as it makes services like Jellyfin, Immich and Nextcloud accessible while travelling without needing to configure each device individually.

Performance was also quite good for a router of this size. There are obviously more powerful travel routers available, including several other models from GL.iNet themselves. But at $39.90 during the pre-order period, the Mango 2 is clearly aimed at being the small, inexpensive option that still covers most of the features people are likely to use while travelling. And I think it does a good job of that.

Here’s a link to the GL.iNet Mango 2 if you’d like to find out more about it or get one for yourself.

Let me know in the comments section below if you already travel with your own router, and what you use yours for.

Build Your Own Low Cost Home Server

Cloud storage is really convenient. Your photos automatically back themselves up, your files are available everywhere, and all of your movies and TV shows are ready to stream whenever you want them. But the problem is that all of this comes with a monthly subscription, which only ever gets more expensive. 

So I want to see how much of that I can replace with a tiny, cheap and low-power mini PC that I’m going to turn it into my own private home server. It’ll automatically back up and organise my photos, give me my own private cloud storage, and stream my entire media library to TVs and devices around my house.

Unlike a more traditional NAS or server, the goal here is to make this cheap to build, cheap to run, and simple enough that almost anyone can set one up.

Here’s my video of the build, read on for the write-up:

Buy The Hardware To Build Your Own Cheap Home Server

GMKtec Nucbox G5 – Buy Here
500GB SSD – Buy Here
USB to SATA Adaptor (Cheap) – Buy Here
USB to SATA Adaptor (Good Quality) – Buy Here
Beelink ME Mini – Buy Here
Zimaboard 2 – Buy Here

Tools & Equipment Used

USB C Pencil Screwdriver – Buy Here

Some of the above parts are affiliate links. By purchasing products through the above links, you’ll be supporting this channel, at no additional cost to you.

Hardware Options For The Server

There are loads of ways you could build something like this, but I’ve narrowed it down to three options that I think are reasonably good for this type of project.

Three Different Hardware Options

Option 1 – GMKtec Nucbox G5

One of cheapest options is something like this GMKtec NucBox G5. This is what I’m going to use for this build.

It’s a mini PC built around an N97 processor. While this isn’t a particularly powerful CPU, for what we’re going to be doing, we don’t really need one. Most of the time our server is going to sit here doing almost nothing. It’s only when someone uploads photos, accesses a file or starts streaming something that it really has any work to do.

GMKtec Nucbox G5 Front

These low-power Intel chips are good for this. They also have integrated Intel graphics, which is useful when we get to Jellyfin because we can use the GPU to hardware accelerate video transcoding rather than using the CPU to do all of the work.

The biggest limitation with a little mini PC like this is storage, this one in particular doesn’t have any additional storage ports. But fortunately, that’s quite easy to solve. For this build I’ve got a 500GB Kioxia SSD, which I’m connecting over USB. 500GB obviously isn’t a huge amount of storage, but it’s good enough for a basic build and you can connect a larger drive if you have a significant media library.

So this is essentially the budget option, a cheap mini PC, a USB SSD and an Ethernet cable to connect it to our network. I’ve also 3D printed a small stand to hold the drive under the PC. This attached with some M2 screws into the holes in the bottom of the mini PC and the drive is attached with 4 M3x8mm screws through the sides.

3D Printed Stand Installed

All up this setup costs around $180, and that’s all we really need.

Option 2 – Beelink ME Mini

If you want something a little more purpose-built, the Beelink ME Mini is a great alternate option.

Beelink ME Mini

It’s still based around one of Intel’s low-power N150 processors, but instead of storage being an afterthought, the whole computer is designed around it.

It has six M.2 SSD slots, supports up to 24TB of solid-state storage, has 16GB of RAM, dual 2.5 gigabit Ethernet and an integrated power supply.

Beelink ME Mini Internals 6 M.2 Ports

So rather than having USB drives hanging off the back of your system, you can build an all-flash storage home server inside a tiny enclosure.

Beelink ME Mini and Nucbox G5

It’s a bit more expensive than the Nucbox, starting at around $280, and especially once you start filling those SSD slots, but it’s a nice option for a compact, quiet and self-contained build. I’ve actually had the Beelink ME Mini setup as my home media server for a while now.

Option 3 – Zimaboard 2

Then there’s probably the best option if you want to take this project further in the future. This is the ZimaBoard 2.

Zimaboard 2

This also uses an Intel N150, but unlike a traditional mini PC, it’s specifically designed to be expanded. It’s got dual 2.5 gigabit Ethernet, two SATA ports that can directly connect hard drives or SSDs, and then a PCIe slot for expansion.

So you could add an NVMe adapter and run multiple SSDs, add faster networking, or use the SATA ports for a couple of large hard drives.

It also comes preloaded with ZimaOS, which makes setting up a home server quite easy, but you can also just install Ubuntu like we’re going to do here.

This costs around $300 too but I’d argue is a bit less complete than the ME Mini as you’d typically want to add a PCIe card and need some drives and cables to finish it off. 

Three Hardware Options With Nucbox G5 Assembled

For this particular build, the focus is on cost and how little you need to get started, so I’m going with the NucBox and this 500GB SSD.

What We’re Building

Before we start installing the software, I’ve put together a full step by step guide along with terminal commands for all of the software as a GitHub repository Home Media Server, so visit that when you’re ready to start setting your server up.

Now let me explain what we’re actually going to run on it, there are four main applications.

First is Jellyfin which is going to handle our movies and TV shows. This is sort of like your own personal Netflix, but with the media on your own server.

Jellyfin For Movies & TV Shows

Next is Immich. This is one of my favourite self-hosted applications. It gives you a Google Photos-like interface for your photo library, and the Immich app can automatically back up photos from your phone to this server.

Immich For Photos

Then there’s Nextcloud, which gives us our own cloud storage. Files, folders and documents can be stored here and be accessed from our computers and phones rather than relying on Google Drive or Dropbox. 

NextCloud for Documents

And finally I’m installing Homarr. Homarr doesn’t provide another service, but it gives us a dashboard that ties everything together and makes the finished server feel more user friendly.

Homarr dashboard

To run all of this we’re going to use Docker, which keeps each application in its own container and makes the setup easier to maintain.

Installing Ubuntu Server

To start out, lets install our operating system. For this, I’m using Ubuntu Server.

There are some easier packaged alternatives, but Ubuntu gives us a lot of flexibility and isn’t tied to any particular piece of hardware. So you can follow the same process on your own system.

I’ve downloaded the Ubuntu Server disk image and written it to a USB drive. We’ll then boot the mini PC from that and go through the installation.

Plugging In USB Boot Drive

Being the server version, there’s no desktop environment, and that’s intentional. This computer is going to sit somewhere in my house without a monitor, keyboard or mouse connected to it, so there’s no point wasting resources running a graphical desktop that we’re never going to use.

Installing Ubuntu

During setup remember to enable SSH so that you can remotely access it. Once Ubuntu is installed, we can disconnect the monitor and keyboard and manage everything remotely from another computer on my network.

Preparing The Server

Before installing the containers, I’ll first update Ubuntu and then mount the SSD and create some basic directories to store my media. So something like movies, series, photos and files. The exact folder structure isn’t particularly important, we just need a place for the containers we’re going to create to store their data.

The mini PC has its own internal storage, but I’m going to leave that primarily for Ubuntu, Docker and the applications themselves. The external SSD is the data drive. Separating the OS and our data like this makes the system much easier to rebuild later.

It’s also important to remember that this SSD is just storage. It is not a backup. If you’re putting your family photo library or important documents onto a server like this, you still need a backup copy somewhere else.

Why Run Docker?

Next we need to install Docker.  The benefit of this is that most of the configuration data is stored in Docker Compose files. So if I eventually outgrow the N95 computer, I don’t necessarily have to start again. I can easily move my data and redeploy the containers.

I’ve installed Docker Engine and Docker Compose, and now we can start adding services.

Jellyfin – Movies & TV Shows

First up I’ve got Jellyfin. 

I’ve created a directory for Jellyfin’s configuration and another for its cache. Then in the Compose file we map our media directories on the SSD to the Jellyfin container, and pass through the integrated GPU. This allows Jellyfin to use hardware acceleration for transcoding.

Jellyfin Transcoding

So if I’ve got a 4K movie stored on the server but I’m trying to watch it on a device or connection that needs a lower resolution or bitrate, Jellyfin can convert that stream using the integrated graphics rather than overloading the CPU.

Big Buck Bunny Running On Jellyfin

We can open Jellyfin from any browser on our network but they also have apps for Smart TVs, Apple TV or Firestick and for mobile devices. So now we’ve got our own media streaming service, and all of the files are sitting right here in my house.

Immich – Photos & Videos

Next up is photos using Immich. 

Immich is a bit more complicated than Jellyfin because it’s actually several services working together, but that’s what Docker Compose is good at. Immich provides its own Compose configuration, so we’ll download that, configure where we want the photo library stored, set up the database credentials and bring the stack online.

From there I can also install the Immich app on my phone and connect it to the server. I can then select which albums I want backed up and Immich can automatically upload it to my own server. The interface is also really similar to the cloud photo services most people are already familiar with.

Dog Image in Immich

You get a timeline, albums, search and other organisation tools, except the original files are sitting on our own storage. For me, this was one of the main reasons I built a home server in the first place.

NextCloud – Documents & Cloud Storage

Now let’s add our general file storage using Nextcloud.

Nextcloud is basically going to give us our own version of Dropbox or Google Drive. Again, we’ll deploy it using Docker using persistent storage on our SSD and a database for its application data. Once that’s running, we can create folders, upload documents, images or any other files I want.

Document Editing in NextCloud

Like with the other two, there are desktop and mobile clients as well, so folders can be synchronised between computers in the same way they would with a conventional cloud storage provider.

Homarr – Convenient Dashboard

At this point the server is doing most of what we wanted it to but the problem is that we’ve got Jellyfin on one port, Immich on another, Nextcloud somewhere else and remembering all of those addresses is annoying. So the last application I’m installing is Homarr. 

Homarr gives us a dashboard for the server. So instead of remembering a bunch of IP addresses and port numbers, we can create one page containing links to everything. We can also add widgets for things like system information and Docker containers.

Homarr Dashboard Integration Setup

So this creates a nice single home-server interface that’s completely customisable. Mine looks a bit bare to start since I don’t have much stored on the server yet, but it’ll grow as my server develops.

Power Consumption

One of the main drawbacks to running a powerful NAS or homelab is the running costs if you live somewhere where electricity is expensive. 

The nice thing about this setup is that at idle, we’re only drawing around 6 watts, and with a bit of load on it while streaming a movie we’re at around 10-15 watts.

Even at the high end, running this server continuously for an entire year would use approximately 100 kilowatt-hours, which at my electricity rate amounts to around $30 a year. So the ongoing power cost is really small. Because we’re using an SSD rather than several spinning hard drives, the whole system is also quiet and compact.

Remote Access

There is also one major feature we haven’t tackled in this build and that’s remote access. For that I’d recommend Tailscale. You can install this as a container to and it creates a secure, encrypted private network between your devices and lets you securely access your home server while you’re away.

Final Thoughts On MY Cheap Home Server

That’s our little home server finished.

The best part about this project is that none of the hardware is particularly special. You could use a different mini PC, an old laptop you already own, or you could go with something modular like the ZimaBoard 2 and add NVMe drives and large SATA hard drives as your storage requirements grow. The software running on it remains the same, so this is a great entry point into self-hosting.

Let me know what other services you’ve got running on your home server down in the comments. 

Bigme B6 Review: Is Colour E-Ink Finally Ready for Everyday Use?

I’ve been experimenting with a few different e-ink products lately, and I really like the idea of technology that’s a bit less harsh and distracting than traditional bright LCD or OLED displays. E-ink displays also use very little power and are easy to read outdoors.

Most of the e-ink products I’ve tried, however, have been fairly static displays that don’t change for minutes or even hours at a time. So when Bigme reached out and asked if I’d like to try one of its colour e-ink readers, I was interested to see what happens when you try to use e-ink for something a little more everyday.

Bigme B6 eReader

The device I’ve been testing is the Bigme B6, a six-inch colour e-ink reader. Unlike something like a Kindle, though, it runs Android 14 and has full access to the Google Play Store.

That means you can install an e-reader app, but you can also install Chrome, Gmail, Spotify, Reddit, or just about any other Android app. I’ve been using the B6 for the past two weeks to find out how much of what we normally use a phone or tablet for can practically be done on an e-ink display.

Here’s my video review of the Bigme B6, read on for my written review:

https://youtu.be/nhdxiMMEBeo

Where To Buy The Bigme B6?

Some of the above parts are affiliate links. By purchasing products through the above links, you’ll be supporting my projects, at no additional cost to you.

First Look At The Bigme B6

I’ve been testing the black version of the B6 along with one of Bigme’s leather covers. This particular model has 4GB of RAM and 64GB of storage. The 4GB + 64GB version sells for $179 and the 2GB + 32GB version sells for $159 at the time of writing this post.

The first thing I noticed when I took it out of the box was how small it is. The display is six inches, so the device isn’t much larger than a modern smartphone, although it is quite a bit wider. It’s also only 7mm thick without the cover.

The cover attaches magnetically and automatically puts the B6 to sleep when you close it. If you’re mainly going to use the B6 for reading, I’d probably use it with the cover most of the time.

Installing B6 Into Leather Cover

There’s also a microSD card slot at the bottom that supports cards up to 1TB. For ebooks, that’s way more storage than you’d ever need, but it could be useful for storing audiobooks, PDFs, images or other media locally.

MicroSD Card Tray

The Colour E-Ink Display

The most interesting part of the B6 is obviously its display.

It uses a Kaleido 3 colour e-paper panel. For black-and-white content, it runs at 300 pixels per inch, while colour content is displayed at 150 PPI.

If you’ve never used colour e-ink before, the first thing to understand is that these displays do not look like the screen on a phone or iPad. Colours are considerably more muted. They’re closer to something printed on newspaper or from an inkjet printer than the bright, saturated colours you’d get from an LCD or OLED display.

Initially, this may come across as a bit disappointing, but there are some benefits to it. Take the B6 outside and the display remains really easy to see. There’s no glare from a backlight fighting against the sun, and text in particular looks really sharp. That’s one of the main reasons e-ink is so good for reading.

The B6 also has a dual-colour-temperature adjustable display light. Technically, this is a front light rather than a backlight. Brightness and colour temperature are both fully adjustable using sliders, and Bigme also provides a selection of presets for making quick adjustments.

Front Light Dual Colours

What About It’s Refresh Rate?

The obvious problem with trying to use e-ink for something other than reading is its refresh rate. Traditional e-ink is fantastic when nothing is moving, but the moment you start scrolling, e-ink displays tend to struggle.

Scrolling on B6, Refresh Rate

Bigme gets around this to some extent with a selection of presets and four different refresh modes. These essentially allow you to choose between prioritising image quality or refresh speed.

Refresh Rate Setings, Four Modes

At the slower end, you get a very clean image that’s great for reading, but the refresh rate becomes distracting when scrolling or viewing dynamic content.

Increase the refresh rate and dynamic content becomes smoother, but you start introducing artefacts and ghosting.

Ghosting on Images

At its fastest setting, Bigme claims the display can refresh at up to 30 frames per second. Scrolling is noticeably better in this mode, although there is also a lot more ghosting. This refresh rate means you can actually watch YouTube on the Bigme B6.

Video Playback With Extreme Refresh Rate

I obviously wouldn’t recommend buying an e-ink reader specifically to watch YouTube. Even with the faster refresh rate, the colours are muted, the image isn’t particularly detailed or sharp, and there’s still some ghosting. The fact that video is even watchable is quite impressive, though. This simply wasn’t possible a few years ago, when a single refresh could take 10–15 seconds.

More importantly, the improved refresh rate makes normal applications that involve a bit of scrolling very usable.

Android Changes the Whole Device

This brings me to the feature that makes the B6 particularly interesting. Unlike devices that function solely as e-ink readers, the B6 is more like an Android device that happens to have an e-ink display. It runs Android 14 and has access to the Google Play Store, so I can sign into my Google account and install apps in much the same way I would on any other Android device.

Google Play Store

That means you’re not tied to a particular ebook ecosystem. You can install Kindle, Kobo or Libby, and if you have your own collection of ebooks or PDFs, you can load those onto the internal storage or a microSD card.

Kindle Book App

You can also install apps that have nothing to do with books. For example, I’ve installed Gmail.

Gmail App Installed

This is where I’ve found the B6 to be more useful than I expected. I’m not particularly interested in replacing my phone with it, but there are quite a few situations where I don’t necessarily want everything my phone provides.

A Less Distracting Device

As with the other e-ink devices I’ve tried, one of my favourite things about using the B6 is the reduced distraction. If I pick up my phone to read something, I’ve also got messages, YouTube, Instagram, Facebook and a dozen other apps and widgets competing for my attention. The B6 can technically run many of those apps as well, but without all of the bright colours and lights, I find them a lot less appealing.

Instead, I can sit down and read an article, look at my tasks or read an ebook. Because the display isn’t particularly good at all of the distracting stuff, there’s much less temptation to disappear down a rabbit hole. It’s one of those advantages that’s difficult to appreciate from a specification sheet.

Reading on the Bigme B6

The B6’s primary purpose is obviously still reading, and for that, it’s pretty good. The 300 PPI black-and-white resolution means text is sharp, and because the B6 runs Android, you can choose whichever reading ecosystem you prefer rather than being locked into one.

Reading An eBook

Colour also adds to the experience. Book covers look better, diagrams can use colour, highlighting is easier to see, and comics are much more interesting.

Book Covers

The biggest limitation is probably just the physical size. Six inches is great for portability and novels, but for large PDFs, drawings or full-size documents, I’d personally want one of Bigme’s larger devices.

AI Tools and Voice Recording

There’s also a slightly unexpected side to the B6, Bigme has built several AI tools into it. The main one is its chat functionality, which extends to tools such as translation, text extraction and content writing.

AI Chat Tools

There’s also a dedicated content writer and an AI drawing tool.

Image Generation on B6

How useful these features are will depend heavily on what you’re using the device for. If you’re a student attending lectures, for example, or you’re taking the B6 into meetings, there’s some appeal in being able to record the session, generate a transcript and then create a summary without needing a second or third device.

Battery Life on the Bigme B6

Another reason people like e-ink devices is battery life. The B6 has a 2,100mAh battery. It doesn’t necessarily get weeks from a single charge, but it does seem to last several days with moderate use.

Battery Life Graph

It’s still running Android, has Wi-Fi, a front light and fast screen refresh modes, all of which contribute to reducing battery life. Even so, it’s better than you’d typically get from a mobile phone or small tablet.

There are also a host of settings available to reduce power consumption, and at the more conservative end they can extend battery life quite significantly.

Battery Life Graph

From my testing, if you’re using the B6 quite heavily like a mobile phone, as I’ve been doing during this review, you’ll get around 6–8 hours of continuous battery life. If you’re using it more like a conventional e-reader, you’ll get closer to a week. This will obviously vary significantly from person to person. Reading a locally stored ebook with Wi-Fi and the front light switched off is a very different workload from browsing the web or using AI transcription.

Compared with a conventional tablet, though, you’re probably not going to be reaching for the charger as often.

There Are Some Things That I Don’t Like

The B6 isn’t perfect, and there are a few things to be aware of before considering buying one.

The first is a limitation of colour e-ink displays in general. The screen isn’t white in the same way that a sheet of paper is white. Kaleido colour displays have an additional colour filter layer, so without the front light, the background looks darker or greyer than it does on a traditional monochrome e-reader.

Homescreen

As I mentioned earlier, the colours are also muted. This isn’t a fault with the B6 specifically; it’s simply something you need to be aware of before buying a colour e-ink device.

The second compromise is responsiveness. The fast refresh modes are impressive for e-ink, but this still isn’t going to feel like a modern phone or tablet. There are moments where animations look strange, and scrolling can produce noticeable ghosting.

Weird Artifacts on Display

Lastly, running Android is both one of the B6’s greatest strengths and one of its weaknesses. You get a lot of flexibility to install apps and tailor the device to your specific needs, but battery life takes a hit. It also means the overall experience isn’t quite as integrated as you’d get from a dedicated, closed-down e-reader.

So, Does E-Ink Work as an Everyday Device?

After using the Bigme B6 for the past two weeks, it’s helped me understand where I actually want e-ink in my life. I don’t particularly want an e-ink phone, and the B6 isn’t going to replace my iPad. But that’s not what it needs to do.

I like that it sits somewhere between a traditional e-reader and a small tablet. If I want to watch videos, edit photos or use social media, I’ll use a conventional tablet or laptop. But if I’m reading a book, going through a long article or video script, checking on tasks, or simply trying to get away from another bright screen, I’d genuinely rather use something like the B6.

E-ink is becoming fast and flexible enough that it doesn’t have to be restricted to displaying the same page of a book for 30 seconds at a time.

Having spent the last few months putting e-ink devices around my home, I can now see the appeal of having one in my pocket too.

If you’ve used an e-ink reader or tablet, I’d be interested to hear what you think of it in the comments below.

BIGTREETECH Panda Sense Pro, Air Quality Monitoring for Your 3D Printer

Air quality around 3D printers is something that’s increasingly being discussed, particularly as enclosed printers and higher-temperature engineering filaments have become more common. While most modern printers do a reasonable job of keeping the printing process contained, they’re not completely sealed, and according to some, filament materials can produce particulates and volatile organic compounds while printing.

This is the BIGTREETECH Panda Sense Pro, and it has been specifically designed to help keep an eye on what’s happening around your printers.

It’s not just a simple temperature and humidity sensor, it monitors eight different environmental metrics, including airborne paritcles, CO₂, volatile organic compounds and formaldehyde. It also includes Wi-Fi, logging and integration options for common 3D printing setups.

BIGTREETECH sent me this Panda Sense Pro to try out, so I’ve spent some time using it around my printers to see what it can tell me about the air in my workshop.

Where To Buy The Panda Sense Pro

What Can The Panda Sense Pro Monitor?

The Panda Sense Pro has sensors that allows it to monitor eight parameters:

MeasurementWhat it tells you
PM2.5Concentration of fine airborne particles up to 2.5 µm
PM10Concentration of airborne particles up to 10 µm
CO₂Carbon dioxide concentration
FormaldehydeHCHO concentration
eTVOCEstimated total volatile organic compounds
AQIOverall air-quality indicator
TemperatureTemperature
HumidityRelative humidity

This is quite a broad combination for a workshop or printing room. It covers a range of common environmental indicators rather than focusing on a single pollutant.

PM2.5 and PM10 give you an indication of airborne particulate matter, while eTVOC and formaldehyde monitoring indicates changes in airborne chemicals. CO₂ is useful as an indication of how well ventilated a room is, especially when people are present. Temperature and humidity are also useful measurements for printing and filament storage.

The measurements are all shown simultaneously on the built-in display, so you don’t need an external app or computer to see what’s happening.

What’s Included In The Box?

The Panda Sense Pro isn’t supplied as a completely assembled product, ready to use. In the box you get the Panda Sense Pro PCB, 3.5″ display, temperature and humidity sensor, USB power cable, mounting hardware and a couple of hex keys.

And, because this is BIGTREETECH, there’s also the obligatory little BTT rubber duck.

You may have noticed by now that it doesn’t include an enclosure. Instead, BIGTREETECH provides the enclosure design as an open-source 3D-printable model.

I don’t mind this approach for something aimed specifically at people who already own a 3D printer, although it may limit their market a little. This approach keeps the hardware accessible and gives you the option of modifying or completely redesigning the enclosure if you’d like to, allowing you to mount it onto your 3D printer for example.

Printing The Panda Sense Pro Enclosure

I printed their standard enclosure before assembling the monitor. The complete enclosure uses a little over 100 g of filament with stock settings on my Bambulab X2D, so it’s not a large or expensive print.

Because the enclosure files are available to download, you can also print it in whatever colours or materials suit your setup, or modify the design if you want to mount it somewhere specific. The downside is that you need access to a printer to end up with a finished product. Out of the box, you’re buying a PCB and display rather than a completed consumer product.

The enclosure is relatively straightforward to print and assembly is also simple. The included screws secure the PCB and enclosure, while the display sits at the front.

The temperature and humidity sensor in installed behind the PCB and then the back cover closes it up. There are also loads of ventilation openings around the enclosure, which are obviously important for the sensors to accurately sample the surrounding air.

The assembled unit measures around 117 × 80 × 74 mm, so it’s small enough to sit alongside a printer without taking up much room.

Hardware & Sensors

The Panda Sense Pro is designed on a compact PCB which measures 111.5 × 54.8 mm. On the front is a ribbon cable connector to attach the 3.5-inch 480×320 colour TFT display. It’s not a touchscreen, but that’s not really necessary for this device. It displays all eight measurements simultaneously, with colour coding and guiding descriptions like Good, Fair or Severe, making it easy to quickly see if the air quality has changed.

There are several dedicated sensors mounted onto to the PCB, including a laser particle sensor for particulate measurements, an electrochemical formaldehyde sensor and an NDIR infrared sensor for measuring CO₂.

Sensors on the Panda Sense Pro

That last one is worth highlighting. A dedicated NDIR sensor is better for measuring actual carbon dioxide concentration than inexpensive monitors that derive estimated CO₂ figures from their VOC measurements.

The brains of the Panda Sense Pro is a ESP32-S3 and through this, connectivity is provided using 2.4 GHz Wi-Fi, and the device is powered by a USB-C port, which requires a 5 V, 1 A supply. This means you can power it from a normal 5V USB charger, power bank or potentially a spare USB port on your 3D printer.

Setting Up The Panda Sense Pro

Setup is really simple. Once the board has been installed into the enclosure and the temp & humidity sensor unit and display are connected, the Panda Sense Pro just requires a USB-C input for power. It can run from any suitable 5 V USB power supply, so it doesn’t need its own dedicated power adapter. It can be powered from a free USB port on a printer or computer or even a cheap charger.

Once running, it’s again pretty easy to use. Rather than needing to open an app every time you want to check the environment, you can glance over and immediately see PM2.5, PM10, temperature, humidity, eTVOC, CO₂, AQI and formaldehyde on the well laid out display. eTVOC takes a few minutes to start up, so shows up as a “-” when you first power the Panda Sense Pro up.

Panda Sense Pro Display

You can also connect to it’s own WiFi network and access a small web dashboard with instantaneous readings, historical trends and settings, or use that interface to tell it to connect to your own WiFi network and you’ll then be able to access the dashboard from any device on the same network.

Historical Monitoring

The Panda Sense Pro also provides historical data rather than only showing instantaneous measurements.

It’s got an on-device trend showing changes over the past hour, grouped over two pages, and then both 24-hour and 30-day history through the web dashboard, allowing you to look back at environmental changes over time.

This is arguably more useful than the live display. An instantaneous VOC or particulate reading on a device like this doesn’t necessarily tell you very much on its own. Being able to see that a measurement consistently increases after starting a printer or using a particular filament is a lot more useful.

It’s also helpful for testing ventilation. You could run a print with the room closed, for example, record the resulting measurements, and then repeat the experiment with an extractor fan or window open and see how the results compare. This turns the Panda Sense Pro into a useful testing tool.

Running Some Tests In My Workshop

To demonstrate how the Panda Sense Pro works, I ran some tests in my workshop, but rather than deliberately creating extreme pollution to make the numbers move, I wanted to see what happens during normal day-to-day tests and use.

Baseline Test

I first left the Panda Sense Pro running in the workshop without any printers operating to establish a baseline.

After allowing a few hours for the readings to stabilise, I recorded:

MeasurementBaseline
PM2.53 µg/m³
PM103 µg/m³
CO₂427 ppm
eTVOC0.1 mg/m³
Formaldehyde0.01 mg/m³
Temperature17.4 °C
Humidity63.2 %
AQI5

This gives me something meaningful to compare subsequent tests against.

PLA & PETG Printing Test

Next, I ran some overnight PLA and PETG prints across 3 of my 3D printers that I have in the room. I ran two printing dual colour PETG prints and one printing in PLA. These are all enclosed printers and also using an enclosed AMS.

Here are the results overnight (roughly 11 hours):

MeasurementPLA & PETG Test
PM2.58 µg/m³
PM1010 µg/m³
CO₂445 ppm
eTVOC0.1 mg/m³
Formaldehyde0.01 mg/m³
Temperature14.4 °C
Humidity68.8 %
AQI11

So there was a small increase in PM2.5 and PM10 measurements but no significant changes or dangerously high readings. These are still within the Panda Sense Pro’s “Good” range for each result.

Ventilation Test

I also ran a test while I was working in my workshop over the course of an evening to see how CO₂ levels change. I had the windows and door closed and I was in the workshop for about 2 hours.

These were the results after the 2 hour period:

MeasurementVentilation Test
PM2.53 µg/m³
PM103 µg/m³
CO₂1032 ppm
eTVOC0.2 mg/m³
Formaldehyde0.01 mg/m³
Temperature17.2 °C
Humidity52.6 %
AQI5

So again, no major changes to most metrics but a noticeable increase in the CO₂ concentration over the evening, which was to be expected. At over 1,000ppm, it’s starting to get to the point where I’d be feeling fatigued and sluggish.

Important Limitations When Interpreting The Results

It’s worth being careful about what these measurements actually mean. Like many other consumer-grade air quality products, the Panda Sense Pro is an environmental monitor, not laboratory analytical equipment.

A TVOC sensor, for example, measures the overall response to a range of volatile organic compounds. It doesn’t tell you exactly which chemical is present or precisely where it came from. Likewise, PM2.5 and PM10 measurements tell you about the quantity of airborne particulate matter within those size categories, but they obviously don’t identify the particles.

The AQI is also a calculated air-quality metric rather than being based on an independent physical sensor.

The Panda Sense Pro is useful as a relative monitoring device. If your workshop or printer room normally sits at a particular level and VOC or particulate readings repeatedly increase while a certain printer is running, that’s useful information. Similarly, you can see whether your installed ventilation or filtration is improving air quality.

Integration With Other Systems

The Panda Sense Pro also supports Home Assistant and Moonraker for Klipper based printers, which both substantially increases what you can potentially do with the data. Rather than simply viewing the measurements on the Panda Sense Pro, you could incorporate them into a wider workshop and printer monitoring system and build automations around them.

For example, you could potentially use increasing particulate or VOC measurements to trigger ventilation, send a notification when air quality deteriorates, or log environmental conditions alongside other workshop data. So the device doesn’t necessarily become another isolated smart gadget with its own ecosystem.

If neither of those suit your needs, the Panda Sense Pro also has MQTT cloud synchronisation and remote monitoring through an app.

At the time of testing, there is mention of an app in development, but that is still “coming soon”.

What I Like

The biggest strength of the Panda Sense Pro is probably how much information it puts into one compact device. Having particulate, VOC, formaldehyde, CO₂, temperature and humidity monitoring in a single unit is really useful in a workshop where many devices or machines could affect air quality.

The colour display is also a great inclusion. A lot of environmental sensors become invisible once they’re set up because accessing their data requires opening an app or dashboard. Here, the data is always visible.

I also like the printed enclosure approach. Requiring customers to print their own case certainly won’t appeal to everyone, but for the intended audience it makes sense. The enclosure is easy to print, only uses around 100 g of filament, and you can modify it if you want something different or want to integrate it into a custom setup.

Finally, the Home Assistant and Moonraker integrations make the device more functional than a generic desktop air-quality monitor, particularly if you already have a smart-home or complex 3D printing setup.

What Could Be Better

The obvious drawback to one of the strengths that I listed is that the Panda Sense Pro arrives without an enclosure. If you’re buying it specifically because you’re into 3D printing then is a non-issue, but if you’re just looking for a good air quality monitor for your workshop then its something worth considering.

I’d also like BIGTREETECH to publish some more detailed information about the individual sensors, their specified accuracy, measurement ranges and calibration behaviour. For an air-quality monitor, the quality of the measurements matters more than the number of measurements displayed on the screen.

Some of the connected functionality is still being worked on. So, I wouldn’t purchase the device on the promise of future app/cloud functionality until those features are actually available.

Final Thoughts On The Panda Sense Pro

The BIQU Panda Sense Pro is another great addition to their growing ecosystem of accessories around 3D printing.

At the time of writing this post, it’s currently listed on their website for $89.99 and it seems to be available for a similar price across other platforms like Amazon and Aliexpress. For the price, I think it’s good value for money. You’ll struggle to find another air quality monitor that covers a similar range of sensors for a similar or cheaper price.

With measurements for PM2.5, PM10, CO₂, formaldehyde, eTVOC, temperature and humidity, it provides a lot more information than a conventional temperature and humidity monitor, and the 3.5-inch display makes that information immediately accessible.

The printable enclosure is also a nice fit for the intended audience, and I like that BIGTREETECH has provided a finished design while still leaving users free to modify it.

Disclosure – BIGTREETECH provided the Panda Sense Pro used in this review. They have not paid for or had any editorial control over this review, and the opinions and test results are my own.

I Built a Portable Offline Internet with Maps, Wikipedia and Local AI

What if you could take a useful portion of the internet with you anywhere, completely offline?

In this box is access to Maps, Wikipedia, an AI assistant, useful tools, and even things my own media library, all running locally, without needing an internet connection.

Project Nomad Case Folded Up

This is Project Nomad, a portable offline internet and I’ve built the whole system into this portable case, with its own computer, network infrastructure, Wi-Fi 7 router and OLED touchscreen.

You can use it like a standalone computer, or connect your phone, tablet or laptop to it and access all of these offline services over the network, just like you would normally access things on the internet.

While something like this obviously has applications for emergency preparedness, there are actually practical everyday uses for it too. You can take it off-grid camping, use it on a boat, keep it at a remote property or on a farm with unreliable internet, take it travelling, or just use it as a portable homelab.

Let me show you how I built it.

What You Need For This Build

Tools & Equipment Used:

Some of the above parts are affiliate links. By purchasing products through the above links, you’ll be supporting this channel, at no additional cost to you.

What Is Project Nomad?

The starting point for this build is open-source software called Project Nomad. The idea behind it is to give you a collection of useful services and information that are hosted entirely locally.

Command Centre Setup Screen

So, instead of opening Google Maps and downloading map data from the internet, you can host your own offline maps.

Instead of going to Wikipedia, you can have an entire copy of Wikipedia stored locally.

And rather than sending a question off to ChatGPT or another cloud AI service, you can run a large language model locally on your own hardware.

None of these require an internet connection once everything has been downloaded and configured.

Making It An Offline Internet

There’s an important distinction I wanted to make with this build. I didn’t want an offline PC, I wanted an offline internet.

I want to be able to open my phone, connect to this system over Wi-Fi, and access Wikipedia, or open a tablet and look at a map, or have somebody else connected to the same network using the AI assistant from their laptop.

So the next step was to build a complete portable network around Project Nomad and for that I’m using three main pieces of hardware.

Beelink SER9 Max

At the centre of the build is the Beelink SER9 MAX.

Beelink SER9 Max

Beelink provided this PC for the project and it’s quite a lot more powerful than you need to just to host offline maps and Wikipedia.

This model has an AMD Ryzen 7 H 350 processor, 32 gigabytes of RAM and a 1 terabyte SSD. Importantly for this project, it has a fairly powerful Radeon 860M integrated GPU.

Beelink SER 9 Max Front

Memory is dual channel and it’s got a second NVMe slot internally so you can easily upgrade storage for more media. 

Beelink SER 9 Max Internals

Wikipedia and maps are quite easy to host but the demanding part is running the AI models. You can run smaller local models on less powerful hardware, but if you’re waiting around for each word to appear, it quickly stops feeling like a useful assistant.

The RAM, CPU and GPU performance of the SER9 Max means I can run more capable models locally and still get useful inference speeds.

The SER9 MAX also has built in 10-gigabit Ethernet, which is another feature that works particularly well with the rest of this build.

Beelink SER 9 Max Back

GL.iNet Slate 7

The second part of the system is the router. I’m using the GL.iNet Slate 7, which creates the Project Nomad network.

GLinet Slate 7 side

This gives me a portable Wi-Fi 7 access point that phones, tablets and laptops can connect to. So once you’re connected to the network, you simply open a browser, enter the address of the Nomad server and you’ve got access to the dashboard and all of the locally hosted services.

If I’m somewhere with an internet connection, I can connect the Slate 7 to that network and use Project Nomad alongside the normal internet. Project Nomad automatically recognises this and keeps maps, wikipedia and the other applications updated.

Then when that connection disappears, the local network doesn’t.

The router keeps running, Project Nomad keeps running, and all of the locally hosted services are still accessible. You lose the outside internet while keeping yours.

10G QNAP Network Switch

I’ve then added a QNAP network switch. This has two 10-gigabit ports and four 2.5-gigabit ports.

QNAP Network Switch

Because the Beelink SER 9 has 10-gigabit networking, I can connect the Project Nomad server to the switch at the full 10 gigabits per second.

That is obviously overkill for serving maps or a wikipedia page, but this is effectively a portable homelab. I can also run Jellyfin and take a complete offline media library with me, accessible by all devices on the network. So I could also host file storage, documentation, photo libraries or other Docker services.

Designing & Building The Case

This brings me to the carry case. I initially looked at putting all of this into something like a Pelican case, but I didn’t really want to buy an expensive case and then immediately start drilling holes and cutting chunks out of it. Because I wanted this to work almost like a chunky portable laptop, I needed some fairly specific features anyway. So I designed my own enclosure from scratch in Fusion.

The design is intended to be 3D printed, so I’ve deliberately kept the geometry relatively simple.

The bottom half of the case contains a 3U 10-inch rack.

I 3D printed the case components from grey and black PETG, which took around two and a half days to complete. Depending on the print orientation it will also need some supports. 

Installing Cover Plate
Noctua Fans On Cover Plate

To finish them off, I installed some M3 heat set brass inserts for the top cover plate and M6 ones for the racks.

Powering The Portable System

I wanted the complete system to be as simple as possible to power. So, despite having three main pieces of hardware inside, the entire case is designed to have one 19-volt DC input.

Power Cable To System

This directly powers the SER 9 and on the side I’ve got a buck converter which steps the 19 volts down to 12 volts for the network switch.

The Slate 7 is powered over USB-C PD from the Beelink mini PC.

USB C Power Supply To Router

So from the outside, I only need to plug in a single barrel connector. 

Power Supply For Whole System

It’s worth mentioning that this isn’t battery powered. It’s portable in the sense that it’s a self-contained system you can carry somewhere and set up, but it still needs a suitable mains power source, although you could obviously run it from a portable power station if you wanted a genuinely off-grid setup.

The 3U Rack Assembly

Next, moving on to the rack assembly, I’ve designed custom rack mounts for each component. I’ve also added things like keystone jacks so I can bring the connections I actually need out to the front of the rack.

So I’ve got Ethernet and HDMI connections easily accessible on the Mini PC and the two Ethernet ports accessible on the router without needing to open the case or reach around behind the equipment.

The Beelink SER9 MAX sits at the bottom, above that is the QNAP switch, and the Slate 7 sits at the top.

Main Case Components

Adding The Case Components

The case itself is quite easy to assemble because it consists of a small number of large printed parts.

The hinges, front panel, bottom section and latches are assembled using eight M4 x 50mm button head.

Installing Screws For Case

The handle uses another two M4 x 30mm button screws.

Cooling And Cover Panel

With all of the rack hardware installed, I’ve then got this cover panel over the top. This separates the rack hardware from the upper part of the case and makes the lower section feel much more finished.

Installing Cover Plate

I’ve integrated three 40 Noctua millimetre fans into the panel for cooling. These are USB powered and help move air through the enclosure when the PC, switch and router are all running.

The cover plate is secured with 6 M3 x 8mm button head screws.

M3 Screws For Cover Plate

Fold-Down Keyboard

At the front of the case, I’ve designed another hinged panel.

When the case is closed, this covers and protects the front of the rack, and when I open it, it folds down and becomes the keyboard tray.

Keyboard Tray On Front

The keyboard itself is stored on the panel with a hook and loop tie.

Keyboard Stored For Fold Up

UPERFECT 3K OLED Display

Then we’ve got the part that really makes the whole system look like a sort of oversized cyberdeck. The display.

UPERFECT provided this 14-inch 3K OLED portable touchscreen for the build. It’s a 120 hertz OLED panel, so you get the contrast and deep blacks you’d expect from OLED, along with the really sharp 3K resolution and great refresh rate.

OLED Display From UPERFECT

Because it’s a touchscreen, I can use Project Nomad directly without necessarily needing the mouse and keyboard.

A single USB-C cable runs from the display to the mini PC and handles the DisplayPort video connection, touch interface and power. So again, I’m keeping the wiring inside the case as simple as possible.

Single Cable For Display

I’ve designed the screen into the lid itself and it screws into place using two M4 x 16mm button-head screws, which keeps the outside of the lid relatively clean.

Installing Screws To Mount Display

The low profile of this portable monitor makes it possible to integrate into the top of the case in a size that’s still printable as a single piece on my 3D printer, even if I only had a millimetre to spare.

That’s the hardware side of this project complete. I’ve now got a portable 3U homelab in a case along with a keyboard and monitor with touch display.

Booting Project Nomad

To boot it up, we just need to plug in the single power connector. The router and network switch come on automatically and we need to press the power button on the PC.

The mini PC is running Ubuntu, so when I boot it up, it can be used like a normal computer.

I can use a browser, office applications, file management or anything else I’d normally use an Ubuntu PC for.

Running HTOP

Project Nomad runs through a web interface and starts automatically when the computer boots up. So if I open up the browser, we can go to the Project Nomad dashboard.

So let’s disconnect the internet connection and you can see how the system runs.

Offline Maps Demo

Let’s start with maps.

For my system, I’ve downloaded the complete map of Australia. You could actually download the entire world if you have enough storage, but Australia is obviously considerably smaller and makes more sense for what I’m going to use this for.

I can move around the map, zoom in and even search for locations. This is really useful if you’re travelling through remote areas where mobile coverage is unreliable.

Because it’s being hosted as a web service, I don’t have to use it on here. I can pull out my phone, connect it to the Project Nomad Wi-Fi network and open the same map.

Maps Available On Phone Too

So I’ve got an offline map server available to everybody connected to the network.

Offline Wikipedia Demo

The same applies to Wikipedia.

I’ve downloaded the complete version of Wikipedia including images locally, so I can search for a topic, open an article and follow links between pages.

It’s quite cool having this much accumulated knowledge in a portable box.

Local AI Assistant

Next is my favourite part of this Project Nomad build, the AI assistant.

I’ve got three models installed locally, Llama 3.1 and 3.2 and DeepSeek R1.

When I ask it a question, the prompt doesn’t leave this computer. There isn’t an API call going out to a cloud service, the model itself is stored on the SSD and the inference is being done locally by the mini PC’s GPU.

AI Chat Running Locally

So even with the internet completely disconnected, I still have a general-purpose AI assistant.

And this is where having the more powerful hardware pays off. You can see in my video that the output is actually running at a useful speed. We don’t have to wait minutes for each response to be generated. 

Again this is great for offline use, you have access to so much knowledge in a portable package. 

Other Offline Services

Project Nomad also includes more than just the three services I’ve focused on. There are a few other applications that can be configured depending on what you want the system to do.

Additional Services Available

Things like Vaultwarden, IT tools, data tools, MeshCore-related services and a range of other self-hosted applications.

Because this is ultimately an Ubuntu server, there’s also nothing stopping you from adding your own services. You can store a couple of terabytes of movies and TV shows for your own Jellyfin server, add a file server and even host technical manuals or equipment documentation.

The UPerfect OLED display on here is actually really good for watching movies and series too.

Big Buck Bunny Running

Real-World Use Cases

It’s obviously easy to frame this as a doomsday-prepper computer. And sure, if the internet suddenly disappeared, having maps, Wikipedia and an AI model in a box would probably be quite useful. But you don’t need an apocalypse for offline infrastructure to be useful.

Project Nomad Case Folded Up

Imagine a remote farm where the internet connection is unreliable. You could have locally hosted equipment manuals, maps, documentation and AI tools that remain accessible around the property regardless of the outside connection.

For field work, you could load it with project documentation, drawings, procedures and reference material.

If you’re travelling, camping or on a boat off-shore, you’ve got maps, reference information and entertainment without relying on mobile reception.

Final Thoughts On My Internet In A Box Build

So that’s my complete offline internet built into a portable case.

We’ve got the SER9 MAX providing the compute power and 10-gigabit networking, the Slate 7 creating the portable network, the QNAP switch giving us high-speed wired connectivity, and the UPERFECT 3K OLED display turning the whole thing into a self-contained workstation.

Fully Runing Portable 3U Homelab

What I like most about this project is the idea of taking services that we’ve become completely dependent on having an internet connection for, like maps, information, AI, media and useful tools, and bringing them back onto hardware that you actually control.

Let me know what you’d use a device like this for in the comments section below.

Lab Rax Upgrades: Design Improvements & New Accessories for My 3D-Printed Homelab

Over the past year, I’ve been using my Lab Rax system for a few different homelab builds. The basic design has been working quite well, but there were a few things I wanted to improve. Some were small changes to make the rack stronger and easier to assemble, and I’ve also designed and upgraded a few new accessories, including wall mounting, storage and probably my favourite upgrade, a programmable logo that can be used to display useful information.

So today, I’m going to show you what’s changed and how you can use these parts to build a capable homelab for yourself.

Here’s my video showcase of the improvements and accessories, read on for the write up and download links:

Parts Used In These Builds

  • M6x10mm Button Head Screws – Buy Here
  • M6 Brass Inserts 8mm OD, 4mm Length – Buy Here
  • M6 Brass Inserts 8mm OD, 5mm Length – Buy Here
  • M6 Nuts – Buy Here
  • Wall Mounting Cleats
    • Wall Mount Screw & Plug Kit – Buy Here
  • NeoPixel Light-Up Lab Rax Logo
    • 2 × 8-pixel NeoPixel LED bars – Buy Here
    • 2 x M3 Brass inserts OD 4-5mm – Buy Here
    • 2 x M3 x 8mm Button Head Screws – Buy Here
    • Breadboard jumpers – Buy Here
    • Microcontroller or Pi, an ESP32 is a cheap and easy way to drive the light – Buy Here

Tools & Equipment Used

Some of the above parts are affiliate links. By purchasing products through the above links, you’ll be supporting my projects, at no additional cost to you.

Improvements To The Lab Rax Homelab

Let’s start with the improvements that I’ve made to the rack itself. The overall design hasn’t changed because I want to keep the parts all compatible, it’s still a modular 10-inch rack system that’s designed to be entirely 3D printed and all of your older prints will still be compatible with the upgraded parts.

Brass Insert Lab Rax Homelab 3D Print Files

Nut Version Lab Rax Homelab 3D Print Files

The main changes are ones that aren’t immedietly obvious. I’ve gone through the main structural components, stiffened them up a bit and tightened some of the tolerances. These obviously aren’t visually exciting changes, but they make quite a noticeable difference to its overall strength and rigidity. There’s less movement between the components, and the assembled rack feels a lot more solid.

I’ve also redesigned the handles. They’re a little bigger and stronger than the originals, so they’re more comfortable to actually grab and carry the rack with. They keep the generaly profile of the originals, so you may not immedietly notice a visual difference but it’s very apparent when you pick the homelab up.

Strengthening Handle

I’ve also made a couple of changes to make assembly easier. There are two versions of the Lab Rax homelab, one that uses heat-set brass inserts and another that uses standard M6 nuts.

On the brass insert version, I’ve adjusted the insert holes to accommodate two different length inserts, which makes them easier to source and you don’t need to find the exact inserts I originally designed it around. You can now use M6 x 8mm OD brass inserts in either 4mm or 5mm lengths. The 5mm ones are more commonly available on both Amazon and Aliexpress.

The nut version now has nut retaining clips. On my previous version, if you didn’t glue them into place then the nuts could move around slightly or fall out while you were assembling the rack. With the retaining clips added, you now press them into the pockets. It’s a tight fit, but you only have to do it once and they’re then captured by the print. This is a small change, but it makes assembly quite a lot easier.

New Lab Rax Accessories

Wall Mounting Cleats

The Lab Rax Wall Mounting Cleats provide a simple and secure way to mount a Lab Rax homelab directly onto a wall. The system uses a pair of interlocking cleats. One set attaches to the rear posts of the Lab Rax and the opposing set mounts to the wall. Once installed, the rack simply slides down onto the wall-mounted cleats and locks into position. A pair of lower spacers is also included to keep the bottom of the rack correctly spaced from the wall so that the Lab Rax sits vertically.

For heavier builds, or if you’d simply like some additional support, a second set of cleats can be installed at the bottom of the rack instead of the spacers.

Download the Wall Mounting Cleats

Hardware Required

For a standard installation using one pair of upper cleats and two lower spacers (or a pair of cleats at the bottom too):

  • 8 × M6 × 10 mm screws for attaching the rack cleats and lower spacers to the rack – Buy Here
  • 4 × 3–5 mm diameter screws and plugs for securing the cleats to the wall – Buy Here

If you’re using additional cleats for a heavier rack, you’ll need additional mounting hardware accordingly.

Printing & Installation

The cleats should be printed in the orientation provided in the print profile. This orientation is intentional so that the weight of the rack is not supported across the layer lines, significantly improving the strength of the printed parts.

3D Printing Arrangement For Strength

Make sure the wall-mounted cleats are fixed into a suitable structural surface using fasteners appropriate for your wall construction and the weight of your completed homelab.

Once everything is installed, simply align the rack with the wall cleats and slide it down into position.

Handing Lab Rax On Wall

Mounting Template

I’ve also designed two printable mounting templates to make installation and alignment easier:

  • Single Cleat Template – correctly positions the two wall cleats for a standard installation.
  • Up to 5U Template – includes mounting positions for racks up to 5U, allowing additional sets of cleats to be installed for heavier racks or additional support.

The templates take the guesswork out of positioning the individual wall cleats and ensure that they line up correctly with the cleats installed on the rack.

Template To Mount Cleats

New Lab Rax Expansion Module

Next is probably my favourite mechanical upgrade. Lab Rax has always been expandable using a set of small domino connectors. They work, but they’re a little light and require a special set of side panels to use as extensions. So, I wanted to rather design something that felt more like a proper structural extension and eliminated the side panel issue.

The Lab Rax 1U Extension provides a stronger and more useful way to expand an existing Lab Rax homelab. Rather than simply joining two sets of posts together, the extension adds an additional 1U of usable rack space while also creating a structural cross brace between the front and rear posts. This helps strengthen and stiffen the connection between the two sections of the rack.

The extension is fully compatible with the original Lab Rax posts and side panels, so you can expand an existing build without having to reprint the rest of your rack.

Each extension attaches using 4 × M6 button head screws per side, creating a secure connection between the existing sections.

  • M6 x 10mm Button Head Screws (8 Required In Total) – Buy Here

This is a useful option if you’ve outgrown your original Lab Rax and want to add more equipment without printing an entirely new rack.

Download the Extension Module Print Files

So, like with the original domino connections, you can start with a small homelab and when it inevitably gets out of control, you don’t have to print an entirely new rack. You can just keep expanding it.

Stackable Handles

What if instead of extending your homelab, you went and built two? The Lab Rax Stackable Handles are an alternative to the standard handles that allow multiple Lab Rax homelabs to be securely stacked on top of each other.

Lab Rack Homelab Extension Installed Outside Brand

Download the Stackable Handles Print Files

They retain the general profile and function of the original handles, but the top has been redesigned to locate and support the original Lab Rax feet from the rack above. Rather than simply balancing one Lab Rax on top of another, the feet locate into the stackable handles, keeping the two racks aligned and creating a much more stable stack. This is particularly useful if you want to keep different parts of your homelab separate, for example, using one Lab Rax for networking equipment and another for servers or storage, while still keeping everything together in a compact setup.

Hardware Required

Each handle is attached to the Lab Rax using:

A set of two handles therefore requires:

The upper homelab needs to use the standard Lab Rax feet, which locate directly into the recessed sections on top of the stackable handles.

Stacked Lab Rax Homelab

NeoPixel Light-Up Lab Rax Logo

Next, if I dim the lighting you’ll notice that the Lab Rax logo on this build is glowing.

Lab Rax Glowing Logo

Download the NeoPixel Light-Up Lab Rax Logo

This turned into a slightly bigger project than I originally intended. I’ve integrated addressable NeoPixel LED bars behind the logo.

The NeoPixel Light-Up Lab Rax Logo replaces one of the standard horizontal front pieces with an illuminated Lab Rax logo that can be used for decorative lighting, animations or even homelab status information.

The logo is illuminated using two 8-pixel addressable NeoPixel LED bars, giving you 16 individually addressable LEDs that can be controlled using an ESP32, Arduino or Raspberry Pi.

This means the logo doesn’t have to be just decorative. You can integrate it with your homelab and use different colours and animations to indicate things like CPU load, temperature, network activity, storage usage, Docker container status, backup progress or system warnings.

Hardware Required

  • 2 × 8-pixel NeoPixel LED bars – Buy Here
  • 2 x M3 Brass inserts OD 4-5mm – Buy Here
  • 2 x M3 x 8mm Button Head Screws – Buy Here
  • Breadboard jumpers – Buy Here
  • Microcontroller or Pi, an ESP32 is a cheap and easy way to drive the light – Buy Here

Assembling the NeoPixel Bars

The lighting assembly uses two 8 pixel NeoPixel bar lights, which need to be positioned end-to-end and soldered together to bridge their terminals. Bridge the corresponding power and ground terminals between the two bars and connect the OUT terminal of the first bar to the IN terminal of the second. This allows all 16 pixels to operate as a single addressable LED strip.

You’ll also need to solder a set of jumper wires onto the IN end of the first bar for power, ground and the data connection to your chosen controller.

The combined NeoPixel bar assembly mounts to the rear cover plate, positioning the LEDs directly behind the Lab Rax logo.

There are two mounting options:

  • Secure the bars using small screws through the provided mounting holes.
  • Glue the bars directly onto the cover plate using 3D print compatible glue.

If using screws, make sure the screw heads and hardware do not contact or bridge any of the surrounding electrical components or PCB traces on the NeoPixel bars. The microcontroller can then either be mounted to the rear of the cover plate or installed separately on a tray inside the Lab Rax.

The rear cover can either be glued permanently into position or made removable using M3 screws.

To keep the cover plate removable, install the brass inserts into the two holes alongside the logo. The cover plate can then be secured with the M3x8mm screws, allowing access to the NeoPixel bars if you ever need to repair or modify the lighting.

The main logo piece is designed as a direct replacement for an original Lab Rax horizontal front edge piece, so it integrates into the existing rack structure.

It’s designed to be installed across the front of the rack where the illuminated logo is easily visible, but it can also be installed at the bottom or rear of the Lab Rax if that better suits your build.

ESP32 Driving Neopixel Bar Light

Example Illuminated Lab Rax Logo Code For an ESP32

Here are some ideas for it:

  • Decorative white or blue light glow
    • As a decorative effect, during normal operation, it’s just got a subtle white and blue glow.
  • Activity white pulse across the logo
    • When there’s significant network or CPU activity, a white pulse travels across the display.
  • Boot up animation
    • When your main rack computer boots up, the light sweeps across the logo.
  • Amber warning pulse
    • A warning or notification changes the logo to a slow amber pulse.
  • Red service alert pulse
    • If a service or node goes down, the logo pulses red.
  • CPU Load Monitor
    • At low load, the logo is green and it then progresses through yellow towards red as CPU load increases and drops back towards green as the load decreases.

These are just a few easy examples. You could tie it into CPU temperature, storage usage, network activity, Docker container status, Home Assistant alerts, or pretty much anything your server can monitor. I really like this because it gives the lighting an actual purpose. You can now glance across the room and immediately get an idea of what your homelab is doing.

Lab Rax Bottom Accessory Drawer

The Lab Rax Bottom Drawer makes use of the otherwise wasted space underneath the lowest rack unit, turning it into a convenient storage drawer for small homelab accessories.

Rather than adding a drawer to the existing base, this model replaces the entire lower section of the Lab Rax with a single printable part. The bottom panel, two lower horizontal members and two lower edge pieces have all been combined into one part, with the drawer integrated into the free space.

Once printed, the original Lab Rax vertical posts can be installed directly onto the new base.

It’s not very big, but the drawer is ideal for storing the small parts that tend to accumulate around a homelab, such as short patch cables, keystone jacks, USB adapters, rack screws and small tools.

Download the Bottom Accessory Drawer Print files

Hardware Required

No additional drawer hardware or parts are required.

You’ll only need:

  • 4 × M6 × 10 mm screws for securing the four vertical posts to the new base (from standard Lab Rax build) – Buy Here

Everything else required for the drawer assembly is 3D printed.

What’s Replaced?

The new one-piece drawer base replaces the original:

  • Bottom panel
  • 2 × bottom horizontal pieces
  • 2 × bottom edge pieces

These are all incorporated into the single printable base, so you don’t need to print the original parts as well.

Drawer End Stops

Two printable end stops are included to prevent the drawer from being accidentally pulled completely out of the rack.

With the drawer already installed, press the two end stops into the receivers in the base, located behind each of the front vertical posts.

The stops capture the drawer once installed, so make sure the drawer is in place before fitting them. Once the stops are fitted and the rack is assembled, the drawer cannot be removed without removing the stops.

The stops should be a press fit. If they print slightly loose on your printer, either reprint them with a 1.05% scaling and try again or a small amount of glue can be used to secure them in place.

Cable Management Add-ons

Lastly, there’s one thing that ruins every nice-looking homelab, and that’s a mess of cables. So I’ve done a bit of work on cable management.

First up are some cable guides for the sides. These keep cables bundled together and against the posts. This is particularly useful around the back of the rack.

Lab Rax Cable Guide

Rather than having cables hanging through the middle where they interfere with connectors, USB devices or ventilation, the guides keep them all running neatly down the structure of the rack. They’re also designed in a way that keeps the cables securely within the guide, but cables can be easily added or removed without unscrewing anything. They fit into one rack unit, so you can add them wherever you need them.

I’ve also designed two simple cable combs for network and power cables. These mount directly onto a post and keep individual cables separated and evenly spaced. I’ve made them for either horizontal or vertical cable runs, depending on how your equipment is laid out.

Lab Rax Cable Management Combs (6 Cables)

That’s everything I’ve added to Lab Rax for now, but I’m sure it won’t be the last round of upgrades. One of the things I enjoy most about a modular system like this is that there are always new ways to improve it or another accessory that could make it more useful.

If you’re using Lab Rax yourself, or you’ve got an idea for an accessory or upgrade that you’d like to see added, let me know in the comments below. I’m always looking for ideas for what to design next.

Build a Desktop Arcade Machine with a Raspberry Pi and RetroPie

I’ve been wanting to build a proper desktop arcade machine for a while now, and I finally got around to making one. It’s powered by a Raspberry Pi 4, has a 10-inch touchscreen, real arcade controls and a custom-designed laser-cut enclosure with printed graphics.

In this blog post, I’ll show you how I built it so that you can build your own.

Here’s my project video, read on for the write-up:

What You Need To Build Your Own Desktop Arcade

  • Raspberry Pi 4 – Buy Here
  • 32GB MicroSD Card – Buy Here
  • Sunfounder 10″ Touch Display For Raspberry Pi –Buy Here
  • Arcade Controller Set (One I Used From AliExpress) – Buy Here
  • Arcade Controller Set (Similar One From Amazon) – Buy Here
  • Pi 4 Aluminium Heatsink – Buy Here
  • 40mm 5V PWM Fan – Buy Here
  • 10 Sheets of 3mm Plywood (400mm x 300mm) – Buy Here
  • 8 x M3x8mm Button Head Screws – Buy Here
  • 4 x M5x10mm Button Head Screws – Buy Here
  • 4 x M5 Nuts – Buy Here
  • Barrel Jack Extension (Similar To What I Made) – Buy Here
  • Ethernet Extension Cable – Buy Here
  • Wood Glue – Buy Here
  • Stick-On Rubber Feet – Buy Here

Tools & Equipment Used

xTool Store:

  • xTool M2 Laser Cutter & Engraver – Buy Here
  • xTool CMYK Inkjet Printing Module – Buy Here
  • xTool SafetyPro AP2 Air Purifier – Buy Here

Amazon:

  • xTool M2 Laser Cutter & Engraver (xTool Store) – Buy Here
  • xTool CMYK Inkjet Printing Module – Buy Here
  • xTool SafetyPro AP2 Air Purifier – Buy Here
  • USB C Screwdriver – Buy Here

Hardware I Used To Build The Arcade

There are a lot of Raspberry Pi projects that benefit from the extra performance of the Pi 5, but this isn’t one of them. RetroPie still isn’t officially available on the Pi 5 and even if it was, a Pi 4 already has more than enough performance to play most retro games anyway.

With the prices of Pi’s at the moment, saving some money and getting a Pi 4 is an easy choice. I actually ended up going with a 2GB Pi for this project.

The Pi conveniently mounts directly onto the back of the 10-inch touchscreen from SunFounder, using their included mounting hardware. I quite like this display because it already includes a built-in 5-volt, 5-amp power supply for the Pi and it includes all of the hardware and cables required to connect it.

That means one short USB-C cable powers the Pi directly from the display, so there’s no need for multiple power supplies or extra wiring inside the enclosure. It’s a display solution for a Pi 4 or Pi 5 that doesn’t require any other hardware.

To keep the Pi cool, I’ve added a small stick-on heatsink together with a 40mm PWM fan mounted to the acrylic cover above it. The cover’s holes aren’t designed for a 40mm fan (it looks like it may be designed for a 50mm fan), but I managed to mount it anyway using the ventilation slots.

I’m not sure if the fan is necessary, but at least this way it’s there if I need it, and this is a PWM-controlled fan, so it can be turned on and off through Pi OS if it needs to be.

Then no arcade machine is complete without proper controls. Rather than a handheld controller, I got a complete USB joystick and button kit from AliExpress for around fifteen dollars. Given the price, I wasn’t expecting much, but I was pleasantly surprised.

The joystick feels reasonably well built and the buttons have a satisfying click. It’s also completely plug-and-play with RetroPie. It didn’t need any drivers or configuration. I just plugged it in and it worked.

The display originally came with its own speakers that receive audio over HDMI. These come with a short lead and stick-on pads. You should use these for your build. Unfortunately, I’ve managed to lose my set in moving to a new workshop, so instead I sacrificed a tiny USB speaker set and removed the internals to use for this build. 

This set of speakers took a lot more time than I expected to get it to work. Because the display allows for HDMI audio, RetroPie kept defaulting to sending the sound to the display instead of to my USB speakers. After a bit of experimenting with ALSA and RetroPie’s audio settings, I managed to convince it to use the correct output. If you use the speakers that come with the display, then they should just work right away.

Now that we have the hardware sorted, we need something to install it in.

Designing The Arcade Cabinet

I designed the cabinet as a flat pattern in Inkscape to be laser cut from some 3mm pine or basswood plywood. I like the retro feel that a wooden cabinet brings.

I have removed the artwork from my design file to comply with copyright laws.

For the layout, I went with six gameplay buttons alongside the joystick. Like with a handheld controller, this gives me everything I’d normally need for Super Nintendo games and is still usable for classic arcade games too. From my limited research, it looks like the most common layouts use either 6 or 8 buttons, the additional two buttons are for triggers.

Above those, I added dedicated Start, Select and Menu buttons.

I then added some decals, button labels and a retro pattern to the side panels.

The enclosure itself uses interlocking tabs on each panel which automatically align all of the parts during assembly to make the whole cabinet easier to build. 

I also designed removable access panels for the back and underside. So if I ever need to replace a component, troubleshoot something or upgrade the hardware later on, I don’t have to take the whole cabinet apart.

Making Up The Enclosure Components

To make up the enclosure parts, I’m using the xTool M2. One of the things I really like about this machine is that it can both print onto and laser cut materials.

So I can print the graphics directly onto the plywood first, then swap over to the laser head, and then cut every part out using the same machine. Everything lines up perfectly because the material never has to move.

The side panels came out really well and I love the Pac-Man graphics on the front panel.

After an evening of printing and laser cutting, the panels are all complete and ready for assembly.

Assembling The Arcade Cabinet

Assembly is pretty straightforward and I used some basic wood glue for all of the joints.

The interlocking tabs line everything up, so we can add some wood glue to the edges, slot the pieces together and then hold them together with masking tape until the glue is dry. 

As with most of my flat pattern 2D designs, it didn’t all work out perfectly on the first go. I switched the back and bottom panels around when making the port cutouts and labels so the Ethernet and power port were underneath the console. So I had to remake the one small panel for the bottom and print and make the cutouts on the back panel. 

With the enclosure finished, now we can start installing all of the hardware.

Let’s start with the speakers, which I stuck into place on the inside with some double-sided tape. Mine plug into the Pi’s USB port, but if you’re using the speakers that came with your display, then these plug into the small white port at the top of the display’s PCB.

The joystick is secured with four M5x10mm screws and M5 nuts through the control panel surface. The buttons are pushed in through the top surface and clip into place using their own built-in retaining clips.

For some reason, the hotkey is a smaller button, which I only noticed when I tried to install it. So I had to make a little adaptor to hold it in place too. I’ve corrected this in the design file, check what size your buttons are before you cut your panels out.

Plug the buttons into the joystick control board. If you’re using the same one that I did, plug them into the bottom row of ports, as the top row is reserved for special functions. RetroPie allows you to remap all of them to specific controls, so it doesn’t matter which button is plugged into which port.

To make powering the system easier, I built a short extension cable from the display’s power connector out to the rear of the enclosure. So the whole arcade will get power from a single connector on the back. I made mine up using spare parts that I had lying around my workshop, but I’ve left a link to a similar pre-made version that you can use as an alternative.

I also added an Ethernet extension because having a network connection on the back makes it much quicker to copy ROMs and update the system whenever I need to. I glued this into place with some hot glue.

Next, I flashed RetroPie to a microSD card using Raspberry Pi Imager.

We can then put the card into the Pi, and the display assembly then mounts onto an internal support bracket which positions it the right distance behind the front opening. This is held in place with some M2.5 screws that were supplied with the display. Remember to plug all of the USB devices into your Pi before mounting it, as you won’t be able to do so after it’s mounted. If you want to use a wireless controller or mouse and keyboard, plug the dongle into the Pi at this stage too.

Lastly, close up the cover panels with M3 screws, four for each cover, and then stick four rubber feet onto the bottom, one in each corner.

First Boot and Arcade Setup

That’s the arcade complete. Plug in a power cable, and you can then boot it up. The first boot might take a little longer than subsequent ones but it should boot up to the RetroPie home screen.

The joystick and controls also need to be mapped to the correct functions in RetroPie. You can do this through the input configuration option in the settings menu.

You can then install your ROMs. There are a few ways to do this, the easiest two are to copy them over to your Pi using the network connection (like a NAS) or plug in a flash drive with the ROMs loaded into the correct folders. Also, make sure you only use ROMs you’re legally allowed to use and comply with the copyright laws in your country.

Final Thoughts On The RetroPie Arcade

I now have a fully self-contained desktop arcade machine that doesn’t take up much more space than a computer. It can run a huge number of classic arcade and console games and because it’s based on a Raspberry Pi, it’s also easy to customise, repair and upgrade in the future.

I’m really happy with how this project turned out. It’s compact but still has a nostalgic arcade feel to play.

If you’d like to build a similar arcade, I recommend looking at the xTool M2, it’s a great machine for making up custom laser-cut parts and you can print directly onto the parts too. The SafetyPro AP2 air purifier also makes it easy to work in a small workshop without having to worry about venting the laser out of a window.  The print and cut workflow on the M2 really steps laser-cut projects up to the next level.

TRMNL X: A Larger Smart E-Ink Display That’s Built to Last

Last year I built my own version of the TRMNL from scratch, and it quickly became one of my most popular projects. Rather than simply showcasing their own hardware, I took advantage of the fact that the platform is open source. I designed my own enclosure, added a display and electronics, installed TRMNL’s software, and created a completely custom BYOD (bring your own device) version.

Now TRMNL has released their latest model, the TRMNL X, and it isn’t just a larger version of the original. It introduces a number of hardware improvements while keeping the same minimalist philosophy that made the original so appealing, displaying useful information without notifications, distractions or another bright LCD screen in your house competing for your attention.

After spending a couple of weeks with it, here’s a look at what’s changed and whether it’s worth considering over the original.

Here’s my video of the TRMNL X, read on for my write-up:

Where To Buy The TRMNL X

Use the code mklements at checkout to get $10 off

First Look At The TRMNL X’s Hardware & Features

The TRMNL X comes in a large black box with white text on it and includes the TRMNL X itself long with the charging puck and mount, a charging cable, microfibre cloth.

A Much Larger Display

Let’s start with the most obvious change, the display size.

The original TRMNL was designed as a compact desktop or wall-mounted information display. The TRMNL X significantly increases the available screen space with a 10.3-inch e-ink display running at a resolution of 1872 × 1404 pixels.

The extra screen area makes a noticeable difference to day to day use. There’s enough room for larger text, more detailed graphics and, perhaps most importantly, layouts that combine multiple pieces of information without feeling cluttered or too small to read.

Whether you’re displaying a calendar, weather forecast, task list or system dashboard, the larger display allows much more information to be shown at a glance.

A Clever Magnetic Mounting System

One of the new hardware additions is the new magnetic mounting puck.

Magnetic Charging Puck

Rather than plugging a charging cable directly into the display, the USB cable plugs into to the mounting puck. The display then snaps onto it magnetically using built-in contacts.

USB C Port On Magnetic Charging Puck

This simple design makes the display easy to mount for charging, rotate between portrait and landscape orientations, or relocate entirely. The puck itself can be mounted to a wall, desk, refrigerator or almost any flat surface using the included mounting plat and the display then attaches and detaches as needed.

There’s also a new touch sensitive bar beneath the screen. Pressing or swiping it manually refreshes the display or reloads the current page or playlist, making it easy to cycle through screens without waiting for the next scheduled update. Since this e-ink display is designed to refresh infrequently to maximise battery life, having a manual refresh option is quite useful.

Touch Bar In The Middle

Other Hardware Improvements

Internally, the TRMNL X includes a number of other welcome upgrades.

Battery options have increased to either 6000mAh or 12000mAh. These provide approximately two to six months of runtime between charges depending on how frequently you set it to refresh.

TRMNL X Internals

Wireless connectivity has also been improved and now supports both 2.4GHz and 5GHz Wi-Fi, this is great considering the 2.4GHz band is often flooded with smart home devices.

TRMNL X Wifi Antenna

An integrated accelerometer automatically detects the display’s orientation, allowing it to easily switch between portrait and landscape layouts.

TRMNL X Portrait Mode

The Software Is Still The Important Part With The TRMNL X

As good as the hardware is, it’s only half of the TRMNL experience, the software is the important part.

Web Dashboard

Content displayed is managed through TRMNL’s server, where everything revolves around three main areas:

  • Plugins, which are essentially the applications that display individual content pages.
  • Recipes, which are community created plugins.
  • Playlists, which control how different screens are displayed throughout the day.

The playlist system is particularly flexible. Rather than simply rotating through screens in sequence, you can configure exactly what appears based on the day of the week, time of day or even set up multiple plugins or recipe to be displayed on a single page, as feature that’s particularly good on the TRMNL X.

For example, you could display your calendar, weather and news each morning or create a combined “Start My Day” dashboard, then show only your task list and calendar while you’re working, and automatically change to a dinner recipe in the evening.

The larger display on the TRMNL X really enhances this functionality because there’s enough room to easily combine multiple plugins onto a single screen without everything feeling cramped.

Photos Look A Lot Better

One area thats easy to see the upgrade is with image quality. The TRMNL X has roughly 80% higher pixel density than the original display and increases greyscale rendering from 4 levels to 16 levels.

In principle those numbers don’t sound anll that exciting, but the real-world improvement is very noticeable.

Displaying Images On The TRMNL X

Photographs look significantly smoother, gradients are much cleaner and overall image quality is a lot more natural. This improvement doesn’t come across well on camera, but it’s immediately obvious when you see the display in person.

Repairability Is One of TRMNL’s Biggest Strengths

There’s another aspect of the TRMNL ecosystem that I think deserves far more attention.

I use my original TRMNL on our refrigerator as a family calendar. I glued a couple of magnets to the back so it sticks to the fridge for day to day use and can be removed whenever it needs charging.

Magnets On Back Of TRMNL

A few weeks ago, however, I accidentally knocked it off. It landed face down and cracked the e-ink display.

Cracked eink Display

For most consumer electronics, that would be the end of the device. Either replacement parts aren’t easily available or the cost of repair exceeds the cost of buying a new one.

TRMNL takes a different approach. They openly support repairs and hardware modifications. They sell replacement parts for failed components, publish part numbers and make it straightforward to source compatible hardware yourself.

Replacement Parts

So rather than replacing the entire device, I found the correct display through a local supplier, bought it for much less than the cost of a new TRMNL and replaced it myself.

After waiting for shipping and spending only a few minutes fitting the new display, the TRMNL was working again.

It might not be the most glamorous feature, but it’s one of the things I appreciate most about the platform. TRMNL isn’t trying to stop you opening the device or force you to replace the entire product when one component fails. Their focus on repairability is rare and I think deserves more recognition.

Should You Upgrade To The TRMNL X?

So is the TRMNL X more useful than the original?

For me, the answer is yes, but not simply because it’s bigger. It’s because the additional display area changes how the device can be used.

The original TRMNL works really well as a personal desktop display or a dedicated information panel showing a single application.

All Three Versions Side By Side

The TRMNL X feels much better suited to shared spaces such as a family kitchen, home office or workshop where you want several pieces of information visible at once.

Weather Bar Display

The magnetic mounting system also makes moving, rotating and repositioning the display quite convenient.

That said, I do have a concern about the pogo pins attaching the USB port to the TRMNL X. Since charging is done through the pogo pins, I would have liked to see a secondary USB charging port on the display itself as a backup in case those contacts eventually wear out.

Charging Puck Pogo Pins

Still Open, Customisable and Self-Hostable

One of the biggest reasons I like TRMNL is that the platform remains open and highly customisable. It’s easy to use TRMNL’s hosted service, but you’re not locked into it.

If you’d prefer to keep your data entirely within your own network, you can self-host the server locally and serve your own content directly to your TRMNL. That means your information never has to leave your own home.

TRMNL X First Look

The team has continued to improve both the software and documentation, making self-hosting quite accessible. Today it’s essentially as simple as spinning up a Docker container on a PC or server within your home network.

Terminus To Run Own Server

For anyone already running a homelab, NAS or always-on server, this is an especially attractive option.

Final Thoughts On The TRMNL X

The TRMNL X is much more than just another e-ink display.

It’s a flexible platform for building an information display tailored to your home, workshop or office. Whether you want a family dashboard, a home status display or a workshop command centre, the larger screen makes those use cases a lot more practical than the original model.

TRMNL Open Source BYOD Build

Perhaps most importantly, they continue to support open hardware, repairability and user customisation rather than locking owners into a closed ecosystem.

At over US$300, it‘s not exactly cheap. However, that price includes continued access to TRMNL’s hosted platform without an ongoing monthly subscription, a pricing model that’s quite rare and one I’m sure most people would prefer.

If you’d like to learn more, here are the links to each display. For anyone looking for a distraction-free information display that can grow alongside their projects, it’s well worth a look.

I Built a Smart Ventilation System for My Workshop

Every evening I spend a few hours in my workshop filming videos, designing parts, editing, or just working on projects. It’s only about three by four and a half metres, and because I don’t want dust blowing in and I’m often filming, I normally keep the door and windows shut.

My Workshop

But recently that had me wondering… What’s actually happening to the air in there? I’ve got printers, printers, dust from outside fumes from soldering, or is there something else I should be worrying about?

So over the past week I’ve been measuring the air quality, and the results weren’t quite what I expected.

Here’s my video of the project, read on for the write-up:

What Your Need To build Your Own Workshop Ventilation System

Tools & Equipment Used:

Some of the above parts are affiliate links. By purchasing products through the above links, you’ll be supporting my projects, at no additional cost to you.

Investigating My Workshop Air Quality

Networked Artifacts recently sent me one of their Air Lab air quality monitors. Rather than doing a traditional review where I spend ten minutes talking through specifications, I thought it’d be more interesting to actually use it to answer a few questions that I’ve had about my workshop.

The Air Lab measures a range of metrics including temperature, humidity, carbon dioxide, volatile organic compounds, nitrogen oxides and pressure and it continuously logs all of that data over time. That logging is really the important feature here because instead of looking at one measurement, we can actually see how the environment changes over an entire evening.

Air Lab Logging Functions

So I set up three different tests, each running for 2 hours in the evening, a baseline, a 3D printing test and then an evening working.

Baseline Test

First I wanted to establish a baseline. What does the workshop actually look like when nothing’s happening? So I left the monitor running for an evening with no printers running and nobody working inside.

As you’d expect everything stayed pretty stable. CO2 stayed around an average of just over 500ppm. Temperature slowly dropped through the evening and humidity increased. VOCs stabilised because I moved the Air Lab to my workshop and then trended towards the average of 100 and NOx didn’t have any notable change.

So nothing particularly surprising here, but this gives us a useful reference point before we start changing things.

3D Printing Test

The next question was one I’ve seen discussed online countless times. What effect do 3D printers actually have on air quality? To find out I loaded up all three printers with roughly two-hour prints, closed everything up, and let the AirLab continuously record what happened.

This wasn’t intended to be a lab test. It’s simply representative of a pretty typical evening in my workshop and within the capabilities of the airlabs sensors. It would have been great if it had a PM2.5 sensor too, but perhaps that can be a followup video.

PM2.5 Sensor

After two hours of printing, the results were somewhat unexpected. I only really print in PLA and PETG, which are considered cleaner filaments but I didn’t expect there to be hardly any change over time. CO2 was similar to the previous evening, this time just under 500ppm. Temperature and humidity looked similar to the previous evening too. Despite the printers dumping heat into the workshop, it’s quite poorly insulated as you can see from the ambient temperature and so the temperature doesn’t increase over the 2 hour period.

The most interesting is VOCs, I expected this graph to slowly trend upwards and instead there is hardly any change. It looks almost identical to the previous evening too. NOX is again expectedly uneventful as printers don’t give off any nitrogen oxides, that’s usually increase by burning fossil fuels.

Working In My Workshop

But interestingly… as I discovered working in my workshop on this third evening. The printers weren’t actually the biggest issue. I was.

Working In My Workshop

Carbon dioxide steadily climbed throughout the evening. This room only has a volume of round thirty-two cubic metres. With the windows closed and me sitting in here for a couple of hours, I was gradually replacing fresh air with exhaled carbon dioxide.

Working CO2 Levels

Over the evening, it climbed to just under 2000 parts per million. As a rough guide, clean outdoor air is around 400-500ppm, good indoor air is under 1000ppm and anything over that could do with some ventilation improvement. Over 1500ppm you’ll start noticing signs of fatigue and sleepiness, and over 2000ppm you may experience headaches and drowsiness. So an increase to over 1800ppm in only 2 hours with just me in the workshop is quite bad.

Once I saw this graph, it made sense why after editing for a few hours I’d sometimes walk back into the house feeling a little sluggish.

Designing The Workshop Ventilation System

So now I had a problem. I clearly needed more fresh air and the obvious answer is simply opening a window, but that creates other problems. Dust, noise and rain. What I really wanted was filtered fresh air entering the workshop automatically whenever it was actually needed.

Opening a Window

So naturally… I opened Fusion and started designing this ventilation system.

On the outside is a rain hood to stop water entering. Behind that is a removable filter which uses inexpensive air-conditioning filter media to catch most of the dust. Then five 140-millimetre Arctic fans draw the filtered outside air into the workshop.

The whole assembly is designed to slot into my open window tracks and seal off any gaps around the fans

The assembly is 3D printed from PETG so it’ll happily survive being partially outdoors. I had to split it up quite a bit to allow it to be printed on the bed of my printers.

3D Printed Workshop Ventilation System Parts

The parts then all screw together using a combination of brass inserts and M3 button head screws.

Internally, I’ve cut a section of air conditioning filter media which sits between the rain hood and the fans. This is held in place by some 3D printed retainers and behind that sits the five fans.

I bought a 5 pack of 140mm Arctic P14 PWM fans which should be good for the pressure restriction that the filter media creates and that leads me to the next design addition.

Automating Running The Fans

Although the fans solve the air quality issues, I don’t really want five fans running flat out continuously. Most of the time the air quality in my workshop is perfectly fine.

Arctic P14 PWM Fans

So instead of building a simple fan system, why not use the Air Lab to make it smart?

One of the nice things about Air Lab is that it’s got some GPIO pins. These can be configured as PWM output pins, which is perfect to control the fans.

GPIO Pins On Air Lab Monitor

The Air Lab is open source, so you can edit or write your own firmware for it to use these pins to add functionality, but they’ve also cleverly included an option to create and run your own plugins on the device. So, I wrote a custom plugin that continuously monitors the sensor data and automatically adjusts the fan speed on the stack accordingly.

package main

func main() {
	
	// Set GPIO pin as PWM
	PWMConfig(1, 10000)
	
	for {
		// Clear screen
	    Clear(White)

		// Lookup info
		tmp := Lookup(SensorTemperature)
		co2 := Lookup(SensorCO2)
		voc := Lookup(SensorVOC)
		nox := Lookup(SensorNOX)
	
		// Format string
		strtmp := Format("Temp: %.1f C", tmp)
		strco2 := Format("CO2: %.0f ppm", co2)
		strvoc := Format("VOC: %.0f ", voc)
		strnox := Format("NOX: %.0f ", nox)
	
		// Write string
		Write(Width/2, 10, 0, Pixel16, Black, "Workshop Ventilation", AlignCenter)
		Write(Width/4+10, 75, 0, Pixel16, Black, strtmp, AlignCenter)
		Write(Width/4+10, 40, 0, Pixel16, Black, strco2, AlignCenter)
		Write(Width*3/4+10, 75, 0, Pixel16, Black, strvoc, AlignCenter)
		Write(Width*3/4+10, 40, 0, Pixel16, Black, strnox, AlignCenter)

		// Set fan duty
		duty := 0 // Default 0% or Fan Off
		fanPercent := 0
		reason := "CO2 Normal"

		if co2 >= 1500 {
		    duty = 4095
		    fanPercent = 100
			reason = "CO2 High"
		} else if co2 >= 1250 {
			duty = 3072
		    fanPercent = 75
			reason = "CO2 Elevated"
		} else if co2 >= 1000 {
		    duty = 2048
		    fanPercent = 50
			reason = "CO2 Elevated"
		} else if co2 >= 750 {
		    duty = 1023
		    fanPercent = 25
			reason = "CO2 Rising"
		}

		// Temperature override
		if tmp >= 35 && duty < 3072 {
		    duty = 3072
		    fanPercent = 75
		    reason = "Temp High"
		}

		// VOC override
		if voc >= 150 && duty < 3072 {
		    duty = 3072
		    fanPercent = 75
		    reason = "VOC High"
		}

		// NOX override
		if nox >= 6 && duty < 3072 {
		    duty = 3072
		    fanPercent = 75
		    reason = "NOX High"
		}
		
		strfan := Format("Fan Speed: %d%", fanPercent)
		Write(Width/2, 105, 0, Pixel16, Black, strfan, AlignCenter)
		Write(245, 108, 0, Pixel8, Black, reason, AlignCenter)
		
		PWMWrite(1, duty)
	
		// Wait for input or timeout after 1s
		event := Yield(1000)

		// Handle escape
		if event == Escape {
			return
		}
	}
}

If CO₂ starts climbing, the fans slowly increase over four different levels.

Similarly, if VOCs, NOx or temperature increase, airflow increases too.

The workshop effectively ventilates itself only when it actually needs to, and the rest of the time the fans are off. 

Troubleshooting The PWM Control

Of course, nothing ever works perfectly the first time. I connected a fan up and nothing happened, it just ran at full speed even when the Air Lab said it should be off or at a low speed.

Air Lab Workshop Ventilation Plugin

So out came the oscilloscope. It turns out I had set the PWM frequency to 25kHz, which is ideal for the fans I’m using, but that seems to be out of the range that the ESP32 in the Air Lab can produce, so it just outputted nothing. 

After a few iterations, I reduced the frequency to 10kHz, which then seem to work on the Air Lab and the fans seem happy with it. So then I could get this fan reinstalled and try it out.

The fans now spin up when CO2 increases and automatically stop when it comes back down again. 

Testing The Ventilation System When Working

Now for the real test. I repeated the same two hour work experiment the following evening, but this time with the automatic ventilation running and the difference was immediately obvious.

CO2 Levels With Ventilation System Running

Instead of continuously climbing, as CO2 rises, the fans ramp up automatically, fresh air is brought in and the CO₂ level drops again. This keeps the average at a much healthier level.

Better yet, when I’m not in here or I’m only in here briefly, the fans simply stop.

Fans Stopped On Ventilation System

Final Thoughts On My Workshop Ventilation System

This actually turned out to be a much more interesting project than I expected.

I originally set out just to see what was happening to the air in my workshop and instead I discovered that the biggest issue wasn’t the printers as I had thought, it was simply me spending hours in a small sealed up room.

Now the workshop monitors itself, logs everything continuously and automatically brings in fresh filtered air whenever it needs to, and because it’s driven directly from AirLab, I can keep extending it with additional logic or changing parameters as I think of new ideas. They even have integration with Home Assistant.

Let me know in the comments section below what you think of my Workshop Ventilation System.