<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>How To Archives - The Golioth Developer Blog</title>
	<atom:link href="https://blog.golioth.io/category/zephyr/how-to/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.golioth.io/category/zephyr/how-to/</link>
	<description>Golioth, Zephyr, and IoT Development News and How Tos</description>
	<lastBuildDate>Tue, 27 Jan 2026 00:20:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.golioth.io/wp-content/uploads/2023/09/cropped-Golioth_Symbol_Coral_RGB-1-32x32.png</url>
	<title>How To Archives - The Golioth Developer Blog</title>
	<link>https://blog.golioth.io/category/zephyr/how-to/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Handling Button Press, Longpress, and Double-Tap with the Zephyr Input Subsystem</title>
		<link>https://blog.golioth.io/handling-button-press-longpress-and-double-tap-with-the-zephyr-input-subsystem/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Tue, 27 Jan 2026 15:01:48 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[buttons]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[subsystem]]></category>
		<category><![CDATA[zephyr]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=10481</guid>

					<description><![CDATA[<p>Embedded engineers know the joys and pains with button inputs: debouncing them, triggering actions, and more advanced input patterns like long holding the button down or quickly clicking more than once. If your project is based on Zephyr, you should take a look at the input subsystem to see if it can do some of [&#8230;]</p>
<p>The post <a href="https://blog.golioth.io/handling-button-press-longpress-and-double-tap-with-the-zephyr-input-subsystem/">Handling Button Press, Longpress, and Double-Tap with the Zephyr Input Subsystem</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
		<item>
		<title>Find Breaking Changes in Zephyr Using Git Bisect</title>
		<link>https://blog.golioth.io/find-breaking-changes-in-zephyr-using-git-bisect/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Tue, 06 Jan 2026 15:33:02 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git bisect]]></category>
		<category><![CDATA[West Manifest]]></category>
		<category><![CDATA[west update]]></category>
		<category><![CDATA[zephyr]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=10407</guid>

					<description><![CDATA[<p>Finding breaking changes in upstream code is a difficult process. Git bisect and good commit discipline (like the Zephyr team maintains) helps to quickly pinpoint issues so you can pull in changes as needed.</p>
<p>The post <a href="https://blog.golioth.io/find-breaking-changes-in-zephyr-using-git-bisect/">Find Breaking Changes in Zephyr Using Git Bisect</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
		<item>
		<title>Using Custom Work Queues for Sensor Readings in Zephyr</title>
		<link>https://blog.golioth.io/using-custom-work-queues-for-sensor-readings-in-zephyr/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Tue, 09 Dec 2025 19:07:41 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Custom Work Queue]]></category>
		<category><![CDATA[Work Queue]]></category>
		<category><![CDATA[zephyr]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=10355</guid>

					<description><![CDATA[<p>Custom Work Queues enable things like thread-aware debugging, larger amounts of customization, and the Zephyr work queue features that we know and love. This article details how to set up your next custom work queue to improve your Golioth-enabled application.</p>
<p>The post <a href="https://blog.golioth.io/using-custom-work-queues-for-sensor-readings-in-zephyr/">Using Custom Work Queues for Sensor Readings in Zephyr</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
		<item>
		<title>Using Snippets in Zephyr: a Shorthand for Changing Build Configuration</title>
		<link>https://blog.golioth.io/using-snippets-in-zephyr-a-shorthand-for-changing-build-configuration/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Tue, 02 Dec 2025 15:13:05 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[devicetree]]></category>
		<category><![CDATA[Kconfig]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[sysbuild]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=10333</guid>

					<description><![CDATA[<p>Zephyr snippets helps developers extend the capabilities of their device firmware with simple command line controls. This post shows how to add logging to an application, but only target it at debug images and only in the application portion of a firmware image.</p>
<p>The post <a href="https://blog.golioth.io/using-snippets-in-zephyr-a-shorthand-for-changing-build-configuration/">Using Snippets in Zephyr: a Shorthand for Changing Build Configuration</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
		<item>
		<title>Building Zephyr for the Raspberry Pi Pico2 W</title>
		<link>https://blog.golioth.io/building-zephyr-for-the-raspberry-pi-pico2-w/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Tue, 11 Nov 2025 15:04:08 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Infineon]]></category>
		<category><![CDATA[pico2]]></category>
		<category><![CDATA[pico2w]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[WiFi]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=10292</guid>

					<description><![CDATA[<p>The Raspberry Pi Pico2 W is the one with a microcontroller and Wi-Fi. When most people think of Raspberry Pi as a single-board computer running Linux, this model is a microcontroller with a slew of impressive peripherals. While the original Pico (based on the RP2040) has had Zephyr support for a long time, the Pico2 [&#8230;]</p>
<p>The post <a href="https://blog.golioth.io/building-zephyr-for-the-raspberry-pi-pico2-w/">Building Zephyr for the Raspberry Pi Pico2 W</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
		<item>
		<title>Zephyr: How to Monitor Heap and Locate Memory Leaks</title>
		<link>https://blog.golioth.io/zephyr-how-to-monitor-heap-and-locate-memory-leaks/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Thu, 16 Oct 2025 14:17:38 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Zephyr]]></category>
		<category><![CDATA[heap]]></category>
		<category><![CDATA[heap listener]]></category>
		<category><![CDATA[heap stats]]></category>
		<category><![CDATA[memory leak]]></category>
		<category><![CDATA[runtime stats]]></category>
		<category><![CDATA[zephyr]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=10197</guid>

					<description><![CDATA[<p>Dynamic memory allocation in C is a powerful tool but also a potential source of hard to replicate bugs. This post goes over tools that are built into Zephyr that monitor consumption over time.</p>
<p>The post <a href="https://blog.golioth.io/zephyr-how-to-monitor-heap-and-locate-memory-leaks/">Zephyr: How to Monitor Heap and Locate Memory Leaks</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
		<item>
		<title>How to Flash a Pre-Loaded Filesystem During Production</title>
		<link>https://blog.golioth.io/how-to-flash-a-pre-loaded-filesystem-during-production/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Tue, 09 Sep 2025 14:07:52 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Zephyr]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[frdm_rw612]]></category>
		<category><![CDATA[jlink]]></category>
		<category><![CDATA[littlefs]]></category>
		<category><![CDATA[littlefs-python]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=10062</guid>

					<description><![CDATA[<p>Creating a filesystem separates your everyday firmware from other data like machine learning models, images, and binaries. In this post we discuss how you can set up the filesystem to speed up your production and create a flexible system that can be updated on-demand using Golioth's OTA service. </p>
<p>The post <a href="https://blog.golioth.io/how-to-flash-a-pre-loaded-filesystem-during-production/">How to Flash a Pre-Loaded Filesystem During Production</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
		<item>
		<title>How to use Zephyr zbus to Communicate Between Threads</title>
		<link>https://blog.golioth.io/how-to-use-zephyr-zbus-to-communicate-between-threads/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Tue, 05 Aug 2025 14:20:13 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[ZBus]]></category>
		<category><![CDATA[zephyr]]></category>
		<category><![CDATA[zephyr bus]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=9841</guid>

					<description><![CDATA[<p>If you&#8217;re not using zbus, you probably should be. As the name indicates, this is the Zephyr bus, a built-in system for publishing, reading, subscribing to, and observing messages in a thread-safe way. It delivers peace of mind with minimal effort. Think of zbus as a collection of data producers and data consumers. One thread [&#8230;]</p>
<p>The post <a href="https://blog.golioth.io/how-to-use-zephyr-zbus-to-communicate-between-threads/">How to use Zephyr zbus to Communicate Between Threads</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
		<item>
		<title>The ESP32 HCI makes any Zephyr board a Bluetooth gateway</title>
		<link>https://blog.golioth.io/the-esp32-hci-makes-any-zephyr-board-a-bluetooth-gateway/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Thu, 26 Jun 2025 14:27:53 +0000</pubDate>
				<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Zephyr]]></category>
		<category><![CDATA[Aludel Elixir]]></category>
		<category><![CDATA[Bluetooth Gateway]]></category>
		<category><![CDATA[Bluetooth HCI]]></category>
		<category><![CDATA[ESP32]]></category>
		<category><![CDATA[ESP32-C3]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=9726</guid>

					<description><![CDATA[<p>Bluetooth HCI enables any chipset to act as a peripheral to a processor running a Bluetooth stack. We pair the ESP32-C3 HCI with a processor running Zephyr to turn Golioth's development platform--the Aludel Elixir--into a Bluetooth gateway.</p>
<p>The post <a href="https://blog.golioth.io/the-esp32-hci-makes-any-zephyr-board-a-bluetooth-gateway/">The ESP32 HCI makes any Zephyr board a Bluetooth gateway</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
		<item>
		<title>Battery Monitoring with Zephyr&#8217;s Fuel Gauge Subsystem</title>
		<link>https://blog.golioth.io/battery-monitoring-with-zephyrs-fuel-gauge-subsystem/</link>
		
		<dc:creator><![CDATA[Mike Szczys]]></dc:creator>
		<pubDate>Tue, 13 May 2025 14:32:08 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Zephyr]]></category>
		<category><![CDATA[batteries]]></category>
		<category><![CDATA[battery monitor]]></category>
		<category><![CDATA[fuel gauge]]></category>
		<category><![CDATA[lithium cell]]></category>
		<guid isPermaLink="false">https://blog.golioth.io/?p=9511</guid>

					<description><![CDATA[<p>Fuel gauge ICs offload effort when it comes to taking reliable battery readings and estimating charge and drain times. Zephyr's support for these components makes using them even easier.</p>
<p>The post <a href="https://blog.golioth.io/battery-monitoring-with-zephyrs-fuel-gauge-subsystem/">Battery Monitoring with Zephyr&#8217;s Fuel Gauge Subsystem</a> appeared first on <a href="https://blog.golioth.io">The Golioth Developer Blog</a>.</p>
]]></description>
		
		
		
			</item>
	</channel>
</rss>
