DIY LAN Turtle - Building a Stealth Remote Access Device

In this post, I share my experience building a DIY stealth remote access device using the Luckfox Pico Max RV1106. Inspired by the commercial LAN Turtle but seeking a more affordable solution, I created this device to enable remote network access without complex port forwarding or traditional VPN setups. This project served as both a practical solution and a valuable learning experience in hardware integration and network security.
⚠️ WARNING ⚠️
This project uses free third-party services! And as the saying goes: if it's free, you are the product! This is just an example of usage. My goal is not to connect to locations that could compromise sensitive information or infrastructure.
Idea
My goal was simple: I wanted reliable remote access to local networks without the hassle of complex VPN setups or router configuration. Since I often don’t have access to the router, I needed a true plug-and-play solution. While the commercial LAN Turtle provides these capabilities, its high price pushed me to explore a more cost-effective alternative. This project became an opportunity not just to build my own solution, but also to gain a deeper understanding of the underlying technologies.

Hardware Selection
After researching various options, I chose the Luckfox Pico Max RV1106 as the core of my project. This compact device offers an impressive set of features at a remarkably affordable price point.

Specifications
Component | Details |
---|---|
Processor | Cortex A7 @ 1.2GHz |
NPU | Max: 1 TOPS, supports int4, int8, and int16 |
ISP | Input 5M @30fps (Max) |
Memory | Max: 256MB DDR2 |
USB | USB 2.0 Host/Device |
Camera | MIPI CSI 2-lane |
GPIO | 26 × GPIO pins |
Ethernet Port | 10/100M Ethernet controller and embedded PHY |
Default Storage | SPI NAND FLASH (256MB) |
While it lacks some features I would have liked (PoE and Gigabit Ethernet), the price-to-performance ratio made it an excellent choice for my project.
Alternative Hardware Options
For those interested in trying different hardware, here are some alternatives I considered:
- Raspberry Pi Zero W + USB Ethernet
- Orange Pi Zero 3
- GL.iNet GL-MT300N V2
- ESP32-S3 ¿¿Maybe??
- M5Stack LLM630
🛍️ Shopping List
Here’s what I used for this project:
- Luckfox Pico Max RV1106 - €18
- 64GB microSD card - €10
- microSD to USB adapter - €2

🚀 Implementation Luckfox Pico
I performed all testing on Linux. Here’s how I put everything together:
Setting Up the SDK
First, I prepared my development environment:
|
|
|
|
In the lunch script, I selected:
- RV1106 board [6]
- SD Card boot [0]
- Ubuntu OS [1]
Building the Operating System
After several attempts, I discovered that the third-party VPN required the UTS namespace to be enabled in the kernel. Here’s how I activated it:
|
|
I navigated to:
|
|
After saving the configuration and building the kernel, the output files were stored in luckfox-pico/output/image/
.
Luckfox Pico OS Installation
For installation, I used a Windows VM and the SocToolKit
software from the SDK (luckfox-pico/tools/windows/SocToolKit
). The process was straightforward - just selecting the compiled image files and target microSD card. The official documentation provides detailed instructions if needed.
VPN Setup
For remote access, I chose Twingate for its excellent free tier, which perfectly suited my needs. Since I had never used it before, I decided to try it for this project. Alternatives like OpenZiti and Tailscale also offer great solutions, but Twingate stood out for its simplicity and ease of setup.
- Created a Twingate account
- Created a new Network (Network > Remote Networks > + Remote Network - select “other”)
- Added a Connector (Network > “network name” > + Add Connector)
- Installed the Connector on my Luckfox Pico (“Inside Connector” > Linux > Generate Tokens > Copy Command)
- SSH’d into the Luckfox Pico and run:
|
|
Twingate Client Setup
Installed the client:
1
curl -s https://binaries.twingate.com/client/linux/install.sh | sudo bash
Configured:
1
twingate setup
Started the service:
1
twingate start
Resources Configuration
I added resources through the Twingate dashboard (Network > Resources > + Resource)
Automatically Adding Resources
Since we don’t always know the IP of the device we’re connecting to, and we may not want to log into the third-party dashboard (Twingate) every time, I developed a script that uses the API to automatically add resources.
This script should run whenever the device connects to the network.
1. Settings > API > Generate Token
2. Replace the variables in the script accordingly.
|
|
3. Running at Startup
To run the script at startup, I added the following entry to crontab:
|
|
If necessary, adjust the file and log paths accordingly.
4. Testing
To verify that everything is working correctly, I simply restart the device and check if new resources have been created in Twingate. I then log in to the Twingate website to confirm the new resources.
In my case, three new resources were created:
- LAN network IP (connected to the AP): 172.16.0.91
- USB connection IP: 172.32.0.70
- Public IP: xxx.xxx.xxx.xxx
5. Resource Permissions
With these resources added, I can grant access to either everyone or specific groups. In my case, I assigned the resource to “Everybody.”
To verify permissions, I use the Twingate CLI on my host machine:
|
|
6. TCP and UDP Port Permissions
It is also possible to allow or restrict specific ports for each resource. By default, all ports are open (*).
7. Testing the Connection
Once outside the network, I can test the connection by running:
|
|
This establishes a remote connection to the device.
Testing the Setup
I started by adding SSH access to my Luckfox Pico as a resource. Then, I scanned my network for potential targets:
|
|
Once I identified available ports, I manually added specific resources to Twingate. For example, if I found a device at 172.16.0.80 with port 80 open, I could add it as a resource. After that, I could access the device through my browser as if I were inside the network.
3D Printed Case
To protect my device and make it more portable, I looked into printing a case. Here are the models I found most useful:

How to Use?
It’s super simple! I just plug the hardware into the Ethernet port, power it with a power bank, a DC adapter, or whatever nearby USB port happens to offer 5V and voilà!

Future Improvements
Here’s what I’m planning to add to my project:
- ESP32 integration (ESP-Hosted)
- Battery installation
- RTC implementation
- Penetration testing scripts
- Custom OS with ESP32, security tools, and testing scripts