1. The board
| Board | BigTreeTech SKR Pico v1.0 (RP2040), 4 TMC2209 drivers |
| Firmware | grblHAL — HotWire4X variant |
| Axes | 4 — XYZA |
| Link | USB, virtual serial port, 115200 baud |
| Power | USB for flashing, POWER terminal block 12–24 V for operation |

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:
- 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.
- 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.
- 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):

- Or 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:

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:

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:

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)
-
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.
-
Install the USB jumper and the bootloader jumper in the center of the board, then connect the USB cable to the computer:

-
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.
-
Drag (or copy) the firmware file into this new window (click + drag):

-
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.
-
Unplug the USB cable.
-
Remove the center jumper from the board (bootloader).
-
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.

- If everything went well, you should see the right firmware/board name displayed (HotWire4X SERVOS or HotWire4X HB):

→ The current firmware versions are on the Downloads page.
- 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:

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

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.

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

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.

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 it | Why it is useful |
|---|---|
| A “wire live” warning light | A 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 fan | It 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:
- Go to the menu
Machine > Machine configuration…to open the Machine Configuration window. - 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.

- 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.

- 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.

- 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:

If you have trouble understanding the settings, take a look at the coaching I offer and/or refer to the software’s user manual.
- Once the settings are entered, click → Save & Convert ↓ to generate the interface’s configuration instructions:

-
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.
-
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.

- 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
$Ito check that you have the right firmware).

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.

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).

- 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.
-
Move the carriages on all the axes by hand to put them roughly mid-travel (to avoid jamming against the end stops).
-
Speed: 4 mm/s. Distance: 10 mm. Tick the X1+ direction on Side 1 and press GO.

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.
- When an axis is right, move on to the next one.
9.3 Adjusting the resolution
-
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).
-
Make a 100 mm movement in X1+ in the software and measure the actual distance.
-
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.
-
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.
-
Repeat on Y1, X2, Y2.
9.4 Adjusting the wire’s maximum electrical power
-
Check that the wire is completely clear, touches nothing, and that its electrical insulation is perfect from the rest of the machine.
-
Set the power to 10% and start the heating by clicking ON. Along the way, the LED on the
FAN1connector 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.

- Increase the heating in 5% steps using the +5 button.

-
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.
-
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
-
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.
-
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

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.

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:


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!