top of page

Using the grblHAL Web Builder

Terje at io-Engineering has created a fantastic builder for grblHAL. This allows you to build custom firmware files with no software skills needed. It makes the power of grblHAL easily available to any user. It is still a bit of a work in progress (at V0.90 as of this date). There are a few visual glitches depending on your web browser of choice but it is highly useable. This is being written from the perspective of a Teensy 4.1 and Bookwood Design T41U5XBB user. Though, much of it is applicable for anyone.

Note, these screen shots are from a Chrome browser on Windows 10. Other browsers will have different appearances so your mileage may vary...

To start with, open the Web Builder. You will see something like this.

Pick your processor and board

Select the processor you are using. Click on the Driver box and select the appropriate entry. In this case, it is the Teensy 4.x. The Web Builder will default to a board so make sure to select the one you have. In this case, it defaulted to the T41U5XBB which is what I have so nothing else needs to be done. Here is what you should see.

There are 4 panels that allow configuring various features: General, Plugins, Network/WebUI and Advanced features. We will explore each of these with an eye toward supporting the T41U5XBB.


Most of the settings on the General panel are good for the T41U5XBB with a couple of exceptions. If your machine is a moving gantry machine with dual motors on Y, you will need to click on the Y-axis box and select "Ganged Motors". If you use Auto-Squaring, you need to select "Auto-Squared". For information on this see my blog on Auto-Squaring. You do not need to change the number of axes. If you use the safety door input, you will need to check that box.

If you are using a VFD and controlling it via ModBus, you will need to select it in the Spindle box. For most users of the T41U5XBB, you don't need to change anything.

Below, you will see the General panel setting that corresponds to the prebuilt file "3X qangY AutoSq qei". Note that you do not need to change the Number of axes to 4 if using ganged motors for a moving gantry.


You can see the Plugins panel below. For using the T41U5XBB for a moving gantry router, nothing needs to be done. If you have installed an EEPROM, select the size. If you have a FRAM chip, check that box. If you want to use any of the other plugins, follow the "i" links to the associated plugin page. Most of them require specific hardware.


The Network/WebUI panel is shown below. For the T41U5XBB, I have checked Ethernet, Telnet and Websocket. All versions of the prebuilt files have these settings checked.

The WebUI settings are worth exploring but I suggest you get the basic features working first before plunging in.

Advanced Features

No actions are needed on this page, the defaults are what the prebuilt files are set to. One area that you may want to look at is Compatibility Level. If you are using an old sender (PC/Mac program) that was hard coded to classic Grbl responses, you might need to set a higher compatibility level. If you get errors from the sender, try setting the level higher. Start with Grbl id (1) and work your way up. Grbl 10 is a perfect emulation of the classic Grbl responses.

Finishing up.

Once you have made your changes, press the "Generate and download binary" button. It will take a minute or two and then will present you with a Save As file dialog. Before you do that though, press the Save board button and name it something that represents your selections - "grblHAL 3X Auto-Square" for example. That way you can use it as a starting point if you want to make modifications later.

Loading the .hex binary file on a Teensy.

Now that you have a .hex binary file, you can load it into your processor. If you are using a Teensy, read on. If not, consult with your board maker for instructions.


Download Teensy.exe from the PJRC Website here. The page may say Windows Vista but it works for all recent Windows versions. Plug in your Teensy 4.1 via USB. Find Teensy.exe and run it. It should open as a small window. In File/Open HEX File, select and open the .hex file you want and press OK. Then, press the button on the Teensy 4.1. You are ready to test it now.

Macintosh OS X

Macintosh instructions are here. Plug in your Teensy 4.1 via USB. Follow the instructions to install and run the loader. It should open as a small window. Then, from the File name, choose "Open HEX File" and open the .hex file you want and press OK. Select "Program" from the "Operations" menu, or click the Program button on the tool bar. It should display a brief loading message. You are ready to test it now


Instructions for Ubuntu are here. Other Linux versions work though you will need to build the loader for your platform. The instructions and links to the github repository are here.

Loading the .uf2 firmware file on a Pico.

This does not require any special hardware or software. For a Pico mounted on the PicoCNC board.

  1. Connect your Pico via a USB cable.

  2. Press and hold the Bootsel button on the Pico.

  3. Press/release the Pico Reset button on PicoCNC board.

  4. Release the Bootsel button. This will cause a USB drive to be created.

  5. Copy the .uf2 firmware file to that drive and the firmware will be installed.

  6. Press/release Pico Reset after it has completed to force a reboot.

Your PicoCNC with grblHAL is now ready. For a Pico that is not mounted on a PicoCNC board.

  1. Unplug the USB cable from the Pico. Make sure the cable is plugged into your PC/Mac/Linux box.

  2. Press and Hold Bootsel on the Pico.

  3. Plug the USB back into the Pico.

  4. Release the Bootsel button on the Pico. This will cause a USB drive to be created.

  5. Copy the .uf2 firmware file to that drive and the firmware will be installed.

  6. Press/release Pico Reset after it has completed to force a reboot.

Your Pico with grblHAL is now ready.

First Run Settings

This is not an issue with the builder - you would run into it in any case. Basically, the grblHAL defaults cause issues for GCode senders like ioSender when all the input devices have not been connected. So, for example, grblHAL might think it is in a continual state of being reset if a switch has not been connected to the input. The grblHAL Wiki First Run pages describe what is needed to get up and running.

About Me.

I'm Phil Barrett, a long time CNC enthusiast. I run a small company, Brookwood Design, that makes several breakout boards for grblHAL and love to help people get the most out of their CNC machines.


Featured Posts
Recent Posts
Search By Tags
No tags yet.
Follow Us
  • Facebook Classic
  • Twitter Classic
  • Google Classic
bottom of page