> For the complete documentation index, see [llms.txt](https://delta-robotics.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://delta-robotics.gitbook.io/docs/software/firmware-updates.md).

# Firmware updates

Update the firmware on your TF Node Controller with the recommended TF Node Updater tool, or flash it yourself from the public repo with PlatformIO

## Goal

Bring the firmware on your TF Node Controller into the range the ThermoFlex Python API supports. The library targets firmware **1.1.1** to **1.1.2** and warns you on discovery when a node falls outside that window.

Two paths do the job. Most users should take the TF Node Updater. Choose the developer path only if you want to build and flash firmware from source.

## Before you start

* Connect the TF Node Controller to your computer over USB.
* Know which serial port it uses (for example `COM4` on Windows, or `/dev/ttyACM0` on Linux).
* Close any program that holds the port, such as a serial monitor or a running script.

## Update paths

{% tabs %}
{% tab title="TF Node Updater (recommended)" %}
The TF Node Updater is a cross-platform desktop tool for flashing TF Node Controllers. It detects your operating system, checks the firmware installed on the connected node against the latest release, then flashes and verifies the new firmware for you.

To use it you need:

* A USB connection to the Node.
* An internet connection, so the tool can fetch the latest release.
* Administrator rights, so it can access the serial port and write firmware.

Download the tool from the Delta Robotics GitHub organization and follow its on-screen prompts.

<a href="https://github.com/Delta-Robotics-Inc" class="button primary" data-icon="github">Delta Robotics on GitHub</a>

{% hint style="info" %}
The eval-kit tutorial walks through the updater step by step. See [Update library and firmware](/docs/tutorials/thermoflex/getting-started-with-our-evaluation-kit/update-library-and-firmware.md).
{% endhint %}
{% endtab %}

{% tab title="Developer path (PlatformIO)" %}
The firmware is open source in the public `TF-Node-Firmware` repository. It builds with [PlatformIO](https://platformio.org/) and targets the Arduino Uno R4 Minima board, configured for the TF Node PCB shield. The board settings live in the repository's `platformio.ini`.

Clone the repository, then build and upload from its root.

```bash
git clone https://github.com/Delta-Robotics-Inc/TF-Node-Firmware
cd TF-Node-Firmware
pio run -t upload
```

PlatformIO compiles the firmware and flashes the connected board. You cannot upload this project with the Arduino IDE; use PlatformIO.

<a href="https://github.com/Delta-Robotics-Inc/TF-Node-Firmware" class="button secondary" data-icon="github">View TF-Node-Firmware</a>
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Version mismatch to confirm: the public `TF-Node-Firmware` repository currently reports firmware **v1.0.1**, while the Python library targets **1.1.1** to **1.1.2**. The versions the library expects may live on a different branch, tag, or release than the public repository default. Confirm the correct source before you flash from the developer path. (Owner-confirm.)
{% endhint %}

## Common failures

<details>

<summary>The updater cannot find the Node</summary>

Check the USB cable and that the Node is powered. Close any serial monitor or Python script that holds the port, then reconnect. On Linux, make sure your user can access serial devices (add it to the `dialout` group and log back in).

</details>

<details>

<summary>PlatformIO reports "board not found" on upload</summary>

Confirm the board is on and enumerated, and that no other program owns the port. If PlatformIO cannot auto-detect the port, set `upload_port` in `platformio.ini` to the correct device.

</details>

<details>

<summary>The library still warns after updating</summary>

Re-run your script so the library reads the new firmware on discovery. If the warning persists, the flashed version is still outside the 1.1.1 to 1.1.2 window; reflash with a version in range.

</details>

## Related pages

* [ThermoFlex Python API](/docs/software/thermoflex-python-api.md): install the control library
* [API reference](/docs/software/thermoflex-python-api/api-reference.md): firmware compatibility and status accessors
* [Update library and firmware](/docs/tutorials/thermoflex/getting-started-with-our-evaluation-kit/update-library-and-firmware.md): the guided tutorial
* [TF Node Controller](/docs/hardware/thermoflex/tf-node-controller.md): the hardware you are updating
