Milling with bCNC

last updated: 06/04/20


As stated on the github page from Vasilis Vlachoudis bCNC is a GRBL CNC command sender, auto-leveler, g-code editor, digitizer, CAM and Swiss army knife for all your CNC needs.

bCNC is written in python and so runs on Linux, Mac and even Windows :). I use here the most recent version 9.14-dev.

An important page for information is the bCNC Wiki.

As a memo I enumerate already here the different work steps needed to mill a piece in bCNC. The steps are explained in detail in the following project.


Work steps in bCNC

Install bCNC

Download bCNC from and extract the zipped file. Read on git how to install it. On my Kubuntu I chose not to install it but changed to the bCNC subdirectory and started the program with


(If tkinter is missing you can install it with sudo apt install python-tk).

Configure bCNC

First I needed to customize the program because of it's tiny icons and font size. In the CAM tab there is a Config icon, displaying the Machine configuration for bCNC parameter. Here we find a checkbox to double the icon size.

Other important settings are:

The other settings can remain with the default values.

More infos about the configuration parameter can be found on github

Screenshot bCNC Config

The Fonts icon helps to get a bigger font.

Screenshot bCNC font

For more config parameter you can edit the User File, normally locatet in the home directory under .bCNC.

Screenshot bCNC config file

Changing GRBL parameter with bCNC

Tweaking the different GRBL parameter for a milling machine can be done with a terminal program, but it is much more comfortable to use a GUI program like bCNC.

Click on the Controller icon. The following parameter have to be changed for a Stepcraft D840 mil. The other parameters stay on default values. For more informations on the parameter for your machine you can look in the GRBL wiki.

Screenshot bCNC controller

After changing the parameter you have to click on Controller to upload the data to GRBL.

Waving Makey: a first little project

I want to use the waving Makey from adafruit. I eliminated the gaps in Inkscape, used the union function to get one object and finally converted the object to a path. Find the file at the bottom of the page.

waving makey

Now we open the file in bCNC. In the Editor tab we move the drawing into our workspace (yellow rectangle) using the move icon. It is also a good idea to rename the different gcode blocks (subprograms) and perhaps to change their order to get a better workflow (outline to the end). The express rides of the tools can be enhanced further with the optimize function in the subtab Order. Select all the hole blocks and use this function.

Screenshot bCNC editor gcode

The next steps are to define the cutter, the material and the stock. We will add these to the database of bCNC. Click on End Mill in the CAM tab and then on the Add button. This adds your tool to the database (saved in ~/.bCNC). The most important setting is the diameter. I will use a 1 mm spiral diamond toothed cutter.

Screenshot bCNC cam mill

In the material window (Material + Add) we add our material (plywood birch) and choose the feed rate (see feed_rates), the plunge feed (z-axes speed) and the depth increment.

As I use 4 mm plywood (poplar or birch) for this project I can calculate the feed rate approximately from the material and the used cutter. The calculations are shown here: A rule of thumb says that the maximum increment of depth for cutting is the double of the cutter diameter. Here we chose 4/3 = 1.4 mm, so the job is done in 3 passes.

Screenshot bCNC cam material

The stock window (Stock + Add) is needed to define the safe Z distance for moving above the stock and the thickness of the stock.

Screenshot bCNC cam stock

Now we define the cutting profile. Mark all hole blocks in the Editor tab and then click on Profile in the CAM tab. Choose inside and click on the Profile button above the window.

Screenshot bCNC profile

After this we see the blue cutting lines lying inside the outline lines.

Screenshot bCNC profile

Then mark the outline block (Editor), switch back to Profile (CAM), choose outside in the Profile window and click a second time on the Profile button.

The blue cutting lines of the Makey outline lie outside our project.

Screenshot bCNC profile

Mark all the cutting lines in the Editor, go back the CAM tab and click on the Cut icon. Here we choose a ramp as cutting strategy with a ramp length of 2 mm.

Screenshot bCNC cut

Click on the Cut button! In the isometric view we now see the cutting path.

Screenshot bCNC makey cut

Adding Tabs

If you don't have a vacuum table, it is important to add "Tabs". They will be left uncut to hold the part in place after cutting. This prevents the user from being hurt by projectiles and the braking of the thin cutter. In bCNC (>1.11) tabs are round.

To add Tabs we mark one or more blocks of gcode in the Editor. In the CAM tab click on the Tabs icon.

Screenshot bCNC tabs

Depending on the dimensions of the cutting part we choose the number of tabs and the width of the tabs. For the Makey eyes e.g. I choose 3 tabs (Number of tabs) with 2 mm in diameter (Width), for the outline 6 tabs with 5 mm. The Height is counted from the surface of the working piece (Z = 0), so it has to be negative. For an 1 mm tab in a working piece of 4 mm we need to set the Height to -3 mm (better choose 1.5 mm!)

Click the Tabs button. Now you see the tabs (located on Z = 0)! To modify the cutting path we need to cut the tabs from the path. Open the Cut window. It's important to check the Leave islands uncut box in the Cut window. Now click on the Cut button. The result for an Makey eye should look like the following image:

Screenshot bCNC tabs iso

Screenshot bCNC tabs isoMakey eye tabs

Position your cutter and click on XYZ=0 in the Control tab. Click on Start :).

Consolidate: A stand for Makey

Get the Incscape file (Downloads) for the stand an repeat the different steps from above. Use an overcut for the two holes (in the Profile window).

waving makey

Makey stand