Hot wire CNC cutting 20+ years of practice
Hot wire CNC cutting20+ years of practice

BTT SKR Pico v1.0 — firmware and wiring

1. The board

BoardBigTreeTech SKR Pico v1.0 (RP2040), 4 TMC2209 drivers
FirmwaregrblHAL — HotWire4X variant
Axes4 — XYZA
LinkUSB, virtual serial port, 115200 baud
PowerUSB for flashing, POWER terminal block 12–24 V for operation
A BigTreeTech SKR Pico v1.0 board with no jumper installed.
The BTT SKR Pico v1.0 with no jumper installed, USB-C cable connected.

2. Why a recompiled firmware

Existing firmware always lacked something to be a perfect fit for hot wire cutting. That is why I compiled this version, which provides:

  1. A heating PWM output that does not go straight to one of the board’s MOSFETs, because you need to be able to use an external heating controller to power the wire of a real hot wire CNC — not a narrow table — at the voltage it needs (usually 48 V in hobby practice), not just the SKR Pico’s 24 V maximum.
  2. A STOP button that stops the movement AND cuts the heating, wired to the board’s “door” input (originally meant for the guard door of a machine tool): the movement slows down to a stop, the heating cuts out, the motors stay energized and the wire position stays exact. It has the same effect as the STOP button of the Cutting tab.
  3. Push buttons set to “normally open” by default, because we are talking about hobby practice and low-power machines, and this gives you an interface that does not go into an error state at power-up. (You can switch to “normally closed” and industrial logic from the HotWire4X settings window.)

⚠ The STOP button is not an emergency stop: it does not cut off any power supply. Your machine must have a true emergency stop, which cuts off the power to the motors and to the heating.

3. The heating architecture: the point not to miss

To heat the wire, you can find plans on the Internet for hot wire cutting machines that use the power stage intended for a 3D printer’s heated bed (= you connect the cutting wire to the terminal marked HB on the SKR Pico, and you have a single power supply for motors + board + wire heating).

It is tempting because it is simple, but the problem with this setup is that this power stage is designed for a supply voltage of 24 V maximum.

At that voltage, the available power only allows narrow machines and/or very slow cutting speeds, or machines that cannot use everything 4-axis cutting has to offer (the wire is too short to go into a wide diagonal).

It will work in a demonstration, but if the goal is real 4-axis aeromodeling and/or cutting extruded polystyrene and EPP at reasonable speeds, it will often be disappointing.

So the heating control PWM signal had to be brought out on an easily accessible output of the board, in order to drive a separate power stage, supplied at 48 V, and get enough heat for a machine that uses 4-axis cutting on a table up to 1 m wide.

Such a setup also allows the heating to be opto-isolated from the SKR Pico’s microcontroller. It requires 2 supply voltages, usually 12 V for the motors and 48 V for the wire heating.

After some thought, I compiled two firmwares:

3.1 The firmware for external heating

Firmware name: “SKR Pico v1.0 HotWire4X SERVOS - R.ILTIS”
It is intended for wide 4-axis hot wire cutting machines (usually more than 45 cm of table width), with a separate heating power supply and controller.
It exposes the 3.3 V PWM signal (meant to drive the heating) on pin IO29 of the SERVOS connector of the board. It also provides points 2 and 3 above. There is no longer any power output on the HB connector.
→ This is the SERVOS firmware on the Downloads page!

With this SERVOS firmware, you have two options for the power supplies:

  • Either two separate power supplies (typically 12 V and 48 V DC in hobby practice):
Wiring diagram of the BTT SKR Pico with two power supplies and an external heating controller.
Wiring principle with two different power supplies.
  • Or one power supply for the heating, and a converter for the motors and the board:
Wiring diagram of the BTT SKR Pico with one power supply, a converter and an external heating controller.
Wiring principle with one power supply for the heating and a converter for the motors and the board.

3.2 The firmware for on-board heating

You may want a “portable” or “desktop” machine (I have built several, the first one in 2004 — it’s fun 😀), and for that, letting the board manage the heating is enough.

Firmware name: “SKR Pico v1.0 HotWire4X HB - R.ILTIS”
It is intended for narrow machines, powered at 12 V or 24 V depending on the wire length.
It keeps using the board’s MOSFET to manage the heating power and lets you connect the wire directly to the HB output.
→ This is the HB firmware on the Downloads page!

With this HB firmware, you use a single power supply between 12 V and 24 V:

Wiring diagram of the BTT SKR Pico with a single power supply, for narrow tables.
Wiring principle with a single power supply for the heating, the motors and the board (narrow machine, short wire).

It’s up to you to choose which of the two firmwares covers your needs.

4. Powering the microcontroller: CAUTION

You can power the SKR Pico’s logic from the USB cable to flash the board and check that the software recognizes it.

To do so, install the jumper at the top right:

A BigTreeTech SKR Pico v1.0 board with the USB jumper installed.
The BTT SKR Pico v1.0 with the USB logic-power jumper.

One of the nice things about this board is that the motor drivers can be set from the G-code settings: no jumpers, no multimeter with a formula you can never find.

BUT THIS SETTING OF THE MOTOR DRIVERS’ CURRENT AND MICROSTEPS IS NOT AVAILABLE WHEN THE BOARD IS POWERED OVER USB

To be able to set the drivers, the board must be powered through the motor power terminal block at 12 V to 24 V, even if no motor is connected.

The board has built-in regulators that deliver the right voltage to its various components. The motor + board power terminal block is at the bottom right:

A BigTreeTech SKR Pico v1.0 board powered through the motor terminal block.
In production, the BTT SKR Pico v1.0 must be powered through the 12–24 V motor + board terminal block.

The USB power jumper is very useful for:

  • flashing the firmware (= transferring it into the board),
  • and testing that HotWire4X recognizes the board,

but not for setting the motor microsteps and current (it will be refused, not taken into account), and not for running the machine.

5. Flashing the firmware (= transferring the new firmware into the microcontroller)

  1. Download the firmware you chose and show it in your file explorer. It will be either grblHAL_SERVOS-HotWire4X.uf2 or grblHAL_HB-HotWire4X.uf2.

  2. Install the USB jumper and the bootloader jumper in the center of the board, then connect the USB cable to the computer:

A BigTreeTech SKR Pico v1.0 board with the USB and bootloader jumpers.
Install the USB and bootloader jumpers, THEN connect the USB cable to the computer.
  1. A second file explorer window opens on the computer, showing the files “INDEX.HTM” and “INFO_UF2.TXT” that live in the interface’s memory.

  2. Drag (or copy) the firmware file into this new window (click + drag):

Screenshot of the file explorer with the firmware being copied for flashing.
Copy the firmware onto the “RPI-RP2” drive that holds the interface’s files.
  1. The transfer takes place: the file appears briefly, then disappears (the board restarts by itself), and you are back to the same files as in step 3.

  2. Unplug the USB cable.

  3. Remove the center jumper from the board (bootloader).

  4. Plug the USB cable back in and test that HotWire4X recognizes the board: start the software, select GRBL type on the start screen and click Find interface.

HotWire4X start screen with the GRBL selection button and the interface detection button.
Start the search for the GRBL interface.
  1. If everything went well, you should see the right firmware/board name displayed (HotWire4X SERVOS or HotWire4X HB):
Interface version displayed in the HotWire4X software.
In the example above, the SERVOS firmware was installed. The board can now work with HotWire4X.

→ The current firmware versions are on the Downloads page.

  1. The next point is very important: you must install the STOP button routing jumper, see §6.

6. IMPORTANT: install the STOP button routing jumper

On the board, the STOP button must be wired between pin IO22 and ground GND. But the connector that carries IO22 has no ground pin. It is made up of P_S | IO22 | PROBE (all these markings are on the underside of the board).

The solution for clean wiring is to install a jumper between pin IO22 and the PROBE pin right next to it, which routes the STOP button to the connector marked PROBE | GND:

Location of the STOP button routing jumper on the BTT SKR Pico v1.0 HotWire4X board.
This jumper must absolutely be installed on the board to route the STOP button to the right connector.

Here is what it looks like on the underside of the board (I drew the jumper in red and also marked the PWM output):

Location of the STOP button routing jumper on the underside of the BTT SKR Pico v1.0 HotWire4X board.
The two pins marked PROBE are connected by the board’s printed circuit. The STOP button will be connected to the PROBE|GND connector. The PWM output is on IO29.

7. Complete wiring

7.1 Wiring with external heating

Here is the complete wiring when using the SERVOS firmware: motors, 12–24 V power supply, PWM output (on IO29| |GND) and STOP button (on PROBE|GND).

The Pause (on T0) and Resume (on R0) buttons are optional: physical ones are of no real use, since HotWire4X has them on screen (Pause and Resume). If you want them anyway, they share the single GND ground of the connector normally used for a display.

Photo showing the complete wiring of the BTT SKR Pico v1.0 for hot wire CNC.
Limit switches are not shown: they are not needed in hot wire CNC cutting when the machine is designed properly.

Here is an example of connecting the STOP button and the PWM output to the external heating module (SERVOS firmware):

Photo of the STOP button and the PWM output actually wired to the BTT SKR Pico v1.0 for hot wire CNC with external heating control.
The big red button is the STOP. The two small buttons, Pause and Resume, are optional; note their common ground.

7.2 Wiring with on-board heating

Here is the complete wiring when using the HB firmware: motors, 12–24 V power supply, heating wire connected to the HB terminal block and STOP button (on PROBE|GND). Pause (on T0) and Resume (on R0) are optional, as in §7.1.

Photo showing the complete wiring of the BTT SKR Pico v1.0 for hot wire CNC with on-board heating control.
Careful: in this configuration you will probably need to add a cooling fan for the board, to remove the heat from the MOSFET that chops the heating current.

7.3 The “heating on” output (FAN1 connector)

The firmware switches on the FAN1 connector at the same time as the heating: the LED next to the connector lights up as soon as the heating is commanded, and goes out when it stops. This is normal, not a fault.

This output is on/off only: it does not follow the power (it is the same at 1% and at 100%), it only says “the heating is commanded”. It is switched by one of the board’s MOSFETs on the motor power rail (12–24 V), like the other FAN and HE outputs.

So you get an automatic “heating on” contact, with no setting and no G-code to add: just connect the load to FAN1, between V+ and OUT.

What you can connect to itWhy it is useful
A “wire live” warning lightA hot wire looks exactly like a cold one. A light that comes on with the heating is real safety — for you and for anyone walking past the machine.
A fume extraction fanIt starts and stops exactly with the heating, without you having to think about it.
A MOSFET cooling fan (HB firmware)Same principle: it only runs when the board is actually heating the wire.

⚠ The load must be rated for the voltage of your motor power supply (12 V or 24 V depending on your machine).

⚠ Respect the output’s rating: it only accepts a modest current. For a larger load, go through a relay or a MOSFET module driven from FAN1.

ℹ️ If you already use FAN1 for something else, remember that it is switched every time the heating is turned on and every time it is turned off.

8. Setting up the interface in HotWire4X

HotWire4X includes templates for the interfaces presented on this site.

This makes setup quick: you start from the template, then go through the values to adapt them to your actual machine.

Using a template:

  1. Go to the menu Machine > Machine configuration… to open the Machine Configuration window.
  2. Click the drop-down list, choose the “BTT SKR Pico v1.0 - @template - GRBL” template, then click Add to create a new machine based on this template.
The drop-down list of templates and the Add button.
Templates are marked with the @template nickname and cannot be deleted.
  1. Enter your machine’s name. Use a meaningful name that lets you recognize it (not the name of its interface); you have 16 characters for that. Then OK.
Example of entering a machine name.
You can give it a nickname too 😉.
  1. You can already click the Machine, Interface, Axes, Safety, Heating and material, Workflow tabs to see what they contain. But to be able to change the values, you first have to click the ↓ Modify / Test ↓ button.
The top of the Machine Configuration window: an arrow points to the "↓ Modify / Test ↓" button, a frame surrounds the tabs.
The Modify / Test button unlocks the fields of every tab.
  1. Now you can change all the settings in all the tabs. And you can bring up a window explaining every field by clicking the Help button:
The Help button opens the field guide window next to the configuration window.
The Help button opens a window that explains each setting.

If you have trouble understanding the settings, take a look at the coaching I offer and/or refer to the software’s user manual.

  1. Once the settings are entered, click → Save & Convert ↓ to generate the interface’s configuration instructions:
The Save & Convert button.
Each setting comes with a small (i) symbol. Hover over it and you get the meaning of the setting.
  1. Check all the ”$” settings in the list. If one does not look right, change the corresponding content in the tabs, then click → Save & Convert ↓ again.

  2. Once the settings are right, it is time to transfer them into the interface (which must be connected). To do so, click Transfer & Test ↗ at the bottom of the list.

The Transfer & Test button.
Once the settings are transferred, you are ready to test how your machine works.
  1. At the bottom of the column you can watch the exchange of information between the software and the interface, and you can send your own G-code instructions by checking the ☑️ Expert box + Instruction + Send (for example, you can send $I to check that you have the right firmware).
The communication area for sending instructions to the interface.
As its name suggests, this is a field to handle with care 😉.

9. Tests and adjustments

This is the moment of truth: power up your machine — you are going to use the test panel (the right-hand column of the window) to test the axis movements so that they match the diagram below. Then you will test the heating.

Diagram of the axes in HotWire4X.
The axes are numbered and oriented this way in HotWire4X.

9.1 Preliminary checks

  • Green status light in the button with the USB symbol (1, see below).
  • In the test panel, the status light must show Idle (2).
The conditions that allow movements in HotWire4X: the green dot of the USB button (1), the Idle state (2) and the limit switches (3).
The limit switches (3) are triggered, but since they are disabled in the settings (greyed out), this does not prevent movement.
  • If the limit switches are enabled (box ticked), their lights must be grey for movements to take place.

⚠ If it does not work straight away, you may need to do a full power cycle (unplug everything, wait 5 seconds, plug back in), then Find interface again.

9.2 Adjusting axis pairing and direction

You are going to test the movements axis by axis and, if needed, correct the order of the letters and the direction of travel in the Axes tab so that they match the diagram in §9 above.

  1. Move the carriages on all the axes by hand to put them roughly mid-travel (to avoid jamming against the end stops).

  2. Speed: 4 mm/s. Distance: 10 mm. Tick the X1+ direction on Side 1 and press GO.

The movement test panel in HotWire4X.
For now, test one axis after the other.

The movement must happen on the right axis and in the right direction (see the diagram in §9). If it does not, change the settings (axis letter and direction) until it is right.

⚠ After every change, you must click → Save & Convert ↓ then Transfer & Test ↗ again to update the settings in the interface.

  1. When an axis is right, move on to the next one.

9.3 Adjusting the resolution

  1. Tape a steel rule, a tape measure, etc. along the X1 axis and bring the wire to 0 (or simply make a pencil mark to set the start of the movement).

  2. Make a 100 mm movement in X1+ in the software and measure the actual distance.

  3. If there is a big difference (say you ask for 100 mm and it moves 50 mm), the “Microsteps” field is probably wrong. Correct it.

  4. If there is a small difference, adjust the “mm / revolution” field by applying a simple proportion and testing until you get exactly the requested movement.

  5. Repeat on Y1, X2, Y2.

9.4 Adjusting the wire’s maximum electrical power

  1. Check that the wire is completely clear, touches nothing, and that its electrical insulation is perfect from the rest of the machine.

  2. Set the power to 10% and start the heating by clicking ON. Along the way, the LED on the FAN1 connector should light up — and go out when you switch the heating off (see §7.3).

ℹ️ You may see the heating jump very briefly to 50% before dropping back to 10%. This is normal: it comes from the procedure that lets the heating be adjusted during a movement.

The heating test panel in HotWire4X.
The procedure I suggest starts at 10% to allow for narrow tables. On a wide table you can start at 50%.
  1. Increase the heating in 5% steps using the +5 button.
The heating adjustment panel in HotWire4X.
In HotWire4X, you can vary the heating in steps of 5% and 0.5% during a movement or a pause.
  1. The goal here is to find the maximum electrical power the wire can take without melting it. Watch its colour: when it turns “cherry red”, do not go any further, or it may melt and break.

  2. Enter this value in the “Maximum Electrical Power” field of the Heating and material tab and repeat the → Save & Convert ↓ then Transfer & Test ↗ procedure. This changes the heating scale directly in the interface: even if you display 100% heating, the electrical power will be spread over the new scale and you will not melt your wire.

9.5 Testing the STOP button

  1. Switch the heating on (§9.4), start a long move (§9.2, for example 100 mm) and press the STOP button: the movement slows down to a stop and the heating cuts out. HotWire4X hands control back to you at once, with no window, and the board accepts the next command.

  2. If you wired Pause and Resume, make another move and test Pause then Resume: the movement stops, then picks up where it left off.

10. Validate and cut

When everything is right, make sure to save your settings. To do so, click:

  • ↑ Save and select or create another machine ↑
  • or/then Save & Exit
The buttons for saving the settings.
Avoid closing this window with the X: you will get a safety message, but that is not the right way.

You are now ready to cut. For example, you can go back to the home screen with the ⬆️ button at the top right, start again, and click Load the example on the welcome sticky note.

The HotWire4X welcome sticky note.
This sticky note can be turned off in the software settings.

Then change the value of a chord and go to the Cutting tab to see the result. And click the button in the Simulation frame to watch the cut being simulated:

Importing a NACA2412 into HotWire4X.The cutting simulation in HotWire4X.
Zoom with the mouse wheel, and rotate the view by clicking the mouse wheel.

To run a real cut you need a licence: see here which one suits you.

Enjoy your machine and HotWire4X, launch some crazy cuts, and share your projects on cncpartage.fr!