Turn Your USB 3D Printer into a Network or Wireless Setup with the Creality Box and OpenWRT

In the 3D printing world, many entry-level machines like the popular Creality Ender 3 deliver solid performance but lack built-in wireless connectivity. This often means relying on complex or expensive setups for remote control. In this post, we’ll explore a practical, low-cost solution: modifying a Creality Box — originally designed for WiFi printing — by installing OpenWRT to create a reliable bridge between OctoPrint and your USB printer. I’ve personally tested this setup, and it works effectively, addressing reliability issues I’ve encountered with other methods.

Why the Creality Box?

The Creality Box is a compact hardware device meant to add WiFi to Creality 3D printers. Its main appeal is the price: you can find it online for around 20-25 euros, making it accessible for hobbyists and makers. Despite its small size, it includes useful features:

  • RJ45 Ethernet port: For a stable wired network connection.
  • Built-in WiFi: For wireless networking if needed.
  • TF card slot (SD card): For local storage or file loading.
  • Two multipurpose USB host ports: Suitable for connecting printers, cameras, or other devices.
  • Adequate hardware: Enough processing power and RAM to run alternative firmware like OpenWRT without upgrades.

This setup makes it ideal for turning a USB-only printer into a remote system, especially if the printer is in a different room from your PC or NAS.

Limitations of the Original Software and Direct OctoPrint Installation

Before diving into the modification, it’s worth noting why I avoided the default options. I tried the pre-installed Creality software for WiFi printing, but the results were poor: unstable connections, frequent lag, and overall low reliability, making it impractical for long prints.

Similarly, I attempted to run OctoPrint directly on the Box using its hardware. This isn’t ideal—the device isn’t powerful enough to handle OctoPrint smoothly, especially for complex prints. I experienced interruptions and lag that led to failed prints midway, wasting time and materials. Instead, I used the Box as a simple serial-over-network bridge, offloading OctoPrint to a more capable device.

Installing OpenWRT on the Creality Box

To unlock the Box’s potential, start by installing OpenWRT, an open-source firmware for routers and embedded devices. Detailed instructions are in this helpful article: Unboxing a Creality Wifi Box and how to install Octoprint on it! I followed this guide, and it worked without issues — it requires some familiarity with firmware flashing tools, but it’s doable for anyone with basic experience.

The article explains in detail how to install OctoPrint as well, but for our purposes, it’s enough to reach the installation of OpenWRT.

Once OpenWRT is installed, access the web interface and set up the network. The key step is installing the ser2net package, which exposes the Box’s USB ports as network-accessible serial ports. Go to System > Software, search for “ser2net,” and install it.

Configuring ser2net in OpenWRT

Ser2net is crucial for making the printer’s USB connection available over TCP/IP. In the Services > ser2net section of the OpenWRT interface, enable the service and configure it as follows:

In the settings section:

  • Global switch: Enabled.
  • Control port: Enabled, with Binding address the IP of your local network (e.g., 192.168.1.1) and random port to listen on.
  • Default settings: Baud rate 115200 (standard for 3D printers), Data bits 8, Parity None, Stop bits 1.

In the Proxies section, create entries for the USB ports:

  • Service TCP port: choose a rondam number, 5201, in my case
  • Protocol Raw
  • Device: /dev/ttyUSB1 (choose one of the 2 USB ports of the Creality Box. They have addresses: /dev/ttyUSB0 and /dev/ttyUSB1)
  • Baud 115200 / Data bits:8 / Parity: None / Stop bits: 1

These settings allow OctoPrint to connect to the printer remotely as if it were a local serial port.

Configuring OctoPrint

OctoPrint can run on various platforms based on your needs:

  • On a Raspberry Pi: Good for a dedicated, low-cost, portable setup.
  • In Docker on a NAS (e.g., Synology or QNAP): Ideal if you already have a NAS in your network.
  • On a Windows/Linux PC: Fine for quick testing, but less efficient for ongoing use.
  • On a cloud server: For global remote access, but watch for latency.

My personal configuration is Octoprint installed on a Docker container on my Synology DS920+.

On your OctoPrint add the Socat Bridge plugin from the plugin repository. In Settings > Plugins > Socat Bridge, set:

  • Virtual Device Path: /dev/virtualcom0
  • Host: The Creality Box’s IP (e.g., 192.168.1.135)
  • Port: The TCP port from ser2net (e.g., 5201 for my /dev/ttyUSB1).

This creates a virtual serial port that routes to the printer’s USB via the network. Connect the printer to the Box’s USB, and OctoPrint will treat it as local.

Benefits and Final Notes

This configuration provides a reliable bridge: OctoPrint handles the printing logic on stronger hardware, while the Creality Box only manages serial tunneling, minimizing interruption risks. I’ve run multi-hour prints successfully, unlike the direct alternatives.

For under 25 euros, you can make an Ender 3 or similar printer wireless, perfect for remote workshops or multi-printer setups. If you’re looking to upgrade your 3D setup affordably, this is worth trying.

Questions or variations? Comment below!