> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thistle.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Linux Kernel OTA Update

> Guide to performing Linux kernel over-the-air updates using Thistle Control Center

This guide will walk you through the process of performing a Linux kernel over-the-air (OTA) update using the Thistle Control Center. You'll learn how to create projects, configure releases, provision devices, and deploy updates seamlessly to your embedded devices.

## Prerequisites

Before beginning this guide, ensure you have the following:

* **Thistle Update Client (tuc)** running on your target device. You can download the latest version from the [Thistle Control Center download page](https://app.thistle.tech/download-binaries).
* Access to the Thistle Control Center web application
* A device running a Linux-based operating system that supports the Thistle Update Client

## Getting Started

### Sign In to Thistle Control Center

Begin by signing into the Thistle Control Center at [https://auth.thistle.tech/signin](https://auth.thistle.tech/signin). If you don't have an account yet, you can create one through the sign-up process.

<img src="https://mintcdn.com/thistletechnologies/n-kGMRtFlZLXyRyW/images/thistle-control-center/linux-kernel-ota/projects.png?fit=max&auto=format&n=n-kGMRtFlZLXyRyW&q=85&s=8af16ca8d844a80f88cf9e37149a0d41" alt="Thistle Control Center" width="2118" height="1214" data-path="images/thistle-control-center/linux-kernel-ota/projects.png" />

### Create a Project

Once you've signed in, you'll need to create a project to organize your devices and releases. Projects serve as containers for related devices and update configurations, allowing you to manage multiple device fleets from a single interface.

<img src="https://mintcdn.com/thistletechnologies/n-kGMRtFlZLXyRyW/images/thistle-control-center/linux-kernel-ota/add-project.png?fit=max&auto=format&n=n-kGMRtFlZLXyRyW&q=85&s=70015e4097b3c5487af14d174a371a0b" alt="Create Project" width="1944" height="888" data-path="images/thistle-control-center/linux-kernel-ota/add-project.png" />

Click on the "Create Project" button and provide a meaningful name for your project. This will be your workspace for managing Linux kernel updates.

### Navigate to Releases

After creating your project, navigate to the **Releases** section within your newly created project. This is where you'll create and manage all your OTA update releases.

<img src="https://mintcdn.com/thistletechnologies/n-kGMRtFlZLXyRyW/images/thistle-control-center/linux-kernel-ota/releases.png?fit=max&auto=format&n=n-kGMRtFlZLXyRyW&q=85&s=c3fe95493ad5ac130b9e134ede4cac63" alt="Releases Page" width="1943" height="1048" data-path="images/thistle-control-center/linux-kernel-ota/releases.png" />

### Create a Release

In the Releases section, you can create a new release for your Linux kernel update. While this guide focuses on creating a Linux Firmware release, the Thistle Control Center supports several other types of releases, including:

* Single file updates
* AI model updates
* Custom application updates

<img src="https://mintcdn.com/thistletechnologies/n-kGMRtFlZLXyRyW/images/thistle-control-center/linux-kernel-ota/add-release.png?fit=max&auto=format&n=n-kGMRtFlZLXyRyW&q=85&s=059077031de44c9e3b086957a990d9d0" alt="Create Release" width="2117" height="1096" data-path="images/thistle-control-center/linux-kernel-ota/add-release.png" />

<Note>
  If you're creating a release for the first time in this project, your OTA Public Verification Key will be automatically generated during this operation. This key is essential for verifying the authenticity of your updates and ensuring secure deployments.
</Note>

### Create a Device

Once you've created your release, navigate to the **Devices** section to register your target device. During device creation, a device configuration JSON file (`config.json`) will be automatically generated and downloaded to your development machine.

<img src="https://mintcdn.com/thistletechnologies/n-kGMRtFlZLXyRyW/images/thistle-control-center/linux-kernel-ota/devices.png?fit=max&auto=format&n=n-kGMRtFlZLXyRyW&q=85&s=c51ae8a4b80cd32476febcdfde820cda" alt="Devices Section" width="2117" height="1051" data-path="images/thistle-control-center/linux-kernel-ota/devices.png" />

When creating a device, you'll need to provide:

* **Device Name**: A unique identifier for your device
* **Persist Path**: The location on the device where the Thistle Update Client (tuc) can store persistent data between updates

<img src="https://mintcdn.com/thistletechnologies/n-kGMRtFlZLXyRyW/images/thistle-control-center/linux-kernel-ota/add-device.png?fit=max&auto=format&n=n-kGMRtFlZLXyRyW&q=85&s=46a45224325e217fec87a20e0ec9ec10" alt="Device Configuration" width="2118" height="1094" data-path="images/thistle-control-center/linux-kernel-ota/add-device.png" />

<Note>
  You can optionally override the OTA Public Verification Key that's automatically added to `config.json` during device creation. This is useful if you need to use a custom key for your specific use case.
</Note>

## Deploying the Update

Now that your device exists in the Thistle Control Center, it's time to deploy the configuration to your actual hardware and initiate the update process.

<img src="https://mintcdn.com/thistletechnologies/n-kGMRtFlZLXyRyW/images/thistle-control-center/linux-kernel-ota/new-device.png?fit=max&auto=format&n=n-kGMRtFlZLXyRyW&q=85&s=558417451a4a484d22c4e7f6b5a54aba" alt="Device Ready" width="2152" height="1031" data-path="images/thistle-control-center/linux-kernel-ota/new-device.png" />

### Configure the Device

Transfer the downloaded `config.json` file to your target device. You have two options for placing the configuration file:

1. **Same directory as tuc**: Place `config.json` in the same directory where the Thistle Update Client binary is located
2. **Custom location**: Use the `--config-path` option when running tuc to specify a different location for the configuration file

### Run the Update Client

Execute the Thistle Update Client on your device. When tuc successfully fetches and installs an update, you should see output similar to the following:

```bash theme={"dark"}
!! enrolling new device with server...
!! Thistle client starting up - version 1.6.0
!! installing update 0 => 2
!! setting update status to Started
!! setting update status to Pass
```

This output indicates that:

* The device has successfully enrolled with the Thistle backend server
* The update client has started and is running version 1.6.0
* An update is being installed (transitioning from version 0 to version 2)
* The update process has started and completed successfully

<Note>
  The update status messages provide real-time feedback about the update process. A status of "Pass" indicates that the update was successfully installed and verified.
</Note>

## Next Steps

Congratulations! You've successfully performed your first Linux kernel OTA update using the Thistle Control Center. From here, you can:

* Monitor device status and update history in the Thistle Control Center dashboard
* Create additional releases for future kernel updates
* Manage multiple devices within your project
* Configure automated update schedules and deployment policies

For more advanced features and configuration options, refer to the [Thistle Update Client documentation](/update/command_line_tools) and [configuration reference](/update/configuration_file).
