For almost a week, I went down the rabbit hole trying to get Wi-Fi control and file upload working properly on my TwoTrees SP-5 V3 3D printer with the MKS Robin Nano V3.1 board.
Everywhere I looked, people mentioned “ESP32 Wi-Fi modules,” “serial bridges,” or “custom firmware,” but nothing seemed to provide a stable, two-way connection between slicer and printer.
After countless firmware flashes, dead ends, and late nights, I finally found the real solution — and it didn’t require hacking the firmware or modifying the mainboard at all.
That solution is called OctoPrint.
This post documents exactly how I got it working — step by step — using a small Linux computer as a Wi-Fi serial bridge.
If you’ve been fighting with unreliable wireless printing setups, this guide will save you hours (or days) of frustration.
⚙️ My Setup
| Component | Description |
|---|---|
| Printer | TwoTrees SP-5 V3 (CoreXY) |
| Controller board | MKS Robin Nano V3.1 (Marlin firmware) |
| Computer | Radxa Zero SBC (any Linux laptop or Raspberry Pi will work) |
| Operating system | Debian-based (MX Linux in my case) |
| Slicer | PrusaSlicer |
| Network | Standard Wi-Fi router on local network |
🧩 The Problem: Finding a True Wi-Fi Workflow
Like many makers, I wanted to:
- Slice in PrusaSlicer.
- Click Upload and Print via Wi-Fi.
- Control, pause, and monitor prints from my phone.
I tried several approaches:
- ESP32 Serial Bridge – one-way or unstable communication.
- MKS Wi-Fi Modules – proprietary firmware, limited file management.
- Network shares (CIFS/FTP) – upload worked, but printer couldn’t start the print automatically.
- USB OTG from phone to printer – worked, but not practical for remote management.
Every approach failed in some way.
I wanted something reliable, that would fully integrate with PrusaSlicer, and provide two-way feedback (temperature, print status, SD card file list, etc.).
💡 The Discovery: OctoPrint Does It All
When I realized OctoPrint could act as a Wi-Fi bridge between my slicer and the printer’s USB port, everything changed.
OctoPrint was originally designed to run on Raspberry Pi, but it works perfectly on any small Linux board — even the Radxa Zero or a spare laptop.
Once installed, it provides:
- Full control of the printer via a browser
- File uploads directly from PrusaSlicer
- Start/pause/stop from phone or PC
- SD card file management (delete/rename)
- Temperature monitoring and webcam streaming
- Plugin system for automation and cloud access
In short: it’s the Wi-Fi control system the MKS Robin Nano V3.1 never had.
🔧 Step-by-Step Setup Guide
Follow these steps and you’ll have a working Wi-Fi upload and management system in under an hour.
Step 1: Prepare Your Linux Host
You can use any of the following:
- A Radxa Zero
- A Raspberry Pi 3/4
- A spare laptop
Make sure it’s connected to your Wi-Fi network and can reach the Internet for installation.
sudo apt update && sudo apt upgrade -y
Step 2: Install OctoPrint
Option 1 — System-wide install:
sudo apt install python3-pip python3-venv git -y
mkdir ~/OctoPrint && cd ~/OctoPrint
python3 -m venv venv
source venv/bin/activate
pip install octoprint
Start OctoPrint manually to test:
~/OctoPrint/venv/bin/octoprint serve
You should see something like:
* Running on http://0.0.0.0:5000/
Then visit it in your browser:
http://<your-device-ip>:5000
Step 3: Set Up OctoPrint
- Complete the initial setup wizard.
- Enable Access Control and create a user account.
- Under Settings → API, copy your API Key (you’ll need this for PrusaSlicer).
- Connect your TwoTrees SP-5 V3 to the Linux device using a USB cable.
- In OctoPrint → Connection, select the detected port (usually
/dev/ttyACM0). - Set Baudrate = 250000 and click Connect.
You should now see temperature readings and control buttons become active.
Your printer is fully controllable through the OctoPrint web interface!
Step 4: Enable Upload from PrusaSlicer
On your main computer:
- Open PrusaSlicer → Printer Settings → General tab.
- Scroll to Print Host Upload.
- Check Enable and set Host Type → OctoPrint.
- Enter:
- Host/IP:
http://192.168.x.x:5000 - API Key: (paste from Step 3)
- Host/IP:
- Click Test — you should see “Connection successful.”
Now every time you slice, you can click Upload to OctoPrint and watch it appear instantly in the OctoPrint interface.
Step 5: Start Printing over Wi-Fi
- In PrusaSlicer, slice your model and click Upload and Print.
- OctoPrint receives the G-code instantly and starts printing.
- Monitor temperature, progress, and print time from any device.
- Need to stop or pause? Do it from your phone or PC.
- Finished? Delete old G-code files from OctoPrint to keep your SD card clean.
✅ No cables. No SD card swapping. Just reliable Wi-Fi printing.
⚡ Performance Tips for High-Speed Boards
| Setting | Recommended Value | Notes |
|---|---|---|
| Baudrate | 250000 | Fastest stable option for Marlin |
| Serial Timeout | 5 s | Prevents disconnects |
| Auto-connect | Enabled | Reconnects after reboot |
| USB Cable | < 1 m, good quality | Poor cables cause drops |
Keep your Radxa Zero or Pi powered by a solid 5 V 3 A supply to avoid communication resets.
🔌 Optional — Add a Webcam
For remote monitoring or timelapse videos:
sudo apt install mjpg-streamer
mjpg_streamer -i "/usr/lib/input_uvc.so -r 1280x720" -o "/usr/lib/output_http.so -p 8080"
Then in OctoPrint → Settings → Webcam & Timelapse, set:
http://<your-device-ip>:8080/?action=stream
🔍 Recommended Plugins
| Plugin | Purpose |
|---|---|
| DisplayLayerProgress | Shows live layer/time progress |
| OctoEverywhere | Secure remote access (no port forwarding) |
| PSU Control | Power printer on/off remotely |
| Firmware Updater | Flash new firmware from OctoPrint |
| Themeify | Customize UI |
| G-code Editor | Edit uploaded files before printing |
Install via Settings → Plugin Manager → Get More…
📱 Access from Any Device
Visit on your phone:
http://<your-device-ip>:5000
Then choose Add to Home Screen — it behaves like an app with full printer control anywhere on your Wi-Fi network.
💾 Backup Your Setup
Before experimenting with plugins or updates:
- Go to Settings → Backup & Restore → Create Backup.
- Download the ZIP file.
If you reinstall or move OctoPrint later, restore from that file and everything comes back instantly.
🧠 Notes of Interest from Real Testing
After days of testing, two key discoveries made all the difference:
🟢 1. Instant Uploads via OctoPrint
Uploading a file from PrusaSlicer to OctoPrint is instantaneous over Wi-Fi.
The G-code appears immediately and can be started right from OctoPrint — no SD card handling required.
This shows OctoPrint’s USB-Wi-Fi bridge is not only stable but lightning fast.
⚠️ 2. Touchscreen Interference Stops Printing
If you touch the MKS Robin Nano V3.1 TFT display while a print started by OctoPrint is running, the print stops immediately.
This happens because both OctoPrint and the touchscreen compete for control over the same UART serial line.
Solution: Avoid using the printer’s display during OctoPrint-controlled prints.
Manage everything from the web interface or your phone instead.
Once the print is complete, you can safely use the screen again.
🧭 The Result: Reliable, Fast, and Fully Wireless
After so many failed experiments with serial bridges, Wi-Fi modules, and firmware hacks, this setup finally gave me what I wanted:
✅ Upload directly from PrusaSlicer
✅ Start and stop prints remotely
✅ Delete or rename SD card files
✅ Monitor temperature and progress
✅ Use my phone or laptop interchangeably
✅ 100 % reliable two-way communication
OctoPrint turned my TwoTrees SP-5 V3 into a network-connected powerhouse, working flawlessly with the MKS Robin Nano V3.1 board.
🧠 Final Thoughts
If you’re stuck trying to make Wi-Fi printing work with Marlin-based printers, stop wasting days chasing serial bridges and custom firmware.
Just install OctoPrint on any small Linux device, connect it via USB, and enjoy instant wireless control.
This workflow is stable, safe, and community-supported.
Whether you’re a beginner or a seasoned tinkerer, OctoPrint provides industrial-grade print management and monitoring — for free.
🔗 Useful Links
💬 Have Questions?
If you’re a South African maker struggling with Wi-Fi control or setup issues on your 3D printer, drop a comment below or contact me via the PrintLab SA site — I’m happy to help you get it working the right way.
Posted by: Pieter Fourie — PrintLab SA
