<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Electronics on William Floyd (high-quality images)</title>
    <link>https://w-floyd.com/categories/electronics/</link>
    <description>Recent content in Electronics on William Floyd</description>
    <generator>Hugo</generator><language>en</language><managingEditor>William Floyd</managingEditor><webMaster>William Floyd</webMaster><lastBuildDate>Wed, 30 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://w-floyd.com/categories/electronics/index.hi.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>DIY Solar Battery Backpack for the XTEINK X3</title>
      <link>https://w-floyd.com/2026/09/xteink-x3-solar/</link>
      <pubDate>Wed, 30 Sep 2026 00:00:00 +0000</pubDate><author>William Floyd</author>
      <guid>https://w-floyd.com/2026/09/xteink-x3-solar/</guid><description>&lt;p&gt;I love my &lt;a href=&#34;https://www.xteink.com/products/xteink-x3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;XTEINK X3&lt;/a&gt; (running &lt;a href=&#34;https://crosspointreader.com/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Crosspoint&lt;/a&gt;), and wondered if I could make a quick and dirty solar backpack for it. I planned a better writeup but here I am anyway not letting perfect get in the way of done.&lt;/p&gt;&#xA;&lt;h1 id=&#34;pictures&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#pictures&#34;&gt;Pictures&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;battery&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#battery&#34;&gt;Battery&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-3072.avif 3072w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023603657-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-3072.avif 3072w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_023949842-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;span class=&#34;rimg-rot&#34; style=&#34;position:relative;display:block;width:100%;max-width:3072px;aspect-ratio:3072/4080;margin:2rem auto&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-3840.avif 3840w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-4080.avif 4080w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_024717383-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; style=&#34;position:absolute;top:50%;left:50%;margin:0;max-width:none;width:132.8125%;transform:translate(-50%,-50%) rotate(90deg)&#34; decoding=&#34;async&#34; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;h2 id=&#34;moldpour&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#moldpour&#34;&gt;Mold/Pour&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;span class=&#34;rimg-rot&#34; style=&#34;position:relative;display:block;width:100%;max-width:3072px;aspect-ratio:3072/4080;margin:2rem auto&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-3840.avif 3840w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-4080.avif 4080w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_035106094-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; style=&#34;position:absolute;top:50%;left:50%;margin:0;max-width:none;width:132.8125%;transform:translate(-50%,-50%) rotate(270deg)&#34; decoding=&#34;async&#34; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-3072.avif 3072w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_133258834-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;span class=&#34;rimg-rot&#34; style=&#34;position:relative;display:block;width:100%;max-width:3072px;aspect-ratio:3072/4080;margin:2rem auto&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-3840.avif 3840w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-4080.avif 4080w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_143444631-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; style=&#34;position:absolute;top:50%;left:50%;margin:0;max-width:none;width:132.8125%;transform:translate(-50%,-50%) rotate(90deg)&#34; decoding=&#34;async&#34; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;h2 id=&#34;pour-results&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#pour-results&#34;&gt;Pour Results&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 1.3281 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-3840.avif 3840w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-4080.avif 4080w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152044906-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=64)vw, %!d(float64=549)px&#34; alt=&#34;&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-3072.avif 3072w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_152110380-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=36)vw, %!d(float64=311)px&#34; alt=&#34;&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;h2 id=&#34;magnets&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#magnets&#34;&gt;Magnets&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;span class=&#34;rimg-rot&#34; style=&#34;position:relative;display:block;width:100%;max-width:3072px;aspect-ratio:3072/4080;margin:2rem auto&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-3840.avif 3840w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-4080.avif 4080w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180616715-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; style=&#34;position:absolute;top:50%;left:50%;margin:0;max-width:none;width:132.8125%;transform:translate(-50%,-50%) rotate(270deg)&#34; decoding=&#34;async&#34; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;span class=&#34;rimg-rot&#34; style=&#34;position:relative;display:block;width:100%;max-width:3072px;aspect-ratio:3072/4080;margin:2rem auto&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-3840.avif 3840w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-4080.avif 4080w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180618967-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; style=&#34;position:absolute;top:50%;left:50%;margin:0;max-width:none;width:132.8125%;transform:translate(-50%,-50%) rotate(270deg)&#34; decoding=&#34;async&#34; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-3072.avif 3072w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_180835507-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;h2 id=&#34;final-result&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#final-result&#34;&gt;Final Result&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-3072.avif 3072w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190253048-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=50)vw, %!d(float64=430)px&#34; alt=&#34;&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-3072.avif 3072w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190433874-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=50)vw, %!d(float64=430)px&#34; alt=&#34;&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 1.3281 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-3840.avif 3840w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-4080.avif 4080w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_185514888-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=50)vw, %!d(float64=430)px&#34; alt=&#34;&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 1.3281 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-1280.avif 1280w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-1296.avif 1296w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-1728.avif 1728w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-1920.avif 1920w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-2160.avif 2160w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-2560.avif 2560w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-2592.avif 2592w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-3840.avif 3840w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-400.avif 400w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-4080.avif 4080w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-432.avif 432w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-640.avif 640w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-864.avif 864w, https://w-floyd.com/2026/09/xteink-x3-solar/media/PXL_20260721_190240004-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=50)vw, %!d(float64=430)px&#34; alt=&#34;&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;notes&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#notes&#34;&gt;Notes&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Thin batteries are hard to get in low quantities&lt;/li&gt;&#xA;&lt;li&gt;A thinner solar panel would be really helpful&lt;/li&gt;&#xA;&lt;li&gt;I need to get my 3D printer running again - a printed shell + fixture to hold pogo connector would save a lot of work&lt;/li&gt;&#xA;&lt;li&gt;Next time will avoid the epoxy itself being the rear surface - sanding flat was a lot of work, and imperfect&lt;/li&gt;&#xA;&lt;li&gt;Charge time and efficiency are likely quite poor&lt;/li&gt;&#xA;&lt;li&gt;Silicone tape seemed to work nicely for the battery, but robustness/actual affect untested&lt;/li&gt;&#xA;&lt;li&gt;Getting the reed switch positioning correct is a pain when the backpack itself needs to carry it&amp;rsquo;s own magnets - maybe look at pogo-pin style switch?&lt;/li&gt;&#xA;&lt;li&gt;A custom PCB could help reduce thickness/complexity&#xA;&lt;ul&gt;&#xA;&lt;li&gt;As a fallback, a carrier PCB for modules would be trivial and inexpensive&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;I started designing a CNC case for this with the intent to do another spin, but a few things put it on the backburner:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Space constraints are tight, case will likely still be thicker than I want&lt;/li&gt;&#xA;&lt;li&gt;The X3 already has &lt;em&gt;excellent&lt;/em&gt; battery life, making this a novelty more than a useful item&lt;/li&gt;&#xA;&lt;li&gt;I have too many other projects in-flight&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;bom&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#bom&#34;&gt;BOM&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Part&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Role&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Notes&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;5V 150mA polycrystalline solar panel (~89 × 61mm)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Charging input&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Close to the footprint of the X3&amp;rsquo;s back - I very much doubt 150mA claim&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;CN3163 mini solar charger board&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Battery management&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Linear solar-tracking charger, 4.4-6V in, 4.2V out&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;TPS63020 buck-boost module&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;5V output&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Fixed 5V via a solder jumper, has an EN pin&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;303450 LiPo pouch cell, 3.7V 500mAh&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Energy storage&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Roughly doubles the X3&amp;rsquo;s onboard capacity&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Molded reed switch (N/O)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Magnetic power switch&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Enables the boost converter only when attached&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;4-pin 2.54mm magnetic pogo connector&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Output to the X3&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches the X3&amp;rsquo;s charging pin pitch&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;BSI slow-cure epoxy&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Potting&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Silicone tape&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Battery sock&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;See below&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;I used silicone tape to seal the battery so as to prevent epoxy doing anything to the battery - I&amp;rsquo;ve not tried encasing a cell in epoxy directly, but the heat and shrink/expansions scares me and this is what I landed on that would allow some amount of squish.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Antlion ModMic Wireless Battery Swap</title>
      <link>https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/</link>
      <pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate><author>William Floyd</author>
      <guid>https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/</guid><description>&lt;p&gt;I&amp;rsquo;ve used an &lt;a href=&#34;https://antlionaudio.com/products/modmic-wireless&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Antlion ModMic Wireless&lt;/a&gt; since I started my first job (where I regularly took calls 6+ hours a day).&#xA;Over time, its runtime has dropped from a full day to about half, and Antlion doesn&amp;rsquo;t sell replacement batteries, so officially my only fix was a new mic.&#xA;But it&amp;rsquo;s held together with just three screws, so swapping the battery is easy enough (took me 15 minutes).&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;The base of the mic is a two-part plastic body held together by three small screws, with nothing glued.&lt;/p&gt;&#xA;&lt;style&gt;.figure-row{display:flex;gap:1rem;margin:1rem 0;align-items:flex-start}.figure-row&gt;*{min-width:0;margin:0}.figure-row a{display:block}.figure-row img{display:block;width:100%;height:auto;margin:0 !important}.figure-row .rimg-rot{margin:0 !important;max-width:none !important}.figure-row [data-figure-item]{margin:0}&lt;/style&gt;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-1280.avif 1280w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-1296.avif 1296w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-1728.avif 1728w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-1920.avif 1920w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-2160.avif 2160w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-2560.avif 2560w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-2592.avif 2592w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-3072.avif 3072w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-400.avif 400w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-432.avif 432w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-640.avif 640w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-864.avif 864w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165030207-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;The opened plastic body, one half holding the circuit board with the old battery, the other half an empty shell with a foam pad, a pry tool alongside&#34; title=&#34;The opened plastic body, one half holding the circuit board with the old battery, the other half an empty shell with a foam pad, a pry tool alongside&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;span class=&#34;rimg-rot&#34; style=&#34;position:relative;display:block;width:100%;max-width:3072px;aspect-ratio:3072/4080;margin:2rem auto&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-1280.avif 1280w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-1296.avif 1296w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-1728.avif 1728w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-1920.avif 1920w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-2160.avif 2160w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-2560.avif 2560w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-2592.avif 2592w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-3840.avif 3840w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-400.avif 400w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-4080.avif 4080w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-432.avif 432w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-640.avif 640w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-864.avif 864w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165502858-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;Close-up of the green Antlion board with the original silver JHY502030 250mAh pouch cell taped over it, red and black leads soldered near the cable&#39;s strain relief, micro-USB port below&#34; title=&#34;Close-up of the green Antlion board with the original silver JHY502030 250mAh pouch cell taped over it, red and black leads soldered near the cable&#39;s strain relief, micro-USB port below&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; style=&#34;position:absolute;top:50%;left:50%;margin:0;max-width:none;width:132.8125%;transform:translate(-50%,-50%) rotate(90deg)&#34; decoding=&#34;async&#34; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-1280.avif 1280w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-1296.avif 1296w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-1728.avif 1728w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-1920.avif 1920w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-2160.avif 2160w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-2560.avif 2560w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-2592.avif 2592w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-3072.avif 3072w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-400.avif 400w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-432.avif 432w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-640.avif 640w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-864.avif 864w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/PXL_20260723_165800912-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=33)vw, %!d(float64=287)px&#34; alt=&#34;The board lifted out of the shell with the old cell flipped up, exposing the ANTLION-marked PCB, its micro-USB charging port, and the two soldered battery leads&#34; title=&#34;The board lifted out of the shell with the old cell flipped up, exposing the ANTLION-marked PCB, its micro-USB charging port, and the two soldered battery leads&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The cell is a 502030 LiPo cell (3.7V, 250mAh, dated 2022.04.22), stuck with double-sided tape and soldered to two pads.&#xA;That &amp;ldquo;502030&amp;rdquo; is the cell&amp;rsquo;s size (5 x 20 x 30mm), which is all you need to find a replacement.&#xA;I ordered a replacement 502030 from Amazon ($8 after tax).&#xA;Unfortunately there&amp;rsquo;s no space to choose a larger size.&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-5568.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-1280.avif 1280w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-1296.avif 1296w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-1728.avif 1728w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-1920.avif 1920w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-2160.avif 2160w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-2560.avif 2560w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-2592.avif 2592w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-3840.avif 3840w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-400.avif 400w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-432.avif 432w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-5568.avif 5568w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-640.avif 640w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-864.avif 864w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6005-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;The new LP502030 pouch cell, its white label reading 3.7V 250mAh 0.9Wh, with a two-pin JST connector on the end of its leads&#34; title=&#34;The new LP502030 pouch cell, its white label reading 3.7V 250mAh 0.9Wh, with a two-pin JST connector on the end of its leads&#34; width=&#34;5568&#34; height=&#34;3712&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;Mine came with a JST plug, so I snipped it off (don&amp;rsquo;t cut the wires at the same time!).&#xA;The old cell comes off by desoldering its two leads and working a piece of cardstock underneath to release the double-sided tape without damaging the old cell.&#xA;The replacement goes in the same way - leads soldered to the same pads, and taped down in the same spot.&#xA;Screw it together the same way it came apart.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-5568.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-1280.avif 1280w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-1296.avif 1296w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-1728.avif 1728w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-1920.avif 1920w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-2160.avif 2160w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-2560.avif 2560w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-2592.avif 2592w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-3840.avif 3840w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-400.avif 400w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-432.avif 432w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-5568.avif 5568w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-640.avif 640w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-864.avif 864w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6007-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;The new cell soldered to the Antlion board out of its case, red and black leads joined to the pads beside the cable strain relief&#34; title=&#34;The new cell soldered to the Antlion board out of its case, red and black leads joined to the pads beside the cable strain relief&#34; width=&#34;5568&#34; height=&#34;3712&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-5568.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-1280.avif 1280w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-1296.avif 1296w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-1728.avif 1728w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-1920.avif 1920w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-2160.avif 2160w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-2560.avif 2560w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-2592.avif 2592w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-3840.avif 3840w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-400.avif 400w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-432.avif 432w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-5568.avif 5568w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-640.avif 640w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-864.avif 864w, https://w-floyd.com/2026/07/antlion-modmic-wireless-battery/media/DSC_6008-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;The new LP502030 battery seated inside the plastic body on top of the board, next to a roll of clear tape&#34; title=&#34;The new LP502030 battery seated inside the plastic body on top of the board, next to a roll of clear tape&#34; width=&#34;5568&#34; height=&#34;3712&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>$20 pen plotter</title>
      <link>https://w-floyd.com/2021/12/pen-plotter/</link>
      <pubDate>Sun, 26 Dec 2021 00:00:00 +0000</pubDate><author>William Floyd</author>
      <guid>https://w-floyd.com/2021/12/pen-plotter/</guid><description>&lt;p&gt;This was the final assignment for my second semester freshman engineering class (IEP 2). Budget given was $20, and my teammates and I decided a pen plotter would be a fun project.&#xA;Here are some photos mostly of the final results&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;div class=&#34;scroll-crossfade&#34; style=&#34;--scroll-crossfade-height: 400vh;&#34;&gt;&#xA;  &lt;div class=&#34;scroll-crossfade__stage&#34;&gt;&#xA;&lt;figure data-crossfade-frame class=&#34;scroll-crossfade__frame scroll-crossfade__frame--contain&#34;&gt;&#xA;  &lt;a class=&#34;scroll-crossfade__link&#34; href=&#34;https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-4032.avif&#34; title=&#34;View full size&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-1280.avif 1280w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-1296.avif 1296w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-1728.avif 1728w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-1920.avif 1920w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-2160.avif 2160w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-2560.avif 2560w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-2592.avif 2592w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-3840.avif 3840w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-400.avif 400w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-4032.avif 4032w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-432.avif 432w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-640.avif 640w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-864.avif 864w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053508-hq-960.avif 960w&#34; sizes=&#34;100vw&#34; alt=&#34;&#34; class=&#34;scroll-crossfade__img&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;eager&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/figure&gt;&#xA;&#xA;&lt;figure data-crossfade-frame class=&#34;scroll-crossfade__frame scroll-crossfade__frame--contain&#34;&gt;&#xA;  &lt;a class=&#34;scroll-crossfade__link&#34; href=&#34;https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-3024.avif&#34; title=&#34;View full size&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-1280.avif 1280w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-1296.avif 1296w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-1728.avif 1728w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-1920.avif 1920w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-2160.avif 2160w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-2560.avif 2560w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-2592.avif 2592w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-3024.avif 3024w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-400.avif 400w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-432.avif 432w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-640.avif 640w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-864.avif 864w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_062452-hq-960.avif 960w&#34; sizes=&#34;100vw&#34; alt=&#34;&#34; class=&#34;scroll-crossfade__img&#34; width=&#34;3024&#34; height=&#34;4032&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/figure&gt;&#xA;&#xA;&lt;figure data-crossfade-frame class=&#34;scroll-crossfade__frame scroll-crossfade__frame--contain&#34;&gt;&#xA;  &lt;a class=&#34;scroll-crossfade__link&#34; href=&#34;https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-4032.avif&#34; title=&#34;View full size&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-1280.avif 1280w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-1296.avif 1296w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-1728.avif 1728w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-1920.avif 1920w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-2160.avif 2160w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-2560.avif 2560w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-2592.avif 2592w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-3840.avif 3840w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-400.avif 400w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-4032.avif 4032w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-432.avif 432w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-640.avif 640w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-864.avif 864w, https://w-floyd.com/2021/12/pen-plotter/media/20190430_053503-hq-960.avif 960w&#34; sizes=&#34;100vw&#34; alt=&#34;&#34; class=&#34;scroll-crossfade__img&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/figure&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Analysis of a 2005 Nissan Altima Remote Keyfob</title>
      <link>https://w-floyd.com/2021/01/nissan-keyfob/</link>
      <pubDate>Fri, 08 Jan 2021 00:00:00 +0000</pubDate><author>William Floyd</author>
      <guid>https://w-floyd.com/2021/01/nissan-keyfob/</guid><description>&lt;p&gt;I got my first car a few months ago - a decidedly beat up North American 2005 Nissan Altima.&#xA;It came with a remote keyfob, but something was shorting internally, and the battery would drain within a matter of hours.&#xA;I ordered a two-pack of aftermarket fobs from Amazon, paired them no problem, and that was that.&lt;/p&gt;&#xA;&lt;p&gt;After a while though, I got to thinking, how might I connect my car to my Home Assistant system?&#xA;I am reluctant to tap into the CAN bus directly, so instead I am going to investigate utilizing the same method as my remote fob. Specifically, I want to program my own &amp;ldquo;fob&amp;rdquo; using an Arduino and a RF transmitter (spoiler: I cannot, at least for now).&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;the-hardware&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#the-hardware&#34;&gt;The Hardware&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-4032.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-1280.avif 1280w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-1296.avif 1296w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-1728.avif 1728w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-1920.avif 1920w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-2160.avif 2160w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-2560.avif 2560w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-2592.avif 2592w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-3840.avif 3840w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-400.avif 400w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-4032.avif 4032w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-432.avif 432w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-640.avif 640w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-864.avif 864w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/opened-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;Opened remote&#34; title=&#34;Opened remote&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;While I may analyze the original fob at some point, for the time being I shall work from the aftermarket fob.&#xA;Opening the casing reveals a rather simple circuit (&lt;a href=&#34;media/fob/pcb_front-4032.avif&#34; &gt;front&lt;/a&gt;, &lt;a href=&#34;media/fob/pcb_back-4032.avif&#34; &gt;back&lt;/a&gt;) - battery contacts, four buttons, a smattering of passives, an oscillator, the main control chip, 8 test points, and an antenna trace running around the perimeter of the PCB.&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-4032.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-1280.avif 1280w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-1296.avif 1296w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-1728.avif 1728w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-1920.avif 1920w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-2160.avif 2160w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-2560.avif 2560w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-2592.avif 2592w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-3840.avif 3840w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-400.avif 400w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-4032.avif 4032w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-432.avif 432w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-640.avif 640w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-864.avif 864w, https://w-floyd.com/2021/01/nissan-keyfob/media/fob/closeup-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;Closeup&#34; title=&#34;Closeup&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;Rather unhelpfully, the control IC is unmarked, so either I&amp;rsquo;ll need to wait until I can look at the original fob to find any clues, or try to find what I need online.&lt;/p&gt;&#xA;&lt;p&gt;As a note, it should be easy enough for me to replace the buttons with an electrical solution controlled by an ESP8266 or similar - I may end up doing this some day.&#xA;For the time being, however, I have nothing to glean from the hardware in my fob.&lt;/p&gt;&#xA;&lt;h1 id=&#34;research&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#research&#34;&gt;Research&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;A quick look at the Amazon listing for my fob already tells me what models of fobs it replaces: KBRASTU15, CWTWB1U758, and CWTWB1U821.&#xA;Matching other listings, my specific model is the KBRASTU15.&#xA;This is actually an FCC ID, so that&amp;rsquo;s my next lead.&lt;/p&gt;&#xA;&lt;p&gt;This &lt;a href=&#34;https://fccid.io/KBRASTU15&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;fccid.io&lt;/a&gt; listing is rather useful, providing original FCC images and documents.&#xA;Unfortunately, the &lt;a href=&#34;https://fccid.io/KBRASTU15/Internal-Photos/Internal-Photos-140601.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;internal images&lt;/a&gt; are low enough resolution to prevent reading the IC silkscreen.&#xA;Interestingly, the aftermarket fob has a small fraction of the part count of the original fob, while still functioning perfectly.&#xA;The most useful available document is the &lt;a href=&#34;https://fccid.io/KBRASTU15/Operational-Description/Technical-Description-139545.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Technical Description&lt;/a&gt;.&#xA;This is where we start to get somewhere.&lt;/p&gt;&#xA;&lt;p&gt;In essence, the fob emits a wakeup sequence &amp;lsquo;A&amp;rsquo;, followed by sequence &amp;lsquo;B&amp;rsquo; repeated as long as the button is pressed.&#xA;The structure of these sequences is also described - sufficient to say, it uses a rolling code system.&#xA;Importantly for my analysis, the encoding method of the signal is given (though interestingly their diagram annotations seem to be incorrect).&lt;/p&gt;&#xA;&lt;p&gt;With this information in hand, I ordered a cheap RTL-SDR (a Nooelec NESDR Mini 2+).&lt;/p&gt;&#xA;&lt;h1 id=&#34;sdr-analysis&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#sdr-analysis&#34;&gt;SDR Analysis&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/4_locks.webp&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/4_locks.webp&#34; alt=&#34;4 Presses of the Locking Key&#34; title=&#34;4 Presses of the Locking Key&#34; width=&#34;1210&#34; height=&#34;240&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;The radio, being a North American model, operates at 315MHz.&#xA;Using Universal &lt;a href=&#34;https://github.com/jopohl/urh&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Radio Hacker&lt;/a&gt;, I began capturing examples of locking and unlocking signals.&#xA;Using the software is outside the scope of this post, but I found some YouTube videos by the software author that proved to be useful - it&amp;rsquo;s not hard to learn to use.&lt;/p&gt;&#xA;&lt;p&gt;Ultimately, I ended up trimming down 4 &amp;lsquo;B&amp;rsquo; sequences each of locking and unlocking (that is, different presses, not repeats during the same press).&#xA;I also opted not to include the preamble and header of these &amp;lsquo;B&amp;rsquo; sequences, as these are the same for any fob and include no actual information.&lt;/p&gt;&#xA;&lt;p&gt;The resulting signals varied in length and followed no apparent repeating format - this is where the encoding scheme described in the FCC documents comes in.&#xA;Fortunately, URH allows specifying and chaining encoding schemes, as well as calling external software to decode the data.&#xA;As I am not dealing with a large amount of data, I wrote a quick bash script to decode the data:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lc&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; IFS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; read -r -n1 c; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;c&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                break&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;c&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; !&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;lc&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;lc&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; !&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                echo -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;lc&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Deal with the last character&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                lc&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;c&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;elif&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;lc&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;c&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;c&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        echo -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        echo -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                lc&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;elif&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;lc&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                lc&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;c&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;1&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This does the trick, and all the data has a uniform length of 67 bits.&#xA;While the document specifies 66 bits, perhaps the aftermarket keyfob adds an extra bit.&#xA;In any case, this extra trailing bit is always 0.&lt;/p&gt;&#xA;&lt;p&gt;Finally we have something like this:&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/decoded.webp&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/decoded.webp&#34; alt=&#34;Decoded data&#34; title=&#34;Decoded data&#34; width=&#34;1831&#34; height=&#34;271&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;The top four entries are when locking, the bottom four when unlocking.&#xA;The highlighted segments from left to right, as per the technical document, are:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;encrypt&lt;/li&gt;&#xA;&lt;li&gt;serial number&lt;/li&gt;&#xA;&lt;li&gt;function code&lt;/li&gt;&#xA;&lt;li&gt;verify code&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;It can easily be seen how the intent of the button press is not encrypted, but is part of the function code near the end.&#xA;Also, the serial is correctly defined, as it does not change at any point.&#xA;I am not sure what the verify bits are present for - perhaps if an error occurs the encoding scheme would result in a non 0 result (though this is purely speculation).&lt;/p&gt;&#xA;&lt;p&gt;What we know now is that the keyfob does indeed use a rolling code algorithm, though not which one (web searches do not seem to specify).&lt;/p&gt;&#xA;&lt;h1 id=&#34;more-research&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#more-research&#34;&gt;More Research&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;I do not have access to the original keyfob at this time, so some image searching may be in order.&#xA;Several leads appeared, but the main one was this:&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/research/alt_2-hq-1044.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/research/alt_2-hq-1044.avif&#34; srcset=&#34;https://w-floyd.com/2021/01/nissan-keyfob/media/research/alt_2-hq-1044.avif 1044w, https://w-floyd.com/2021/01/nissan-keyfob/media/research/alt_2-hq-400.avif 400w, https://w-floyd.com/2021/01/nissan-keyfob/media/research/alt_2-hq-432.avif 432w, https://w-floyd.com/2021/01/nissan-keyfob/media/research/alt_2-hq-640.avif 640w, https://w-floyd.com/2021/01/nissan-keyfob/media/research/alt_2-hq-864.avif 864w, https://w-floyd.com/2021/01/nissan-keyfob/media/research/alt_2-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;Pre-owned OEM fob&#34; title=&#34;Pre-owned OEM fob&#34; width=&#34;1044&#34; height=&#34;806&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;None of the text appears especially legible, so the first thing I can do is compare the logo on the OEM fob to existing rolling code chip manufacturers.&#xA;As it happens, Microchip is the company in question, producing the widely documented KeeLoq product line (&lt;a href=&#34;http://keeloq.narod.ru/decryption.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;leaked spec sheet&lt;/a&gt;).&#xA;Looking at their product lines, it becomes clear that the original fob uses the HCS361 chip.&#xA;My aftermarket chips must be using a knockoff or unmarked version of this.&lt;/p&gt;&#xA;&lt;p&gt;Hurray, we know what chip we&amp;rsquo;re up against, what algorithm it uses, and how to get the information of an existing fob.&#xA;What we do not know is how to program our own chip (or software equivalent).&#xA;This is where things get a lot more involved than I have the expertise to do.&lt;/p&gt;&#xA;&lt;p&gt;What would be required would be the Nissan manufacturer code for this series of fobs.&#xA;Try as I might, these do not seem to have leaked online, nor have any other manufacturers as far as I can tell.&#xA;Speculating, perhaps those that have access to these codes either keep them to themselves for ethical reasons, or because there is financial incentive to keeping this information private.&#xA;Clearly there are Chinese manufacturers who know what this key is, because it would have been required in order to program this fob.&lt;/p&gt;&#xA;&lt;h1 id=&#34;key-problem&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#key-problem&#34;&gt;Key Problem&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;So how might I find this manufacturer key?&#xA;Curiously, I cannot even find reference to Nissan ever using KeeLoq, so that does not bode well.&#xA;Trawling the recent NA Nissan git leak doesn&amp;rsquo;t reveal anything related to such a key.&#xA;The consensus seems to be that a &lt;a href=&#34;https://link.springer.com/chapter/10.1007/978-3-642-02384-2_25&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;power analysis&lt;/a&gt; of the receiver is required to determine the manufacturer key.&#xA;While apparently not difficult for the researchers, it is beyond my means at this stage.&#xA;I am certainly &lt;a href=&#34;https://crypto.stackexchange.com/questions/61297/getting-a-keeloq-manufacturer-key&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;not&lt;/a&gt; &lt;a href=&#34;https://reverseengineering.stackexchange.com/questions/11988/question-about-keeloq-a-car-remote-control-standard&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;the&lt;/a&gt; &lt;a href=&#34;https://www.eevblog.com/forum/microcontrollers/microchip-keeloq-classic-new-firmware-for-garage-door-receiver-new-fobs/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;first&lt;/a&gt; &lt;a href=&#34;https://forum.newae.com/t/finding-the-samples-with-leaking-bits/1919&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;one&lt;/a&gt; &lt;a href=&#34;https://web.archive.org/web/20210419001256/https://advancedpersistentjest.com/2020/06/13/side-channel-analysis-of-keeloq/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;to&lt;/a&gt; &lt;a href=&#34;https://github.com/marc-invalid/chipwhisperer-marc/blob/master/doc/marc/keeloq/examples_hcs301/examples_hcs301.md&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;try&lt;/a&gt; &lt;a href=&#34;https://lerner98.medium.com/car-key-hacking-not-really-b60873cd18a&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;this&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The way forward would seem to buy a spare ECU for my vehicle and to use a ChipWhisperer and attempt to learn how to do power analysis.&#xA;I don&amp;rsquo;t have the time or resources (or frankly the need) to do that for now, so I think this is where my journey ends.&#xA;I&amp;rsquo;ll update this if ever I can get my hands on the manufacturer key and do anything more with this.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>DIY &#39;Smart&#39; Coffee Maker</title>
      <link>https://w-floyd.com/2020/07/coffee/</link>
      <pubDate>Sun, 05 Jul 2020 00:00:00 +0000</pubDate><author>William Floyd</author>
      <guid>https://w-floyd.com/2020/07/coffee/</guid><description>&lt;p&gt;I have recently (last couple months) been getting into home automation, specifically using Home Assistant.&#xA;I also wanted to get a coffee maker that used K-Cups.&#xA;Thus the goal was born - to get a coffee maker working with Home Assistant, such that I could automate it to fit my morning routine.&lt;/p&gt;&#xA;&lt;p&gt;I first searched for new coffee makers, looking to see what the easiest ones would be to hack into and automate.&#xA;I got so far as adding a sleek new brand name model to my Amazon cart, but thankfully reason and frugality prevailed!&#xA;Instead, I opted to swing by the local Goodwill the next day, to see what secondhand options might be available.&#xA;As luck would have it, I found a no-frills, single button coffee maker for the princely sum of $4, and I was on my merry way.&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-3024.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-1280.avif 1280w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-1296.avif 1296w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-1728.avif 1728w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-1920.avif 1920w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-2160.avif 2160w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-2560.avif 2560w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-2592.avif 2592w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-3024.avif 3024w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-400.avif 400w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-432.avif 432w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-640.avif 640w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-864.avif 864w, https://w-floyd.com/2020/07/coffee/media/20200610_204856-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;The Spoils of Goodwill&#34; title=&#34;The Spoils of Goodwill&#34; width=&#34;3024&#34; height=&#34;4032&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Later that evening, opening the black box up (thankfully I had the correct triangular screwdriver head), I found very easily hackable innards.&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-4032.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-1280.avif 1280w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-1296.avif 1296w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-1728.avif 1728w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-1920.avif 1920w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-2160.avif 2160w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-2560.avif 2560w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-2592.avif 2592w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-3840.avif 3840w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-400.avif 400w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-4032.avif 4032w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-432.avif 432w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-640.avif 640w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-864.avif 864w, https://w-floyd.com/2020/07/coffee/media/20200610_205351-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;Poor lighting is the worst...&#34; title=&#34;Poor lighting is the worst...&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;The control board (&lt;a href=&#34;media/20200610_205847-3024.avif&#34; &gt;front&lt;/a&gt;, &lt;a href=&#34;media/20200610_205841-3024.avif&#34; &gt;back&lt;/a&gt;) is very simple - two buttons in parallel, an LED, and a couple resistors.&#xA;I&amp;rsquo;m not quite sure what the logic is upstream (it un/latches on each press), but the buttons short to ground, and this is something I can work with.&#xA;The control board has wires for ground, signal, and 5V, in that order.&lt;/p&gt;&#xA;&lt;p&gt;The ordeal of hacking into the thing, and my missteps trying to do so, is rather boring really, but it produced this:&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-3024.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-1280.avif 1280w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-1296.avif 1296w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-1728.avif 1728w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-1920.avif 1920w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-2160.avif 2160w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-2560.avif 2560w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-2592.avif 2592w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-3024.avif 3024w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-400.avif 400w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-432.avif 432w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-640.avif 640w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-864.avif 864w, https://w-floyd.com/2020/07/coffee/media/20200702_120309-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;Interception!&#34; title=&#34;Interception!&#34; width=&#34;3024&#34; height=&#34;4032&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-3024.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-1280.avif 1280w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-1296.avif 1296w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-1728.avif 1728w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-1920.avif 1920w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-2160.avif 2160w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-2560.avif 2560w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-2592.avif 2592w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-3024.avif 3024w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-400.avif 400w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-432.avif 432w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-640.avif 640w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-864.avif 864w, https://w-floyd.com/2020/07/coffee/media/20200702_120302-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;Perfboard&#34; title=&#34;Perfboard&#34; width=&#34;3024&#34; height=&#34;4032&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-3024.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-1280.avif 1280w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-1296.avif 1296w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-1728.avif 1728w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-1920.avif 1920w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-2160.avif 2160w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-2560.avif 2560w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-2592.avif 2592w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-3024.avif 3024w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-400.avif 400w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-432.avif 432w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-640.avif 640w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-864.avif 864w, https://w-floyd.com/2020/07/coffee/media/20200702_120328-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;D1 Mini&#34; title=&#34;D1 Mini&#34; width=&#34;3024&#34; height=&#34;4032&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;The brains I added was a Wemos D1 Mini (thanks, Aliexpress!), with a 3.3V&amp;lt;-&amp;gt;5V converter between to sense when the coffee maker is on, and also turn on a mosfet to short the button to ground.&#xA;I initially had issues with the coffee maker turning on whenever I plugged the D1 Mini in, but a pulldown resistor solved this.&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-3024.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-1280.avif 1280w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-1296.avif 1296w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-1728.avif 1728w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-1920.avif 1920w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-2160.avif 2160w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-2560.avif 2560w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-2592.avif 2592w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-3024.avif 3024w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-400.avif 400w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-432.avif 432w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-640.avif 640w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-864.avif 864w, https://w-floyd.com/2020/07/coffee/media/20200702_120334-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;External USB Plug&#34; title=&#34;External USB Plug&#34; width=&#34;3024&#34; height=&#34;4032&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;I also opted for an external USB plug - this allows me to possibly reflash this without opening the enclosure, and also meant I did not need to splice into the mains line inside, which I was reluctant to do.&lt;/p&gt;&#xA;&lt;p&gt;I initially flashed and programmed the coffee maker with Tasmota, but almost immediately opted to use ESPHome instead.&#xA;I like Tasmota and ESPHome, I was just able to get more fine control of the setup using ESPHome in this instance, especially concerning the button logic.&lt;/p&gt;&#xA;&lt;p&gt;The (important) code is as follows:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;binary_sensor&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;platform&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;gpio&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;device_class&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;power&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;internal&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;id&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;power_on&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;pin&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;D2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;switch&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;platform&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;gpio&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;pin&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;D1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;id&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;relay&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restore_mode&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ALWAYS_OFF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;platform&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;template&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Coffee Maker&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;icon&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mdi:coffee-maker&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;lambda&lt;/span&gt;: |-&lt;span style=&#34;color:#e6db74&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      if (id(power_on).state) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        return true;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      } else {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        return false;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;turn_on_action&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;switch.turn_on&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;relay&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;50ms&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;switch.turn_off&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;relay&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;turn_off_action&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;switch.turn_on&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;relay&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;delay&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;50ms&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;switch.turn_off&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;relay&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The beauty of the way in which I can detect signals and simulate a button press is that ESPHome senses when I use the physical button, and updates accordingly.&#xA;I can use the coffee maker absolutely as normal, the &amp;lsquo;Smart&amp;rsquo; part of it is optional.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;The rest of my setup using this coffee maker is somewhat outside the scope of this post, but it includes using Tasker on my phone to run a &amp;lsquo;Wakeup&amp;rsquo; automation on Home Assistant, which will - along with turning on my bed-head lamp, and switching my monitor on before putting it to sleep - check if I turned on a &amp;lsquo;Morning Coffee&amp;rsquo; user input.&#xA;If I remembered to prep my coffee the night before, and turned on the switch, I will wake up to a hot cup of coffee (or, the sound of a coffee-in-progress).&#xA;I can also command Alexa and Google Assistant to do my bidding and make me a coffee.&#xA;At least someone does what I want&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Truly, we are living in the future.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>midiMixer - A simple Arduino powered MIDI potentiometer bank</title>
      <link>https://w-floyd.com/2020/05/midimixerv1/</link>
      <pubDate>Wed, 06 May 2020 00:00:00 +0000</pubDate><author>William Floyd</author>
      <guid>https://w-floyd.com/2020/05/midimixerv1/</guid><description>&lt;p&gt;This is nothing too special really - I wanted to try my hand at designing a custom PCB and assembling a device from scratch.&#xA;&lt;a href=&#34;https://github.com/W-Floyd/midiMixer&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GitHub for this project.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;This story actually starts a while ago (perhaps 2015), when I got the desire to build a DJ control panel (with no knowledge of how to get into it).&#xA;This never really happened, but it did lead me to get to know some DAW software, and experiment with it off and on.&#xA;But in the back of my head I still wanted to build some hardware to help with this.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-3024.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-1280.avif 1280w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-1296.avif 1296w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-1728.avif 1728w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-1920.avif 1920w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-2160.avif 2160w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-2560.avif 2560w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-2592.avif 2592w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-3024.avif 3024w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-400.avif 400w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-432.avif 432w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-640.avif 640w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-864.avif 864w, https://w-floyd.com/2020/05/midimixerv1/media/handwired/20190811_004928-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;Orange Sherbet Dreams&#34; title=&#34;Orange Sherbet Dreams&#34; width=&#34;3024&#34; height=&#34;4032&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;This eventually came about in the summer of 2019, when I finally hand-wired a simple 8 knob control surface.&#xA;Truth be told, I actually built two.&#xA;The &lt;a href=&#34;media/handwired/20190811_005806-4032.avif&#34; &gt;first one&lt;/a&gt; had some issues (I wonder why&amp;hellip;?), and would sporadically jitter values.&#xA;The &lt;a href=&#34;media/handwired/20190812_181606-3024.avif&#34; &gt;second one&lt;/a&gt; worked correctly, having been &lt;a href=&#34;media/handwired/20190811_195900-3024.avif&#34; &gt;wired&lt;/a&gt; much more &lt;a href=&#34;media/handwired/20190811_200447-3024.avif&#34; &gt;carefully&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Still, it was lacking professionalism, polish, and most importantly, robustness.&#xA;The sandwich of 22AWG wire, cardstock and PCB was less than sturdy, so I promptly packed it away and never used it.&#xA;Around this time also, I tried very briefly to learn how to use KiCAD, but didn&amp;rsquo;t get far at all.&#xA;This would come to change, however, in April of 2020.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-4032.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-1280.avif 1280w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-1296.avif 1296w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-1728.avif 1728w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-1920.avif 1920w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-2160.avif 2160w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-2560.avif 2560w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-2592.avif 2592w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-3840.avif 3840w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-400.avif 400w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-4032.avif 4032w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-432.avif 432w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-640.avif 640w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-864.avif 864w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152328-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;It&#39;s Not Easy, Being Green&#34; title=&#34;It&#39;s Not Easy, Being Green&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-4032.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-1280.avif 1280w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-1296.avif 1296w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-1728.avif 1728w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-1920.avif 1920w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-2160.avif 2160w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-2560.avif 2560w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-2592.avif 2592w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-3840.avif 3840w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-400.avif 400w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-4032.avif 4032w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-432.avif 432w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-640.avif 640w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-864.avif 864w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152317-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;Look Mum, Open Hardware!&#34; title=&#34;Look Mum, Open Hardware!&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;Fast forward close to a year, and here we are - toilet paper is the currency of the quickly collapsing Covid19 crazed world, and I&amp;rsquo;m back with my grandparents for the remainder of my semester (which, as of writing, is all but concluded).&#xA;Finding my lack of a social life leaving me with a little bit more free time, and being home yielding a &lt;em&gt;lot&lt;/em&gt; more distractions, I learned the basics of KiCAD from YouTube, and set out to design a simple PCB.&#xA;My old MIDI controller project came to mind, so I set myself to it, and within a few days had my first Gerber files sent off to JLCPCB.&#xA;In reality, I should have waited a bit and done a couple more design iterations before committing, but I guess $7 is the price of impatience.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-4032.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-1280.avif 1280w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-1296.avif 1296w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-1728.avif 1728w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-1920.avif 1920w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-2160.avif 2160w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-2560.avif 2560w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-2592.avif 2592w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-3840.avif 3840w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-400.avif 400w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-4032.avif 4032w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-432.avif 432w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-640.avif 640w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-864.avif 864w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151852-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;One In Hand&#34; title=&#34;One In Hand&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;So it was that my crisp PCBs showed up 3 weeks later - I had one assembled within the hour, and my old code dusted off and flashed within two hours.&#xA;It&amp;rsquo;s really as simple as it gets - a &lt;a href=&#34;media/v1/20200506_152023-3024.avif&#34; &gt;Pro Micro&lt;/a&gt; hooked up to a &lt;a href=&#34;media/v1/20200506_152016-4032.avif&#34; &gt;4051 analogue multiplexer&lt;/a&gt;, in turn hooked up to 8 potentiometers.&lt;/p&gt;&#xA;&lt;p&gt;The potentiometers I had on hand ended up being a bit different than the footprints I had used, so I ended up having to clip the mounting tabs off of them.&#xA;This, as one might imagine, made them extraordinarily flimsy, so I designed and printed a couple clamps to &lt;a href=&#34;media/v1/20200506_151947-4032.avif&#34; &gt;align&lt;/a&gt; and &lt;a href=&#34;media/v1/20200506_152003-4032.avif&#34; &gt;hold solid&lt;/a&gt; the potentiometers.&#xA;These also have the added benefit of keeping the soldered pins off of whatever surface the mixer is on.&#xA;Should the correct potentiometers be used, these would not be needed, though some feet or a case for the PCB would still be best.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-4032.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-1280.avif 1280w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-1296.avif 1296w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-1728.avif 1728w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-1920.avif 1920w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-2160.avif 2160w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-2560.avif 2560w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-2592.avif 2592w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-3840.avif 3840w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-400.avif 400w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-4032.avif 4032w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-432.avif 432w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-640.avif 640w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-864.avif 864w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_152248-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;It Ain&#39;t Much, But I&#39;m Proud&#34; title=&#34;It Ain&#39;t Much, But I&#39;m Proud&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;This being my first PCB design, I am quite happy it worked out so well - I am studying for Mechanical Engineering, not Electrical&amp;hellip;&#xA;However, I see room for improvement.&#xA;The potentiometers are too close together, and the rows are too far apart.&#xA;The knobs barely clear the Arduino, and the Arduino is mounted far higher off the PCB than I would like.&#xA;I see myself making a v2 in due course - perhaps next time I will try JLCPCB&amp;rsquo;s SMT assembly?&#xA;I imagine adding indicator LEDs, improving the layout, and adding a button to switch between banks would make this much more useful.&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-4032.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-1280.avif 1280w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-1296.avif 1296w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-1728.avif 1728w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-1920.avif 1920w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-2160.avif 2160w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-2560.avif 2560w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-2592.avif 2592w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-3840.avif 3840w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-400.avif 400w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-4032.avif 4032w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-432.avif 432w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-640.avif 640w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-864.avif 864w, https://w-floyd.com/2020/05/midimixerv1/media/v1/20200506_151947-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;That Hair Is Bothering Me&#34; title=&#34;That Hair Is Bothering Me&#34; width=&#34;4032&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;</description>
    </item>
  </channel>
</rss>
