# Tutorials

**URL:** https://hub.mender.io/c/tutorials/17.md?page=1

[Latest](https://hub.mender.io/latest.md) · [Categories](https://hub.mender.io/categories.md) · [Tags](https://hub.mender.io/tags.md)

**Page:** 2

---

## [Mender client python example on yocto build](https://hub.mender.io/t/mender-client-python-example-on-yocto-build/5931)

<div class="topic-metadata">

**Author:** [@Saurabh](https://hub.mender.io/u/Saurabh)\
**Replies:** 2\
**Last updated:** [June 9, 2024, 11:43am UTC](https://hub.mender.io/t/mender-client-python-example-on-yocto-build/5931 "2024-06-09T11:43:27Z")

</div>

I would like to run the client python example (GitHub - mendersoftware/mender-client-python-example) on a device with rootfs built using yocto. I would like to adapt this script to control the upgrade process. There are…

---

## [Preparing the Yocto Project environment based on Mender demo environment](https://hub.mender.io/t/preparing-the-yocto-project-environment-based-on-mender-demo-environment/900)

<div class="topic-metadata">

**Author:** [@mirzak](https://hub.mender.io/u/mirzak)\
**Replies:** 0\
**Last updated:** [August 8, 2019, 9:11am UTC](https://hub.mender.io/t/preparing-the-yocto-project-environment-based-on-mender-demo-environment/900 "2019-08-08T09:11:33Z")

</div>

Introduction This tutorial will cover how to re-use existing Yocto Project environments that are available on Mender Hub which enables you to target a large variety of devices. This is a high-level tutorial and the inte…

---

## [Connecting an AT24-style EEPROM to a BeagleBone Black](https://hub.mender.io/t/connecting-an-at24-style-eeprom-to-a-beaglebone-black/7741)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [April 21, 2025, 3:06pm UTC](https://hub.mender.io/t/connecting-an-at24-style-eeprom-to-a-beaglebone-black/7741 "2025-04-21T15:06:29Z")

</div>

This is Part 1 of a series on using an I2C-bus connected EEPROM with the BeagleBone Black and Yocto. The other parts are: Part 2: Create a (Linux kernel) patch in Yocto Part 3: How to add a kernel configuration setting…

---

## [Port knocking three ways on Linux](https://hub.mender.io/t/port-knocking-three-ways-on-linux/8302)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [June 30, 2026, 3:51pm UTC](https://hub.mender.io/t/port-knocking-three-ways-on-linux/8302 "2026-06-30T15:51:40Z")

</div>

Introduction A service that is reachable is a service that can be attacked. The usual answer is authentication: let anyone connect, then prove they are allowed. Port knocking turns that around. The service is firewalled …

---

## [Installing .mender image by USB stick](https://hub.mender.io/t/installing-mender-image-by-usb-stick/3856)

<div class="topic-metadata">

**Author:** [@dantacmui](https://hub.mender.io/u/dantacmui)\
**Replies:** 4\
**Last updated:** [July 12, 2021, 2:15pm UTC](https://hub.mender.io/t/installing-mender-image-by-usb-stick/3856 "2021-07-12T14:15:00Z")

</div>

Hi, I am new at Mender and Yocto in general, there is something kind of vague for me when update the .mender image to my device using a USB stick. I use this command to make the USB bootable: sudo dd if=\<..\>/tmp/deploy…

---

## [GitOps with Mender and docker-compose: mender-application-update-pipeline](https://hub.mender.io/t/gitops-with-mender-and-docker-compose-mender-application-update-pipeline/7364)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [November 28, 2024, 4:04pm UTC](https://hub.mender.io/t/gitops-with-mender-and-docker-compose-mender-application-update-pipeline/7364 "2024-11-28T16:04:38Z")

</div>

Introduction Containers, and especially docker as the management tool are seeing an ever increasing interest and demand also in embedded Linux. Taking the next step from there are orchestrated containers, for example in …

---

## [Updated Mender identity and inventory with Yocto](https://hub.mender.io/t/updated-mender-identity-and-inventory-with-yocto/1836)

<div class="topic-metadata">

**Author:** [@drewmoseley](https://hub.mender.io/u/drewmoseley)\
**Replies:** 0\
**Last updated:** [April 23, 2020, 7:14pm UTC](https://hub.mender.io/t/updated-mender-identity-and-inventory-with-yocto/1836 "2020-04-23T19:14:12Z")

</div>

Introduction This tutorial will guide you through creating custom recipes for Yocto builds to modify the predefined Mender inventory and identity scripts. Prerequisites A configured Yocto environment . Please take a l…

---

## [How to monitor a crashing service/app/container](https://hub.mender.io/t/how-to-monitor-a-crashing-service-app-container/4417)

<div class="topic-metadata">

**Author:** [@Alan](https://hub.mender.io/u/Alan)\
**Replies:** 0\
**Last updated:** [December 20, 2021, 3:02pm UTC](https://hub.mender.io/t/how-to-monitor-a-crashing-service-app-container/4417 "2021-12-20T15:02:47Z")

</div>

This tutorial will show how to set up mender monitoring to report on a common issue: A critical application crashed or blocked in a restart loop We’ll examine different contexts in which this problem can occur: A s…

---

## [Adding Multi-Factor Authentication to Yocto Project Images](https://hub.mender.io/t/adding-multi-factor-authentication-to-yocto-project-images/8093)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [November 12, 2025, 2:29pm UTC](https://hub.mender.io/t/adding-multi-factor-authentication-to-yocto-project-images/8093 "2025-11-12T14:29:52Z")

</div>

Securing SSH access to embedded Linux devices has become increasingly important. While password authentication provides a basic level of security, Time-based One-Time Passwords (TOTP) offer an additional layer of protect…

---

## [\[ Tutorial template \]](https://hub.mender.io/t/tutorial-template/1055)

<div class="topic-metadata">

**Author:** [@mirzak](https://hub.mender.io/u/mirzak)\
**Replies:** 0\
**Last updated:** [September 24, 2019, 6:38am UTC](https://hub.mender.io/t/tutorial-template/1055 "2019-09-24T06:38:15Z")

</div>

Introduction Background information This tutorial will guide you through… Prerequisites To follow this tutorial, you will need… Step 1 Step 2 … Conclusion In this tutorial we went trough… For further reading please v…

---

## [Using metadata in a Mender Artifact](https://hub.mender.io/t/using-metadata-in-a-mender-artifact/5983)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 1\
**Last updated:** [April 15, 2024, 11:34am UTC](https://hub.mender.io/t/using-metadata-in-a-mender-artifact/5983 "2024-04-15T11:34:42Z")

</div>

In a lot of cases, transporting metadata is more desirable than handling the actual data. Why? An example. What is metadata? You have read a wonderful book. An enlightening, life-changing book. You absolutely want your …

---

## [Accessing the Mender API with NodeJS - login version](https://hub.mender.io/t/accessing-the-mender-api-with-nodejs-login-version/6490)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [January 17, 2024, 4:14pm UTC](https://hub.mender.io/t/accessing-the-mender-api-with-nodejs-login-version/6490 "2024-01-17T16:14:31Z")

</div>

Introduction The Mender backend follows an API first philosphy. This means all functionality is exposed through documented endpoints, and you are invited to use those to match and implement your custom flows. In this sh…

---

## [Building and packaging FPGA bitstreams for the Zynq-7000 (without Vivado!)](https://hub.mender.io/t/building-and-packaging-fpga-bitstreams-for-the-zynq-7000-without-vivado/8323)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [July 20, 2026, 10:17am UTC](https://hub.mender.io/t/building-and-packaging-fpga-bitstreams-for-the-zynq-7000-without-vivado/8323 "2026-07-20T10:17:25Z")

</div>

Introduction The programmable logic of a Zynq-7000 is configured from a bitstream, and the vendor-blessed way to produce one runs through Vivado: a multi-gigabyte tool installation, a licensed flow, and a .bit file at th…

---

## [Mender RaspberryPi4 Tutorial - unable to create a system snapshot](https://hub.mender.io/t/mender-raspberrypi4-tutorial-unable-to-create-a-system-snapshot/7996)

<div class="topic-metadata">

**Author:** [@greg-blackcurrent](https://hub.mender.io/u/greg-blackcurrent)\
**Replies:** 2\
**Last updated:** [September 22, 2025, 8:16pm UTC](https://hub.mender.io/t/mender-raspberrypi4-tutorial-unable-to-create-a-system-snapshot/7996 "2025-09-22T20:16:28Z")

</div>

I’ve been running through the RPi tutorial - I’m up to step 3 create an OS artifact. mender-artifact write rootfs-image fails with no output: (base) cass:balena-exp greglowe$ mender-artifact write rootfs-image -f ssh…

---

## [Accessing the Mender API with NodeJS - PAT version](https://hub.mender.io/t/accessing-the-mender-api-with-nodejs-pat-version/6494)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [January 18, 2024, 1:22pm UTC](https://hub.mender.io/t/accessing-the-mender-api-with-nodejs-pat-version/6494 "2024-01-18T13:22:38Z")

</div>

Introduction The Mender backend follows an API first philosphy. This means all functionality is exposed through documented endpoints, and you are invited to use those to match and implement your custom flows. In this sh…

---

## [Remote OTA Updates for Wind River Linux](https://hub.mender.io/t/remote-ota-updates-for-wind-river-linux/5205)

<div class="topic-metadata">

**Author:** [@karolina.beta](https://hub.mender.io/u/karolina.beta)\
**Replies:** 0\
**Last updated:** [August 23, 2022, 6:56am UTC](https://hub.mender.io/t/remote-ota-updates-for-wind-river-linux/5205 "2022-08-23T06:56:44Z")

</div>

Wind River is one of the biggest enterprise grade Yocto-based Linux providers. In late 2019 they released their LTS19 version based on Yocto Zeus (3.0). As Mender is also compatible with selected Yocto releases includ…

---

## [Artifact signing: Keyfactor SignServer](https://hub.mender.io/t/artifact-signing-keyfactor-signserver/6694)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [March 28, 2024, 2:58pm UTC](https://hub.mender.io/t/artifact-signing-keyfactor-signserver/6694 "2024-03-28T14:58:06Z")

</div>

Motivation Signing is a powerful mechanism to guarantee that only a Mender Artifact from an authorized source can be installed onto a device. If the signature cannot be verified, the artifact is discarded and the device …

---

## ["Deploy an Application update" tutorial instructions not consistent with current software](https://hub.mender.io/t/deploy-an-application-update-tutorial-instructions-not-consistent-with-current-software/7541)

<div class="topic-metadata">

**Author:** [@bjkowalski](https://hub.mender.io/u/bjkowalski)\
**Replies:** 2\
**Last updated:** [February 12, 2025, 10:56am UTC](https://hub.mender.io/t/deploy-an-application-update-tutorial-instructions-not-consistent-with-current-software/7541 "2025-02-12T10:56:49Z")

</div>

There are inconsistencies between the instructions contained in the tutorial and the current software. See the shared Google doc for full details. Also the deployed application service does not function resulting in …

---

## [Using ser2net to remotely access a serial terminal or port](https://hub.mender.io/t/using-ser2net-to-remotely-access-a-serial-terminal-or-port/7807)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [June 2, 2025, 11:20am UTC](https://hub.mender.io/t/using-ser2net-to-remotely-access-a-serial-terminal-or-port/7807 "2025-06-02T11:20:24Z")

</div>

In this tutorial, we will guide you through the process of setting up and using ser2net to remotely access a serial terminal on a Linux computer. This setup is particularly useful for managing embedded systems, IoT devic…

---

## [Using QEMU Virtualized Environments to Develop and Deploy Embedded Software for x86 Linux](https://hub.mender.io/t/using-qemu-virtualized-environments-to-develop-and-deploy-embedded-software-for-x86-linux/5116)

<div class="topic-metadata">

**Author:** [@karolina.beta](https://hub.mender.io/u/karolina.beta)\
**Replies:** 1\
**Last updated:** [September 5, 2023, 2:56am UTC](https://hub.mender.io/t/using-qemu-virtualized-environments-to-develop-and-deploy-embedded-software-for-x86-linux/5116 "2023-09-05T02:56:52Z")

</div>

Introduction Before shipping software for embedded devices, it is crucial to test it on real devices, in an environment as close to the actual operating environment as possible. But that does not mean that development …

---

## [Syscall Sandboxing with seccomp-BPF (on Yocto)](https://hub.mender.io/t/syscall-sandboxing-with-seccomp-bpf-on-yocto/8156)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [January 7, 2026, 7:22pm UTC](https://hub.mender.io/t/syscall-sandboxing-with-seccomp-bpf-on-yocto/8156 "2026-01-07T19:22:48Z")

</div>

When a network-connected application on an embedded device gets compromised, the attacker’s first move is typically to spawn a shell or execute additional tools. This tutorial demonstrates how to use seccomp-BPF to block…

---

## [Updating device firmware using DFU in Zephyr Project on a FRDM-K64F board](https://hub.mender.io/t/updating-device-firmware-using-dfu-in-zephyr-project-on-a-frdm-k64f-board/1618)

<div class="topic-metadata">

**Author:** [@mirzak](https://hub.mender.io/u/mirzak)\
**Replies:** 1\
**Last updated:** [November 29, 2023, 7:30am UTC](https://hub.mender.io/t/updating-device-firmware-using-dfu-in-zephyr-project-on-a-frdm-k64f-board/1618 "2023-11-29T07:30:21Z")

</div>

Introduction USB Device Firmware Upgrade (DFU) is an official USB device class specification of the USB Implementers Forum. It specifies a vendor and device independent way of updating the firmware of a USB device. The …

---

## [Integrating Mender State Scripts in Yocto - A Step by Step Guide](https://hub.mender.io/t/integrating-mender-state-scripts-in-yocto-a-step-by-step-guide/4997)

<div class="topic-metadata">

**Author:** [@karolina.beta](https://hub.mender.io/u/karolina.beta)\
**Replies:** 0\
**Last updated:** [June 3, 2022, 8:43am UTC](https://hub.mender.io/t/integrating-mender-state-scripts-in-yocto-a-step-by-step-guide/4997 "2022-06-03T08:43:06Z")

</div>

Integrating Mender State Scripts in Yocto - A Step by Step Guide This tutorial will explain the concept of state scripts in mender and give an example on how to integrate them into yocto. Prerequisites kas install…

---

## [Inspecting disk image partitions and contents on Linux](https://hub.mender.io/t/inspecting-disk-image-partitions-and-contents-on-linux/7951)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [August 8, 2025, 1:16pm UTC](https://hub.mender.io/t/inspecting-disk-image-partitions-and-contents-on-linux/7951 "2025-08-08T13:16:56Z")

</div>

Understanding the internal structure of disk images is essential for debugging conversions, verifying configurations, and troubleshooting boot issues. This tutorial demonstrates systematic approaches to analyze partition…

---

## [Protecting Your Custom Application with Fail2Ban](https://hub.mender.io/t/protecting-your-custom-application-with-fail2ban/8037)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [October 8, 2025, 10:18am UTC](https://hub.mender.io/t/protecting-your-custom-application-with-fail2ban/8037 "2025-10-08T10:18:10Z")

</div>

Ever deployed a simple web service only to find your logs filling up with automated scanning attempts? Or watched as the same IP hammers your endpoint over and over? That’s where Fail2Ban comes in - a tool that monitors …

---

## [Using the Mender client with a TPM (pkcs11)](https://hub.mender.io/t/using-the-mender-client-with-a-tpm-pkcs11/8301)

<div class="topic-metadata">

**Author:** [@Alan](https://hub.mender.io/u/Alan)\
**Replies:** 0\
**Last updated:** [June 29, 2026, 1:53pm UTC](https://hub.mender.io/t/using-the-mender-client-with-a-tpm-pkcs11/8301 "2026-06-29T13:53:54Z")

</div>

This tutorial will guide you to set up the Mender Client on a Raspberry Pi 4/5 to use a TPM based on the Infineon SLB9672 through the PKCS#11 API. Prerequisites A RPi4 or RPi5 with a LetsTrust / Infineon SLB9672 TPM p…

---

## [Installing distribution packages during mender-convert](https://hub.mender.io/t/installing-distribution-packages-during-mender-convert/7921)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [July 28, 2025, 9:05am UTC](https://hub.mender.io/t/installing-distribution-packages-during-mender-convert/7921 "2025-07-28T09:05:15Z")

</div>

When converting images with mender-convert, you may need to pre-install packages from the distribution’s repositories. This tutorial demonstrates how to install packages during the conversion process using a configuratio…

---

## [Adding a Pre-configured User to Raspberry Pi OS Images with mender-convert](https://hub.mender.io/t/adding-a-pre-configured-user-to-raspberry-pi-os-images-with-mender-convert/7922)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [July 28, 2025, 9:24am UTC](https://hub.mender.io/t/adding-a-pre-configured-user-to-raspberry-pi-os-images-with-mender-convert/7922 "2025-07-28T09:24:36Z")

</div>

Raspberry Pi OS images by default run a first-boot wizard which prompts for user creation. This tutorial demonstrates how to bypass this process by pre-configuring a user during image conversion with mender-convert. Pr…

---

## [How to Monitor Device Storage with a Custom Mender Inventory Script](https://hub.mender.io/t/how-to-monitor-device-storage-with-a-custom-mender-inventory-script/7892)

<div class="topic-metadata">

**Author:** [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Replies:** 0\
**Last updated:** [July 16, 2025, 3:14pm UTC](https://hub.mender.io/t/how-to-monitor-device-storage-with-a-custom-mender-inventory-script/7892 "2025-07-16T15:14:45Z")

</div>

Overview When managing a fleet of IoT devices with Mender, understanding storage usage across your devices is crucial for maintaining operational health and planning updates. This tutorial shows you how to create a custo…

---

## [Using Node-RED with Mender](https://hub.mender.io/t/using-node-red-with-mender/2641)

<div class="topic-metadata">

**Author:** [@drewmoseley](https://hub.mender.io/u/drewmoseley)\
**Replies:** 0\
**Last updated:** [October 8, 2020, 7:54pm UTC](https://hub.mender.io/t/using-node-red-with-mender/2641 "2020-10-08T19:54:41Z")

</div>

Intro In this tutorial, we will discuss how to use the Mender OTA with Node-RED to deploy updated flows. We will start at the beginning and use the Raspberry Pi OS on a Raspberry Pi 3A board. The instructions will be spe…

[Previous page](https://hub.mender.io/c/tutorials/17.md)

[Next page](https://hub.mender.io/c/tutorials/17.md?page=2)
