Control Grbl CNC Over Wifi

Introduction: Control Grbl CNC Over Wifi

In this tutorial I will walk you through how to enable GRBL control over WIFI. You can use this method with any sender including lasergrbl and Universal Gcode Sender (UGS).

In short, we will be using arkypita’s work and other software to create a virtual COM port.

Please consider supporting arkypita, he has contributed a lot to the community.


  • Arduino Uno
  • Grbl shield v3
  • ESP8266-07
  • lm1117 3.3v
  • 10uf capacitor
  • 2*3 female headers
  • 5.5mm jack

Step 1: The Hardware

The attached pcb gerber fits well onto the grbl v3 shield.

We cannot power the esp module from the arduino directly since it consumes more current than what the arduino can supply; that is why I've added a 5.5mm jack. I used a 5v 1a phone charger to power the module.

Step 2: Upload the Grbl Firmware

You can find information here on how to upload the grbl firmware onto the arduino uno.

Step 3: Prepare the Esp Module

Download the firmware for ESP8266-SerialTelnet and upload the scketch onto the esp module. I have made an instructable on how to upload a scketch onto an esp module using an arduino nano as a programmer. You can also use a usb to serial converter to upload scketch.

Use the instructions here to connect the esp module to your wifi connection, and get the esp device IP.

Step 4: Create a Virtual COM Port

I used a software called Tibbo VSP Manager.

After installing the software,

  • run it as administrator
  • click on the Add button
  • Enter the information as shown in the image, but be careful to enter your esp IP-address
  • click on the default serial tab and enter the information as shown

After completing these steps, your virtual COM will be created

Step 5: Start Sending

Open your preferred sender and choose the virtual port that you have created. Press connect, and you should recieve a ready status from your grbl device. Now you can do everything as if you have a usb connection to your board.

2 People Made This Project!


  • Halloween Contest

    Halloween Contest
  • Fried Food Challenge

    Fried Food Challenge
  • Microcontroller Contest

    Microcontroller Contest



Question 2 months ago on Step 2

I would like to connect my CNC laser engraver to Wi-Fi so I can operate it outdoors where ventilation is not a problem. I have tried to follow the Instructible, Control Grbl CNC Over Wi-Fi as closely as I can but I have run into nothing but trouble. I am an old guy, not so familiar with Wi-Fi, python, or Arduino libraries.

What I really need is a "wireless USB cable" (or maybe USB host with WiFi) but they don't seem to exist.

Anyway, my machine uses an Arduino Nano (328) programmed with GRBL 1.1h which, I downloaded as 02-v1.1h-custom, XY Homing-20190830.hex, and programmed the Nano with Xloader.
I know this load of GRBL is working because I used it to make many laser-cut parts before I decided Wi-Fi would be nice.
Since it is pre-compiled, there is no way for me to change anything about the program.
My Wi-Fi to serial terminal is a Node MCU V3.
I have successfully programmed the Node MCU and set it up as a client on my Wi-Fi router. I can even communicate with the terminal, at least in the PC to terminal direction.
But, while I can see data coming from my PC to Node MCU pin D8 (TX2), I never get a response from the Nano running GRBL. I suspect it may be a baud rate issue as GRBL wants to run at 115200 and Node MCU wants to run at 9600. There may be some handshaking issues as well because I have to connect to the Nano after Wi-Fi is connected. If i don't, Wi-Fi never connects.
All of this means I need the GRBL 1.1h source code if I want to make any changes to baud rate, etc.
I have been unable to add the grbl-master source code to the Arduino IDE either as a library or as a zip file so there's no way to compile a modified version--even if I knew how. I get a message "... not a valid library."

I am at the point where I really don't know what to try next and would love some help from Sungeun "Sonny" Jeon Ph.D, arkypita, jadhalabi, or anyone else who might have solved this problem.


5 months ago

alguien por favor tendra un video de como hacer el paso 4?


5 months ago

Hello everyone, sorry for the question, it may be very silly, but with this project, can I send a gcode from anywhere in the world to my cnc? or is it only for a private wifi network? I await your answers and thank you.


Reply 5 months ago

Hello, this instructable is meant for control over a local area network. However, it can be adapted to global control

Jeffrey Lawton
Jeffrey Lawton

6 months ago

Jadhalabi, I'm trying my best here, I have the Tibbo VSP Manager but I still can't get the engraver to stay connected, there's an automatic timeout after 10 seconds. I built the Telnet ESP8266 Arduino code on arkypita's website, it creates the "ad-hoc network", I put in my server credentials, it's then visible and "available" through my main server in WiFi Discovery. You weren't specific, I assumed you need to have the same COM port it was built for, but it doesn't work whether I do that or not, it STILL doesn't stay connected. What is the baud rate on Tibbo supposed to match? Maybe there's still something I don't understand about this, I'd really like to get this working, please send help to because there's probably still something I'm misunderstanding, thank you.


Reply 5 months ago

Hello, after entering your wifi credentials you should get the IP address that was assigned by the router to your esp module. And from there, just follow step 4 in the instructions. Remeber to create a virtual COM port with a number that is free

Jeffrey Lawton
Jeffrey Lawton

6 months ago on Step 4

I'm also a fan of arkypita (LaserGRBL), I try and use his concepts whenever I can. Under that identity he published both a Websocket and a Telnet Wi-Fi answer (you could build it into an ESP-12 or similar). I built BOTH of them but neither one of them would stay connected to my GRBL engraver, even AFTER I reflashed them with 1.1h (in all cases they would time out after 10 seconds over Wi-Fi, it worked OK wired into USB though). I was starting to come to the conclusion that maybe the board I have isn't very stable. Now you're suggesting this virtual COM port, is this another Arduino project? Could you tell me if this is "just an option" or is it more or less likely to work than what I've already tried? If it isn't how do I track down a "more stable" brand of controller board? I really need to put this machine out in the garage and not drag chips into the house! Any assistance you could give me would be much appreciated.