Free software to make foam wings – Hotwire CNC foam cutter

posted in: CNC, Hot Wire, JediCut, LinuxCNC, Software | 6

You’ve built your 4 axes CNC Foam Cutter and now you need some software to generate and send the g-code for your foam wing or fuselage. If you can afford it then buying software may be the way to go, but expect to pay up to $175/200 for Mach3/4, €60 DevCNC Foam and DevWing Foam 2 is €125.

These are very good and I use all of them. DevCNC Foam and DevWing Foam 2 are my preferred options but do take some time to learn. I have full tutorials on all of these on the site and YouTube

But your probably here because you’ve just built your machine and want to try the free alternatives first. So what software is available to make that foam wing for free?

What free software can we use?

I’ll link you to the post for the options above as the remainder of this article mainly focuses on LinuxCNC.

LinuxCNC software configuration for 4 axis foam cutters

I have an article on this site on how to install and configure LinuxCNC for CNC routing. I would encourage you to read this first. The only real differences are in the configuration files, all the steps up to “Stepconf for TB6560 Motion Controller” are the same for the foam cutter. Read as far as that and then come back here.

My hotwire machine has been running for several years on the TB6560 controller and NEMA23 steppers and been very reliable. As a hobbyist is not in full-time operation but I have run it for several hours in one session without any issues.

The reason I mention this is that the cheap Chinese boards come in for a lot of bad press but I can’t fault mine. If you’re looking at this post your probably trying to avoid spending a lot of money on software as well, such as Mach3 at $175. You can if you follow this article get foam wing cores and many other designs all using free software. Read on to find out how.

If you want to build a hot wire CNC machine then check out my build page with an eBook and parts list. I also now have a USB option here but this doesn’t work with LinuxCNC it uses 3d printer electronics and the GRBL HotWire Controller.

LinuxCNC stepper configuration

My configuration is based on the TB6560 all in one board but should work on many others, but the pin assignments on the parallel port may be different, so check your documentation.

If you don’t want to use the parallel port or your machine doesn’t have one, then the most cost-effective way to do this with a PCI Parallel Port card.

I’m also using home and limit switches and an E-stop for safety. It took me some time testing to get working, but it works now with all axis going in the right direction and home and limit switches triggering. My home and limits are wired in series so it only needs 1 pin.  You can wire separately and the will home altogether but that means using more input pins and wiring.

LinuxCNC has a foam option that can be specified in the configuration. The display then shows a 4 axis foam cutter, which is very good. The only caveat with this is that your axes must be named XYUV and not XYZA. Later we add the option foam =1 to the ini file that’s created by stepconf and some other setting.

Initially, you can use the Stepconf wizard but after that, we need to make a few changes to the ini file created by the wizard. If you re-run the wizard it removes the entries. More details later.

Step 1 create a new configuration

We start off using the stepconf wizard to get the initial settings, but then we need to edit the ini files in our config folder to add the necessary setting for a foam cutter

Give your machine a name I’ve called mine foam-cutter, but you can name it anything you like. Set Axis configuration to XYZA (we change to XYUV later) and machine units to your preferred units. My settings are based on millimetres MM. Enter your Base Period Max Jitter. My post linked above shows how to get this figure and I have a video on YouTube that show the process. Don’t guess this figure or your machine may not work very well or not at all.

Step 2 Parallel port config for TB6560

This if for a Chinese 4 axis TB6560 often called the blue board, like the ones below from Amazon. If you are using something else then check your documentation

1Nema23 Breakout Board and TB6560 drivers4 Axis TB6560 Controller Board Amazon US
Amazon UK
1CNC-DIY-Parts-4-Axis-Tb6560-Stepper-Driver-4x-Nema23-Motor-Software-LPT-Cable 4 Axis TB6560 Controller Board
All in one with power supply.
Drivers all on one board usually cheaper
Amazon US
Amazon UK

Set the pins as below. If you’re not using home and limit switches then set pin 10 to unused.

LinuxCNC ports foam cutter
LinuxCNC ports foam cutter

Step 3 Axis Configuration

I’m using 10mm x 1.5 pitch threaded rod for the lead screws and have found that Maximum Velocity set at 4.5 works well, any higher and steps get missed. But using the Test this axis button you can fine-tune your settings.

My machine has an X and U travel of 600mm and a V and Y of 300mm. Set the dimension to suit your machine.

The settings below should be a good basis to get your machine working but you may need to fine-tune when testing your axis.

linuxcnc x axis

Set the Y-axis

LinuxCNC stepconf z axis foam cutter
LinuxCNC stepconf y axis foam cutter

The Z-axis will become the U axis

LinuxCNC stepconf z axis foam cutter
LinuxCNC stepconf z axis foam cutter

The A-axis in the stepconf wizard assumes you are using a rotary axis, but just ignore the deg labels and set as below. We will amend the config file to change it to a linear axis later. This becomes the U axis.

Now we are done with the stepconf wizard. and you should have a launcher and a folder with your config.

Editing the ini files for foam cutting

I’ll include my ini files which you can download and use. Use a text editor, MousePad is the LinuxCNC default applications for this and works fine.


LinuxCNC foam cutter hal file 4.54 KB 359 downloads

Hal file to work with 4 axis foam cutter and TB6560 all in one board confgiured with…

LinuxCNC foma-cutter.ini 2.53 KB 388 downloads

This is the foam cutter ini file for a 4 axis TB6560 …

On the desktop, you should have an icon that corresponds to your machine name


I called mine foam-cutter, so open this folder and double-click on foam-cutter.ini. Make a copy first just in case you need to go back.

Add the following lines to the [DISPALY] section

FOAM = 1
OPEN_FILE = ./foam.ngc

Find the [TRAJ] section add change to this:

AXES = 9

Seems odd to have 9 Axes in this but its to do with the way the axes are referenced

Now change Axis 2 and 3 to 6 and 7

Change [AXIS_2] to [AXIS_6] 
Change [AXIS_3] to [AXIS_7]

Change Axis 7 to Linear


Save this file

Now we need to make a couple of changes to the foam-cutter.hal. Once again make a copy and change as below. Use Find and Replace in the editor, Usually called MousePad in LinuxCNC

Change [AXIS_2]  to [AXIS_6]
Change [AXIS_3]  to [AXIS_7]
Change axis.2. to axis.6.
Change axis.3.  to axis.7.

Save your file.

Now you should be able to launch your configuration. Double click on the Launch Foam Cutter or you can use the Config Picker from the CNC menu.

Image below shows how it should look with a g-code file loaded in.

wing gcode linuxcnc

If you plan to cut wings that have are large sweep angle, so the root is much bigger than the tip then I advise you to use Jedicut to generate the g-code.  With David’s software LinuxCNC only calculates the feed on the XY so when to try to cut the opposite wing with the root on the UV inside it causes this axis to run very fast and ruin the foam.

I’ve just discovered this issue in building a BAE Hawk wing.  If you can afford DevWing Foam 2 then this the best option as it uses a G93 g-code to compensate for this and LinuxCNC works fine with this option.  Mach3 seems to compensate for this and my g-code for the right-wing came out perfectly.

Sample g-code

This g-code was generated by Wing Cutter in Gcode from It uses a Clark-y airfoil and has a root chord of 250mm. This can be loaded into LinuxCNC and you should see a similar image to the one above.


G-code for Clarky 250mm Root chord wing – LinuxCNC 4.28 KB 506 downloads

This g-code accompanies the article on using free soft “Free CNC software to make…

You may have to experiment with current and feed for your hot wire. I use very thin Ni-Chrome wire about 0.4mm and the iCharger 206B with a foam cut option.  All the iChargers have this option and you can you most chargers with a NiCad mode. Start at around 2 Amps and then adjust until you get a good cut without the wire dragging or burning away to much foam.

Here is the video showing all the steps above.

My foam cutting playlist including Jedicut


Using free CNC software to make foam wings is really quite easy but I still use Mach3 sometimes just to keep my hand in. The Axis display for foam cutting on LinuxCNC is very good and in my opinion much better. I have upgraded to DevWing Foam2 for generating g-code, it’s not free but well worth the money in my opinion.

6 Responses

  1. Nathan Knight

    Thank you very much for putting the time in to these articles. I have all my parts and am going to start building it in the next couple weeks.

    • Keith

      Hi Nathan
      Thanks, I learnt a lot myself. Video is in progress had to re-shoot some parts today.
      Let me know how it goes on your build.

  2. Jeff Garland

    I notice on your display that the tip and root airfoil are spaced fairly wide apart as they should be for a normal wing. When I load your sample gcode in my setup (built following your excellent instructions), the foils are close together. I have tried by setting the correct spacing/wingspan using devWingFoam and it still shows close together.

    I tried this last year and was close but never got it to work. I found your instructions and it worked perfectly first time.

    How did you get them to show the correct separation?


    • Keith

      Hi Jeff
      Are you using inches or mm I use the metric so maybe thats causing it. Can you send me a screen shot if that doesn’t do it.


  3. Jeff Garland

    I can’t see how to attach photos to this response. It is set to mm and it shows the two foils 38.1 mm separated. Everything else looks right and it seems to run the gcode correctly although I haven’t hooked up to the machine yet.

    It may look bad for my machine anyway since my towers are about 48″ apart and the wings may get that big as well. It’s ok of course for constant chord wings but may be unusable for tapered wings.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.