<?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>
  <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-04-07T00: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/241645&quot;&gt;Trending Recipes&lt;/a&gt; Plugin&lt;/h2&gt;&lt;p&gt;Community member ExcuseMe&lt;mark style=&quot;color:rgb(67, 67, 67);&quot;&gt; (Discord: &lt;/mark&gt;&lt;code&gt;ExcuseMe&lt;/code&gt;) created the &lt;a href=&quot;https://trmnl.com/recipes/241645&quot;&gt;Trending Recipes&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;As someone who has published a couple of recipes, I found myself checking installs and forks more than once a day whenever I&#39;d put something new out there. &lt;b&gt;&lt;strong&gt;It&#39;s always exciting to see whether your idea, and your execution of it, resonates enough to earn a spot on someone&#39;s screen. &lt;/strong&gt;&lt;/b&gt;But there was no easy way to see that momentum at a glance: which recipes are gaining traction right now, and how does mine compare? I wanted that feedback loop right on my TRMNL, not buried in a browser tab.&lt;/p&gt;&lt;h3&gt;Why were you the person to make it?&lt;/h3&gt;&lt;p&gt;I already had experience building a simple backend with a database for TRMNL recipes, and this plugin couldn&#39;t exist without one since it needs to take hourly snapshots to calculate deltas over time. But more than the technical side, I think it came down to scratching my own itch. I wanted a better way to track how my published recipes are doing while also keeping an eye on what the rest of the community is building. Once I realized nobody else was surfacing that kind of trending data, it felt like the obvious next thing to build.&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;At the start, the data was clear: mainly the current connections and how they changed over the last x hours or days. It became harder to balance once the plugin started extracting statistics that weren&#39;t available before, like trending ranks, overall connection rankings, and user-level stats. Had this been just a private recipe, more numbers would have made it onto the screen because their meaning was obvious to me. But you can&#39;t expect that from a regular user. You also can&#39;t explain every number with just a little icon in front of it, and even if you could, that would look messy in a repeating section.&lt;/p&gt;&lt;h3&gt;What was your process for creating the plugin?&lt;/h3&gt;&lt;p&gt;It started with a small Python server in a Docker container that fetches all the public recipe data on a regular schedule, plus an endpoint to serve that data to a TRMNL recipe. AI is especially useful for these early steps to get a minimal viable product going, since the goal is to find out as soon as possible whether a recipe idea is even worth the time. From there, I build a simple version of the recipe using TRMNL&#39;s framework styling, just displaying the rough data to get a feel for whether it&#39;s on the right track. This one borrows from my &lt;a href=&quot;https://trmnl.com/recipes/189338&quot;&gt;Network Devices&lt;/a&gt; recipe: Columns with the overflow functionality to fill any screen with items, leaving little unused space; especially great when larger screen devices. After that it&#39;s refining. Add something, refine again; until you&#39;re happy enough to publish.&lt;/p&gt;&lt;h3&gt;Did you learn anything that you want to apply to other recipes you create(d)?&lt;/h3&gt;&lt;p&gt;One thing worth sharing is an SVG filter I picked up from &lt;code&gt;L #1385&lt;/code&gt;, something I didn&#39;t even know was possible. Recipe icons are user-uploaded and can be full-color, which can render as muddy gray on a 1-bit or 2-bit screen. This hidden SVG filter converts colors to grayscale and snaps them to discrete levels, keeping icons crisp on e-ink:&lt;/p&gt;&lt;pre data-language=&quot;html&quot;&gt;&amp;lt;svg width=&quot;0&quot; height=&quot;0&quot; style=&quot;position: absolute&quot;&amp;gt;&lt;br&gt;    &amp;lt;defs&amp;gt;&lt;br&gt;        &amp;lt;filter id=&quot;binarize&quot;&amp;gt;&lt;br&gt;            &amp;lt;feColorMatrix&lt;br&gt;                type=&quot;matrix&quot;&lt;br&gt;                values=&quot;0.0722 0.7152 0.2126 0 00.0722 0.7152 0.2126 0 00.0722 0.7152 0.2126 0 00 0 0 1 0&quot;&lt;br&gt;            /&amp;gt;&lt;br&gt;            &amp;lt;feComponentTransfer&amp;gt;&lt;br&gt;                &amp;lt;feFuncR type=&quot;discrete&quot; tableValues=&quot;0 0.25 0.75 1&quot; /&amp;gt;&lt;br&gt;                &amp;lt;feFuncG type=&quot;discrete&quot; tableValues=&quot;0 0.25 0.75 1&quot; /&amp;gt;&lt;br&gt;                &amp;lt;feFuncB type=&quot;discrete&quot; tableValues=&quot;0 0.25 0.75 1&quot; /&amp;gt;&lt;br&gt;            &amp;lt;/feComponentTransfer&amp;gt;&lt;br&gt;        &amp;lt;/filter&amp;gt;&lt;br&gt;    &amp;lt;/defs&amp;gt;&lt;br&gt;&amp;lt;/svg&amp;gt;&lt;/pre&gt;&lt;p&gt;Then apply it conditionally with CSS so it only kicks in on e-ink screens:&lt;/p&gt;&lt;p&gt;&lt;code&gt;.screen--1bit .binarize, .screen--2bit .binarize {filter: url(#binarize);}&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Any element with the &quot;binarize&quot; class gets its colors crunched down to 4 levels on the device, but renders normally in the preview.&lt;/p&gt;&lt;h3&gt;Is there a tip you would give to a new developer?&lt;/h3&gt;&lt;p&gt;Use a main template so you don&#39;t have to duplicate your code in each view for maintainability. What works well for me is to start by designing the full view of the recipe, then strip down the data as the views get smaller, or maybe change the layout between horizontal and vertical depending on the view. One of the best ways to achieve that is defining a template in your &lt;b&gt;&lt;strong&gt;shared.liquid&lt;/strong&gt;&lt;/b&gt; and calling render from each view. For example, in the full view of this plugin I just have this code:&lt;/p&gt;&lt;pre data-language=&quot;css&quot;&gt;{% render &quot;main&quot;, trmnl:trmnl, recipes:recipes, user_recipes:user_recipes, user_stats:user_stats, global_stats:global_stats, timeframe:timeframe, columns:3, compact: false%}&lt;/pre&gt;&lt;p&gt;All the data is passed as arguments (including the global &lt;i&gt;&lt;em&gt;{{trmnl}}&lt;/em&gt;&lt;/i&gt; variable), along with view-specific parameters.The columns argument defines the maximum columns per view, and the compact flag decides whether I need to limit the text inside the title bar.&lt;/p&gt;&lt;h3&gt;What is your favorite plugin that someone else created and why?&lt;/h3&gt;&lt;p&gt;Having recently set up a home media server, at the moment I would say it&#39;s &lt;a href=&quot;https://trmnl.com/recipes/190336&quot;&gt;Servarr Dashboard&lt;/a&gt;. A mashup combines &lt;i&gt;&lt;em&gt;Radarr&lt;/em&gt;&lt;/i&gt; and &lt;i&gt;&lt;em&gt;Sonarr&lt;/em&gt;&lt;/i&gt; into a single status report that&#39;s also useful for the rest of the family.&lt;/p&gt;
&lt;/div&gt;
</content>
    <id>https://trmnl.com/blog/featured-plugin-trending-recipes</id>
    <link href="https://trmnl.com/blog/featured-plugin-trending-recipes"/>
    <published>2026-04-07T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Featured Community Plugin: Trending Recipes</title>
    <updated>2026-04-07T00:00:00+00:00</updated>
    <dc:date>2026-04-07T00: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 March 10, 2026 and April 5, 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;$3,420&lt;br&gt;$490&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$931.84&lt;br&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-1);&quot;&gt;$115,874.50&lt;/mark&gt;&lt;br&gt;$19,717.98&lt;br&gt;$24,325.24&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;15%&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;$513&lt;br&gt;$392&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;$139.78&lt;br&gt;&lt;mark style=&quot;background-color:var(--highlight-bg-1);&quot;&gt;$17,381.18&lt;/mark&gt;&lt;br&gt;$1,971.80&lt;br&gt;$2,432.52&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;$164,759.56&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;$22,830.28&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 combined with all previous &lt;i&gt;&lt;em&gt;Clarity Kit (X)&lt;/em&gt;&lt;/i&gt; sales in celebration of Model X fulfillment which began on March 18. these additional funds are allocated to Plugin Authors only.&lt;/p&gt;&lt;h2&gt;by the numbers&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;total payout: $22,830.28&lt;/li&gt;&lt;li&gt;plugin author share: $21,195.54 (70% of base total, plus accrued Clarity Kit (X))&lt;/li&gt;&lt;li&gt;strategic contributors share: $1,634.73 (30% of base 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, 18%&lt;/li&gt;&lt;li&gt;3D Models, 6%&lt;/li&gt;&lt;li&gt;BYOS, 46%&lt;/li&gt;&lt;li&gt;Localizations, 7%&lt;/li&gt;&lt;li&gt;BYOD, 23%&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-03-2026</id>
    <link href="https://trmnl.com/blog/creator-fund-03-2026"/>
    <published>2026-04-06T00:00:00+00:00</published>
    <rights>Copyright 2026</rights>
    <title>Creator Fund - March 2026</title>
    <updated>2026-04-06T00:00:00+00:00</updated>
    <dc:date>2026-04-06T00: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/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>
  <dc:date>2026-04-07T00:00:00+00:00</dc:date>
</feed>