<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marco</title>
    <description>The latest articles on DEV Community by Marco (@pezzullo).</description>
    <link>https://dev.to/pezzullo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3920651%2F9ef050df-df52-4756-987e-57e731257437.png</url>
      <title>DEV Community: Marco</title>
      <link>https://dev.to/pezzullo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pezzullo"/>
    <language>en</language>
    <item>
      <title>5G RedCap for embedded IoT: useful 5G without full 5G complexity</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Wed, 27 May 2026 10:23:19 +0000</pubDate>
      <link>https://dev.to/pezzullo/5g-redcap-for-embedded-iot-useful-5g-without-full-5g-complexity-2o4</link>
      <guid>https://dev.to/pezzullo/5g-redcap-for-embedded-iot-useful-5g-without-full-5g-complexity-2o4</guid>
      <description>&lt;p&gt;5G RedCap is becoming one of the more interesting connectivity options for embedded products that sit between classic cellular IoT and full 5G.&lt;/p&gt;

&lt;p&gt;It is not meant to replace NB-IoT or LTE-M in tiny low-power sensors. It is also not meant to replace full 5G NR in high-throughput routers or eMBB devices.&lt;/p&gt;

&lt;p&gt;The useful space is the middle: industrial gateways, connected cameras, mobile HMIs, richer asset trackers, smart grid equipment and edge devices that need more than LPWA but less than a full 5G modem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RedCap actually changes
&lt;/h2&gt;

&lt;p&gt;RedCap means Reduced Capability. It was introduced in 3GPP Release 17 as a lighter 5G NR device category. The basic idea is to reduce device complexity by limiting capabilities such as maximum bandwidth, antenna configuration, carrier aggregation and processing requirements.&lt;/p&gt;

&lt;p&gt;That matters in embedded systems because the modem is never isolated. It affects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BOM and module availability&lt;/li&gt;
&lt;li&gt;antenna design and enclosure constraints&lt;/li&gt;
&lt;li&gt;peak current and sleep strategy&lt;/li&gt;
&lt;li&gt;carrier certification&lt;/li&gt;
&lt;li&gt;Linux integration&lt;/li&gt;
&lt;li&gt;OTA behavior&lt;/li&gt;
&lt;li&gt;diagnostics and field support&lt;/li&gt;
&lt;li&gt;product security lifecycle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, RedCap is not just a radio choice. It changes the system architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it fits
&lt;/h2&gt;

&lt;p&gt;RedCap can make sense when a device needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more bandwidth than NB-IoT or LTE-M&lt;/li&gt;
&lt;li&gt;better alignment with 5G Standalone roadmaps&lt;/li&gt;
&lt;li&gt;medium-size telemetry or diagnostic payloads&lt;/li&gt;
&lt;li&gt;OTA updates that are too heavy for very low-power links&lt;/li&gt;
&lt;li&gt;remote access, VPN or backend integration&lt;/li&gt;
&lt;li&gt;private 5G or industrial network support&lt;/li&gt;
&lt;li&gt;a longer product lifecycle than an LTE-only design may suggest&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is especially interesting for embedded Linux gateways, industrial routers, edge AI cameras, utility equipment and professional mobile devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it does not fit
&lt;/h2&gt;

&lt;p&gt;RedCap is not automatically the best answer.&lt;/p&gt;

&lt;p&gt;If a device sends a few bytes per day and must run for years on a small battery, NB-IoT or LTE-M may still be better.&lt;/p&gt;

&lt;p&gt;If the product needs continuous high-bitrate video, heavy uplink or CPE-class performance, full 5G NR may be the right tool.&lt;/p&gt;

&lt;p&gt;If the installation always has reliable local infrastructure, Wi-Fi or wired Ethernet may be simpler and cheaper.&lt;/p&gt;

&lt;p&gt;The point is to compare technologies against the product behavior, not against the marketing label.&lt;/p&gt;

&lt;h2&gt;
  
  
  Embedded Linux integration checklist
&lt;/h2&gt;

&lt;p&gt;For a Linux gateway, treat the RedCap modem as a critical subsystem.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;redcap_linux_integration&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;modem_interface&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;qmi_or_mbim_selected&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;modemmanager_profile_tested&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;networkmanager_policy_defined&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;hardware_reset_gpio_available&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;connectivity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;lte_fallback_tested&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;roaming_policy_defined&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;apn_profiles_versioned&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;vpn_or_private_apn_evaluated&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;modem_firmware_update_process_defined&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;logs_persisted_for_field_debug&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;watchdog_recovery_flow_tested&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;remote_diagnostics_enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important details are usually boring and very practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can the host reset the modem without a power cycle?&lt;/li&gt;
&lt;li&gt;Are QMI, MBIM or AT flows deterministic enough for recovery?&lt;/li&gt;
&lt;li&gt;Are network state transitions logged persistently?&lt;/li&gt;
&lt;li&gt;Is LTE fallback validated in the target countries?&lt;/li&gt;
&lt;li&gt;Can field support see RSSI, operator, APN, roaming and attach failures?&lt;/li&gt;
&lt;li&gt;Is modem firmware update part of the maintenance process?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security and OTA are part of the decision
&lt;/h2&gt;

&lt;p&gt;A RedCap device is often remotely reachable, updateable and connected to cloud services. That makes secure boot, signed OTA, credential handling and vulnerability management part of the connectivity decision.&lt;/p&gt;

&lt;p&gt;For new connected products in Europe, this also intersects with the Cyber Resilience Act lifecycle mindset: products need to be maintainable, updateable and designed with cybersecurity in mind from the beginning.&lt;/p&gt;

&lt;p&gt;At minimum, I would verify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;signed firmware artifacts&lt;/li&gt;
&lt;li&gt;downgrade prevention&lt;/li&gt;
&lt;li&gt;rollback or recovery path&lt;/li&gt;
&lt;li&gt;device identity model&lt;/li&gt;
&lt;li&gt;TLS certificate lifecycle&lt;/li&gt;
&lt;li&gt;hardened credential storage&lt;/li&gt;
&lt;li&gt;debug access policy&lt;/li&gt;
&lt;li&gt;vulnerability handling process&lt;/li&gt;
&lt;li&gt;remote logs for update and modem failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The modem gives the product reach. The security architecture decides whether that reach is acceptable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Power and RF can make or break the project
&lt;/h2&gt;

&lt;p&gt;RedCap reduces complexity compared with full 5G, but it should not be confused with ultra-low-power LPWA.&lt;/p&gt;

&lt;p&gt;Measure on the real target:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;attach peak current&lt;/li&gt;
&lt;li&gt;idle current&lt;/li&gt;
&lt;li&gt;sleep behavior&lt;/li&gt;
&lt;li&gt;consumption during OTA&lt;/li&gt;
&lt;li&gt;behavior with weak signal&lt;/li&gt;
&lt;li&gt;reconnect and retry patterns&lt;/li&gt;
&lt;li&gt;thermal behavior in enclosure&lt;/li&gt;
&lt;li&gt;antenna performance in final mechanics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many cellular product failures do not come from the selected standard. They come from optimistic power assumptions, weak antenna integration or recovery flows that were never tested outside the lab.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical adoption roadmap
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart TD
  A["Use-case analysis"] --&amp;gt; B["Compare NB-IoT, LTE-M, LTE Cat-1/4, RedCap and full 5G"]
  B --&amp;gt; C["Select module and target bands"]
  C --&amp;gt; D["PoC on real hardware"]
  D --&amp;gt; E["Measure power, attach, uplink, fallback and recovery"]
  E --&amp;gt; F["Integrate Linux, firmware, OTA and secure boot"]
  F --&amp;gt; G["Operator testing, certifications and field trial"]
  G --&amp;gt; H["Controlled rollout and lifecycle monitoring"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The best time to evaluate RedCap is before the PCB, enclosure, antenna, power tree and update strategy are frozen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;5G RedCap is not simply "slower 5G". It is a useful middle tier for connected embedded products that need more than LPWA, less than full 5G and a clearer path toward 5G-era networks.&lt;/p&gt;

&lt;p&gt;For the right product, it can improve longevity, remote maintenance and industrial connectivity. For the wrong product, it can add unnecessary module cost, certification effort and power complexity.&lt;/p&gt;

&lt;p&gt;So the question is not "should we use RedCap?". The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What does our device need to transmit, how long must it live in the field, how will we update it, and what network roadmap do we need to survive?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Useful references:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.3gpp.org/news-events/partner-news/redcap-gsa-article01" rel="noopener noreferrer"&gt;3GPP / GSA overview of NR RedCap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gsma.com/solutions-and-impact/technologies/internet-of-things/gsma_resources/redcap-eredcap-for-iot/" rel="noopener noreferrer"&gt;GSMA: RedCap and eRedCap for IoT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://5g-acia.org/whitepapers/assessment-of-5g-reduced-capability-redcap-devices-for-industrial-iot/" rel="noopener noreferrer"&gt;5G-ACIA assessment of RedCap for Industrial IoT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://digital-strategy.ec.europa.eu/en/policies/cra-summary" rel="noopener noreferrer"&gt;European Commission summary of the Cyber Resilience Act&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Canonical source: &lt;a href="https://www.siliconlogix.it/en/article/5g-redcap-for-embedded-iot-benefits-and-roadmap-for-connected-products" rel="noopener noreferrer"&gt;5G RedCap for embedded IoT: benefits and roadmap for connected products&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>iot</category>
      <category>embedded</category>
      <category>5g</category>
      <category>security</category>
    </item>
    <item>
      <title>Post-quantum cryptography for embedded and IoT: secure boot, TLS and OTA</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Sat, 23 May 2026 11:43:06 +0000</pubDate>
      <link>https://dev.to/pezzullo/post-quantum-cryptography-for-embedded-and-iot-secure-boot-tls-and-ota-34e4</link>
      <guid>https://dev.to/pezzullo/post-quantum-cryptography-for-embedded-and-iot-secure-boot-tls-and-ota-34e4</guid>
      <description>&lt;p&gt;Post-quantum cryptography is no longer just a research topic. It is starting to affect the way embedded teams design TLS, secure boot, OTA, firmware signing, device identity and long-term product maintenance.&lt;/p&gt;

&lt;p&gt;NIST has finalized the first post-quantum standards. OpenSSL 3.5 now includes ML-KEM, ML-DSA and SLH-DSA support. The European roadmap points toward a coordinated transition, and embedded vendors are already moving PQC into MCU and firmware workflows.&lt;/p&gt;

&lt;p&gt;For connected products that may stay in the field for 10, 15 or 20 years, this is not abstract security theater. It is architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why embedded teams should care
&lt;/h2&gt;

&lt;p&gt;Embedded products freeze cryptographic choices earlier than many teams expect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bootloader verification logic&lt;/li&gt;
&lt;li&gt;firmware image and manifest formats&lt;/li&gt;
&lt;li&gt;OTA package signatures&lt;/li&gt;
&lt;li&gt;device certificates&lt;/li&gt;
&lt;li&gt;production PKI&lt;/li&gt;
&lt;li&gt;secure elements and trust anchors&lt;/li&gt;
&lt;li&gt;TLS or VPN libraries in Linux gateways&lt;/li&gt;
&lt;li&gt;update and rollback policies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once the device is deployed, changing those choices becomes expensive. Sometimes it becomes almost impossible without a carefully designed migration path.&lt;/p&gt;

&lt;p&gt;That is the real value of post-quantum planning: not replacing RSA and ECC everywhere overnight, but introducing crypto agility before the product becomes too rigid.&lt;/p&gt;

&lt;h2&gt;
  
  
  ML-KEM and ML-DSA in plain terms
&lt;/h2&gt;

&lt;p&gt;The two names embedded teams should recognize first are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ML-KEM&lt;/strong&gt;: a key encapsulation mechanism for establishing shared secrets, especially relevant to TLS and similar protocols.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ML-DSA&lt;/strong&gt;: a digital signature scheme, relevant to secure boot, firmware signing, package signing, certificates and device identity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Linux gateways, ML-KEM is often the first practical entry point because TLS stacks can be tested and upgraded more easily than immutable boot chains.&lt;/p&gt;

&lt;p&gt;For firmware and boot flows, ML-DSA is very relevant but needs more careful engineering. Signature sizes, verification time, image layout and manifest formats all matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where PQC enters an embedded architecture
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;What changes&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TLS and networking&lt;/td&gt;
&lt;td&gt;Hybrid groups, new key establishment, library updates&lt;/td&gt;
&lt;td&gt;Gateways and edge devices can start testing now&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secure boot&lt;/td&gt;
&lt;td&gt;Signature verification may need post-quantum readiness&lt;/td&gt;
&lt;td&gt;Boot chains are hard to change after deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OTA&lt;/td&gt;
&lt;td&gt;Manifests, package signing and rollback policies may need new formats&lt;/td&gt;
&lt;td&gt;Update reliability and security are part of the same trust chain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PKI&lt;/td&gt;
&lt;td&gt;Certificates, provisioning and trust anchors need migration planning&lt;/td&gt;
&lt;td&gt;Device identity is a long-term product dependency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory budget&lt;/td&gt;
&lt;td&gt;Stack, heap, flash and latency must be measured&lt;/td&gt;
&lt;td&gt;Papers and release notes are not a substitute for target testing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  A practical adoption path
&lt;/h2&gt;

&lt;p&gt;Do not turn on PQC everywhere and hope for the best. A healthier path looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inventory every cryptographic dependency in the product.&lt;/li&gt;
&lt;li&gt;Map TLS, VPN, secure boot, OTA, package signing, certificates and PKI.&lt;/li&gt;
&lt;li&gt;Identify code paths that cannot be updated after manufacturing.&lt;/li&gt;
&lt;li&gt;Run a Linux gateway pilot with OpenSSL 3.5 or lab tools such as Open Quantum Safe.&lt;/li&gt;
&lt;li&gt;Measure ML-KEM and ML-DSA impact on real hardware.&lt;/li&gt;
&lt;li&gt;Review image formats, manifests, rollback and recovery paths.&lt;/li&gt;
&lt;li&gt;Define a policy for trust anchor rotation and crypto agility.&lt;/li&gt;
&lt;li&gt;Move only the justified parts into production.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Example checklist
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;pqc_embedded_audit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;lifecycle&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;expected_field_life_checked&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;non_updatable_signature_verifier_identified&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;protocols&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;tls_or_vpn_usage_mapped&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;certificates_and_pki_inventory_done&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;firmware_chain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;secure_boot_flow_reviewed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;ota_manifest_and_signature_format_reviewed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;rollback_and_recovery_paths_verified&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;implementation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;hybrid_transition_need_evaluated&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;stack_heap_flash_measured_on_real_target&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;latency_variance_measured&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;trust_anchor_rotation_plan_available&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;crypto_agility_requirements_defined&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;release_and_support_workflow_documented&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  When PQC makes sense
&lt;/h2&gt;

&lt;p&gt;PQC planning is most useful when the product is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;connected&lt;/li&gt;
&lt;li&gt;updateable&lt;/li&gt;
&lt;li&gt;deployed for a long time&lt;/li&gt;
&lt;li&gt;dependent on secure boot, OTA, certificates or secure networking&lt;/li&gt;
&lt;li&gt;expensive to access physically&lt;/li&gt;
&lt;li&gt;subject to compliance or long support windows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes Linux gateways, edge appliances, industrial IoT devices and remotely maintained firmware platforms natural candidates for early evaluation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to be careful
&lt;/h2&gt;

&lt;p&gt;PQC is not automatically the right move for every MCU or every firmware build.&lt;/p&gt;

&lt;p&gt;Very constrained devices may have strict limits around stack, heap, flash, latency or power. Hybrid approaches can help with migration, but they also add complexity and testing cost. The goal is not to put post-quantum algorithms everywhere. The goal is to know where they reduce real product risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;Post-quantum cryptography is becoming part of embedded product architecture. The smartest move today is not panic migration; it is inventory, measurement and crypto agility.&lt;/p&gt;

&lt;p&gt;Teams that understand their boot chain, OTA process, PKI and field lifecycle now will have a much easier transition later.&lt;/p&gt;




&lt;p&gt;Canonical source: &lt;a href="https://www.siliconlogix.it/en/article/post-quantum-cryptography-for-embedded-and-iot-secure-boot-tls-and-ota" rel="noopener noreferrer"&gt;Post-quantum cryptography for embedded and IoT: secure boot, TLS and OTA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Silicon LogiX helps teams review embedded Linux, secure boot, firmware signing, OTA and security architecture for connected products.&lt;/p&gt;

</description>
      <category>iot</category>
      <category>embedded</category>
      <category>security</category>
      <category>cryptography</category>
    </item>
    <item>
      <title>eBPF on embedded Linux: diagnostics and runtime security for edge devices</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Mon, 18 May 2026 10:57:22 +0000</pubDate>
      <link>https://dev.to/pezzullo/ebpf-on-embedded-linux-diagnostics-and-runtime-security-for-edge-devices-he2</link>
      <guid>https://dev.to/pezzullo/ebpf-on-embedded-linux-diagnostics-and-runtime-security-for-edge-devices-he2</guid>
      <description>&lt;p&gt;eBPF is no longer only a cloud-native observability topic.&lt;/p&gt;

&lt;p&gt;For embedded Linux teams, it can become a practical way to inspect deployed gateways, routers and edge devices without rebuilding the whole firmware image every time a new diagnostic question appears.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is the DEV.to edition of a Silicon LogiX technical article. The canonical English source is linked at the end.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why eBPF matters for embedded Linux
&lt;/h2&gt;

&lt;p&gt;Embedded Linux products are often installed in places where debugging is expensive: factories, remote sites, customer networks, vehicles, appliances or industrial cabinets.&lt;/p&gt;

&lt;p&gt;When a problem appears only in the field, the usual workflow is painful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;add logs&lt;/li&gt;
&lt;li&gt;rebuild the image&lt;/li&gt;
&lt;li&gt;deploy an update&lt;/li&gt;
&lt;li&gt;reproduce the issue&lt;/li&gt;
&lt;li&gt;hope the new logs are the right ones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;eBPF gives teams another option. In many cases, it can collect kernel-level signals at runtime with controlled overhead, without turning every diagnostic question into a new firmware release.&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful use cases
&lt;/h2&gt;

&lt;p&gt;For embedded products, eBPF is most useful when it solves a specific operational problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;measuring syscall frequency and latency&lt;/li&gt;
&lt;li&gt;tracing I/O or filesystem behavior&lt;/li&gt;
&lt;li&gt;observing network traffic on gateways and routers&lt;/li&gt;
&lt;li&gt;collecting packet statistics with XDP&lt;/li&gt;
&lt;li&gt;monitoring sensitive runtime events&lt;/li&gt;
&lt;li&gt;profiling CPU or service bottlenecks&lt;/li&gt;
&lt;li&gt;supporting remote diagnostics on deployed Linux devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It does not replace good firmware architecture, logs, metrics or security design. It adds a deeper inspection layer when application-level visibility is not enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Embedded constraints still matter
&lt;/h2&gt;

&lt;p&gt;A cloud server and an embedded gateway are very different environments.&lt;/p&gt;

&lt;p&gt;Before adding eBPF to a product, check the real target:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kernel version and BPF support&lt;/li&gt;
&lt;li&gt;CPU architecture and JIT availability&lt;/li&gt;
&lt;li&gt;enabled hooks and kernel configuration&lt;/li&gt;
&lt;li&gt;memory and CPU overhead&lt;/li&gt;
&lt;li&gt;privileges required to load programs&lt;/li&gt;
&lt;li&gt;Yocto or Buildroot integration&lt;/li&gt;
&lt;li&gt;difference between development and production images&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best embedded approach is often to build tools off-target and deploy only the loader, BPF objects and runtime pieces that the product actually needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture sketch
&lt;/h2&gt;

&lt;p&gt;A typical solution has two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a small eBPF program attached to a kernel event&lt;/li&gt;
&lt;li&gt;a user-space loader that configures the program and reads data from BPF maps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The eBPF side should stay focused: collect, filter or count events. The user-space side can export logs, metrics, local dashboard data or remote diagnostic reports.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ebpf_embedded_strategy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;development_image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;tracing_tools_available&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;debug_symbols_available&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;kernel_config_visible&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;production_image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;minimal_loader_included&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;only_required_bpf_programs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;unprivileged_bpf_disabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;attack_surface_reduced&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;build_process&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;kernel_config_versioned&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;bpf_objects_built_reproducibly&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;target_architecture_validated&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;release_artifacts_tracked&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Evaluation checklist
&lt;/h2&gt;

&lt;p&gt;Before adopting eBPF in an embedded Linux product, run a focused audit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ebpf_embedded_audit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;kernel&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;kernel_version_checked&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;bpf_support_enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;required_hooks_available&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;architecture_jit_support_verified&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;security&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;unprivileged_bpf_policy_reviewed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;capabilities_required_documented&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;production_access_restricted&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;attack_surface_evaluated&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;runtime&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;cpu_overhead_measured&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;memory_usage_measured&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;long_running_test_completed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;failure_behavior_verified&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;maintenance&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;bpf_program_versioned&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;rollback_plan_available&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;customer_support_workflow_defined&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adoption plan
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Start from one real problem: latency, networking, syscall monitoring, security audit or field diagnostics.&lt;/li&gt;
&lt;li&gt;Verify kernel support, architecture constraints and permissions.&lt;/li&gt;
&lt;li&gt;Build a small proof of concept and measure overhead on the real target.&lt;/li&gt;
&lt;li&gt;Integrate loader and BPF objects into the embedded build system.&lt;/li&gt;
&lt;li&gt;Separate development tooling from the production image.&lt;/li&gt;
&lt;li&gt;Define update, rollback, logging and support workflows.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;eBPF is powerful for embedded Linux when it becomes part of an engineered maintenance and observability strategy.&lt;/p&gt;

&lt;p&gt;It should not be added because it is fashionable. It should be added when it reduces diagnostic time, improves runtime visibility, strengthens network or security insight, and helps keep deployed Linux devices maintainable for years.&lt;/p&gt;




&lt;p&gt;Canonical source: &lt;a href="https://www.siliconlogix.it/en/article/ebpf-on-embedded-linux-advanced-diagnostics-and-security-for-edge-devices" rel="noopener noreferrer"&gt;eBPF on embedded Linux: advanced diagnostics and security for edge devices&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you build embedded Linux, IoT gateways or edge devices and want a second pair of eyes on diagnostics, runtime security or Yocto integration, Silicon LogiX can help turn field problems into maintainable engineering workflows.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>embedded</category>
      <category>security</category>
      <category>ebpf</category>
    </item>
    <item>
      <title>ESP-IDF 6.0 migration: what ESP32 teams should test before production</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Tue, 12 May 2026 11:33:00 +0000</pubDate>
      <link>https://dev.to/pezzullo/esp-idf-60-migration-what-esp32-teams-should-test-before-production-559j</link>
      <guid>https://dev.to/pezzullo/esp-idf-60-migration-what-esp32-teams-should-test-before-production-559j</guid>
      <description>&lt;p&gt;ESP-IDF 6.0 is not a routine SDK bump for ESP32 products.&lt;/p&gt;

&lt;p&gt;If your firmware runs on devices already installed in the field, updated through OTA, connected through TLS, or used in industrial environments, the migration should be treated as an engineering project rather than a quick dependency update.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is the DEV.to edition of a Silicon LogiX technical article. The canonical English source is linked at the end.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why ESP-IDF 6.0 matters
&lt;/h2&gt;

&lt;p&gt;ESP-IDF 6.0 changes several areas that matter in production firmware:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Picolibc replaces Newlib as the default C library&lt;/li&gt;
&lt;li&gt;Mbed TLS 4.x moves crypto work toward PSA Crypto APIs&lt;/li&gt;
&lt;li&gt;Deprecated legacy drivers are removed&lt;/li&gt;
&lt;li&gt;Build workflows and presets improve&lt;/li&gt;
&lt;li&gt;Bootloader OTA recovery exists on supported chips&lt;/li&gt;
&lt;li&gt;Some warnings can become build-blocking errors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a prototype, this may look like a normal migration. For a product, it can affect RAM, flash footprint, task stack margins, TLS handshakes, OTA safety, provisioning and release repeatability.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to check before migrating
&lt;/h2&gt;

&lt;p&gt;Start with five questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the current firmware build cleanly?&lt;/li&gt;
&lt;li&gt;Do custom components use legacy ESP-IDF APIs?&lt;/li&gt;
&lt;li&gt;Are OTA partitions, rollback and bootloader compatibility documented?&lt;/li&gt;
&lt;li&gt;Does the product use TLS, client certificates, secure boot or flash encryption?&lt;/li&gt;
&lt;li&gt;Can CI reproduce the exact production build?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the answer to any of these is unclear, migrate in stages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Picolibc checklist
&lt;/h2&gt;

&lt;p&gt;Picolibc can improve footprint, but do not stop at "it compiles".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;picolibc_migration_check&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;flash_size_before_after&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;ram_usage_before_after&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;heap_minimum_measured&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;task_stack_margin_checked&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;compatibility&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;third_party_libraries_reviewed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;stdio_usage_checked&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;printf_formatting_tested&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;cplusplus_components_tested&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;runtime&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;long_running_test_completed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;watchdog_events_checked&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;logging_behavior_verified&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  PSA Crypto and TLS
&lt;/h2&gt;

&lt;p&gt;If your product uses HTTPS, MQTT over TLS, client certificates, secure storage or legacy Mbed TLS APIs, test real connections after the migration.&lt;/p&gt;

&lt;p&gt;The subtle failures are often runtime failures: TLS handshakes that fail, certificates loaded differently, secure storage assumptions that no longer hold, or larger crypto footprint that pushes flash/RAM closer to limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  OTA and bootloader
&lt;/h2&gt;

&lt;p&gt;For field-deployed devices, OTA is the most sensitive part of the migration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ota_readiness&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;partition_table&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;ota_slots_available&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;ota_data_partition_present&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;factory_partition_strategy_defined&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;firmware_validation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image_signature_enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;rollback_enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;version_check_enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;bootloader&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;production_bootloader_version_recorded&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;compatibility_tested&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;recovery_strategy_defined&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;rollout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;staged_update_supported&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;device_health_reported&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;remote_recovery_plan_available&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Migration plan
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Audit the current firmware: IDF version, drivers, custom components, partitions, OTA and security.&lt;/li&gt;
&lt;li&gt;Make the project build on ESP-IDF 6.0 and remove or isolate legacy APIs.&lt;/li&gt;
&lt;li&gt;Compare flash, RAM, heap minimum and task stack margins before/after.&lt;/li&gt;
&lt;li&gt;Test Wi-Fi, provisioning, TLS, MQTT/HTTPS, Web UI, watchdog behavior and long-running stability.&lt;/li&gt;
&lt;li&gt;Release through staged rollout, with rollback and telemetry.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;ESP-IDF 6.0 is a useful technical step forward, but a production firmware migration should be measurable, reversible and repeatable.&lt;/p&gt;

&lt;p&gt;The best outcome is not simply "the project builds". The best outcome is knowing that OTA, TLS, memory, drivers and release workflow still behave correctly after the upgrade.&lt;/p&gt;




&lt;p&gt;Canonical source: &lt;a href="https://www.siliconlogix.it/en/article/esp-idf-60-migration-how-to-upgrade-esp32-firmware-without-production-regressions" rel="noopener noreferrer"&gt;ESP-IDF 6.0 migration: how to upgrade ESP32 firmware without production regressions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you build embedded, IoT or firmware products and want a second pair of eyes on migration risk, OTA strategy or firmware architecture, Silicon LogiX can help turn prototypes into maintainable products.&lt;/p&gt;

</description>
      <category>esp32</category>
      <category>embedded</category>
      <category>iot</category>
      <category>firmware</category>
    </item>
    <item>
      <title>SLX AR Lens - WebAR for products, industry and culture: case study</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Mon, 11 May 2026 13:38:21 +0000</pubDate>
      <link>https://dev.to/pezzullo/slx-ar-lens-webar-for-products-industry-and-culture-case-study-1ep4</link>
      <guid>https://dev.to/pezzullo/slx-ar-lens-webar-for-products-industry-and-culture-case-study-1ep4</guid>
      <description>&lt;p&gt;SLX AR Lens brings marker-based augmented reality to the browser for products, industry, culture and retail experiences.&lt;/p&gt;

&lt;p&gt;This DEV.to version is a short engineering note extracted from the case study, with the complete English page linked at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack at a glance
&lt;/h2&gt;

&lt;p&gt;WebAR, WebXR, Three.js, JavaScript, 3D visualization, Marker tracking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AR adoption is often blocked by native apps, proprietary SDKs and setup friction. WebAR lowers that barrier for product, retail, industrial and cultural use cases.&lt;/li&gt;
&lt;li&gt;A marker-based browser experience can be enough when the goal is to reveal 3D content quickly from a physical object or printed surface.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Keep the 3D assets optimized for mobile GPUs: geometry size, texture weight and load order have a direct impact on the experience.&lt;/li&gt;
&lt;li&gt;Use the browser as the runtime, but still design the experience like a constrained real-time system.&lt;/li&gt;
&lt;li&gt;Separate tracking, scene setup and content configuration so different use cases can share the same technical base.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The hardest part of WebAR is not showing a model once. It is making tracking, loading and interaction reliable on ordinary smartphones.&lt;/li&gt;
&lt;li&gt;A good WebAR flow starts before the camera opens: marker design, fallback content and user guidance all matter.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Read the full case study
&lt;/h2&gt;

&lt;p&gt;The English page on the Silicon LogiX website contains the full context, visuals and project details: &lt;a href="https://www.siliconlogix.it/en/solution/slx-ar-lens-webar-for-products-industry-and-culture" rel="noopener noreferrer"&gt;SLX AR Lens - WebAR for products, industry and culture&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I keep the DEV.to version intentionally shorter so the canonical page remains the source for the complete case study.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>javascript</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Interactive cultural routes with QR code and NFC: case study</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Mon, 11 May 2026 13:38:19 +0000</pubDate>
      <link>https://dev.to/pezzullo/interactive-cultural-routes-with-qr-code-and-nfc-case-study-l3m</link>
      <guid>https://dev.to/pezzullo/interactive-cultural-routes-with-qr-code-and-nfc-case-study-l3m</guid>
      <description>&lt;p&gt;Digital cultural routes for monuments, villages and heritage sites with QR codes, NFC, audio guides, maps and smartphone-ready multimedia content.&lt;/p&gt;

&lt;p&gt;This DEV.to version is a short engineering note extracted from the case study, with the complete English page linked at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack at a glance
&lt;/h2&gt;

&lt;p&gt;QR Code, NFC, Mobile Web, Audio Guides, Interactive Maps, CMS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cultural routes need a very low-friction user experience. Visitors should not install an app just to access a monument, village or exhibition stop.&lt;/li&gt;
&lt;li&gt;QR and NFC are simple entry points, but the quality of the experience depends on content structure, accessibility and maintainability.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use mobile web pages as the delivery layer so content can be updated centrally and opened from any smartphone.&lt;/li&gt;
&lt;li&gt;Separate place metadata, media, audio guides and route navigation so cultural teams can evolve the content without touching code.&lt;/li&gt;
&lt;li&gt;Design for weak connectivity, readable layouts and fast loading before adding richer media.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The technology should disappear behind the visit. QR/NFC are only useful if the first page loads quickly and gives immediate value.&lt;/li&gt;
&lt;li&gt;A small CMS and a clear information model often matter more than flashy frontend effects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Read the full case study
&lt;/h2&gt;

&lt;p&gt;The English page on the Silicon LogiX website contains the full context, visuals and project details: &lt;a href="https://www.siliconlogix.it/en/solution/interactive-cultural-routes-with-qr-and-nfc" rel="noopener noreferrer"&gt;Interactive cultural routes with QR code and NFC&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I keep the DEV.to version intentionally shorter so the canonical page remains the source for the complete case study.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>mobile</category>
      <category>showdev</category>
      <category>ux</category>
    </item>
    <item>
      <title>Bare-metal audio ML classifier on microcontrollers: case study</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Mon, 11 May 2026 13:38:17 +0000</pubDate>
      <link>https://dev.to/pezzullo/bare-metal-audio-ml-classifier-on-microcontrollers-case-study-17m7</link>
      <guid>https://dev.to/pezzullo/bare-metal-audio-ml-classifier-on-microcontrollers-case-study-17m7</guid>
      <description>&lt;p&gt;A TinyML audio-classification workflow that trains in Python, exports to C and runs directly inside bare-metal firmware.&lt;/p&gt;

&lt;p&gt;This DEV.to version is a short engineering note extracted from the case study, with the complete English page linked at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack at a glance
&lt;/h2&gt;

&lt;p&gt;Python, C99, scikit-learn, librosa, Random Forest, MFCC, ESP32, STM32.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Audio ML on microcontrollers is interesting when inference must happen locally, with low latency and no cloud dependency.&lt;/li&gt;
&lt;li&gt;For small classifiers, exporting a trained model into deterministic C can be more practical than embedding a large runtime.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Keep the training workflow and firmware integration connected: dataset, feature extraction, model export and C inference should be repeatable.&lt;/li&gt;
&lt;li&gt;Use a compact feature pipeline such as MFCCs only if the memory and timing budget still works on the target MCU.&lt;/li&gt;
&lt;li&gt;Avoid dynamic allocation in the inference path when the firmware has to remain predictable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TinyML is a system problem. Dataset quality, feature extraction and firmware constraints matter as much as model accuracy.&lt;/li&gt;
&lt;li&gt;Readable generated C is valuable because it can be reviewed, tested and rebuilt when the dataset changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Read the full case study
&lt;/h2&gt;

&lt;p&gt;The English page on the Silicon LogiX website contains the full context, visuals and project details: &lt;a href="https://www.siliconlogix.it/en/solution/bare-metal-audio-ml-classifier-on-microcontrollers" rel="noopener noreferrer"&gt;Bare-metal audio ML classifier on microcontrollers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I keep the DEV.to version intentionally shorter so the canonical page remains the source for the complete case study.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>iot</category>
      <category>machinelearning</category>
      <category>python</category>
    </item>
    <item>
      <title>Custom ESP32 embedded solution for IoT devices: case study</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Mon, 11 May 2026 13:38:16 +0000</pubDate>
      <link>https://dev.to/pezzullo/custom-esp32-embedded-solution-for-iot-devices-case-study-2ckd</link>
      <guid>https://dev.to/pezzullo/custom-esp32-embedded-solution-for-iot-devices-case-study-2ckd</guid>
      <description>&lt;p&gt;A custom ESP32 embedded solution with modular firmware, security features and Wi-Fi/BLE connectivity for connected products.&lt;/p&gt;

&lt;p&gt;This DEV.to version is a short engineering note extracted from the case study, with the complete English page linked at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack at a glance
&lt;/h2&gt;

&lt;p&gt;ESP32, ESP-IDF, C, FreeRTOS, Wi-Fi, Bluetooth Low Energy, NVS, Secure Boot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Many ESP32 prototypes work in the lab but become fragile when they need provisioning, updates, configuration storage and diagnostics.&lt;/li&gt;
&lt;li&gt;A product-oriented firmware base makes the device easier to maintain across hardware variants and field updates.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Split boot, application logic, configuration and communication concerns instead of building one monolithic firmware loop.&lt;/li&gt;
&lt;li&gt;Use ESP-IDF components deliberately: NVS for persistent configuration, FreeRTOS tasks for concurrency and clear interfaces for Wi-Fi/BLE behavior.&lt;/li&gt;
&lt;li&gt;Design provisioning, fallback and update strategy before the device reaches production testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Wi-Fi reconnects, partial configuration and failed updates are normal runtime states. They should be observable and recoverable.&lt;/li&gt;
&lt;li&gt;The best embedded architecture is boring in production: predictable memory use, clear ownership and minimal hidden state.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Read the full case study
&lt;/h2&gt;

&lt;p&gt;The English page on the Silicon LogiX website contains the full context, visuals and project details: &lt;a href="https://www.siliconlogix.it/en/solution/custom-esp32-embedded-solution-for-iot-products" rel="noopener noreferrer"&gt;Custom ESP32 embedded solution for IoT devices&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I keep the DEV.to version intentionally shorter so the canonical page remains the source for the complete case study.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>iot</category>
      <category>networking</category>
      <category>security</category>
    </item>
    <item>
      <title>SLX Office - self-hosted management platform: case study</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Mon, 11 May 2026 13:38:14 +0000</pubDate>
      <link>https://dev.to/pezzullo/slx-office-self-hosted-management-platform-case-study-6of</link>
      <guid>https://dev.to/pezzullo/slx-office-self-hosted-management-platform-case-study-6of</guid>
      <description>&lt;p&gt;A self-hosted internal management platform designed as a technical base for custom business applications and process automation.&lt;/p&gt;

&lt;p&gt;This DEV.to version is a short engineering note extracted from the case study, with the complete English page linked at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack at a glance
&lt;/h2&gt;

&lt;p&gt;Software, Web App, Node.js, React, Docker, PostgreSQL, Self-hosted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Internal tools often start as spreadsheets, small scripts or isolated dashboards. That works for a while, then the data model becomes the real bottleneck.&lt;/li&gt;
&lt;li&gt;A self-hosted management platform is useful when the organization needs control over data, workflows, backups and future customization.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Keep the domain model explicit before building screens. The UI should reflect operational workflows, not just database tables.&lt;/li&gt;
&lt;li&gt;Separate the application layer, persistence layer and deployment layer so the platform can evolve without rewriting everything.&lt;/li&gt;
&lt;li&gt;Treat Docker, PostgreSQL, backups and migrations as part of the product, not as deployment details added at the end.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The hard part of internal software is not CRUD. It is keeping process, permissions and data ownership understandable over time.&lt;/li&gt;
&lt;li&gt;Self-hosted does not mean isolated. The platform should still expose clean integration points for automation and reporting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Read the full case study
&lt;/h2&gt;

&lt;p&gt;The English page on the Silicon LogiX website contains the full context, visuals and project details: &lt;a href="https://www.siliconlogix.it/en/solution/self-hosted-office-management-platform" rel="noopener noreferrer"&gt;SLX Office - self-hosted management platform&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I keep the DEV.to version intentionally shorter so the canonical page remains the source for the complete case study.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>automation</category>
      <category>softwareengineering</category>
      <category>webdev</category>
    </item>
    <item>
      <title>U.S. Cyber Trust Mark: what IoT firmware teams should prepare</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Sat, 09 May 2026 10:47:26 +0000</pubDate>
      <link>https://dev.to/pezzullo/us-cyber-trust-mark-what-iot-firmware-teams-should-prepare-3k28</link>
      <guid>https://dev.to/pezzullo/us-cyber-trust-mark-what-iot-firmware-teams-should-prepare-3k28</guid>
      <description>&lt;p&gt;IoT security labels are turning cybersecurity from an internal engineering topic into a visible product requirement.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is an English DEV.to draft based on a Silicon LogiX technical article. The canonical source is linked at the end.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why it matters
&lt;/h2&gt;

&lt;p&gt;The U.S. Cyber Trust Mark is voluntary, but it can influence buyers, retailers and procurement teams.&lt;/p&gt;

&lt;p&gt;For firmware teams, the important part is not the label itself. It is the discipline required to earn and maintain trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Products need updateable firmware, protected credentials, secure configuration and documented support periods.&lt;/li&gt;
&lt;li&gt;A public registry or QR-linked label makes lifecycle information easier to compare.&lt;/li&gt;
&lt;li&gt;The requirements overlap with broader global trends such as the EU Cyber Resilience Act.&lt;/li&gt;
&lt;li&gt;Security evidence becomes part of the product package, not only an internal checklist.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Document supported lifetime, update policy and vulnerability disclosure process.&lt;/li&gt;
&lt;li&gt;[ ] Implement signed firmware updates and rollback protection.&lt;/li&gt;
&lt;li&gt;[ ] Remove default passwords and protect commissioning flows.&lt;/li&gt;
&lt;li&gt;[ ] Track software components and known vulnerabilities.&lt;/li&gt;
&lt;li&gt;[ ] Prepare test evidence that non-security stakeholders can understand.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Treating the label as a marketing task after development is finished.&lt;/li&gt;
&lt;li&gt;Shipping products that cannot be patched in the field.&lt;/li&gt;
&lt;li&gt;Documenting security claims that the firmware architecture cannot support.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;Security labels raise the bar because they make product lifecycle promises visible. Firmware architecture has to be ready before certification conversations begin.&lt;/p&gt;




&lt;p&gt;Canonical source: &lt;a href="https://www.siliconlogix.it/en/article/us-cyber-trust-mark-what-iot-firmware-teams-should-prepare" rel="noopener noreferrer"&gt;U.S. Cyber Trust Mark: what IoT firmware teams should prepare&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you build embedded, IoT or firmware products and want a second pair of eyes on architecture, update strategy or security, Silicon LogiX can help turn prototypes into maintainable systems.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>iot</category>
      <category>news</category>
      <category>security</category>
    </item>
    <item>
      <title>QUIC in embedded systems: when it makes sense over TCP and UDP</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Sat, 09 May 2026 10:47:25 +0000</pubDate>
      <link>https://dev.to/pezzullo/quic-in-embedded-systems-when-it-makes-sense-over-tcp-and-udp-4eba</link>
      <guid>https://dev.to/pezzullo/quic-in-embedded-systems-when-it-makes-sense-over-tcp-and-udp-4eba</guid>
      <description>&lt;p&gt;QUIC is often described as a replacement for TCP or UDP. For embedded products, the useful question is narrower: when does it improve the system?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is an English DEV.to draft based on a Silicon LogiX technical article. The canonical source is linked at the end.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why it matters
&lt;/h2&gt;

&lt;p&gt;QUIC runs over UDP but provides secure, reliable streams with faster connection setup and better multiplexing behavior.&lt;/p&gt;

&lt;p&gt;It can be valuable for devices that interact with modern HTTP/3 services, cloud APIs or dashboards with many parallel requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;QUIC integrates TLS 1.3 into the transport model instead of layering TLS over TCP.&lt;/li&gt;
&lt;li&gt;Stream multiplexing avoids some head-of-line blocking problems seen with TCP-based HTTP/2.&lt;/li&gt;
&lt;li&gt;Connection migration can help mobile or changing-network scenarios, though not every embedded device needs it.&lt;/li&gt;
&lt;li&gt;The cost is stack complexity, memory usage, diagnostics and firewall/NAT behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Use QUIC when connection setup latency or multiplexing changes user-visible behavior.&lt;/li&gt;
&lt;li&gt;[ ] Stay with TCP when simplicity, tooling and compatibility are more important.&lt;/li&gt;
&lt;li&gt;[ ] Use raw UDP only when the application can own reliability and security correctly.&lt;/li&gt;
&lt;li&gt;[ ] Measure RAM, CPU and handshake behavior on target hardware.&lt;/li&gt;
&lt;li&gt;[ ] Plan how field technicians will diagnose QUIC failures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Choosing QUIC because it is newer, not because it solves a product problem.&lt;/li&gt;
&lt;li&gt;Ignoring network environments that block or degrade UDP.&lt;/li&gt;
&lt;li&gt;Underestimating observability and debugging cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;QUIC is a useful tool for specific embedded networking problems, not a universal upgrade over TCP and UDP.&lt;/p&gt;




&lt;p&gt;Canonical source: &lt;a href="https://www.siliconlogix.it/en/article/quic-in-embedded-systems-when-it-makes-sense-over-tcp-and-udp" rel="noopener noreferrer"&gt;QUIC in embedded systems: when it makes sense over TCP and UDP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you build embedded, IoT or firmware products and want a second pair of eyes on architecture, update strategy or security, Silicon LogiX can help turn prototypes into maintainable systems.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>iot</category>
      <category>networking</category>
      <category>performance</category>
    </item>
    <item>
      <title>Secure OTA firmware updates with rollback for embedded devices</title>
      <dc:creator>Marco</dc:creator>
      <pubDate>Sat, 09 May 2026 10:47:23 +0000</pubDate>
      <link>https://dev.to/pezzullo/secure-ota-firmware-updates-with-rollback-for-embedded-devices-2pdk</link>
      <guid>https://dev.to/pezzullo/secure-ota-firmware-updates-with-rollback-for-embedded-devices-2pdk</guid>
      <description>&lt;p&gt;OTA is not file transfer. It is a critical transaction that decides whether a device remains recoverable after a failed update.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is an English DEV.to draft based on a Silicon LogiX technical article. The canonical source is linked at the end.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why it matters
&lt;/h2&gt;

&lt;p&gt;Connected products need updates for security, bug fixes and lifecycle maintenance.&lt;/p&gt;

&lt;p&gt;A fragile OTA implementation can turn a software bug into a fleet-wide hardware service problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A robust OTA flow covers transport, verification, atomic write, first boot validation and rollback.&lt;/li&gt;
&lt;li&gt;Dual-bank or A/B layouts reduce the risk of bricking during power loss.&lt;/li&gt;
&lt;li&gt;Cryptographic signatures should be verified before activating the new image.&lt;/li&gt;
&lt;li&gt;Staged rollout and health reporting help detect failures before the whole fleet is affected.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Design partitioning before the firmware grows too large.&lt;/li&gt;
&lt;li&gt;[ ] Reject unsigned, corrupted, downgraded or incompatible images.&lt;/li&gt;
&lt;li&gt;[ ] Keep a boot-confirmation mechanism independent from the application happy path.&lt;/li&gt;
&lt;li&gt;[ ] Test interrupted downloads, interrupted flashes and bad images.&lt;/li&gt;
&lt;li&gt;[ ] Log update state transitions for field diagnostics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Adding OTA late when memory layout is already fixed.&lt;/li&gt;
&lt;li&gt;Verifying checksums but not authenticity.&lt;/li&gt;
&lt;li&gt;Considering the update successful before the new firmware proves it can run.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;Secure OTA is an architecture, not a feature. The bootloader, firmware, backend and support process all participate.&lt;/p&gt;




&lt;p&gt;Canonical source: &lt;a href="https://www.siliconlogix.it/en/article/secure-ota-firmware-updates-with-rollback-for-embedded-devices" rel="noopener noreferrer"&gt;Secure OTA firmware updates with rollback for embedded devices&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you build embedded, IoT or firmware products and want a second pair of eyes on architecture, update strategy or security, Silicon LogiX can help turn prototypes into maintainable systems.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>iot</category>
      <category>security</category>
    </item>
  </channel>
</rss>
