CNC Router V-Carving With All Open Source Software




Introduction: CNC Router V-Carving With All Open Source Software

About: Chip's Wood Shop is all about rewarding and enjoyable woodworking projects and ''use what you have''solutions to make all kinds of fun and useful things. We are a participant in the Amazon Services LLC Associ…

When you use a V-shaped router bit to engrave, it's called “v-carving”. The bit can cut horizontally to trace the outlines of shapes. By drawing the bit up and out as it moves horizontally along the surface, you can also make sharp points. This instructable presents a set of open source tools you can use for CNC programming, simulation and control of v-carving. I use Linux for all of these but many of them are available for Windows as well.

Watch the video linked above for a quick overview, then see the step-by-step instructions that follow below.

Before you start, be aware of woodworking and power tool safety.




You can use the same computer for both CNC control and programming, but I have a separate old P4 32 bit computer that was collecting dust, which is now dedicated to controlling the CNC router. I run Ubuntu Linux on a 64-bit refurbished PC using the CAELinux distribution, which comes loaded with some great engineering tools. It can be downloaded as a bootable DVD image.

Step 1: Download F-Engrave

The first thing that you need to do for engraving is to define the image you want to engrave. In this example we're going to engrave a sign with some words using a serif font in a great open source program called F-engrave.

Download the latest version of F-Engrave here.

The author of F-Engrave has published great installation instructions: (click here).

There are executables for Windows users. If you use Linux like I do, the instructions are easy to follow.

Step 2: Install F-Engrave

I downloaded version 1.65, but if you download a more recent version, put your new version number wherever you see "1.65" in these instructions. After I put my F-Engrave-1.65_src files in a folder called "/home/chip/F-Engrave-1.65_src/" (because my user name is "chip"). To run F-engrave, you just type "python" in the terminal window. I made a desktop shortcut to run the command "python /home/chip/F-Engrave-1.65_src/".

Step 3: Setup F-Engrave

I recommend installing the "ttf2cxf_stream" and "Potrace" applications described on the F-Engrave setup instructions, too. These let you use truetype fonts and bitmap images to create toolpaths.

Step 4: Download Font

Google Fonts provides us with a great library of fonts of all kinds. I like the look of this one called PlayFair, so I download it.

Step 5: Install Font

On my machine, the path to my truetype fonts is "/usr/share/fonts/truetype". This requires super user rights to add files, so go there and open a terminal window and type:

$ sudo mkdir PlayfairDisplay

[enter password]

$ cd PlayfairDisplay

$ sudo mv ~/Downloads/PlayfairDisplay/*.* .

Replacing the path with the location where you saved your font files.

Step 6: Run F-Engrave

Run F-Engrave from the shortcut or type "python" in the terminal window.

I go to the “settings” menu, and pick “general”. I switch to mm for my metric friends and choose my new PlayFair font family.

Step 7: Enter and Format Text

Now I can choose a font from this family and see how it looks by typing in my text. I want my text centered and 25 mm tall. I can also adjust things like horizontal and vertical spacing and set the origin to the lower-left, or wherever I like. I want to use v-carving to make the sharp points at the ends of the letters, or serifs, so I switch “engrave” to “v-carve”.

Step 8: Calculate V-Carve Toolpath

Next, I go to the “settings” menu, and pick “v-carve”. My v-bit is 90 degrees. There are many other settings here that are very well-documented on the F-engrave web site, but I'm happy with the defaults for this sign. Now I calculate the v-carve toolpath and click the check box to display the carved area as the path is calculated. Don't forget to set your feed rate, but if you do, you can edit the g-code later. Save the g-code where you like and you're done with F-engrave.

Step 9:

Now, like in my last Open-Source CNC instructable, I use CAMotics to simulate the path and make sure it looks good to me. I open my g-code file and define the tool as a v-bit. I run the simulation and spin the result around and make sure it looks right.

Step 10: Run CNC

Now I’m off to the CNC with my g-code file. I run my home-made CNC router with LinuxCNC. I load my g-code and check the min, max and total range of x and y values on the display. I recommend you give your sign a coat of polyurethane prior to carving, which will seal the surface and act like a mask so you can stain or paint the letters with a contrasting color later. I touch-off x and y in the lower left corner where I want my text. I touch-off z at the surface. I use a sheet of paper under the bit to feel when it grabs to zero the z axis. Now I crank up my router and go!

Step 11: Finish the Sign

Since I started with a coat of polyurethane, it's easy to add stain of contrasting color. After I get the color into the letters, I wipe uniformly over the whole surface, the let it dry according to the manufacturer's directions.

Step 12: P.S.

If you like this style of step-by-step instruction, please share with others and subscribe, so you'll be notified when I post more. If you have questions, please post them in the comments. I will try to answer and probably update the instructions, too. Read about more of my woodworking projects and tools at

Be the First to Share


    • Stick It Challenge

      Stick It Challenge
    • Wearables Challenge

      Wearables Challenge
    • Home and Garden Contest

      Home and Garden Contest



    4 years ago

    Okay, so, this is criticism, but it's not meant to be mean-spirited.

    What happened with the shape of the letters? V-carve toolpaths should be crisp and clean. The Playfair font has clean lines, but the letters that came out of your router are amorphous and jagged. You can see where each of the lifts / plunges / direction changes happened. Does this come from the software? Or is it something to do with flexibility in the spindle mounting or something else with the hardware setup?

    The attached screenshot shows what I mean. When you look at the areas that I circled in read, you can see places where the cutter didn't retract far enough (the tail end of the 'e' for instance) or where it carried on too far in a direction without lifting up (the arch of the 'n', the tops of the 'v' and 'y', and several other places), and where it didn't go deep enough, or took 2 separate shallow paths rather than one deep one, and left extra material behind (the center of the 'g').


    Reply 4 years ago

    Thanks for taking such a close look! What you're seeing is not from the software. Almost all of it is due to the low stiffness of my z-axis in the y direction. I made a new design for it that I haven't built yet. The mark at the end of the "e" is a scratch made by me, not the CNC. Also, I zeroed z slightly below the surface.


    Reply 4 years ago

    Gotcha, thanks. Good luck with your redesign. Hope it comes out well. I've redesigned my spindle mounting a few times. Took a while to get things really set nicely the way that I wanted them.

    On the zero below surface, that's a thing that I do sometimes as well, especially if I want to paint the letters in but use a clear varnish on the surface of the carving. I'll set the zero to 20-30 thou deeper than the top face, cut everything, paint it, then go back over it and face off the surface.

    Nice instructable. V bits are awesome and you can use them to make boxes out of a flat panel so the sides fold over at 90 degrees and can be glued together. Now just tell me where to get an Instructables Robot shirt or patch and nobody gets hurt.

    v bit router boxes b.JPG