<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32</link><pubDate>Tue, 14 Oct 2025 12:01:27 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>e14cstanton</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Current Revision posted to Documents by e14cstanton on 10/14/2025 12:01:27 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Yes!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="xbold"&gt;&lt;a href="#downloads" data-e14adj="t"&gt;Jump to Downloads &amp;amp; Bonus Content&lt;/a&gt; | &lt;a href="#discussions" data-e14adj="t"&gt;Jump to Discussions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;a name="downloads" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Files and Bonus Content Links:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/f/forum/53606/linux-on-esp32s3-is-now-a-thing" data-e14adj="t"&gt;Community Discussion on&amp;nbsp;Linux on ESp32S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Code, CAD and Schematics Download" href="/challenges-projects/element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD and Schematics Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-ade06" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ade06'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-9ced5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9ced5'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-01e9d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('01e9d'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ae6f0" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ae6f0'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-87b7a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('87b7a'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1aad5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1aad5'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-18e39" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('18e39'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.at&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;a name="discussions" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/14</link><pubDate>Tue, 10 Oct 2023 22:28:34 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>pchan</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 14 posted to Documents by pchan on 10/10/2023 10:28:34 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Yes!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="xbold"&gt;&lt;a href="#downloads" data-e14adj="t"&gt;Jump to Downloads &amp;amp; Bonus Content&lt;/a&gt; | &lt;a href="#discussions" data-e14adj="t"&gt;Jump to Discussions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;&lt;strong&gt;DOWNLOADS:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;a name="downloads" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Files and Bonus Content Links:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/f/forum/53606/linux-on-esp32s3-is-now-a-thing" data-e14adj="t"&gt;Community Discussion on&amp;nbsp;Linux on ESp32S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;&lt;strong&gt;DOWNLOADS:&lt;/strong&gt; Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-36ec2" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('36ec2'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f3a65" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f3a65'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c082e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c082e'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-63c34" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('63c34'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b227b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b227b'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-de183" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('de183'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-72fa3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('72fa3'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.at&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;a name="discussions" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/13</link><pubDate>Tue, 10 Oct 2023 22:26:44 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>pchan</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 13 posted to Documents by pchan on 10/10/2023 10:26:44 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Yes!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="color:#212121;font-size:small;"&gt;&lt;a href="#downloads" data-e14adj="t"&gt;Jump to Downloads &amp;amp; bonus content&lt;/a&gt; | &lt;a href="#discussions" data-e14adj="t"&gt;Jump to Discussions&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;&lt;strong&gt;DOWNLOADS:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;a name="downloads" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Files and Bonus Content Links:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/f/forum/53606/linux-on-esp32s3-is-now-a-thing" data-e14adj="t"&gt;Community Discussion on&amp;nbsp;Linux on ESp32S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;&lt;strong&gt;DOWNLOADS:&lt;/strong&gt; Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-ce1d3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ce1d3'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-9f7f4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9f7f4'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-01363" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('01363'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-20941" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('20941'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f2a38" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f2a38'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-cf27c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('cf27c'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-32c56" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('32c56'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.at&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;a name="discussions" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/12</link><pubDate>Tue, 10 Oct 2023 17:37:30 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>kellyhensen</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 12 posted to Documents by kellyhensen on 10/10/2023 5:37:30 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Yes!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="color:#212121;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;&lt;strong&gt;DOWNLOADS:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Files and Bonus Content Links:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/f/forum/53606/linux-on-esp32s3-is-now-a-thing" data-e14adj="t"&gt;Community Discussion on&amp;nbsp;Linux on ESp32S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;&lt;strong&gt;DOWNLOADS:&lt;/strong&gt; Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-c3698" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c3698'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-5f5c6" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('5f5c6'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-6a73c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('6a73c'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-41e23" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('41e23'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-34aa7" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('34aa7'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ea5f2" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ea5f2'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-49782" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('49782'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.at&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/11</link><pubDate>Sun, 08 Oct 2023 20:57:19 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>cstanton</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 11 posted to Documents by cstanton on 10/8/2023 8:57:19 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Yes!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="color:#212121;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Files and Bonus Content Links:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/f/forum/53606/linux-on-esp32s3-is-now-a-thing" data-e14adj="t"&gt;Community Discussion on&amp;nbsp;Linux on ESp32S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-60907" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('60907'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-193ac" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('193ac'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c3309" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c3309'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-dc931" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('dc931'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ab1ff" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ab1ff'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-46cb6" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('46cb6'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-27e54" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('27e54'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.at&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/9</link><pubDate>Thu, 05 Oct 2023 16:37:52 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>kellyhensen</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 9 posted to Documents by kellyhensen on 10/5/2023 4:37:52 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Yes!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="color:#212121;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/f/forum/53606/linux-on-esp32s3-is-now-a-thing" data-e14adj="t"&gt;Community Discussion on&amp;nbsp;Linux on ESp32S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-dd0ba" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('dd0ba'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-52f81" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('52f81'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ea5d8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ea5d8'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-20fed" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('20fed'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-66887" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('66887'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-fee38" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('fee38'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-205cf" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('205cf'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.at&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/10</link><pubDate>Thu, 05 Oct 2023 16:37:52 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>pchan</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 10 posted to Documents by pchan on 10/5/2023 4:37:52 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Yes!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="color:#212121;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/f/forum/53606/linux-on-esp32s3-is-now-a-thing" data-e14adj="t"&gt;Community Discussion on&amp;nbsp;Linux on ESp32S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-229fa" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('229fa'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d5d7a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d5d7a'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-3a3bd" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3a3bd'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c2805" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c2805'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b9d63" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b9d63'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-98c6a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('98c6a'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f8fce" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f8fce'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.at&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/8</link><pubDate>Thu, 05 Oct 2023 16:19:25 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>kellyhensen</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 8 posted to Documents by kellyhensen on 10/5/2023 4:19:25 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Yes!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="color:#212121;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-3e1c3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3e1c3'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-4a82f" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('4a82f'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f0c0b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f0c0b'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-10813" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('10813'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c1624" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c1624'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b06f7" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b06f7'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-5bf23" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('5bf23'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.at&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/7</link><pubDate>Thu, 05 Oct 2023 16:18:04 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>kellyhensen</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 7 posted to Documents by kellyhensen on 10/5/2023 4:18:04 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Yes!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;span style="color:#212121;font-size:small;"&gt;&lt;span style="color:#000000;font-family:Calibri, Helvetica, sans-serif, EmojiFont, &amp;#39;Apple Color Emoji&amp;#39;, &amp;#39;Segoe UI Emoji&amp;#39;, NotoColorEmoji, &amp;#39;Segoe UI Symbol&amp;#39;, &amp;#39;Android Emoji&amp;#39;, EmojiSymbols;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-e955f" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('e955f'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-70166" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('70166'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-585d9" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('585d9'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a8b47" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a8b47'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f9190" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f9190'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0d12e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0d12e'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0c149" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0c149'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.at&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/6</link><pubDate>Thu, 05 Oct 2023 16:10:36 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 6 posted to Documents by tariq.ahmad on 10/5/2023 4:10:36 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Until very recently&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one would have plainly answered&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;ldquo;n&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;o&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;But those times are over&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;You can use code &amp;quot;thanks_mayermakes_23&amp;quot; at checkout on&amp;nbsp;&lt;a class="white-85 no-underline hover-white" href="http://aisler.net/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Aisler.net&lt;/a&gt;&amp;nbsp;if you want to try&amp;nbsp;the PCBs&amp;nbsp;out.&lt;span style="color:#212121;font-size:small;"&gt;&lt;span style="color:#000000;font-family:Calibri, Helvetica, sans-serif, EmojiFont, &amp;#39;Apple Color Emoji&amp;#39;, &amp;#39;Segoe UI Emoji&amp;#39;, NotoColorEmoji, &amp;#39;Segoe UI Symbol&amp;#39;, &amp;#39;Android Emoji&amp;#39;, EmojiSymbols;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-aef10" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('aef10'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-3d94c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3d94c'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0dad4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0dad4'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-6f60c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('6f60c'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-69b08" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('69b08'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-6a55e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('6a55e'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-30ad0" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('30ad0'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/5</link><pubDate>Wed, 04 Oct 2023 21:53:06 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>kellyhensen</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 5 posted to Documents by kellyhensen on 10/4/2023 9:53:06 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Until very recently&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one would have plainly answered&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;ldquo;n&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;o&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;But those times are over&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-0feb6" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0feb6'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-3ca12" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3ca12'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-8232e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('8232e'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b5e7f" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b5e7f'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-6500c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('6500c'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-94708" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('94708'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-45693" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('45693'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/4</link><pubDate>Wed, 04 Oct 2023 20:33:10 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 4 posted to Documents by tariq.ahmad on 10/4/2023 8:33:10 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Until very recently&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one would have plainly answered&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;ldquo;n&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;o&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;But those times are over&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-131bb" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('131bb'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-7158c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7158c'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0ab26" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0ab26'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-343d0" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('343d0'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-440e4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('440e4'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c3a23" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c3a23'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-6022a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('6022a'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (&amp;nbsp; it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/3</link><pubDate>Wed, 04 Oct 2023 20:32:02 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 3 posted to Documents by tariq.ahmad on 10/4/2023 8:32:02 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Until very recently&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one would have plainly answered&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;ldquo;n&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;o&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;But those times are over&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148327" data-e14adj="t"&gt;Code, CAD Files, and Schematics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu54ft51"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-8219c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('8219c'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-5bb71" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('5bb71'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d4ccb" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d4ccb'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-22475" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('22475'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1b4f3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1b4f3'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-3a8e4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3a8e4'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b1e9e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b1e9e'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (&amp;nbsp; it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/2</link><pubDate>Wed, 04 Oct 2023 20:25:36 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 2 posted to Documents by tariq.ahmad on 10/4/2023 8:25:36 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Until very recently&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one would have plainly answered&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;ldquo;n&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;o&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;But those times are over&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Code, CAD Files, and Schematics&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1hbu54ft51"&gt;Bill of Materials&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-40e86" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('40e86'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-348a4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('348a4'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d2a3e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d2a3e'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d9e41" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d9e41'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1ce13" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1ce13'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1293c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1293c'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1763a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1763a'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h3&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (&amp;nbsp; it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item><item><title>Episode 623: How to Run Linux on an ESP32</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32/revision/1</link><pubDate>Wed, 04 Oct 2023 20:18:51 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:26387004-0a49-4f4d-9179-dab7f4500509</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28339/episode-623-how-to-run-linux-on-an-esp32#comments</comments><description>Revision 1 posted to Documents by tariq.ahmad on 10/4/2023 8:18:51 PM&lt;br /&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Can you run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Linux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; on &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;an &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32? &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Until very recently&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one would have plainly answered&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;ldquo;n&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;o&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;But those times are over&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;W&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;hile a normal &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;ESP&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;32 &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;can&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; run &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; (yet&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;)&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; one specific variant can.&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="LineBreakBlob BlobObject DragDrop SCXW11443392 BCX0"&gt;&lt;span class="SCXW11443392 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="TextRun SCXW11443392 BCX0" lang="EN-GB" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;The ESP32-S3-N8R8 is &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;now&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; able&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; to boot a &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;L&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;inux&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; port for &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;Xtensa&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; Cores&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;doesn&amp;rsquo;t&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;&amp;nbsp;do a poor job&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;!&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; On the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;contrary&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;the &lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;port&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; is quite usable&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;comes with the classic vi editor&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt;,&lt;/span&gt;&lt;span class="NormalTextRun SCXW11443392 BCX0" data-ccp-parastyle="Standard"&gt; and even connects to the internet.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW11443392 BCX0"&gt;&amp;nbsp;Also&lt;/span&gt;&amp;nbsp;in this video, Clem explores the use of the Raspberry Pi Compute Module 4 along with&amp;nbsp;some of its limitations. He points out that, for some projects, a microcontroller is more suitable and power-efficient choice than a single-board computer like the Raspberry Pi. However, he acknowledges that in many cases, a more capable system running an operating system like Linux is required.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/pj0a91vlcGo"&gt;https://youtu.be/pj0a91vlcGo&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem introduces the idea of running Linux on an ESP32 microcontroller, specifically the ESP32-S3 variant. There is a Linux port available for this ESP32 variant, allowing for a more versatile and power-efficient option for projects requiring an operating system.&amp;nbsp;&amp;nbsp;&amp;nbsp;Clem delves into the hardware design process of his SUDOSOM-S3 module, showing a PCB layout that accommodates the ESP32-S3 in a form factor compatible with the Raspberry Pi Compute Module 4.&amp;nbsp; He highlights the importance of maintaining GPIO compatibility to make transitioning projects from the Raspberry Pi to this custom board easier. He also discusses the challenges of aligning the headers when putting everything together.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h39m43s489.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To design and build his SUDOSOM-S3, he uses&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;a KiCad template for CM4-style boards.&amp;nbsp; Keeping this template in mind, he designs a simple initial iteration based on the principle communicated in the &lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/managed-videos/148013" data-e14adj="t"&gt;USB-Card Reader Prototype Episode&lt;/a&gt;. This included the core MCU module, power regulation, a USB port, and pins for debugging and flashing, as well as GPIOs routed to corresponding pins on the Mezzanine connectors.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Speaking of Hirose Mezzanine connectors,&amp;nbsp;aligning them when doing hand assembly is very tricky and solder bridges can easily form. Inspection with a microscope is needed, and cleaning up the pins with a generous amount of flux and deliberate soldering iron touches is almost always advisable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&amp;nbsp;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m04s917.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A key difference between the SUDOSOM module compared to a real CM4 is not just a different processor, but a USB-C port. The SUDOSOM has an onboard USB-C port, which allows it to be used as a standalone and not just embedded into a device. This makes developing software and Wi-Fi applications much easier.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;With his first iteration assembled, Clem proceeded to compile the needed files; however, a big hurdle in the form of missing knowledge about kernel development and toolchains emerged.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;After installing the missing dependencies, with multiple attempts at compiling, Clem is&amp;nbsp;forced to abandon&amp;nbsp;his initial plan. His editing PC crashed violently on every attempt, most likely due to overheating during compilation or configuration errors. To save his PC from certain death, he asked the developers of the Linux port for pre-compiled firmware.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Two names of note are doing the bulk of work on the overall project:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table data-tablestyle="MsoNormalTable" data-tablelook="1184"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td data-celllook="0"&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The current state is documented on Github:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="none"&gt;&lt;a id="" href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="none"&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m19s899.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Next, he shares his script to simplify the process of flashing Linux onto the ESP32-S3, emphasizing the multi-step nature of the process, including bootloader and partition table flashing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;It turns out this is not as straightforward as just uploading an Arduino sketch or flashing CircuitPython via ESP-IDF.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;By referencing the build scripts of jcmvbkbc &amp;amp; Adafruit&amp;rsquo;s Docker version, Clem finds all the required commands for the multi-step flashing process and successfully flashes Linux on his SUDOSOM module. This process was a daunting experience that he couldn&amp;acute;t fathom doing every time, even by just copying and pasting lines from a text document.&amp;nbsp; To make things easier, the flashing process was completed using&amp;nbsp;precompiled files&amp;nbsp;that he received&amp;nbsp;from the creators of the Linux port:&amp;nbsp;&amp;nbsp;&lt;span class="TextRun SCXW15985971 BCX0" lang="EN-GB" data-contrast="none"&gt;&lt;span class="NormalTextRun SCXW15985971 BCX0" data-ccp-parastyle="Standard"&gt;&lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;This tool asks for the port the SUDOSOM module is connected to, the names of specific files (as those could be named differently when compiled from scratch), and executes the needed commands, including updating ESP-IDF to support the right target MCU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;While this process is now much simpler, it still takes 8-10 minutes to flash the board.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;Clem shows the bootable system and&amp;nbsp;demonstrates&amp;nbsp;connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and&amp;nbsp;demonstrates&amp;nbsp;downloading files using Wget.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After exploring the file system,&amp;nbsp;he builds a quick second iteration to push his SUDOSOM project along faster. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Version 2 integrates the USB-to-UART converter on board, adds a second USB-C port for the native USB capabilities that are hopefully coming soon to the Linux port, and employs an RP2040 MCU to act as a pseudo-GPU.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m28s607.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The RP2040 is the MCU used on the Raspberry Pi Pico and is known for its PIO capabilities, which allow it to produce DVI video (a subset of HDMI).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This, in turn, should give the SUDOSOM graphical capabilities.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem also discusses his experience with compiling the Linux kernel, noting a potential issue with GCC compiler dependencies. The flashing process was completed using precompiled files that he received from the creators of the Linux port.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem shows the bootable system and demonstrates connecting to it via a serial terminal over a USB port. He mentions the possibility of using SSH for remote access and demonstrates downloading files using Wget.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To make the SUDOSOM module more versatile,&amp;nbsp;Clem&amp;nbsp;integrates&amp;nbsp;an RP2040 microcontroller (the type found in the Raspberry Pi Pico) for&amp;nbsp;additional&amp;nbsp;functionality, such as graphics capabilities via HDMI/DVI.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem acknowledges that there is still work to be done, particularly&amp;nbsp;regarding&amp;nbsp;HDMI output, and encourages viewers to share their ideas for improving the board and software support.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Overall, Clem provides a comprehensive overview of the project, its challenges, and its potential applications, making it clear that this custom board could serve as a valuable tool for makers seeking a balance between microcontroller and single-board computer capabilities in their projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The plan is to eventually program a driver that allows the use of Adafruit&amp;rsquo;s GFX library commands with SUDOSOM, so the RP2040 would not only render the UART-console to a screen, but also draw graphics (like it already does on TFTs and OLEDs in numerous projects).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem rushes through the KiCad process to get the PCB into production at Aisler as soon as possible. Thanks to quick turnaround and express shipping, he receives the board just in time for the release of the video. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;After cleaning up some solder bridges under the microscope, the new Sudosom Beta is flashable. However, it browns out on boot.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Another hurdle to overcome.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_10_2D00_04_2D00_12h40m57s578.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;With the very sophisticated method of touching the components with his fingers, Clem determined that the rp2040 was causing a short. He removes it, and the brown out no longer occurs. Linux boots perfectly fine.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem demonstrates typical Linux folder hopping and uses vi to enter his WiFi credentials. He reboots and finally transfers a file onto the board by downloading it with the wget command from his own FTP server (now running at sudosom.com for just this purpose).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Linux on ESP32 is in a very young state, but has the potential to be a cost-effective solution for projects that might benefit from an operating system other than RTOS, and avoid overengineering when using proper CM4 modules.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;During development of the SUDOSOM Beta variant, Clem came up with configurations that are already possible with the current version of his SBC that make it a nice candidate for non-Linux projects.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The ESP32-S3 can be used as both host and auxiliary processor. Both the ESP32-S3 and the RP2040 can be used with Arduino , C/C++ , RUST and MicroPython. You can freely choose if you want to run your main code on the RP2040, and use the ESP32-S3 as a Wifi and BLE bridge (similar to the Pico W), or go the other way and run the main code on ESP32-S3, using the RP204)&amp;rsquo;s PIO capabilities for the I/O.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A mix of languages might also come in handy for many projects, with a simple CircuitPython file handling and faster executing C code on a dedicated real-time processor.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The future looks full of intense development for this little module on the software side.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;And it seems that Clem already has plans to integrate it into an upcoming project.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1hbu4pi6b0"&gt;&lt;span data-contrast="auto"&gt;Bonus Content:&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Code, CAD Files, and Schematics&lt;/li&gt;
&lt;li&gt;Creators of the linux port to ESP32-S3:&amp;nbsp;&lt;a href="https://twitter.com/jcmvbkbc" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/jcmvbkbc&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://twitter.com/ESP32DE" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://twitter.com/ESP32DE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for the Linux port &lt;a href="https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo for Flashing tool &lt;a id="" href="https://github.com/mayermakes/Sudoflash" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/Sudoflash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1hbu54ft51"&gt;Bill of Materials&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-04a21" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL&amp;nsku=68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('04a21'));" data-farnell="2427678~2,2427679~2,1578404~2,2524076~3,2081321,3766082RL" data-newark="68X2587~2,68X2588~2,08N6475~2,02AH5567 ~3,83T7087,49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DP-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-77557" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427678&amp;nsku=68X2587&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('77557'));" data-farnell="2427678" data-newark="68X2587" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HIROSE(HRS) DF40C-100DS-0.4V(51)&lt;/td&gt;
&lt;td&gt;HIROSE&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-dba0a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2427679&amp;nsku=68X2588&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('dba0a'));" data-farnell="2427679" data-newark="68X2588" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MICROCHIP MCP1825S-3302E/DB&lt;/td&gt;
&lt;td&gt;Microchip&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b3180" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1578404&amp;nsku=08N6475&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b3180'));" data-farnell="1578404" data-newark="08N6475" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX 105450-0101&lt;/td&gt;
&lt;td&gt;Molex&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-58077" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=02AH5567 &amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('58077'));" data-farnell="2524076" data-newark="02AH5567 " data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTDI FT230XS-R&lt;/td&gt;
&lt;td&gt;FTDI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-4dc1a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2081321&amp;nsku=83T7087&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('4dc1a'));" data-farnell="2081321" data-newark="83T7087" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RASPBERRY-PI RP2040CT&lt;/td&gt;
&lt;td&gt;Raspberry pi&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-5b732" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=3766082RL&amp;nsku=49AJ8739&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('5b732'));" data-farnell="3766082RL" data-newark="49AJ8739" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="mcetoc_1hbu55qam2"&gt;Additional Parts:&lt;/h3&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-N8R8 module (&amp;nbsp; it needs a minimum of 8MB PSRAM to run Linux) can be sourced over www.mayermakes.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: File Downloads, Electronics Development, raspberry pi compute module 4, Power-Efficient Solutions, ESP32-S3 Linux Port, Custom ESP32-S3 Board, ssh access, Linux on ESP32-S3, Embedded Systems, hardware design, Microcontroller vs. Single-Board Computer, Precompiled Linux Kernel, maker projects, diy electronics, friday_release, e14p_CMM, GPIO Compatibility&lt;/div&gt;
</description></item></channel></rss>