{"id":777,"date":"2026-05-31T14:33:06","date_gmt":"2026-05-31T22:33:06","guid":{"rendered":"https:\/\/salemdata.net\/johnpress\/?p=777"},"modified":"2026-05-31T14:49:39","modified_gmt":"2026-05-31T22:49:39","slug":"herding-t-beam-cats","status":"publish","type":"post","link":"https:\/\/salemdata.net\/johnpress\/?p=777","title":{"rendered":"Herding T-Beam Cats"},"content":{"rendered":"<p><span style=\"color: #ff0000;\"><strong>Highly technical, <\/strong><span style=\"color: #000000;\">but written for those who are blessed with curiosity<\/span><\/span><\/p>\n<h2>Introduction<\/h2>\n<p>I&#8217;m testing <a href=\"https:\/\/github.com\/attermann\/microReticulum\">microReticulum<\/a>, a C++ implementation of the Reticulum protocol developed by Chad <a href=\"https:\/\/github.com\/attermann\">Attermann<\/a>, on 7 LilyGo <a href=\"https:\/\/wiki.lilygo.cc\/products\/t-beam-series\/t-beam-supreme\/\">T-Beam SUPREME<\/a>s.<\/p>\n<figure id=\"attachment_784\" aria-describedby=\"caption-attachment-784\" style=\"width: 109px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-784\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5138-scaled.webp\" alt=\"circuit boards\" width=\"109\" height=\"149\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5138-scaled.webp 1873w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5138-220x300.webp 220w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5138-1171x1600.webp 1171w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5138-768x1049.webp 768w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5138-1124x1536.webp 1124w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5138-1499x2048.webp 1499w\" sizes=\"auto, (max-width: 109px) 100vw, 109px\" \/><figcaption id=\"caption-attachment-784\" class=\"wp-caption-text\">T-Beam Interior boards<\/figcaption><\/figure>\n<figure id=\"attachment_785\" aria-describedby=\"caption-attachment-785\" style=\"width: 159px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-785\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5137-scaled.webp\" alt=\"circuit board with battery\" width=\"159\" height=\"185\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5137-scaled.webp 2196w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5137-257x300.webp 257w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5137-1372x1600.webp 1372w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5137-768x895.webp 768w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5137-1318x1536.webp 1318w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5137-1757x2048.webp 1757w\" sizes=\"auto, (max-width: 159px) 100vw, 159px\" \/><figcaption id=\"caption-attachment-785\" class=\"wp-caption-text\">Disassembled T-Beam<\/figcaption><\/figure>\n<figure id=\"attachment_786\" aria-describedby=\"caption-attachment-786\" style=\"width: 574px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-786\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5028-scaled.webp\" alt=\"circuit boards\" width=\"574\" height=\"192\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5028-scaled.webp 2560w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5028-300x100.webp 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5028-1920x642.webp 1920w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5028-768x257.webp 768w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5028-1536x513.webp 1536w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5028-2048x684.webp 2048w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><figcaption id=\"caption-attachment-786\" class=\"wp-caption-text\">T-Beam (assembled) with battery<\/figcaption><\/figure>\n<figure id=\"attachment_783\" aria-describedby=\"caption-attachment-783\" style=\"width: 131px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-783\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/ESP32-S3_on_paper.jpg\" alt=\"Circuit board on paper\" width=\"131\" height=\"131\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/ESP32-S3_on_paper.jpg 960w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/ESP32-S3_on_paper-300x300.jpg 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/ESP32-S3_on_paper-150x150.jpg 150w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/ESP32-S3_on_paper-768x768.jpg 768w\" sizes=\"auto, (max-width: 131px) 100vw, 131px\" \/><figcaption id=\"caption-attachment-783\" class=\"wp-caption-text\">ESP32-S3<\/figcaption><\/figure>\n<p>The T-Beams use the ESP32-S, a game-changing small processor.\u00a0 I&#8217;ve built an elaborate testing bench which I wanted to document should someone in the same arena want to streamline their software workbench and leverage the efficiencies I have developed.\u00a0 Below is a description of a\u00a0practical, console-driven embedded-systems workflow for testing seven T-Beam nodes with PlatformIO, synchronized clocks, structured logs, and AI-assisted debugging.<\/p>\n<h2>Development Environment<\/h2>\n<figure id=\"attachment_778\" aria-describedby=\"caption-attachment-778\" style=\"width: 181px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-778\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/Arduino_IDE_-_Blink.png\" alt=\"screenshot of Arduino IDE \" width=\"181\" height=\"151\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/Arduino_IDE_-_Blink.png 1482w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/Arduino_IDE_-_Blink-300x250.png 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/Arduino_IDE_-_Blink-768x639.png 768w\" sizes=\"auto, (max-width: 181px) 100vw, 181px\" \/><figcaption id=\"caption-attachment-778\" class=\"wp-caption-text\">Arduino IDE 1.8.5<\/figcaption><\/figure>\n<p>First off, I do not use the windowed based <a href=\"https:\/\/en.wikipedia.org\/wiki\/Arduino\">Arduino<\/a> integrated development environment (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Arduino#IDE_2.0\">IDE 2<\/a>).\u00a0 I found the interface too complicated with options I&#8217;ll never use and you have to move around with a mouse and click which really slows you down.\u00a0 Instead, I prefer a command line interface, e.g. a console, where I can script and tweak commands that I repeatedly use.<\/p>\n<figure id=\"attachment_782\" aria-describedby=\"caption-attachment-782\" style=\"width: 67px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-782\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/PlatformIO_logo.png\" alt=\"orange logo with ant head\" width=\"67\" height=\"67\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/PlatformIO_logo.png 220w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/PlatformIO_logo-150x150.png 150w\" sizes=\"auto, (max-width: 67px) 100vw, 67px\" \/><figcaption id=\"caption-attachment-782\" class=\"wp-caption-text\">PlatformIO<\/figcaption><\/figure>\n<p>While the Arduino IDE is very popular and an excellent beginner&#8217;s tool, I&#8217;ve moved on to the <a href=\"https:\/\/docs.platformio.org\/en\/latest\/home\/index.html\">Platform IO<\/a> <sup id=\"fnref1\"><a href=\"#fn1\">1<\/a><\/sup>.\u00a0 PlatformIO appears to be an open source project with a for-profit company, <a href=\"https:\/\/piolabs.com\/company\/about.html\">PlatformIO Labs<\/a>, aligned to it.\u00a0 PlatformIO Labs is headquartered in Estonia, and notes with pride that its R&amp;D unit is located in Ukraine <sup id=\"fnref2\"><a href=\"#fn2\">2<\/a><\/sup>.\u00a0 PlatformIO touts:<\/p>\n<p style=\"padding-left: 80px;\"><span style=\"color: #800080;\">A place where Developers and Teams have true Freedom! No more vendor lock-in!<\/span><\/p>\n<p>PlatformIO&#8217;s philosophy really resonates with me, I who worked for the world&#8217;s largest database software company for 24 years.\u00a0 Moreover, the ability to &#8220;get things done&#8221; <sup id=\"fnref3\"><a href=\"#fn3\">3<\/a><\/sup>, or &#8220;Git-R-Done!&#8221; <sup id=\"fnref4\"><a href=\"#fn4\">4<\/a><\/sup>,\u00a0 in a command console and with scripts is especially efficient and to me, less complicated to understand.<\/p>\n<p>&nbsp;<\/p>\n<p>I created a <a href=\"https:\/\/wiki.archlinux.org\/title\/Python\/Virtual_environment\">virtual Python environment<\/a> since <a href=\"https:\/\/www.gentoo.org\/\">Gentoo Linux<\/a> <sup id=\"fnref5\"><a href=\"#fn5\">5<\/a><\/sup><\/p>\n<figure id=\"attachment_780\" aria-describedby=\"caption-attachment-780\" style=\"width: 59px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-780\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/GentooLinux.png\" alt=\"Gentoo Linux Icon\" width=\"59\" height=\"61\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/GentooLinux.png 586w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/GentooLinux-293x300.png 293w\" sizes=\"auto, (max-width: 59px) 100vw, 59px\" \/><figcaption id=\"caption-attachment-780\" class=\"wp-caption-text\">Gentoo<\/figcaption><\/figure>\n<p>is my preferred platform.\u00a0 You do not want to pollute or corrupt Gentoo&#8217;s installation of Python since Gentoo Linux heavily relies upon Python to manage its environment.\u00a0 Instead, you create a micro universe with a copy of Python so you can install all kinds of risky packages and if you break your environment, then you just dispose of it and build another and you do not compromise your operating system.<\/p>\n<p>PlatformIO is easily installed within a [virtual] Python environment. When you are working with compiling C++ code, say in the microReticulum project, PlatformIO creates a directory &#8220;.pio&#8221; and stages and builds everything thereunder.\u00a0 You can control your PlatformIO in the file platformiol.ini.\u00a0 In mine, I have entries for each of my T-Beam devices identified by name: AMY, BOB, CY, ED, FLO &amp; GUY.<sup id=\"fnref7\"><a href=\"#fn7\">7<\/a><\/sup>\u00a0 The ability to differentiate the T-Beams is helpful, for instance, because GUY is a T-Beam with a different and more expensive GPS chip and circuit, so it needs to have different libraries to successfully compile.<\/p>\n<figure id=\"attachment_792\" aria-describedby=\"caption-attachment-792\" style=\"width: 2560px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-792\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5386-scaled.webp\" alt=\"7 radio units, each a different color\" width=\"2560\" height=\"1711\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5386-scaled.webp 2560w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5386-300x201.webp 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5386-1920x1283.webp 1920w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5386-768x513.webp 768w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5386-1536x1027.webp 1536w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/DSC_5386-2048x1369.webp 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption id=\"caption-attachment-792\" class=\"wp-caption-text\">AMY, BOB, CY, DAN, ED, FLO &amp; GUY<\/figcaption><\/figure>\n<h2>T-Beam development<\/h2>\n<p>When I stage a project, I do so under the path: \/usr\/local\/src.\u00a0 This is an old-time practice I learned early on when I learned Linux.\u00a0 On <em>any<\/em> given server or workstation I control, I can always know what customized software I have installed outside of the Gentoo package system by seeing what is staged under \/usr\/local\/src.\u00a0 Think of it as a sort of a mental quarantine area.\u00a0 We used this protocol, for the most part, for the many servers my team controlled.<\/p>\n<p>This T-Beam world was all new to me.\u00a0 So I decided to creates studies, or &#8220;exercises&#8221;, to learn about the many functions of the T-Beam as well as to test its stated features. <sup id=\"fnref6\"><a href=\"#fn6\">6<\/a><\/sup>\u00a0 I did not want to take the fast track and develop something only to learn later that a certain hardware capability existed that could improve the experience.<\/p>\n<figure id=\"attachment_793\" aria-describedby=\"caption-attachment-793\" style=\"width: 411px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-793\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_034622_Sun.png\" alt=\"Linux console lising\" width=\"411\" height=\"800\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_034622_Sun.png 411w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_034622_Sun-154x300.png 154w\" sizes=\"auto, (max-width: 411px) 100vw, 411px\" \/><figcaption id=\"caption-attachment-793\" class=\"wp-caption-text\">Exercises<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Building Firmware<\/h2>\n<p>Compiling the code and building the &#8220;firmware&#8221; \u2014 a binary blob that is the operating system for the T-Beam \u2014\u00a0 for each T-Beam takes over 1 minute on my 2012 Intel-based workstation.\u00a0 So if I want to test a simple change in the code with all 7 T-Beams, I&#8217;m looking at 8 &#8211; 10 minutes to build the 7 firmwares.\u00a0 When Codex starts making tiny incremental changes, this amount of time adds up real quickly making progress about 4 increments per hour.\u00a0 I determined a solution is to have an identical workbench on my more powerful server, ryzdesk (chip: AMD Ryzen 7950, tons of memory), and build the firmware for each unit there.\u00a0 On ryzdesk, I can build all 7 firmwares in 1 minute 4 seconds.\u00a0 That is a time saving of about 8 minutes+.\u00a0 So my method of work is to edit and interact with Codex on my slower &#8220;jp&#8221; workstation, check-in the changes and push [transfer] the revised code to my Forgejo server (running on a Raspberry Pi 4B), pull the changes down to ryzdesk and compile, then copy the build tree back to my workstation and load the firmwares into the respective T-Beams.\u00a0 Much of this is facilitated using scripts.<\/p>\n<h2>Trial Runs<\/h2>\n<p>With the T-Beam inoculated with new firmware, I then run them.\u00a0 I have a requirement that each unit must have its clock &#8220;disciplined&#8221; to satellite time every 24 hours.\u00a0 This is to assure the time on each T-Beam is very close so when events are time-stamped, I know all the units are referencing the same time.\u00a0 My procedure is that time synchronization must occur every 24 hours, if at start-up the unit sees that it has been over 24 hours since it last synchronized with satellites, it forces me to take the unit to a window or outside so it can obtain satellite signals and adjust its internal clock.\u00a0 I maintain a <a href=\"https:\/\/timetoolsltd.com\/ntp\/what-is-a-stratum-1-time-server\/\">stratum 1 time server<\/a> (Raspberry Pi5) which my workstation, jp, is synchronized to.\u00a0 So time codes on the T-Beams and my workstation should clearly be within 1\/1,000th of a second.\u00a0 It is imperative to have synchronized time to fully analyze log files.<\/p>\n<p>I want the trial runs to start relatively at the same time and end at the same time, so I have designed Bash and Perl scripts which launch a new console and connects via a serial port to a given T-beam.\u00a0 What is printed out in the console has filters highlighting entries of interest in color and prepends high precision time codes to the entries as they are printed out in the console.<\/p>\n<figure id=\"attachment_794\" aria-describedby=\"caption-attachment-794\" style=\"width: 1860px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-794\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_015325_Sun.png\" alt=\"screenshot of 7 command consoles on a Linux desktop \" width=\"1860\" height=\"1139\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_015325_Sun.png 1860w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_015325_Sun-300x184.png 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_015325_Sun-768x470.png 768w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_015325_Sun-1536x941.png 1536w\" sizes=\"auto, (max-width: 1860px) 100vw, 1860px\" \/><figcaption id=\"caption-attachment-794\" class=\"wp-caption-text\">7 Console Monitors on their own desktop<\/figcaption><\/figure>\n<p>In addition to displaying in the console, the serial port stream coming from the T-Beam is routed to a log file with a date and time stamp in the file name.\u00a0 With my Perl script (clump_tbeam_logs.pl) I combine the log files generated from the recent trial into a subdirectory so I can just reference the subdirectory, e.g. ~\/logs\/<strong>20260531_1046<\/strong>, to Codex who can then find them and focus only that run.<\/p>\n<figure id=\"attachment_796\" aria-describedby=\"caption-attachment-796\" style=\"width: 670px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-796\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_110736_Sun.png\" alt=\"directory listing\" width=\"670\" height=\"206\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_110736_Sun.png 670w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_110736_Sun-300x92.png 300w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><figcaption id=\"caption-attachment-796\" class=\"wp-caption-text\">Logs from T-Beam synchronized trial runs<\/figcaption><\/figure>\n<h2>Post Trial Analysis<\/h2>\n<p>The log files are a wealth of information, and using grep, I can filter out entries of interest such as what each unit received decrypted into readable text.\u00a0 For instance, I have the firmwares configured so that BOB and CY are supposed to communicate via the Reticulum &#8220;transport&#8221; through DAN, but the results below show that neither BOB nor CY are receiving their LINK Transmission (&#8220;RX LINK&#8221;) messages, only the ANNOUNCE messages. (This is, therefore, a problem\/bug either in my code or in the microreticulum code yet to be solved\/fixed.)<\/p>\n<figure id=\"attachment_797\" aria-describedby=\"caption-attachment-797\" style=\"width: 952px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-797\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_114136_Sun.png\" alt=\"console showing results of searches using grep\" width=\"952\" height=\"762\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_114136_Sun.png 952w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_114136_Sun-300x240.png 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_114136_Sun-768x615.png 768w\" sizes=\"auto, (max-width: 952px) 100vw, 952px\" \/><figcaption id=\"caption-attachment-797\" class=\"wp-caption-text\">Log Search Results<\/figcaption><\/figure>\n<p>This organization makes my interaction with Codex very efficient.\u00a0 Codex will tweak the code, I&#8217;ll compile and run a trial using the modified code, and then I have log files in an isolated directory which Codex can analyze.\u00a0 I actually had Codex connecting directly to my T-Beams: Codex could compile the code, upload it to the T-Beams, and then open parallel serial monitors and monitor in real time what was happening.\u00a0 While that is all amazing, it is a very expensive use of Codex and I found my 5 hour allotments or AI time skyrocketing.\u00a0 In the interest of husbandry and permanence, I opted for this method of running trials and then having log files so both Codex and I have the same results in a permanent location which can be referenced later on.\u00a0 This workflow also makes Codex more useful and less wasteful. Instead of letting Codex burn time directly controlling hardware, I run the trial myself and preserve the evidence in a timestamped log directory. Codex can then inspect the same files I inspected, reason from the same run, and propose the next small change. That keeps the AI bounded by evidence rather than wandering through guesses.\u00a0It also forces me to have to read stuff and learn and not hand over the keys to the kingdom to AI like many unsophisticated managers and CEOs of companies do thinking they can replace their software developers with AI and save money [in the short term].<\/p>\n<p>During my testing, I brought to the attention of the manufacturer, LilyGO, that they published the T-Beam SUPREME&#8217;s specification touting a microphone.\u00a0 When I set up an exercise to test the microphone&#8230; I learned there was no built-in microphone and contacted LilyGO. They admitted the error and have since updated their specifications removing mention of a microphone.<\/p>\n<hr \/>\n<ol class=\"footnotes\">\n<li id=\"fn1\">https:\/\/docs.platformio.org\/en\/latest\/what-is-platformio.html?utm_source=chatgpt.com#philosophy Some &#8220;<a href=\"https:\/\/piolabs.com\/company\/about.html\">PlatformIO Labs<\/a> is headquartered in Estonia, with representation in the USA and an R&amp;D center in Ukraine.&#8221; \u00a0 \u00a0familiar companies use PlatformIO:\n<figure id=\"attachment_779\" aria-describedby=\"caption-attachment-779\" style=\"width: 1165px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-779\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_024030_Sun.png\" alt=\"Compilation of various company logos and trademarks\" width=\"1165\" height=\"282\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_024030_Sun.png 1165w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_024030_Sun-300x73.png 300w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/05\/20260531_024030_Sun-768x186.png 768w\" sizes=\"auto, (max-width: 1165px) 100vw, 1165px\" \/><figcaption id=\"caption-attachment-779\" class=\"wp-caption-text\">PlatformIO Users<\/figcaption><\/figure>\n<p><a href=\"#fnref1\">\u21a9<\/a><\/li>\n<li id=\"fn2\">\u00a0Ukraine &#8212; <em>Commentary<\/em>: it seems that Ukraine is emerging as a pre-eminent leader in drone technology which necessarily involves single board computers, aka &#8220;SBC&#8221;.\u00a0 The T-Beam is an SBC with steroids, so it seems to be a natural fit that PlatformIO Lab&#8217;s R&amp;D unit would be in Ukraine.\u00a0 I can only speculate that the expertise needed to advance drone technology is in the same universe as work with the Espressif ESP32 series, so working with a tool set such as PlatformIO makes me feel like I&#8217;m on the cutting edge.\u00a0 It certainly is meeting my expectations of what a tool set should do.<a href=\"#fnref2\">\u21a9<\/a><\/li>\n<li id=\"fn3\">\u00a0 &#8220;getting things done&#8221; &#8211; a trite, to being the point of amusing, phrase usually broadcasted by incumbents during their re-election campaigns.<a href=\"#fnref3\">\u21a9<\/a><\/li>\n<li id=\"fn4\">\u00a0 Git-R-Done! Catch phrase from <a href=\"https:\/\/en.wikipedia.org\/wiki\/Larry_the_Cable_Guy\">Larry the Cable Guy <\/a><a href=\"#fnref4\">\u21a9<\/a><\/li>\n<li id=\"fn5\">\u00a0https:\/\/en.wikipedia.org\/wiki\/Gentoo_Linux <a href=\"#fnref5\">\u21a9<\/a><\/li>\n<li id=\"fn6\">\u00a0I had my <a href=\"https:\/\/forgejo.org\/\">Forgejo<\/a> repository (https:\/\/salemdata.net\/repo)available and was getting barraged by AI bots, so I configured it to registered-users-only access.\u00a0 If you would like access, submit your email, preferred username, and real name in the form below (which will not be published) and I&#8217;ll contact you by email to arrange for an account.\u00a0 No charges, I just do not want my servers and Internet connection flooded by AI bots. <a href=\"#fnref6\">\u21a9<\/a><\/li>\n<li id=\"fn7\">The case design is the <a href=\"https:\/\/www.printables.com\/model\/959441-lilygo-t-beam-supreme-ts2-case-by-alley-cat\">Lilygo T-Beam SUPREME TS2 Case<\/a> by <a href=\"https:\/\/www.printables.com\/@AlleyCat\">Alley Cat<\/a>.\u00a0 Most were printed on a <a href=\"https:\/\/www.sovol3d.com\/products\/sovol-sv06-ace\">Sovol SV06 ACE<\/a> 3D Printer (5\/31\/26 $259 <a href=\"https:\/\/www.amazon.com\/dp\/B0DFYK5Q3L?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_12&amp;th=1\">Amazon<\/a>).\u00a0 Most of the cases in the photo are PLA [<a href=\"https:\/\/en.wikipedia.org\/wiki\/Polylactic_acid\">polylactide<\/a>] filament, the red DAN was ASA [<a href=\"https:\/\/en.wikipedia.org\/wiki\/Acrylonitrile_styrene_acrylate\">Acrylonitrile styrene acrylate<\/a>]. The ASA requires high constant ambient temperature, so I have the SV06 inside the YOOPAI 3D Printer Enclosure (5\/31\/26 <a href=\"https:\/\/www.amazon.com\/dp\/B0CKNZ27ZR?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_11&amp;th=1\">Amazon<\/a>).<a href=\"#fnref7\">\u21a9<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Highly technical, but written for those who are blessed with curiosity Introduction I&#8217;m testing microReticulum, a C++ implementation of the Reticulum protocol developed by Chad Attermann, on 7 LilyGo T-Beam SUPREMEs. The T-Beams use the ESP32-S, a game-changing small processor.\u00a0 I&#8217;ve built an elaborate testing bench which I wanted to document should someone in the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":792,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[127,126,80,131,130,121],"tags":[],"class_list":["post-777","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chatgpt","category-codex","category-meshtastic","category-microreticulum","category-reticulum","category-t-beam"],"_links":{"self":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts\/777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=777"}],"version-history":[{"count":20,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts\/777\/revisions"}],"predecessor-version":[{"id":810,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts\/777\/revisions\/810"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/media\/792"}],"wp:attachment":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}