Control Your CNC Over Wi-Fi




Introduction: Control Your CNC Over Wi-Fi

About: Maker. Breaker. World Shaker.

Hi everyone! This is my first Instructable, ever. I hope you enjoy it.

I recently built my own CNC router and ever since I got it up and running I have been obsessed with it. It's been a great learning experience both in terms of CNC hardware and the software that you need to run it. Throughout my first cuts, I noticed that between design and fabrication I was making lots of trips between my shop area (outside) and my desk (inside). Each time I moved I was dragging my laptop, charger, mouse, cables, etc. along with me either to draw more stuff or to actually run the machine. I knew there had to be a better way...

After some browsing of the software section of the Shapeoko Wiki (check it out), I came across GRBLWeb. I'll spare the details, but the bottom line is it allows you to control your GRBL board over Wi-Fi using a Raspberry Pi. The software runs in a browser, meaning you can run your CNC machine from any device on your Wi-Fi software to install, no cords, etc. This means you can do cool things like:

1. Use your phone or tablet as a pendant at the machine - very useful for homing.

2. Hang out inside at your desk drinking coffee and designing your next part while your machine runs - my preferred option.

3. Keep your laptop out of your dirty shop - to save $$$ on keyboard cleaner.

4. Free up some space in your work area - because Raspberry Pi's are SOOO big...

Installing some software sounds easy enough, but I had a few minor struggles getting everything to come together and work properly --- namely, setup on the Raspberry Pi. I thought it would be helpful to detail my experiences for all of you so you can avoid some of the frustration. With that being said, let's do this!

Step 1: Assumptions & Disclaimer


1. You have a working CNC machine running GRBL 0.8. You can run this on GRBL 0.9 as well but there are additional steps (changing the baud rate) that I will not cover here.

2. Your Raspberry Pi is straight out of the box. There are certainly ways to do this (possibly easier) if you already have one up and running, but I'm covering the whole thing for completion sake.

3. You will running your Raspberry Pi "headless" (i.e. without using a monitor, keyboard, etc.). Having these things certainly makes it easier, but they add to the required materials and we want to minimize those as much as possible!

3. You want to network with your machine using Wi-Fi (hence the title) This process can be greatly simplified if you can just plug your Raspberry Pi into your network using an ethernet cable. But, if you're like me, your router is a long way from your shop and you despise cords.

4. You're using a Windows PC to setup your Raspberry Pi. Sorry, I'm a Windows guy (at least for now). The only major differences occur in Steps 3-4, and beyond that, things should be the same on all systems.


I'm no expert in any of this. These are just the steps and tools that worked for me. It is highly likely that there are better methods out there for performing some of these tasks that I am unaware of. If you have any tips or tricks please share them in the comments.

Step 2: Gather Materials & Software

You'll need the following to complete this Instructable.


- CNC Router running GRBL 0.8

- Raspberry Pi (I used a Model B) --- $39.95 --- Buy a Raspberry Pi Model B

- Wi-Fi dongle --- $11.95 --- Buy a Wi-Fi Dongle

- USB A-B cable (probably came with your CNC; can also get one off an old printer) --- $3.95 --- Buy a USB Cable

- SD card (I used a 4GB one, but you could go bigger if you like) --- $7.95 --- Buy an SD Card

- 5VDC USB Power Supply --- $5.95 --- Buy a "Wall Wart"

- USB A-MicroB cable --- $2.95 --- Buy a Micro USB Cable

- Ethernet cable --- $2.95 --- Buy an Ethernet Cable

- Wi-Fi router with DHCP enabled & at least one free ethernet port --- Assuming you already have this...

ALL of the above parts will run you around $75 + shipping. Obviously if you have some of these lying around (you probably do) then the cost can be greatly reduced!


- SDFormatter --- FREE --- Download SDCard Formatter

- Win32DiskImager --- FREE --- Download Win32 Disk Imager

- WinZip or any other unzipping utility - I'm using 7-Zip --- FREE --- Download 7-Zip

- PuTTY SSH client --- FREE --- Download PuTTY


If you don't know how to access/lookup devices on your router then Fing is a useful app for finding devices connected to your network.

- Fing app for scanning network --- FREE --- For iPhone OR For Android

Step 3: Download GRBLWeb

Go to and download the Raspberry Pi Image file. It is the standard OS that most people start out with (Raspbian) plus all the GRBLWeb software, pre-installed. As soon as it's finished downloading, unzip it and store it away somewhere safe.

Step 4: Format Your SD Card

Insert your SD card into the slot in your computer. Your computer should recognize it and you should see it pop up as an external drive. Pay close attention to the drive letter your computer assigns to it.

Open up SDFormatter. In the drop down menu, select the drive letter for the SD card. Be absolutely sure you select the right one! Failing to do so could cause you to overwrite another, more important drive!

Click the Options button, select "Quick Format" & press Format. The program will reformat your SD card so it is compatible with the Raspberry Pi. NOTE: It's probably obvious, but anything you had on it previously will be deleted.

Step 5: Copy the Raspberry Pi Image to Your SD Card

Open Win32DiskImager. Select the drive letter of your correctly formatted SD card and use the file explorer to select the image file you saved earlier.

Click "Write" and the program will move the file onto your SD card.

Now you've got a full OS stored on your SD card! Time to fire it up!!!

Step 6: Boot Up Your Raspberry Pi

Insert the SD card into the slot on the back of the Raspberry Pi.

Connect the Raspberry Pi to an open ethernet slot on your router using the ethernet cable.

Do not plug in the Wi-Fi dongle yet. We have some setup to do before it is needed.

Plug in your 5V micro USB power supply and connect it to the Raspberry Pi. You should see some LEDs light up indicating that it is starting the boot process. It's alive!

Step 7: Get an I.P. for Your P.I.

In the boot sequence your Raspberry Pi will request an IP address from your router. The router will then use DHCP to find an available one and assign it to your Pi.

I used the Fing app on my phone to scan my network and list all the devices on it. Here I can see that my Raspberry Pi is at Perfect!

Step 8: Login to Your Pi

Open Putty and enter the IP address of your Raspberry Pi that you found in the last step. Select SSH and press "Open." A terminal window should pop up with the login screen.

By default, your username is "pi" and your password is "raspbian." Go ahead and enter these now. If you entered them correctly, you should be looking at a blank line on the Raspberry Pi terminal.

Next we'll re-configure some things on the Raspberry Pi.

Step 9: Setup Your Raspberry Pi

Since we're here it's probably a good idea to modify some basic settings on the Raspberry Pi.

Start by entering sudo raspi-config in your terminal. The configuration menu for the Raspberry Pi should open.

Use the arrow keys to scroll to "Change User Password" and press Enter. You will be prompted to enter a new password. I'll leave it up to you to choose one.

Back in the configuration menu, use the arrow keys to scroll down to "Internationlisation Options" and hit Enter. Inside this menu, select your language and timezone. You shouldn't have to worry about the third option, the keyboard layout.

There's plenty of other settings we could change here but that's all we really need for now.

Step 10: Setup Wi-Fi on Your Pi - Part 1

Probably the most important step in all of this is instructing your Raspberry Pi how to sign onto your Wi-Fi network. Before we get too involved we need to collect some basic info. Write all these values down as you will need them in the next step.

Enter ifconfig into the terminal. A list of all your available network interfaces will be displayed.

At this point we are only interested in the eth0 portion. Look for the following items and write down their values.

inet addr - IP ADDRESS - i.e.


Mask - SUBNET MASK - i.e.

Now enter netstat -nr in the terminal. Another list of network information will be displayed. This time we are looking for the following.

Destination - DESTINATION ADDRESS - i.e.

Gateway - GATEWAY ADDRESS - i.e.

NOTE: The values I have provided above are only examples to give you an idea of the format. The addresses on your network will differ slightly.

Step 11: Setup Wi-Fi on Your Pi - Part 2

Your Raspberry Pi connects to networks using instructions provided in a configuration file. We need to modify the instructions in this file to fit our needs. Open up the configuration file by typing sudo nano /etc/network/interfaces in the terminal. A simple editor similar to the one in the pictures should appear.

We are going to setup the Raspberry Pi to have a static IP address, meaning it never changes. This is good practice for any kind of major equipment because it ensures that you can always find it at the same address and, thus, can also bookmark it in your browser for faster, easier access.

Type the following text in the body of the configuration file, entering in the information you recorded in the previous step in bracketed areas. NOTE: You must use the arrow keys to navigate.

auto lo

iface lo inet loopback

iface eth0 inet dhcp

auto wlan0

iface wlan0 inet static

address [DESIRED IP ADDRESS, i.e.]





wpa-ssid [SSID OF YOUR WI-FI NETWORK, enclosed in double quotations, i.e. "MyWIFI"]

wpa-psk [Your Wi-Fi Password, enclosed in double quotations, i.e. "Password"]

After you are finished, press Ctrl+X to exit the file. You will be asked if you want to save your changes. Type "Y" for yes and then press enter. You should be returned to the command line.

Pro-Tip: Choose an IP address that's well outside the normal range, or at least looks way different than your other devices. This should make it easier to remember/find later.

Step 12: Try Out Your Wi-Fi Connection

Shut down your Raspberry Pi by entering sudo poweroff in the terminal. Your connection should terminate. Unplug the ethernet cable from the Raspberry Pi and plug the Wi-Fi dongle into one of the USB ports.

Disconnect/reconnect the power supply to reboot the Raspberry Pi. Once it reboots it should follow the instructions you wrote in the last step to sign onto your Wi-Fi network.

Give your Pi a minute or so to get going and hit refresh in the Fing app to see if your Raspberry Pi is on the network. You can identify it by the IP address you chose in the previous step. If you see it then congrats! You're almost done! If not then return to the previous step, check the configuration file, and ensure you've set up your Wi-Fi correctly.

Now for the fun part...

Step 13: Plug in Your CNC Machine

All that's really left to do is test it out on your machine. To do this all you need to do is connect the GRBL board to the second USB port on your Raspberry Pi using the USB A-B cable. The software onboard the Pi should recognize the Arduino connected to your GRBL shield and take care of everything.

Power up your CNC machine and get it ready to go.

WARNING: I wouldn't recommend turning on your spindle or attempting any cuts yet. Patience!

Step 14: Launch GRBLWeb in Your Browser

Head over to your device of choice (connected to your Wi-Fi network, of course), open a fresh browser, and type http:// + [your Pi's IP address]and hit Enter. Example: The program should open up and you should see the live status of your machine.

In the drop-down devices menu, find and select the Arduino running GRBL. Now you're ready to go!

Pro-Tip: My computer is not in the same room as my CNC router, so I like to launch the program from the browser on my phone. This way I can stand right next to my machine (and the killswitch) and test it out.

Step 15: Check the Settings on Your CNC Machine

Take special note to the feed rate and step size selected in the combo boxes above the X, Y & Z jog buttons. For initial testing I would recommend a low feed rate and step size for safety reasons. Pressing a button and watching your CNC machine fly off into destruction would be a horrible way to end this project! You should already know what feed rate and steps are from setting up your CNC machine, but bottom line is they need to be within the safe operating range of your equipment. On my Shapeoko 2 I typically use a feed rate of 500 and a step size of 2 or less for testing and small movements.

It's also a good idea to double-check your GRBL settings before you attempt any moves. To do so just hit the Settings ($$) button in the top right corner of the screen. If you have been using your CNC machine prior to attempting this then your settings should already be correct and this step is completely unnecessary.

Step 16: Try It Out!

Try jogging each axis of your machine using the controls in the program. If you're a G-Code wiz you could try out some various commands too. If everything seems to be functioning properly then you are finished!

Step 17: Conclusion & Final Thoughts

Congratulations! If you've made it this far then you are now the proud owner of a networked CNC machine! Enjoy the fruits of your labor by using your machine from nearly anywhere on any device. So far, I have thoroughly enjoyed the flexibility and ease of use with this system. I'm anxious to try out some other features in it as well. Not to mention it's just really cool!

Advice & Thoughts:

REMOTE CNC AT YOUR OWN RISK! Running a CNC machine remotely is not necessarily the safest idea without some good safety & monitoring systems in place. Your machine could run off an axis, stall, miss some steps, or lose a bit, among other things and without you (or something else) around to stop it, it could cause some serious damage.

Spend some additional time learning the GRBLWeb software. I only cover initial setup here, but it's equipped to handle more of your CAD/CAM/Testing/Sending workflow as well. It could be a very powerful tool in your CNC toolbox!

You'll notice in my photos that none of my devices (Raspberry Pi, Arduino, GRBL shield) have enclosures. They are certainly not required, but are always a good idea. I'm hoping to get some as soon as I settle on an overall layout for my Shapeoko.

I recently attempted running this setup completely from my phone and experienced great results! As a quick insight into my workflow, I do all my CAD/CAM processing on my laptop, upload G-Code into Google Drive, open GRBLWeb in a browser on my phone, home the machine using the buttons on the main screen, upload the G-code file, then send it to the machine. Pretty easy!

Step 18: Credit Where Credit Is Due

This Instructable, or even owning my own CNC machine, would not have been possible had it not been for the generosity and hard work of many others. In particular I'd like to thank the creators of GRBLWeb, the folks over at Inventables, and the Raspberry Pi Foundation. If you enjoyed this Instructable please check out and/or show your support for these groups.

And I'll end with a horrible pun...CNC you later!!!

CNC Challenge

First Prize in the
CNC Challenge

Pi/e Day Contest

Participated in the
Pi/e Day Contest

Be the First to Share


    • Rocks, Gems, and Stones Speed Challenge

      Rocks, Gems, and Stones Speed Challenge
    • Back to School: Student Design Challenge

      Back to School: Student Design Challenge
    • Lamps and Lighting Contest

      Lamps and Lighting Contest



    Question 2 years ago on Step 18

    Since it can be control using WiFi, means that it can be control from anywhere as long as I have WiFI connection right? Which means I can access to it from a different network?


    Answer 2 years ago

    As the procedure is written, it would only be accessible on your local network. You would need to setup a VPN or something to access it remotely.

    So, technically, yes. But there are additional requirements.


    Reply 2 years ago

    I see, thanks for the suggestion! However, is it possible to run this on a Raspberry pi 3 sir?


    Reply 2 years ago

    Absolutely. A RasPi3 would actually work better since it has built-in WiFi.


    4 years ago

    Hi there,

    Very neat and clever!! By any chance, do you have Instructables for the CNC build? It would be nice if you can at least put a part list for the CNC.



    Reply 4 years ago

    The CNC machine I built comes as a complete kit from Inventables. They provide the parts lists, step-by-step assembly instructions, software, support, etc. Below is a link to the Bill of Materials and Assembly Instructions page. You can click on any size and it should all be pretty clear.

    If you're looking to build your own CNC then I would recommend buying one of the kits. They are packaged very well and take a lot of the guesswork out of the process if you've never built one before. At a minimum, you can use it as a guide to source your own components, etc.

    NOTE: The machine that I built (Shapeoko 2) is no longer sold. They are now making the X-Carve, and have even made a couple revisions on that.

    Hope this helps!


    5 years ago

    why used raspberry?? Why not a lot cheaper arduino with an nrf24l01 2.4ghz module?


    Reply 5 years ago

    I used the RasPi because I already had one on hand. Also, I'm not sure that GRBLWeb would run on an Arduino.


    5 years ago

    Hi, I am in the process of putting together this update for my xcarve, I have gathered all the components including a Rpi 2 model b - different from that used in the intructable- however I also noticed that the GRBL version is also a newer one ( so all in all i went ahead and followed the instructions, download GRBL file, format the sd card and copy the image... fire up Pi, link to it over putty, used the revised id/pswrd, connected.... but could get over this point.

    I am as new as it gets to PI, so most likely I am missing something probably very basic so would someone mind to guide me will be greatly appreciated.


    Reply 5 years ago

    Are you having problems connecting it to your Wi-Fi network or communicating with your X-Carve?


    Reply 5 years ago

    Hi eLVirus88. Difficulties started
    when given commands to the Rpi. I initially thought i had a corrupted Image
    file so i worked with a new GRBLweb download from this page ( but unfortunately obtained the same
    initial results; basically the commands are nor recognized. I
    noticed that the GRBLweb version seem to be newer so not sure if this was the
    root cause. I also know that I am working with the Rpi 2 model b which is
    different form that illustrated in the instructable so again not
    sure if that also could be the root cause of it as the syntax
    might have to be different.

    As mentioned in my original post, I am a completed newbie at all
    things Pi so would appreciate any support
    I could get Ideally if broken down to a
    very basic level but either way I will take it as I really like this project
    and the freedom it provides when working around my Xcarve.


    Reply 5 years ago

    Which command didn't work?


    6 years ago on Introduction

    Excellent contribution!

    That's precisely what I was looking for.

    Thank's a lot! ? ? ?


    6 years ago on Introduction

    This is so interesting. I've only ever worked with an Arduino, but the more and more I'm on this site the more I feel that I need to start working with a Raspberry Pi. Thanks for sharing how you started controlling your CNC remotely!


    Reply 6 years ago on Introduction

    Once you take a bite of the Pi you'll be hooked! There are TONS of cool projects using them. I feel like I've hardly scratched the surface of what can be done...


    6 years ago

    This is incredible! Well done, and thanks for taking the time to make an excellent, detailed write-up!


    Reply 6 years ago on Introduction

    Thanks! I had a lot of fun putting it together and have even more fun using it!