<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/">
  <author>
    <name>Mario Lurig</name>
    <uri>https://trmnl.com</uri>
  </author>
  <author>
    <name>Ryan Kulp</name>
    <uri>https://trmnl.com</uri>
  </author>
  <author>
    <name>Larry Bank</name>
    <uri>https://trmnl.com</uri>
  </author>
  <category term="trmnl"
    label="TRMNL"/>
  <generator uri="https://trmnl.com"
    version="0.0.0">TRMNL</generator>
  <icon>https://trmnl.com/favicon.ico</icon>
  <id>https://trmnl.com/blog</id>
  <link href="https://trmnl.com/blog"
    rel="alternate"
    type="text/html"
    title="TRMNL: Blog (web)"/>
  <link href="https://trmnl.com/feeds/blog.xml"
    rel="self"
    type="application/atom+xml"
    title="TRMNL: Blog (feed)"/>
  <logo>https://trmnl.com/images/brand/icons/icon--brand.png</logo>
  <rights>Copyright 2026</rights>
  <subtitle>The latest site news and information.</subtitle>
  <title>TRMNL: Blog</title>
  <updated>2026-03-31T00:00:00+00:00</updated>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://trmnl.com/recipes/200956&quot;&gt;Awair&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member Bryant created the &lt;a href=&quot;https://trmnl.com/recipes/200956&quot;&gt;Awair&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;I have air quality monitors spread out throughout the home. A smartphone app is great for something that should control a device. If I want something to display status across an array of devices, TRMNL is a great platform for that.&lt;/p&gt;&lt;h3&gt;Why were you the person to make it?&lt;/h3&gt;&lt;p&gt;This is probably most useful for people who have several Air Quality monitors and for folks who are a bit over-interested in their indoor air quality. I met this criteria.&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;How did you balance look vs functionality?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;This needed to be glanceable.&lt;/strong&gt;&lt;/b&gt; I don&#39;t want to have to calculate whether or not certain values were within an acceptable range when I glance at the screen. So I wanted a way to show many values across multiple sensors and easily show whether or not they are in an expected or acceptable range.&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;ChatGPT was great for getting the wiring all hooked up between the TRMNL and the data providers. I had to iterate on my own to make sure that the UX on the layout was actually intuitive and glanceable.&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;Is there a tip you would give to a new plugin developer?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;There isn&#39;t a single obvious way to approach each visualization. You just have to iterate through it multiple times.&lt;/p&gt;&lt;h3&gt;What could be improved by TRMNL?&lt;/h3&gt;&lt;p&gt;Like I said, creating and editing these plugins takes a lot of iteration. You want to see how it generally looks, you want to see how it looks on the actual devices. I would love to see improvements in the process and workflow for allowing for a development workflow that assists in making that painless.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-awair</id>
    <link href="https://trmnl.com/blog/featured-plugin-awair"/>
    <published>2026-03-31T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Awair</title>
    <updated>2026-03-31T00:00:00+00:00</updated>
    <dc:date>2026-03-31T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h3&gt;&lt;a href=&quot;https://trmnl.com/recipes/236317&quot;&gt;Paul&#39;s Recipe recipe&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Community member Paul &lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;(Discord: &lt;/mark&gt;&lt;code&gt;DD_DE&lt;/code&gt;) created &lt;a href=&quot;https://trmnl.com/recipes/236317&quot;&gt;Paul&#39;s Recipe recipe&lt;/a&gt;; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;We&#39;ve had a party coming up and I decided to serve the drinks for the guests. So I needed a menu and list of recipes. Instead of printing it out, just to find a blatant typo, I decided to make use of my TRMNLs. First I searched the plugins and recipes and while I &lt;a href=&quot;https://trmnl.com/recipes/135480&quot;&gt;found one&lt;/a&gt; it didn&#39;t fit all my drinks and also was quite hard to read in the dim party environment. So I made my own. I first made the menu, which I then refined for the recipes. After a successful party, I improved my plugin a bit further, adding proper form fields and custom scaling. I hope you enjoy.&lt;/p&gt;&lt;h3&gt;How did you balance looks vs functionality?&lt;/h3&gt;&lt;p&gt;In my first iteration, looks were definitely more important than functionality. But in preparation to release it, I&#39;ve expanded the functionality a lot, while keeping the design very similar.&lt;/p&gt;&lt;h3&gt;What was your process for creating the plugin?&lt;/h3&gt;&lt;p&gt;My development principals are to avoid using AI as much as I can. This is because I&#39;d need as much time understanding the AI code as it would take me to write it myself. In addition, I feel like I can learn more by scouring the documentation or other plugins that by asking the AI.&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;I&#39;ve struggled a bit with the liquid syntax, since it&#39;s been a while since my last plugin and I usually don&#39;t use it. But over time I got better again and reworked my clunky code from the beginnings , if needed. Oh and I nearly bricked my plugin while adding form fields, so that was fun.&lt;/p&gt;&lt;h3&gt;Is there a tip you would give to a new plugin developer?&lt;/h3&gt;&lt;p&gt;Probably to just start coding, use whatever tool you want, but understand what the code does. It doesn&#39;t matter if you&#39;re code is clunky, finish it and then rework it if you think you know better techniques.&lt;/p&gt;&lt;h3&gt;What is your favorite plugin that someone else created and why?&lt;/h3&gt;&lt;p&gt;I think it might be the &quot;&lt;a href=&quot;https://trmnl.com/recipes/28722&quot;&gt;useless fact&lt;/a&gt;&quot; plugin&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;.&lt;/mark&gt;&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-pauls-recipe</id>
    <link href="https://trmnl.com/blog/featured-plugin-pauls-recipe"/>
    <published>2026-03-24T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Paul&#39;s Recipe recipe</title>
    <updated>2026-03-24T00:00:00+00:00</updated>
    <dc:date>2026-03-24T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://trmnl.com/recipes/122776&quot;&gt;Hardcover - Reading Buddy&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member Sumalyo Datta&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt; (Discord: &lt;/mark&gt;&lt;code&gt;sumalyo&lt;/code&gt;) created the &lt;a href=&quot;https://trmnl.com/recipes/122776&quot;&gt;Hardcover - Reading Buddy&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;I thought that I would be quite cool to see my (and other people&#39;s) reading progress on the TRMNL. Also it would give me the perfect dose of motivation to finish my book.&lt;/p&gt;&lt;h3&gt;How did you balance look vs functionality?&lt;/h3&gt;&lt;p&gt;I tried to keep it minimalistic. The idea of mashups looked quite interesting and I leveraged the idea of making my views appropriate for various sizes. As Book Club members would most likely combine various iterations of this plugin to track their buddies, I worked on a design that gave it a clean yet gamified look. I also worked on implementing a progress bar that would look clean.&lt;/p&gt;&lt;h3&gt;What was your process for creating the plugin?&lt;/h3&gt;&lt;p&gt;I used the service &lt;a href=&quot;https://hardcover.app/&quot;&gt;Hardcover.app&lt;/a&gt; that provided a nice clean API to retrieve user progress information.&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;The design of the single page view which had to adjust based on the number of books the user was currently reading was quite challenging to design.&lt;/p&gt;&lt;h3&gt;If I were to make this from scratch today, what would I have changed?&lt;/h3&gt;&lt;p&gt;I made this plugin a long while ago when &lt;a href=&quot;https://trmnl.com/framework/docs/enhancement_guide&quot;&gt;FrameworkV2&lt;/a&gt; was not quite mature. Today I look a the cool features that the team have added for developers and I think I could incorporate some of that in this.&lt;/p&gt;&lt;h3&gt;What is your favorite plugin that someone else created and why?&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://trmnl.com/recipes/?search=Movie+Title+Screens&amp;amp;sort-by=newest&quot;&gt;&lt;i&gt;&lt;em&gt;Movie Title Screens&lt;/em&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;em&gt; - Just so so cool!!&lt;/em&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-hardcover-reading-buddy</id>
    <link href="https://trmnl.com/blog/featured-plugin-hardcover-reading-buddy"/>
    <published>2026-03-17T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Hardcover - Reading Buddy</title>
    <updated>2026-03-17T00:00:00+00:00</updated>
    <dc:date>2026-03-17T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://usetrmnl.com/recipes/27251&quot;&gt;Who&#39;s That Pokémon?&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member Sriniketh&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt; (Discord: &lt;/mark&gt;&lt;code&gt;amelogenin&lt;/code&gt;) created the &lt;a href=&quot;https://usetrmnl.com/recipes/27251&quot;&gt;Who&#39;s That Pokémon?&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;I was an early adopter and was so excited to receive my TRMNL that I started thinking about what I&#39;d want to see on it every day. When I dove into the docs to learn how to build plugins, I needed a fun dataset to work with, and that&#39;s when I thought of Pokémon. I grew up watching the show, and one thing that always stuck with me was the &quot;Who&#39;s That Pokémon?&quot; segment during commercial breaks. They&#39;d show a Pokémon&#39;s silhouette and challenge viewers to guess who it was. I wanted to recreate that little moment of nostalgia: glancing at my TRMNL and seeing a random Pokémon each day, just like the show used to do.&lt;/p&gt;&lt;h3&gt;Why were you the person to make it?&lt;/h3&gt;&lt;p&gt;Honestly, anyone could have made this. &lt;b&gt;&lt;strong&gt;I thought it would be fun to learn the platform by building something that&#39;s inherently fun to me.&lt;/strong&gt;&lt;/b&gt; As a developer, I also wanted to be thoughtful about the technical details. I initially used a webhook, but switched to polling since the data only changes once a day and it meant zero configuration for users. That ease of setup made it a natural fit for a recipe. It was a good excuse to tinker and learn how TRMNL plugins work end to end.&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;Were you inspired by any other recipes or plugin creators?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;Absolutely. The community and Discord were a huge inspiration. I saw so many creative plugins that displayed something unique each day: &lt;a href=&quot;https://trmnl.com/integrations/mondrian&quot;&gt;Piet Mondrian&lt;/a&gt; generative art, Marvel character of the day, &lt;a href=&quot;https://trmnl.com/recipes/27184&quot;&gt;Calvin and Hobbes&lt;/a&gt;. That format of &quot;one delightful thing per day&quot; really resonated with me and made me think about what my version of that could be. I built this for fun and didn&#39;t anticipate so many people relating to it. It has way more installs than I could have imagined and was even featured in the TRMNL X video. Fun fact: the random selection has surfaced &lt;i&gt;&lt;em&gt;Gumshoos&lt;/em&gt;&lt;/i&gt; four times now, making it the unofficial mascot of the plugin!&lt;/p&gt;&lt;h3&gt;How did you balance look vs functionality?&lt;/h3&gt;&lt;p&gt;I wanted it to be simple but give me some extra details beyond just the name so I could improve my Pokémon knowledge. The image had to be front and center, so when the plugin is used as part of a mashup, details like abilities disappear but the image stays. That was a deliberate tradeoff.&lt;/p&gt;&lt;h3&gt;Did you learn anything that you want to apply to future or past recipes?&lt;/h3&gt;&lt;p&gt;Keep the infrastructure simple. A GitHub Action that runs once a day and commits a JSON file is about as low maintenance as it gets.&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;I&#39;m one of those who has searched &quot;how to center a div&quot; far too many times. So I spent quite a bit of time getting the UI to scale well across mashups without the image getting cut off. It was a lot of trial and error, but that&#39;s part of the fun.&lt;/p&gt;&lt;h3&gt;What part of the TRMNL Framework, Liquid filters, or other documentation was most helpful?&lt;/h3&gt;&lt;p&gt;I was impressed by how much tooling was already in place when I developed the plugin. I didn&#39;t even have my device yet, but I could use tools like &lt;a href=&quot;https://github.com/usetrmnl/trmnlp&quot;&gt;trmnlp&lt;/a&gt; to get started with plugin development. The &lt;a href=&quot;https://docs.trmnl.com/go/how-it-works&quot;&gt;docs&lt;/a&gt; were well put together and helped me understand the finer details, including how refresh intervals affect battery life. That kind of context made it easier to make informed decisions about how the plugin should work.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-whos-that-pokemon</id>
    <link href="https://trmnl.com/blog/featured-plugin-whos-that-pokemon"/>
    <published>2026-03-10T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Who&#39;s That Pokémon?</title>
    <updated>2026-03-10T00:00:00+00:00</updated>
    <dc:date>2026-03-10T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Ryan Kulp</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;p&gt;for more context see the &lt;a href=&quot;https://trmnl.com/blog/creator-fund&quot;&gt;Creator Fund announcement&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;our 5th payout rewards community contributions between February 8, 2026 and March 9, 2026.&lt;/p&gt;&lt;h2&gt;source of funds&lt;/h2&gt;&lt;p&gt;each payout period, a portion of developer-specific revenue goes directly to creators.&lt;/p&gt;&lt;figure class=&quot;lexxy-content__table-wrapper&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;source&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;/th&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;revenue&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;/th&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;share&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;/th&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;amount&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;Stripe&lt;/p&gt;&lt;p&gt;Developer Edition&lt;br&gt;TRMNL+&lt;/p&gt;&lt;p&gt;Shopify&lt;/p&gt;&lt;p&gt;Developer Edition&lt;br&gt;Clarity Kit (X)&lt;br&gt;Clarity Kit (OG)&lt;br&gt;BYOD&lt;/p&gt;&lt;/th&gt;&lt;td&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$2,140&lt;br&gt;$560&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$261.99&lt;br&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-1);&quot;&gt;$14,961.11&lt;/mark&gt;&lt;br&gt;$14,091.83&lt;br&gt;$12,716.19&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;15%&lt;br&gt;80%&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;15%&lt;br&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-1);&quot;&gt;0%&lt;/mark&gt;&lt;br&gt;10%&lt;br&gt;10%&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$321&lt;br&gt;$448&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$39.30&lt;br&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-1);&quot;&gt;$0.00&lt;/mark&gt;&lt;br&gt;$1,409.18&lt;br&gt;$1,271.62&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th class=&quot;lexxy-content__table-cell--header&quot;&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;/th&gt;&lt;td&gt;&lt;p&gt;$44,731.12&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-7);&quot;&gt;$3,489.10&lt;/mark&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;note that&amp;nbsp;&lt;i&gt;&lt;em&gt;Clarity Kit (X)&lt;/em&gt;&lt;/i&gt;&amp;nbsp;sales were excluded as this product is not yet released. these values will continue accruing for a future Creator Fund payout.&lt;/p&gt;&lt;h2&gt;by the numbers&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;total payout: $3,489.10&lt;/li&gt;&lt;li&gt;plugin author share: $2,442.37 (70% of total)&lt;/li&gt;&lt;li&gt;strategic contributors share: $1,046.73 (30% of total)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;plugin author&lt;/strong&gt;&lt;/b&gt;&amp;nbsp;earnouts are calculated automatically by a collection of factors including a plugin&#39;s age (on live playlists), presence (by % dominance on playlists), and impressions (times displayed on device), relative to all other community plugins. there is a minimum threshold of 50 total connections (installs + forks) to qualify for monthly payouts. see the algorithm in action &lt;a href=&quot;https://www.youtube.com/watch?v=FJA_tOYcMbI&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;strategic contributors&lt;/strong&gt;&lt;/b&gt;&amp;nbsp;are those who contribute to&amp;nbsp;&lt;a href=&quot;https://github.com/usetrmnl&quot;&gt;TRMNL open source projects&lt;/a&gt;. these earnouts are calculated with a mix of automation + human touch. relative to the funding available, below are allocations by category:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Firmware, 25%&lt;/li&gt;&lt;li&gt;3D Models, 8%&lt;/li&gt;&lt;li&gt;BYOS, 39%&lt;/li&gt;&lt;li&gt;Localizations, 8%&lt;/li&gt;&lt;li&gt;BYOD, 20%&lt;/li&gt;&lt;li&gt;Documentation/Resources, 0%&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;note that these allocations change monthly based on contributions by category.&lt;/p&gt;&lt;h2&gt;algorithm?&lt;/h2&gt;&lt;p&gt;over time the above weights, revenue share percentages, and minimum thresholds may change. reporting will become more transparent. our goal is an open sourced algorithm and self-service calculations with daily (or faster) resolution.&lt;/p&gt;&lt;p&gt;candid feedback is welcome, email&amp;nbsp;&lt;a href=&quot;mailto:team@trmnl.com&quot;&gt;team@trmnl.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/creator-fund-02-2026</id>
    <link href="https://trmnl.com/blog/creator-fund-02-2026"/>
    <published>2026-03-09T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Creator Fund - February 2026</title>
    <updated>2026-03-09T00:00:00+00:00</updated>
    <dc:date>2026-03-09T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Ryan Kulp</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;p&gt;We &lt;a href=&quot;https://usetrmnl.com/blog/introducing-trmnl-x&quot;&gt;introduced X&lt;/a&gt; on July 30, 2025. Below are live updates since launch.&lt;/p&gt;&lt;h3&gt;Estimated Ship Date&lt;/h3&gt;&lt;p&gt;As of March 18 &lt;b&gt;&lt;strong&gt;we&#39;re now shipping&lt;/strong&gt;&lt;/b&gt;! For more details watch &lt;a href=&quot;https://www.youtube.com/watch?v=TVSFlB5-ldk&quot;&gt;this video&lt;/a&gt; or see the &quot;March&quot; section at the bottom of this post.&lt;/p&gt;&lt;h3&gt;Tech Specs&lt;/h3&gt;&lt;p&gt;Highlights below, or see everything &lt;a href=&quot;https://trmnl.com/products/x/spec-sheet&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;10.3&quot; 1872x1404 EPD resolution with 16 shades of gray&lt;/li&gt;&lt;li&gt;Dust and basic waterproofing with a hacker-friendly enclosure&lt;/li&gt;&lt;li&gt;ESP32-S3 with 16MB of flash and 8MB of PSRAM as a core processor with fallback 2.4GHz WiFi&lt;/li&gt;&lt;li&gt;5GHz WiFi support via ESP32-C5 as a modem (external antenna)&lt;/li&gt;&lt;li&gt;Support up to 2x 6000mAh 3.8V LiPo batteries with automatic detection&lt;/li&gt;&lt;li&gt;Battery gas gauge from TI for battery SOC/SOH/capacity tracking&lt;/li&gt;&lt;li&gt;Bosch accelerometer for portrait/landscape orientation&lt;/li&gt;&lt;li&gt;Gesture touch-bar based on Azotech IC&lt;/li&gt;&lt;li&gt;Magnetic pogo pin-based mount for charging and accessories (Coming 2026)&lt;/li&gt;&lt;li&gt;OTG support with 5V 2A output&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Dimensions&lt;/h3&gt;&lt;p&gt;These values may change as we scale production. last updated December 15, 2025.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY2MzIxMjU_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--afd8df5339ded2d0dbc6f0a9c022b8a90db3d452&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY2MzIxMjUsInB1ciI6ImJsb2JfaWQifX0=--4fe9bcea7ce6f5b07810b792a3e4769bd9b3ec05/TRMNL-X-dimensions-2025-12-15.jpg&quot; filename=&quot;TRMNL-X-dimensions-2025-12-15.jpg&quot; filesize=&quot;40897&quot; width=&quot;1278&quot; height=&quot;832&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;X enclosure dimensions (mm)&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY2MzIxMjUsInB1ciI6ImJsb2JfaWQifX0=--4fe9bcea7ce6f5b07810b792a3e4769bd9b3ec05/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/TRMNL-X-dimensions-2025-12-15.jpg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        X enclosure dimensions (mm)
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;Weight (device only, no attachments)&lt;/p&gt;&lt;p&gt;1 battery - 362 grams&lt;br&gt;2 batteries - 448 grams&lt;/p&gt;&lt;h3&gt;&lt;b&gt;&lt;strong&gt;August 2025&lt;/strong&gt;&lt;/b&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Multiple boards and controllers support touch gestures, battery charging, and 5ghz WiFi&lt;/li&gt;&lt;li&gt;The circular area interfaces with a waterproof &quot;puck&quot; shaped charging connector, and several test points on the motherboard&#39;s bottom will let us build a QA jig for our warehouse&lt;/li&gt;&lt;li&gt;Prior to release we&#39;ll prototypes to your favorite creators for first-look reviews&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;September 2025&lt;/h3&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY0Njk4MDc_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--e65fee844581cfc51ea6b1464022c1afb0ca026c&quot; content-type=&quot;image/png&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY0Njk4MDcsInB1ciI6ImJsb2JfaWQifX0=--3848d7bc1ccc9b3f6dbae3f418cdc08223198ba7/trmnl-x-board-preview.png&quot; filename=&quot;trmnl-x-board-preview.png&quot; filesize=&quot;187997&quot; width=&quot;2636&quot; height=&quot;2066&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;PCB preview&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY0Njk4MDcsInB1ciI6ImJsb2JfaWQifX0=--3848d7bc1ccc9b3f6dbae3f418cdc08223198ba7/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/trmnl-x-board-preview.png&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        PCB preview
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;ol&gt;&lt;li&gt;We ordered 50x more prototypes with stronger magnets so devices can attach directly to a surface (e.g. refrigerator) without&amp;nbsp;&lt;a href=&quot;https://github.com/usetrmnl/mounts&quot;&gt;mounts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Dual band WiFi will be powered by the ESP32-C5 and we&#39;ve benchmarked faster speeds + better range with custom modem firmware&lt;/li&gt;&lt;li&gt;Orders with the Battery Upgrade (or Clarity Kit) will now enjoy 10,000mAh versus the announced 7,000mAh variant&lt;/li&gt;&lt;li&gt;Our &quot;charging puck&quot; (name TBD) now has a universal connector for kickstands and other peripheral accessories that will debut in 2026&lt;/li&gt;&lt;li&gt;The same firmware that runs all OG + BYOD devices has&amp;nbsp;&lt;a href=&quot;https://github.com/usetrmnl/trmnl-firmware/tree/trmnl_x_alpha&quot;&gt;been extended&lt;/a&gt;&amp;nbsp;and is already running my own X prototype, &lt;a href=&quot;https://x.com/useTRMNL/status/1979637211412017281&quot;&gt;preview here&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;October 2025&lt;/h3&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY0ODQyMzM_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--a5a50e0b90ef76e5acdf6beea3f046c57655527b&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY0ODQyMzMsInB1ciI6ImJsb2JfaWQifX0=--11ea7b6379735e1dea6bf5387f6192ba4adb2b2b/TRMNL-X-robin-williams-test.jpeg&quot; filename=&quot;TRMNL-X-robin-williams-test.jpeg&quot; filesize=&quot;265844&quot; width=&quot;960&quot; height=&quot;1280&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Grayscale testing with a GOAT&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY0ODQyMzMsInB1ciI6ImJsb2JfaWQifX0=--11ea7b6379735e1dea6bf5387f6192ba4adb2b2b/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-X-robin-williams-test.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Grayscale testing with a GOAT
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;ol&gt;&lt;li&gt;The first batch of screens arrived at our USA warehouse, more en route to our &lt;a href=&quot;https://usetrmnl.com/blog/slashing-postage-rates-again&quot;&gt;Berlin warehouse&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Gesture bar + charging pucks are in small batch production&lt;/li&gt;&lt;li&gt;Received and approved packaging samples. Model X packaging will be more premium and protective than OG packaging.&lt;/li&gt;&lt;li&gt;Consolidating WiFi antennas (2.4 + 5gh) to a single component&lt;/li&gt;&lt;li&gt;Added 3 angle options (degrees) to the kickstand&lt;/li&gt;&lt;li&gt;[Work in progress] battery options may grow another 20% to 6000/12000mAh variants pending more testing&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;November 2025&lt;/h3&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY1MTg1ODA_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--d8a89686dba4f4b04bc16dcb136c95eab525f0bd&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTg1ODAsInB1ciI6ImJsb2JfaWQifX0=--c1477124c066c9bfa66b9ccd6f09cb176c30b9d9/TRMNL-X-assembly.jpeg&quot; filename=&quot;TRMNL-X-assembly.jpeg&quot; filesize=&quot;296326&quot; width=&quot;1280&quot; height=&quot;960&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Full assembly (3D printed parts, not final)&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTg1ODAsInB1ciI6ImJsb2JfaWQifX0=--c1477124c066c9bfa66b9ccd6f09cb176c30b9d9/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-X-assembly.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Full assembly (3D printed parts, not final)
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY1MTc0OTY_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--824732486c8578547d16075875d06a33df483cc4&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTc0OTYsInB1ciI6ImJsb2JfaWQifX0=--74089f2a8c4c8b2d415181e16336639c0fca35f4/TRMNL-X-prototype-back.jpeg&quot; filename=&quot;TRMNL-X-prototype-back.jpeg&quot; filesize=&quot;173771&quot; width=&quot;1280&quot; height=&quot;674&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Fully functional prototype (3D printed case, non-branded silicone pads)&quot;&gt;&lt;/action-text-attachment&gt;&lt;/p&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTc0OTYsInB1ciI6ImJsb2JfaWQifX0=--74089f2a8c4c8b2d415181e16336639c0fca35f4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-X-prototype-back.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Fully functional prototype (3D printed case, non-branded silicone pads)
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY1MTc0OTc_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--3cf5cb7b951505b570349e23af70950eec7fd0cd&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://usetrmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTc0OTcsInB1ciI6ImJsb2JfaWQifX0=--aaf5c4631331eaf1ee4fbc0f8b97cab4cdc71593/TRMNL-X-prototype-front.jpeg&quot; filename=&quot;TRMNL-X-prototype-front.jpeg&quot; filesize=&quot;238857&quot; width=&quot;1280&quot; height=&quot;960&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Prototype running latest (public) firmware release&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY1MTc0OTcsInB1ciI6ImJsb2JfaWQifX0=--aaf5c4631331eaf1ee4fbc0f8b97cab4cdc71593/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-X-prototype-front.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Prototype running latest (public) firmware release
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Added extra reset buttons to S3 and C5 MCUs for hacker friendliness, board design is final&lt;/li&gt;&lt;li&gt;Batteries are in production and we can confirm the improved 6k / 12kmAh sizing (announced size: 5k / 7k)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Enclosure injection molds are in production, purchase order placed for thousands of cases in different colors&lt;/li&gt;&lt;li&gt;Magnet deliveries from Chinese factories have been delayed due to recent&amp;nbsp;&lt;a href=&quot;https://www.cnbc.com/2025/11/10/china-suspends-some-critical-mineral-export-curbs-to-the-us-as-trade-truce-takes-hold.html&quot;&gt;Critical Mineral Export Bans&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;December 2025&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Battery production complete, shipping to our warehouses next week&lt;/li&gt;&lt;li&gt;EC licenses underway at testing facilities&lt;/li&gt;&lt;li&gt;Packaging in mass production&lt;/li&gt;&lt;li&gt;Magnets in mass production&lt;/li&gt;&lt;li&gt;[New] OTG functionality - power other devices from your TRMNL&#39;s charging puck&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;January 2026&lt;/h3&gt;&lt;p&gt;From my desk to yours, a &lt;a href=&quot;https://www.youtube.com/watch?v=LNcoAZJP3hk&quot;&gt;video update&lt;/a&gt;.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY3NTYyNDE_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--ff980753fe59bd5c1d900042c94b672cb7df22bd&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY3NTYyNDEsInB1ciI6ImJsb2JfaWQifX0=--4a9e8b1d8020df4a822132b47790326a0e899297/trmnl-x-fulfillment-update-jan-2026.jpg&quot; filename=&quot;trmnl-x-fulfillment-update-jan-2026.jpg&quot; filesize=&quot;102241&quot; width=&quot;1280&quot; height=&quot;720&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY3NTYyNDEsInB1ciI6ImJsb2JfaWQifX0=--4a9e8b1d8020df4a822132b47790326a0e899297/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/trmnl-x-fulfillment-update-jan-2026.jpg&quot;&gt;

&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;h3&gt;February 2026&lt;/h3&gt;&lt;p&gt;From our warehouse to your desk, a &lt;a href=&quot;https://www.youtube.com/watch?v=hiUiWCy93kg&quot;&gt;video update&lt;/a&gt;.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4MDMzNzA_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--552e5837128e6639a6a9fcb2642fef5ad103b626&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4MDMzNzAsInB1ciI6ImJsb2JfaWQifX0=--8d3563708b4c2953b5f4e0585a21d05396a8fbe9/model-x-fulfillment-update-2.jpeg&quot; filename=&quot;model-x-fulfillment-update-2.jpeg&quot; filesize=&quot;227933&quot; width=&quot;1280&quot; height=&quot;720&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4MDMzNzAsInB1ciI6ImJsb2JfaWQifX0=--8d3563708b4c2953b5f4e0585a21d05396a8fbe9/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/model-x-fulfillment-update-2.jpeg&quot;&gt;

&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;h3&gt;March 2026&lt;/h3&gt;&lt;p&gt;From my desk to yours, a &lt;a href=&quot;https://www.youtube.com/watch?v=TVSFlB5-ldk&quot;&gt;video update&lt;/a&gt;.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY5MDQ5NjM_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--871782b71aa9639d525d2c027127dc00c01ca445&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY5MDQ5NjMsInB1ciI6ImJsb2JfaWQifX0=--e75e94298c78b2288a20d9f90d48226ddd589d1f/trmnl-x-now-shipping-video-update.jpg&quot; filename=&quot;trmnl-x-now-shipping-video-update.jpg&quot; filesize=&quot;184157&quot; width=&quot;1280&quot; height=&quot;720&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY5MDQ5NjMsInB1ciI6ImJsb2JfaWQifX0=--e75e94298c78b2288a20d9f90d48226ddd589d1f/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/trmnl-x-now-shipping-video-update.jpg&quot;&gt;

&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;If you prefer not to watch the video, in summary we&#39;re shipping single-battery devices only from our USA warehouse because our magnet supplier ripped us off and sent thousands of weak magnets, following multiple sample shipments with the correct (strong) magnets.&lt;/p&gt;&lt;p&gt;As of Wednesday, March 18:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Berlin warehouse has all 3 types of PCBs&lt;/li&gt;&lt;li&gt;Berlin warehouse should receive device enclosures in 1-2 weeks&lt;/li&gt;&lt;li&gt;USA warehouse has everything and has begun assembly + fulfillment&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To check your place in the queue go here:&lt;br&gt;&lt;a href=&quot;https://trmnl.com/order-tracker&quot;&gt;https://trmnl.com/order-tracker&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you already have a TRMNL, install the Order Tracker plugin to stay up to date:&lt;br&gt;&lt;a href=&quot;https://trmnl.com/recipes/260817&quot;&gt;https://trmnl.com/recipes/260817&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;How can I estimate the time it will take to receive mine?&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Devices will be shipped in the order they were purchased and we intend to scale to 100s of fulfillments per day, as we have done for past releases and back-in-stock periods.&lt;/p&gt;&lt;p&gt;Our 2x warehouses have trained 15+ individuals to flash, assemble, and ship devices. We do not outsource to 3rd party logistics companies. You can learn more about our end to end philosophy and technology &lt;a href=&quot;https://trmnl.com/blog/in-house-fulfillment&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://trmnl.com/blog/logistics-tech&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/model-x-progress</id>
    <link href="https://trmnl.com/blog/model-x-progress"/>
    <published>2026-03-04T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Model X Progress Report</title>
    <updated>2026-03-04T00:00:00+00:00</updated>
    <dc:date>2026-03-04T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Ryan Kulp</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;p&gt;our most popular plugin is the weather. and not just those we maintain (&lt;a href=&quot;https://trmnl.com/integrations/weather&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://trmnl.com/integrations/tempest-weather-station&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;https://trmnl.com/integrations/netatmo-weather-station&quot;&gt;3&lt;/a&gt;), but the &lt;a href=&quot;https://trmnl.com/recipes?search=weather&amp;amp;sort-by=newest&quot;&gt;greater community&#39;s&lt;/a&gt;. if i anticipated this &lt;i&gt;&lt;em&gt;before&lt;/em&gt;&lt;/i&gt; starting TRMNL i might have Googled &quot;barometric pressure&quot; &lt;i&gt;&lt;em&gt;before&lt;/em&gt;&lt;/i&gt; 5 minutes ago. but here we are.&lt;/p&gt;&lt;p&gt;as weather plugins have matured, one thing we&#39;ve noticed is the importance of hyperlocal data. a postal code approximation is not always good enough. neither is one&#39;s personal backyard station.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;strong&gt;now you can get all these measurements directly from your OG TRMNL&lt;/strong&gt;&lt;/b&gt; by hooking up 1 or more environmental sensors.&lt;/p&gt;&lt;h3&gt;requirements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;TRMNL OG device (&lt;a href=&quot;https://shop.trmnl.com/products/trmnl&quot;&gt;get one&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;sensor + QWIIC connector (&lt;a href=&quot;https://www.adafruit.com/product/4885&quot;&gt;AHT20&lt;/a&gt; - $6, &lt;a href=&quot;https://www.sparkfun.com/sparkfun-atmospheric-sensor-breakout-bme280-qwiic.html&quot;&gt;BME280&lt;/a&gt; - $17, &lt;a href=&quot;https://shop.pimoroni.com/products/scd41-co2-sensor-breakout&quot;&gt;SCD41&lt;/a&gt; - $43, etc)&lt;/li&gt;&lt;li&gt;soldering iron&lt;/li&gt;&lt;li&gt;tenacity&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;a 3D printer is also recommended, as the sensor we&#39;re attaching to TRMNL won&#39;t fit inside the original enclosure. you &lt;i&gt;&lt;em&gt;could&lt;/em&gt;&lt;/i&gt; try cutting a hole in your case but we don&#39;t recommend it.&lt;/p&gt;&lt;h3&gt;showcase&lt;/h3&gt;&lt;p&gt;before digging in, a quick shoutout to community member JackR who managed to install an AHT20 directly inside his OG device, then close it back up without any funny business.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4OTg2NTM_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--489acb97aa9355290bf6b306f14d9c4a51330b08&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4OTg2NTMsInB1ciI6ImJsb2JfaWQifX0=--c64a9672a170de00d2cfacdad09c7cd057284c43/jackr-trmnl-og-environment-sensors.jpeg&quot; filename=&quot;jackr-trmnl-og-environment-sensors.jpeg&quot; filesize=&quot;142729&quot; width=&quot;960&quot; height=&quot;1055&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;no ABS was harmed&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4OTg2NTMsInB1ciI6ImJsb2JfaWQifX0=--c64a9672a170de00d2cfacdad09c7cd057284c43/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/jackr-trmnl-og-environment-sensors.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        no ABS was harmed
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;another shoutout to member lanrat who modeled an &lt;a href=&quot;https://github.com/lanrat/trmnl_plugins/blob/main/3D_models/Trmnl%20BMP280%20mount/README.md&quot;&gt;exterior mount&lt;/a&gt; for a BMP280 sensor:&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY5NzUyOTA_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--d0a5ed2716463d2797eec9abffec8894002abd04&quot; content-type=&quot;image/png&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY5NzUyOTAsInB1ciI6ImJsb2JfaWQifX0=--e5d59b05c600f183586edf300095218e8d106dca/trmnl-bmp280-mount.png&quot; filename=&quot;trmnl-bmp280-mount.png&quot; filesize=&quot;564229&quot; width=&quot;838&quot; height=&quot;1069&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;BMP280 mount&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY5NzUyOTAsInB1ciI6ImJsb2JfaWQifX0=--e5d59b05c600f183586edf300095218e8d106dca/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/trmnl-bmp280-mount.png&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        BMP280 mount
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;and some &lt;a href=&quot;https://github.com/lanrat/trmnl_plugins/tree/main/Environmental%20Sensor%20Graph&quot;&gt;source code&lt;/a&gt; for a beautiful sensor plugin:&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY5NzUyODc_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--744d40f23962387a766c616478a2f164773c66f4&quot; content-type=&quot;image/png&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY5NzUyODcsInB1ciI6ImJsb2JfaWQifX0=--a5a90dc09965e3803a26d40041926801afceb52f/bmp280-sensor-plugin-example.png&quot; filename=&quot;bmp280-sensor-plugin-example.png&quot; filesize=&quot;72984&quot; width=&quot;1200&quot; height=&quot;820&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;copy/paste sensor plugin&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY5NzUyODcsInB1ciI6ImJsb2JfaWQifX0=--a5a90dc09965e3803a26d40041926801afceb52f/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/bmp280-sensor-plugin-example.png&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        copy/paste sensor plugin
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;ok, let&#39;s get started.&lt;/p&gt;&lt;h3&gt;understanding our sensors&lt;/h3&gt;&lt;p&gt;behind all the magic below is a collection of environmental sensor libraries by our very own Larry Bank, for example:&lt;br&gt;&lt;a href=&quot;https://github.com/bitbank2/bb_scd41&quot;&gt;https://github.com/bitbank2/b&lt;/a&gt;&lt;a href=&quot;https://github.com/bitbank2/bb_scd41&quot;&gt;b_scd41&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;https://github.com/bitbank2/bb_temperature&quot;&gt;https://github.com/bitbank2/bb_temperature&lt;/a&gt;&lt;/p&gt;&lt;p&gt;these will be &lt;a href=&quot;https://github.com/usetrmnl/trmnl-firmware/pull/317&quot;&gt;included&lt;/a&gt; in our 1.7.9+ &lt;a href=&quot;https://github.com/usetrmnl/trmnl-firmware/releases&quot;&gt;firmware release&lt;/a&gt; but may be leveraged immediately by checking out the branch and building the binary yourself.&lt;/p&gt;&lt;p&gt;anyway, here&#39;s how it works in Larry&#39;s words:&lt;br&gt;&lt;br&gt;&lt;i&gt;&lt;em&gt;When a compatible sensor is attached to your TRMNL OG it is automatically detected, activated, and sample data is gathered during each device wakeup. This ensures the power being used by the sensors doesn&#39;t impact the battery life. Not all environmental sensors can work this way (e.g. PM2.5 and some gas sensors need to be on for longer periods of time and use a lot of power). We will keep expanding the list of supported sensors, but the goal is to support low power sensors that can operate during the short wake periods of the TRMNL, then be shut down while the TRMNL sleeps.&lt;/em&gt;&lt;/i&gt;&lt;/p&gt;&lt;h3&gt;what we&#39;re building&lt;/h3&gt;&lt;p&gt;sensor support relies on test points on the bottom of your OG model&#39;s PCB. here was our early proof of concept:&lt;/p&gt;&lt;p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4NTQxNzY_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--c8a4b78d33c3cc800114e5b898411a929f62731d&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQxNzYsInB1ciI6ImJsb2JfaWQifX0=--c55459f56456749c622f194fdf9cde7c85a66111/og-poc-sensor-attached.jpg&quot; filename=&quot;og-poc-sensor-attached.jpg&quot; filesize=&quot;1258839&quot; width=&quot;4032&quot; height=&quot;3024&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Pimoroni SCD41&quot;&gt;&lt;/action-text-attachment&gt;&lt;/p&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQxNzYsInB1ciI6ImJsb2JfaWQifX0=--c55459f56456749c622f194fdf9cde7c85a66111/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/og-poc-sensor-attached.jpg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Pimoroni SCD41
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4NTQxNzc_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--6b85573924f3c8fe921db39284d4272db0a63b45&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQxNzcsInB1ciI6ImJsb2JfaWQifX0=--0b645bb6bd5b10cb04d95a38214f70021e2954b9/og-poc-sensor-data.jpg&quot; filename=&quot;og-poc-sensor-data.jpg&quot; filesize=&quot;1853611&quot; width=&quot;4032&quot; height=&quot;3024&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Environmental Sensor Data Stream&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQxNzcsInB1ciI6ImJsb2JfaWQifX0=--0b645bb6bd5b10cb04d95a38214f70021e2954b9/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/og-poc-sensor-data.jpg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Environmental Sensor Data Stream
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;as you can see, 3 (or more) data types can come through a single I2C bus. which got us thinking... what if we made this available inside TRMNL?&lt;/p&gt;&lt;h3&gt;solder time&lt;/h3&gt;&lt;p&gt;from Larry:&lt;/p&gt;&lt;blockquote&gt;The ESP32-C3 used on the TRMNL OG has very few available GPIOs. TRMNL doesn&#39;t need very many, so there are a few unused ones. Bogdan, the designer of the TRMNL board, had some forethought and exposed the unused GPIOs as test points on the bottom side of the PCB.&lt;/blockquote&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4NTQxOTQ_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--923bb2cd33329d0bc02dc716e2eab744d3162d05&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQxOTQsInB1ciI6ImJsb2JfaWQifX0=--627503cf9bae4ab913aa856630e7b38acc10c904/TRMNL-OG-PCB-bottom.jpg&quot; filename=&quot;TRMNL-OG-PCB-bottom.jpg&quot; filesize=&quot;67150&quot; width=&quot;384&quot; height=&quot;512&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;TRMNL OG solder points&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQxOTQsInB1ciI6ImJsb2JfaWQifX0=--627503cf9bae4ab913aa856630e7b38acc10c904/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/TRMNL-OG-PCB-bottom.jpg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        TRMNL OG solder points
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;blockquote&gt;In the photo above you can see the test points on the bottom of the OG PCB. The ESP32&#39;s IO matrix gives the flexibility to use almost any combination for I2C. I chose to use the RX and TX pins (GPIO 20 &amp;amp; 21). In the photo below you can see how I cut a QWIIC cable in half and soldered the leads to the OG PCB:&lt;/blockquote&gt;&lt;p&gt;Black = GND&lt;br&gt;Red = 3.3V&lt;br&gt;Blue = SDA (TX = 21)&lt;br&gt;Yellow = SCL (RX = 20)&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4NTQyMDA_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--b162cf1912d65e4119c923d3915dc05908db8dab&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQyMDAsInB1ciI6ImJsb2JfaWQifX0=--ca2780bacc4c061a5939530e3ebb5b6d3eb6dec4/TRMNL-OG-qwiic-connected.jpg&quot; filename=&quot;TRMNL-OG-qwiic-connected.jpg&quot; filesize=&quot;87065&quot; width=&quot;480&quot; height=&quot;640&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;TRMNL OG + QWIIC Connector&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQyMDAsInB1ciI6ImJsb2JfaWQifX0=--ca2780bacc4c061a5939530e3ebb5b6d3eb6dec4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/TRMNL-OG-qwiic-connected.jpg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        TRMNL OG + QWIIC Connector
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;that&#39;s a pretty nice solder job. but have no fear -- if your outcome is closer to what you see below, pat yourself on the back with a firm &quot;&lt;i&gt;&lt;em&gt;it&#39;ll hold&lt;/em&gt;&lt;/i&gt;&quot; in your best Southern accent.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4NTQyMDU_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--0ba8152bdaabe3431b1923868a8320212fa449d6&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQyMDUsInB1ciI6ImJsb2JfaWQifX0=--5134b616884ee441e3de13396836c076a54efc05/TRMNL-OG-BME280-soldered.jpeg&quot; filename=&quot;TRMNL-OG-BME280-soldered.jpeg&quot; filesize=&quot;338301&quot; width=&quot;960&quot; height=&quot;1280&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Founders Who Solder&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQyMDUsInB1ciI6ImJsb2JfaWQifX0=--5134b616884ee441e3de13396836c076a54efc05/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-OG-BME280-soldered.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Founders Who Solder
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;with your PCB rigged up to a sensor, the TRMNL firmware (v1.7.9+) will automatically detect and parse the make, model, etc data coming from each peripheral. you can even daisy chain multiple sensors if that&#39;s your thing.&lt;/p&gt;&lt;p&gt;let&#39;s put this back together, shall we?&lt;/p&gt;&lt;h3&gt;OG assembly remix&lt;/h3&gt;&lt;p&gt;as i mentioned earlier, the original enclosure is not going to fit your new sensor. so i printed one of my favorite &lt;a href=&quot;https://github.com/usetrmnl/mounts&quot;&gt;community mounts&lt;/a&gt;, the &lt;a href=&quot;https://makerworld.com/en/models/1267576-trmnl-stand-for-e-ink-dashboard#profileId-1293666&quot;&gt;Minimal stand&lt;/a&gt; by CtrlAltPrint.&lt;/p&gt;&lt;p&gt;the design features OG-specific screw holes to attach your PCB, and you only need 1-2 of them to make everything secure.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4NTQyMjU_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--8613acdec8561f21af45b9f12956869ebf6f7f56&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQyMjUsInB1ciI6ImJsb2JfaWQifX0=--2a906eb42458d7161ca00ef14428b727c533489b/TRMNL-OG-minimal-case-with-sensor.jpeg&quot; filename=&quot;TRMNL-OG-minimal-case-with-sensor.jpeg&quot; filesize=&quot;314891&quot; width=&quot;1280&quot; height=&quot;960&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;TRMNL OG, Sensor, Custom Enclosure&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpeg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQyMjUsInB1ciI6ImJsb2JfaWQifX0=--2a906eb42458d7161ca00ef14428b727c533489b/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/TRMNL-OG-minimal-case-with-sensor.jpeg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        TRMNL OG, Sensor, Custom Enclosure
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;now that we&#39;re wired up, let&#39;s make a plugin.&lt;/p&gt;&lt;h3&gt;environment sensor plugin development&lt;/h3&gt;&lt;p&gt;log into your TRMNL account (or the open-source &lt;a href=&quot;https://github.com/usetrmnl/terminus&quot;&gt;Terminus&lt;/a&gt; server) and make a new Private Plugin (Extension on Terminus).&lt;/p&gt;&lt;p&gt;inside the Markup Editor &amp;gt; Merge Variables accordion you&#39;ll see a new node, Sensor Readings.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4NTQyMzk_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--dc3f5bef2bf41e0792debdc22af108b7a8874905&quot; content-type=&quot;image/png&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQyMzksInB1ciI6ImJsb2JfaWQifX0=--9bc4a430485742d17b3d8dab1c82bbf6ebb23920/trmnl-merge-variables-sensor-readings.png&quot; filename=&quot;trmnl-merge-variables-sensor-readings.png&quot; filesize=&quot;33633&quot; width=&quot;698&quot; height=&quot;466&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQyMzksInB1ciI6ImJsb2JfaWQifX0=--9bc4a430485742d17b3d8dab1c82bbf6ebb23920/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/trmnl-merge-variables-sensor-readings.png&quot;&gt;

&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;inside is a collection of sensor readings, each &lt;a href=&quot;https://github.com/usetrmnl/trmnl-firmware/commit/29790aaa7f56925d5f50066a3145ace17d3adfe0#diff-bbda171448cb7d0e40256face102ff3dc0e7350386e3bdc36a3705861933f762R48&quot;&gt;bundled up&lt;/a&gt; and sent to TRMNL whenever your device wakes up for new content. here&#39;s an example data set:&lt;/p&gt;&lt;pre data-language=&quot;json&quot;&gt;{&lt;br&gt;  &quot;device_1&quot;: {&lt;br&gt;    &quot;temperature&quot;: [{&quot;2026-02-22 13:03:48 UTC&quot;: 20.1}, {&quot;2026-02-22 13:08:51 UTC&quot;: 20.2}, {{&quot;2026-02-22 13:14:01 UTC&quot;: 19.9}],&lt;br&gt;    &quot;humidity&quot;: [{&quot;2026-02-22 13:03:48 UTC&quot;: 39}, {&quot;2026-02-22 13:08:51 UTC&quot;: 42}, {{&quot;2026-02-22 13:14:01 UTC&quot;: 41}],&lt;br&gt;    &quot;carbon_dioxide&quot;: [], // same as temperature; timestamp =&amp;gt; value&lt;br&gt;    &quot;pressure&quot;: [], // &quot;&quot;&lt;br&gt;  },&lt;br&gt;  &quot;device_2&quot;: {} // each of your TRMNL devices with sensors attached is accessible&lt;br&gt;}&lt;/pre&gt;&lt;p&gt;under the hood we store the Make, Model, Kind (e.g. &lt;code&gt;temperature&lt;/code&gt;) Unit (e.g. &lt;code&gt;celsius&lt;/code&gt;), and Value for every reading sent by your TRMNL device. these readings may then be visualized inside custom plugins, and even shared on the marketplace for other users to install.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4NTQzODQ_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--ba0c52a88b795af66e61a7786a5cf19754ea57af&quot; content-type=&quot;image/png&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQzODQsInB1ciI6ImJsb2JfaWQifX0=--c2756ea33f4288d6763e1962a1ea39951b1207c3/trmnl-sensor-reading-logs.png&#39;.png&quot; filename=&quot;trmnl-sensor-reading-logs.png&#39;.png&quot; filesize=&quot;60257&quot; width=&quot;1060&quot; height=&quot;434&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;Sensor Reading logs&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTQzODQsInB1ciI6ImJsb2JfaWQifX0=--c2756ea33f4288d6763e1962a1ea39951b1207c3/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/trmnl-sensor-reading-logs.png&#39;.png&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        Sensor Reading logs
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;and there we have it.&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4NTYxNjM_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--0565d56c5e5bb9ba09c5eb529c56ff87ede65083&quot; content-type=&quot;image/jpeg&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTYxNjMsInB1ciI6ImJsb2JfaWQifX0=--cd5dc561ed3f4c74d1a60cdcbb43a38619f18ea1/trmnl-environment-sensor-demo-example.jpg&quot; filename=&quot;trmnl-environment-sensor-demo-example.jpg&quot; filesize=&quot;144494&quot; width=&quot;800&quot; height=&quot;518&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;TRMNL OG + Sensors&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--jpg&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4NTYxNjMsInB1ciI6ImJsb2JfaWQifX0=--cd5dc561ed3f4c74d1a60cdcbb43a38619f18ea1/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--d5e667c0137ab726f37f5f3b8ccaf980246e425b/trmnl-environment-sensor-demo-example.jpg&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        TRMNL OG + Sensors
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;if &lt;i&gt;&lt;em&gt;you&lt;/em&gt;&lt;/i&gt; rig up an OG to report environment data, send me a pic (ryan@trmnl) for $50 in store credit that never expires. we&#39;d love to see what you build.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/environment-sensors</id>
    <link href="https://trmnl.com/blog/environment-sensors"/>
    <published>2026-03-03T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>DIY Environment Sensors</title>
    <updated>2026-03-03T00:00:00+00:00</updated>
    <dc:date>2026-03-03T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://trmnl.com/recipes/232425&quot;&gt;Weird Patents&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member Abdul &lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;(Discord: &lt;/mark&gt;&lt;code&gt;y2ee201&lt;/code&gt;) created the &lt;a href=&quot;https://trmnl.com/recipes/232425&quot;&gt;Weird Patents&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;Like all my authored plugins, I built this one for myself as the target user. The original idea was to display random or curated patents as a kind of memorabilia plaque for patent owners and inventors with a TRMNL. While researching APIs and building the backend, I revisited a website that releases an annual &quot;funny patents&quot; list; it was both amusing and inspiring in showcasing of human ingenuity. Instantly, the plugin pivoted from informational to inspirational+quirky. Also, patents are still published with those classic &lt;i&gt;&lt;em&gt;orthographic&lt;/em&gt;&lt;/i&gt; or &lt;i&gt;&lt;em&gt;knolling &lt;/em&gt;&lt;/i&gt;illustrations, which I felt would look beautiful on the TRMNL&#39;s e-ink display. Maybe I should call this art style &quot;Patentcore&quot;.&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;Were you inspired by any other recipes or plugin creators?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;I&#39;ve been inspired by other plugin authors quite a bit; particularly &lt;a href=&quot;https://trmnl.com/recipes/113468&quot;&gt;Trump Quotes&lt;/a&gt; and &lt;a href=&quot;https://trmnl.com/recipes/193113&quot;&gt;Air Quality&lt;/a&gt;, to name a few. Some of my plugins borrow design patterns and visualizations from the TRMNL team or the community. That said, a few, like the &lt;a href=&quot;https://trmnl.com/recipes/201904&quot;&gt;fortune cookie&lt;/a&gt; plugin, are original designs including the graphics involved. I typically share prototypes on the community Discord server and get valuable feedback and encouragement from the TRMNL team and other authors. Once submitted, the team provides technical design feedback that helps me improve and learn.&lt;/p&gt;&lt;h3&gt;How did you balance look vs functionality?&lt;/h3&gt;&lt;p&gt;After the pivot from informational to humorous, &lt;b&gt;&lt;strong&gt;looks took the lead&lt;/strong&gt;&lt;/b&gt;. The plugin&#39;s &quot;function&quot; became abstract; it&#39;s there to inspire, amuse, or just make you smile. For most of the users, I’m pretty sure it&#39;s the &lt;code&gt;Patentcore&lt;/code&gt; aesthetic on TRMNL’s e-ink display.&lt;/p&gt;&lt;h3&gt;What was your process for creating the plugin?&lt;/h3&gt;&lt;p&gt;Like any software project, a TRMNL plugin is a combination of frontend and backend. I design the frontend based on the idea, then build the backend to support it. The e-ink optimization was mostly handled through TRMNL&#39;s built-in image processing, which made rendering those detailed line illustrations straightforward. Since the patent images are third party, I decided to host them on my own server for reliability. I built a REST API to serve the images and metadata. My stack: Python, FastAPI, and Azure, along with TRMNL&#39;s Liquid templating framework.&lt;/p&gt;&lt;h3&gt;Did you learn anything that you want to apply to future or past recipes?&lt;/h3&gt;&lt;p&gt;With each plugin, I learn something new. This one taught me how to center-crop images in HTML/CSS, responsive auto-resizing within TRMNL&#39;s design framework, and handle various image rendering challenges. But the most important lesson came from the Discord community. Mario said, &quot;Sometimes people just want a relief valve.&quot; That stuck with me; &lt;b&gt;&lt;strong&gt;not every plugin needs to be utilitarian. Sometimes it&#39;s enough to make someone smile.&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;h3&gt;What is your favorite plugin that someone else created and why?&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://trmnl.com/recipes/14789&quot;&gt;Shan Shui Chinese Landscape&lt;/a&gt; is one of the most aesthetically pleasing plugins on the platform. The procedurally generated ink-wash style looks stunning on the e-ink display. It&#39;s the kind of plugin that reminds me why I wanted a TRMNL in the first place.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-weird-patents</id>
    <link href="https://trmnl.com/blog/featured-plugin-weird-patents"/>
    <published>2026-03-03T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Weird Patents</title>
    <updated>2026-03-03T00:00:00+00:00</updated>
    <dc:date>2026-03-03T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Larry Bank</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;h3&gt;Challenges of a battery-powered device&lt;/h3&gt;&lt;p&gt;Empowering your TRMNL to run for months between charges is a defining part of the user experience; managing cables, frequent charging and dead devices turn power management into another chore that steals your focus.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;A general hardware rule: more efficient components are more expensive and more complex.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Below is an overview of the difficult decisions we&#39;ve made on both the hardware and software side to leverage complexity and make TRMNL a maintenance-free device.&lt;/p&gt;&lt;h3&gt;The Components&lt;/h3&gt;&lt;p&gt;Let&#39;s begin with the anatomy of a TRMNL OG device.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;ESP32-C3&lt;/strong&gt;&lt;/b&gt;: This version of the ESP32 is less powerful and has less memory than other models, but is the lowest power version with WiFi support. The tradeoff is that software becomes more complex to work around the constraints of the MicroController Unit [MCU]. Other WiFi enabled MCUs use less power but also have a higher price-per-unit and software complexity.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;Lithium Battery&lt;/strong&gt;&lt;/b&gt;: There are other battery chemistries, but this type of battery can handle the high current demands of the ESP32 and can be recharged hundreds of times.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;Voltage Regulator&lt;/strong&gt;&lt;/b&gt;: The battery is rated 3.7-4.2V while the ESP32 and display require 3.3V. This necessitates adding a circuit to regulate the battery voltage to the MCU voltage. The inexpensive component choice would be a &quot;linear regulator&quot; which throws away the excess energy as heat. TRMNL chose to use a &quot;switching regulator&quot; which utilizes up to 20% more of the battery energy, but at a higher component cost and circuit complexity.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;7.5&quot; e-Paper display&lt;/strong&gt;&lt;/b&gt;: This type of display retains its image without power and is readable in direct sunlight. The display is a large portion of the total component cost, but is also what makes TRMNL a unique product.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;TRMNL&#39;s component choices can last multiple months on a single charge for our battery-powered digital device. The choices above dictate how much work (software) can be done on the device versus how much work must be done on the server.&lt;/p&gt;&lt;p&gt;TRMNL&#39;s balance of device / server effort lets us generate beautiful output using web UI programming, while having the TRMNL device itself receive and display those screens as compressed images (snapshots).&lt;/p&gt;&lt;h3&gt;Where does the energy go?&lt;/h3&gt;&lt;p&gt;After choosing components and designing a circuit, the biggest challenge to creating energy-efficient battery powered devices is the software.&lt;/p&gt;&lt;p&gt;The general idea for power usage on IoT devices is to get the work done quickly and then put the CPU into &#39;deep sleep&#39; until needed again. For TRMNL firmware, power optimization is quite a bit more complex because we use WiFi, an energy-hungry task.&lt;/p&gt;&lt;p&gt;When the TRMNL wakes up to update the image, many different tasks must be accomplished. Software profiling tools won&#39;t be much help optimizing these tasks. An excellent tool which allows us to see the real-time power usage is the &lt;a href=&quot;https://www.nordicsemi.com/Products/Development-hardware/Power-Profiler-Kit-2&quot;&gt;Power Profiler Kit II&lt;/a&gt; from Nordic Semi. This is a surprisingly affordable tool with very high precision. We can use the PPKII as a virtual battery for the TRMNL to see exactly how much energy is being used.&lt;/p&gt;&lt;p&gt;The image below is a screen capture from the PPKII software showing the current drawn from the battery during an image update:&lt;/p&gt;&lt;action-text-attachment sgid=&quot;eyJfcmFpbHMiOnsiZGF0YSI6ImdpZDovL3RybW5sL0FjdGl2ZVN0b3JhZ2U6OkJsb2IvMTY4MTk3NDE_ZXhwaXJlc19pbiIsInB1ciI6ImF0dGFjaGFibGUifX0=--fbf567737188509a45724296b5a1854349981783&quot; content-type=&quot;image/png&quot; url=&quot;https://trmnl.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4MTk3NDEsInB1ciI6ImJsb2JfaWQifX0=--a31f1ac2621a215b6d229b38b5613d0f8bada983/Screenshot%202026-02-16%20at%2015.40.43.png&quot; filename=&quot;Screenshot 2026-02-16 at 15.40.43.png&quot; filesize=&quot;60626&quot; width=&quot;853&quot; height=&quot;614&quot; previewable=&quot;true&quot; presentation=&quot;gallery&quot; caption=&quot;TRMNL power draw during a refresh&quot;&gt;&lt;figure class=&quot;attachment attachment--preview attachment--png&quot;&gt;
    &lt;img src=&quot;https://trmnl.com/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTY4MTk3NDEsInB1ciI6ImJsb2JfaWQifX0=--a31f1ac2621a215b6d229b38b5613d0f8bada983/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOlsxMDI0LDc2OF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--a1b29f018116e3f4abd0440beb02228a54f47dd1/Screenshot%202026-02-16%20at%2015.40.43.png&quot;&gt;

    &lt;figcaption class=&quot;attachment__caption&quot;&gt;
        TRMNL power draw during a refresh
    &lt;/figcaption&gt;
&lt;/figure&gt;&lt;/action-text-attachment&gt;&lt;p&gt;After the initial peak of starting up the CPU, the next set of large peaks are caused by the WiFi usage. It&#39;s pretty clear that using WiFi communications is the most energy intensive task of the TRMNL. Here are the four tasks which use WiFi:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;Connect to AP&lt;/strong&gt;&lt;/b&gt;: Connecting to your local access point can take more than a second. That doesn&#39;t sound like much, but one second of maximum power drain is significant.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;NTP&lt;/strong&gt;&lt;/b&gt;: The device needs to know the correct time to record events and know the relative age of images. The &lt;b&gt;&lt;strong&gt;N&lt;/strong&gt;&lt;/b&gt;etwork &lt;b&gt;&lt;strong&gt;T&lt;/strong&gt;&lt;/b&gt;ime &lt;b&gt;&lt;strong&gt;P&lt;/strong&gt;&lt;/b&gt;rotocol is a standard way of getting the accurate time from servers at Google, NIST or other sources. This can take up to four seconds or more depending on network conditions.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;API server&lt;/strong&gt;&lt;/b&gt;: Our web servers which manage devices and playlists. This informs the device of firmware updates, users&#39; settings (e.g. refresh time), and image links. The device also tells the web server its battery level for user-facing alerts and notifications. This communication usually takes about one and a half seconds.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;strong&gt;AWS image cache&lt;/strong&gt;&lt;/b&gt;: We cache plugin images on AWS to reduce latency and provide a broader global reach. We also compress images to make sure the payloads are small. Pending image size, this step can take one to five seconds.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Each step above uses significant power. They also take much longer than when done on more powerful PCs.&lt;/p&gt;&lt;p&gt;For example, a modest Linux machine like the Raspberry Pi Zero can accomplish each of those tasks in a &lt;i&gt;&lt;em&gt;fraction&lt;/em&gt;&lt;/i&gt; of a second because the CPU and network hardware trade time for higher power consumption. With the ESP32 family, one of the tradeoffs is that network tasks take a long time.&lt;/p&gt;&lt;h3&gt;Software Optimization&lt;/h3&gt;&lt;p&gt;This topic is quite broad, but the tl;dr is that there are thousands of different ways to write code which accomplishes a certain task, but not all are efficient. Put simply: &lt;b&gt;&lt;strong&gt;If we didn&#39;t put the TRMNL&#39;s ESP32 to sleep between updates, your battery would last less than a day.&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;There are unpleasant consequences to using the ESP32&#39;s deep sleep mode. When the ESP32 is in its lowest power sleep mode, it turns off the power to the main memory. This complicates the software because the system essentially starts from a blank slate each time it wakes up.&lt;/p&gt;&lt;p&gt;So besides the obvious power optimizations like deep sleep, what are some other opportunities?&lt;/p&gt;&lt;h3&gt;WiFi Connection&lt;/h3&gt;&lt;p&gt;The WiFi connection to an access point can take more than a second; this is due to DHCP negotiation. This is where the access point assigns an IP address to your device. The deep sleep trade-off creates this renegotiation. We recently added support for &lt;a href=&quot;https://help.trmnl.com/en/articles/13673576-device-static-ips&quot;&gt;fixed IP addresses&lt;/a&gt;. With a fixed IP your TRMNL can connect to your AP in a fraction of a second.&lt;/p&gt;&lt;h3&gt;NTP Server&lt;/h3&gt;&lt;p&gt;We recently made &lt;a href=&quot;https://github.com/usetrmnl/trmnl-firmware/pull/311&quot;&gt;a change&lt;/a&gt; to the firmware which greatly reduces the time spent getting the time from NTP. The new logic only connects to the NTP server if the ESP32&#39;s internal (slightly imprecise) clock doesn&#39;t have a valid time or if it&#39;s been more than 24 hours since the last NTP fetch. This saves significant power since this step can take up to four seconds.&lt;/p&gt;&lt;h3&gt;AWS Image Download&lt;/h3&gt;&lt;p&gt;Another recent change to the firmware addressed image downloads. Each image name contains a unique identifier for the plugin/mashup that generated it, as well as a timestamp.&lt;/p&gt;&lt;p&gt;For images which don&#39;t change at every update (e.g. &quot;Days Left Until...&quot; plugins) we can compare the name and see if we recently downloaded the same image. If our local copy of the image (in FLASH storage) is the same as the current one from our playlist, we can skip this step entirely. Images older than 24 hours are automatically purged from local storage in case a user makes changes to their playlist.&lt;/p&gt;&lt;h3&gt;Odds &amp;amp; Ends&lt;/h3&gt;&lt;p&gt;The remaining device refresh tasks (image decoding and e-paper update) use significant power, but less than the WiFi tasks.&lt;/p&gt;&lt;p&gt;We&#39;ve optimized this code to use as little power as possible; for example - putting the ESP32 into &#39;light&#39; sleep while waiting for the e-paper to update. We need to wait for the update to complete to tell the display itself to sleep before the ESP32 can go into deep sleep. If we were to leave the e-paper display in idle/wake mode after the update, it would shorten the TRMNL battery life significantly.&lt;/p&gt;&lt;h3&gt;Under your control&lt;/h3&gt;&lt;p&gt;TRMNL&#39;s hardware and firmware provide a platform for personal, non-intrusive information.&lt;/p&gt;&lt;p&gt;By optimizing the platform we give you more freedom in how you use it. As described above, each update needs a certain amount of energy. Therefore it follows that more frequent updates will drain the battery faster. So we&#39;ve even optimized the display updates themselves to be less visually disturbing (&lt;a href=&quot;https://trmnl.com/blog/no-more-flicker&quot;&gt;flicker-free&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Beyond the refresh rate and update type, the energy/time spent per update is highly variable as well. Local network conditions affect every step, but so do image choices. Smaller image files download and decode faster than larger images. An image&#39;s file size is highly dependent on the graphical content. We use &lt;a href=&quot;https://en.wikipedia.org/wiki/PNG&quot;&gt;PNG&lt;/a&gt; as our standard file format because it performs well on a variety of image content. Images like the weather, with large continuous areas of a solid color, compress quite well while dithered photos compress poorly. 2-bit grayscale images are generally larger than 1-bit bitonal.&lt;/p&gt;&lt;p&gt;For popular plugins, this translates to image sizes which range in size from 2K to 50K bytes. We recently added support for decoding full color images onto black/white displays. Color images can be much larger than black and white. To help manage the local storage and battery life, all images are limited to a &lt;a href=&quot;https://github.com/usetrmnl/trmnl-firmware/blob/79c0e4c6f02cf97c07204b090ca2be3cd08fc150/include/config.h#L45&quot;&gt;maximum size&lt;/a&gt; of 90,000 bytes.&lt;/p&gt;&lt;h3&gt;The increasing value of your investment in TRMNL&lt;/h3&gt;&lt;p&gt;Your TRMNL hardware may not change after purchase, but we&#39;re continuously improving its software on both the device and server back-end to ensure your experience is the best it can be.&lt;/p&gt;&lt;p&gt;By making the software more battery-friendly we extend the time between charges, which extends the total life of the battery via fewer charge cycles.&lt;/p&gt;&lt;p&gt;Underscoring all of this is our commitment to open sourcing each of these discoveries. This ensures that not only can you see what&#39;s &lt;i&gt;&lt;em&gt;in&lt;/em&gt;&lt;/i&gt; the software, you&#39;re also able to control it.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/power-efficiency</id>
    <link href="https://trmnl.com/blog/power-efficiency"/>
    <published>2026-02-24T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Power Efficiency - why we care so much about it</title>
    <updated>2026-02-24T00:00:00+00:00</updated>
    <dc:date>2026-02-24T00:00:00+00:00</dc:date>
  </entry>
  <entry>
    <author>
      <name>Mario Lurig</name>
      <uri>https://trmnl.com</uri>
    </author>
    <category term="trmnl"
      label="TRMNL"/>
    <content type="html">&lt;div data-controller=&quot;blog-syntax-highlighter&quot; class=&quot;lexxy-content&quot;&gt;&lt;blockquote&gt;This post is part of a series, featuring the incredible work of plugin authors who grow the TRMNL plugin ecosystem with every contribution. The TRMNL team has individually selected these plugins and authors to be featured.&lt;/blockquote&gt;&lt;h2&gt;&lt;a href=&quot;https://trmnl.com/recipes/228508&quot;&gt;Architectural Styles&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member XXCoder&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt; (Discord: &lt;/mark&gt;&lt;code&gt;XXCoder&lt;/code&gt;) created the &lt;a href=&quot;https://trmnl.com/recipes/228508&quot;&gt;Architectural Styles&lt;/a&gt; plugin; here are their words on how it was created.&lt;/p&gt;&lt;h3&gt;Why did you want this plugin to exist?&lt;/h3&gt;&lt;p&gt;&lt;i&gt;&lt;em&gt;I happened to see one of interesting building picture and description of style. Made me wonder if it could be a plugin. So I figured if there was pictures and styles I can make it.&lt;/em&gt;&lt;/i&gt;&lt;/p&gt;&lt;h3&gt;Why were you the person to make it?&lt;/h3&gt;&lt;p&gt;&lt;i&gt;&lt;em&gt;Dunno, I&#39;m weird one I guess. I seem to tend to make plugins that require a lot of pictures processing and random image. Cats 😸 was first one of such, and this is third after dogs one.&lt;/em&gt;&lt;/i&gt;&lt;/p&gt;&lt;h3&gt;&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt;Were you inspired by any other recipes or plugin creators?&lt;/mark&gt;&lt;/h3&gt;&lt;p&gt;&lt;i&gt;&lt;em&gt;I tend to just make plugins I want for myself and share it with others. I have gotten a massive amount from others to make my plugins exist and they all are awesome! (Thanks all!)&lt;/em&gt;&lt;/i&gt;&lt;/p&gt;&lt;h3&gt;What was your process for creating the plugin?&lt;/h3&gt;&lt;p&gt;&lt;i&gt;&lt;em&gt;Once I think up an idea, I figure what is best source of images that is as copyright-free as possible and process those images.&lt;/em&gt;&lt;/i&gt;&lt;/p&gt;&lt;h3&gt;What, if any, challenges did you face while creating it?&lt;/h3&gt;&lt;p&gt;&lt;i&gt;&lt;em&gt;Definitely processing images. Size, quality and ensuring it has no copyright text or memes is important to me. I also usually try to avoid pictures of people faces, though in this plugin&#39;s case it is unavoidable, being buildings that often have people around.&lt;/em&gt;&lt;/i&gt;&lt;/p&gt;&lt;h3&gt;What is your favorite plugin that someone else created and why?&lt;/h3&gt;&lt;p&gt;&lt;i&gt;&lt;em&gt;Oh I love so many plugins I currently use. &lt;/em&gt;&lt;/i&gt;&lt;a href=&quot;https://trmnl.com/recipes/23306&quot;&gt;&lt;i&gt;&lt;em&gt;Air quality forecast&lt;/em&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;em&gt; (I heavily modified mine, go fork and open source!), &lt;/em&gt;&lt;/i&gt;&lt;a href=&quot;https://trmnl.com/recipes/181200&quot;&gt;&lt;i&gt;&lt;em&gt;Weather Glance&lt;/em&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;em&gt;, &lt;/em&gt;&lt;/i&gt;&lt;a href=&quot;https://trmnl.com/recipes/49610&quot;&gt;&lt;i&gt;&lt;em&gt;Weather Chum&lt;/em&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;em&gt;.&lt;/em&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-architectural-styles</id>
    <link href="https://trmnl.com/blog/featured-plugin-architectural-styles"/>
    <published>2026-02-24T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Architectural Styles</title>
    <updated>2026-02-24T00:00:00+00:00</updated>
    <dc:date>2026-02-24T00:00:00+00:00</dc:date>
  </entry>
  <dc:date>2026-03-31T00:00:00+00:00</dc:date>
</feed>