<?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: Lily Li</title>
    <description>The latest articles on DEV Community by Lily Li (@lily_li_fc6c372b8805f9017).</description>
    <link>https://dev.to/lily_li_fc6c372b8805f9017</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4026919%2F27b46125-9027-4403-9477-bed86512dfcc.png</url>
      <title>DEV Community: Lily Li</title>
      <link>https://dev.to/lily_li_fc6c372b8805f9017</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lily_li_fc6c372b8805f9017"/>
    <language>en</language>
    <item>
      <title>Why Does My Qualcomm Wi-Fi Throughput Fall Below the Datasheet?</title>
      <dc:creator>Lily Li</dc:creator>
      <pubDate>Wed, 09 Sep 2026 02:33:54 +0000</pubDate>
      <link>https://dev.to/lily_li_fc6c372b8805f9017/why-does-my-qualcomm-wi-fi-throughput-fall-below-the-datasheet-11d7</link>
      <guid>https://dev.to/lily_li_fc6c372b8805f9017/why-does-my-qualcomm-wi-fi-throughput-fall-below-the-datasheet-11d7</guid>
      <description>&lt;h1&gt;
  
  
  Why Does My Qualcomm Wi-Fi Throughput Fall Below the Datasheet?
&lt;/h1&gt;

&lt;p&gt;You bought a Qualcomm Wi-Fi chipset or module.&lt;/p&gt;

&lt;p&gt;The datasheet says:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Up to 4.8 Gbps.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You run your first throughput test.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.2 Gbps.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You optimize the configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.8 Gbps.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You change the channel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.4 Gbps.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But you still can't get anywhere close to the number in the datasheet.&lt;/p&gt;

&lt;p&gt;So, is the Wi-Fi chip underperforming?&lt;/p&gt;

&lt;p&gt;Usually, &lt;strong&gt;no.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most important thing to understand is that the throughput number in a Wi-Fi datasheet is typically a &lt;strong&gt;theoretical PHY rate under specific conditions&lt;/strong&gt;. Real-world application throughput depends on the entire wireless system—including channel bandwidth, MCS, spatial streams, RF design, antenna configuration, CPU/NSS performance, Ethernet interfaces, firmware, and the test environment.&lt;/p&gt;

&lt;p&gt;Let's break down where the missing throughput goes.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. PHY Rate Is Not the Same as TCP Throughput
&lt;/h2&gt;

&lt;p&gt;This is probably the most common misunderstanding.&lt;/p&gt;

&lt;p&gt;Suppose a Wi-Fi 6 chipset advertises a PHY rate of approximately &lt;strong&gt;4.8 Gbps&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That does not mean your laptop or router will transfer data at 4.8 Gbps over TCP.&lt;/p&gt;

&lt;p&gt;The PHY rate represents the theoretical physical-layer transmission rate.&lt;/p&gt;

&lt;p&gt;Actual throughput has to account for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MAC overhead&lt;/li&gt;
&lt;li&gt;TCP/UDP overhead&lt;/li&gt;
&lt;li&gt;Encryption&lt;/li&gt;
&lt;li&gt;Management frames&lt;/li&gt;
&lt;li&gt;ACK traffic&lt;/li&gt;
&lt;li&gt;Inter-frame spacing&lt;/li&gt;
&lt;li&gt;Retransmissions&lt;/li&gt;
&lt;li&gt;Protocol inefficiency&lt;/li&gt;
&lt;li&gt;Operating-system processing&lt;/li&gt;
&lt;li&gt;CPU limitations&lt;/li&gt;
&lt;li&gt;Ethernet bottlenecks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A simplified way to think about it is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PHY Rate → MAC Throughput → IP Throughput → Application Throughput&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each layer introduces additional overhead.&lt;/p&gt;

&lt;p&gt;Therefore, when someone says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"My Qualcomm Wi-Fi chip is rated at 4.8 Gbps, but I only get 2.5 Gbps."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That does not automatically indicate a hardware problem.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. Check the Channel Width First
&lt;/h1&gt;

&lt;p&gt;One of the biggest factors affecting Wi-Fi throughput is channel bandwidth.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;20 MHz&lt;/li&gt;
&lt;li&gt;40 MHz&lt;/li&gt;
&lt;li&gt;80 MHz&lt;/li&gt;
&lt;li&gt;160 MHz&lt;/li&gt;
&lt;li&gt;320 MHz for Wi-Fi 7&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A chipset may support 160 MHz, but your actual test may be running at 80 MHz.&lt;/p&gt;

&lt;p&gt;If you are expecting a 160 MHz result while the client has negotiated an 80 MHz channel, you are effectively testing a different configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to check
&lt;/h3&gt;

&lt;p&gt;On both AP and client, verify:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Channel width&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Center frequency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operating channel&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Number of spatial streams&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't rely only on the configuration file.&lt;/p&gt;

&lt;p&gt;Check what the radio actually negotiated.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. MCS Matters More Than You Think
&lt;/h1&gt;

&lt;p&gt;Another common mistake is looking only at the maximum supported data rate.&lt;/p&gt;

&lt;p&gt;For example, your hardware may support a very high MCS.&lt;/p&gt;

&lt;p&gt;But the actual link could be operating at a much lower MCS because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Signal strength&lt;/li&gt;
&lt;li&gt;Noise&lt;/li&gt;
&lt;li&gt;Interference&lt;/li&gt;
&lt;li&gt;Channel conditions&lt;/li&gt;
&lt;li&gt;Antenna performance&lt;/li&gt;
&lt;li&gt;Client capability&lt;/li&gt;
&lt;li&gt;Regulatory restrictions&lt;/li&gt;
&lt;li&gt;Channel width&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Wi-Fi connection is constantly adapting.&lt;/p&gt;

&lt;p&gt;If the RF environment becomes worse, the system may reduce MCS to maintain link reliability.&lt;/p&gt;

&lt;p&gt;So you can have a powerful Qualcomm chipset and still see disappointing throughput.&lt;/p&gt;

&lt;h3&gt;
  
  
  A better test question is:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What MCS and NSS are actually being used during the test?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the maximum MCS supported by the chipset?&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Spatial Streams: 4×4 Doesn't Mean Your Client Is 4×4
&lt;/h1&gt;

&lt;p&gt;This is another major source of confusion.&lt;/p&gt;

&lt;p&gt;Your Qualcomm platform may support:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4×4 MIMO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But the client may only support:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2×2 MIMO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In that case, you cannot expect the client to use all four spatial streams.&lt;/p&gt;

&lt;p&gt;The real link is limited by the capabilities of the weakest side.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AP: 4×4&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client: 2×2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The connection is effectively constrained by the client's spatial-stream capability.&lt;/p&gt;

&lt;p&gt;This is why throughput testing must always consider &lt;strong&gt;both ends of the link&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Your Ethernet Interface May Be the Bottleneck
&lt;/h1&gt;

&lt;p&gt;This is especially important for Wi-Fi router boards and industrial APs.&lt;/p&gt;

&lt;p&gt;Imagine your Wi-Fi link can theoretically deliver more than 2.5 Gbps.&lt;/p&gt;

&lt;p&gt;But the test traffic goes through:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wi-Fi → CPU → Ethernet → 1GbE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You are going to hit the Ethernet ceiling before you reach the wireless limit.&lt;/p&gt;

&lt;p&gt;Even a 2.5G Ethernet interface can become the bottleneck if the wireless side is faster.&lt;/p&gt;

&lt;p&gt;For high-throughput Wi-Fi testing, check the entire data path:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Wi-Fi Client
     ↓
Wireless PHY
     ↓
MAC
     ↓
Qualcomm SoC
     ↓
NSS / Network Processing
     ↓
Ethernet
     ↓
Traffic Generator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The slowest part of this chain determines your practical throughput.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. CPU and NSS Can Become the Real Bottleneck
&lt;/h1&gt;

&lt;p&gt;This is particularly relevant to Qualcomm IPQ platforms.&lt;/p&gt;

&lt;p&gt;Modern Qualcomm networking platforms can use hardware acceleration and network subsystems to offload packet processing.&lt;/p&gt;

&lt;p&gt;But if your traffic path is not properly offloaded, the CPU may have to process a significant amount of traffic.&lt;/p&gt;

&lt;p&gt;You may then see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High CPU utilization&lt;/li&gt;
&lt;li&gt;Lower throughput&lt;/li&gt;
&lt;li&gt;Higher latency&lt;/li&gt;
&lt;li&gt;Increased packet loss&lt;/li&gt;
&lt;li&gt;Performance degradation with multiple clients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, you might observe:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CPU utilization: 95–100%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;while the Wi-Fi radio itself is capable of much higher performance.&lt;/p&gt;

&lt;p&gt;In that situation, increasing RF power or changing antennas may not solve the problem.&lt;/p&gt;

&lt;p&gt;The real issue is the &lt;strong&gt;data-processing path&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. TCP and UDP Produce Different Results
&lt;/h1&gt;

&lt;p&gt;Don't compare TCP and UDP throughput as if they were equivalent.&lt;/p&gt;

&lt;p&gt;TCP performance depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Window size&lt;/li&gt;
&lt;li&gt;Congestion control&lt;/li&gt;
&lt;li&gt;RTT&lt;/li&gt;
&lt;li&gt;Packet loss&lt;/li&gt;
&lt;li&gt;CPU performance&lt;/li&gt;
&lt;li&gt;Network stack configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;UDP behaves differently because it does not have TCP's congestion-control mechanism.&lt;/p&gt;

&lt;p&gt;This is why a proper Wi-Fi performance test should clearly state:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TCP or UDP?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And ideally include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;iperf3 configuration&lt;/li&gt;
&lt;li&gt;Packet size&lt;/li&gt;
&lt;li&gt;Number of streams&lt;/li&gt;
&lt;li&gt;Test duration&lt;/li&gt;
&lt;li&gt;Direction&lt;/li&gt;
&lt;li&gt;Channel width&lt;/li&gt;
&lt;li&gt;MCS&lt;/li&gt;
&lt;li&gt;NSS&lt;/li&gt;
&lt;li&gt;RSSI&lt;/li&gt;
&lt;li&gt;PHY rate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without these details, a throughput number is difficult to reproduce.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. The RF Environment Can Destroy Your Numbers
&lt;/h1&gt;

&lt;p&gt;You can have the best Qualcomm chipset in the world and still get poor throughput in a bad RF environment.&lt;/p&gt;

&lt;p&gt;Common problems include:&lt;/p&gt;

&lt;h3&gt;
  
  
  Interference
&lt;/h3&gt;

&lt;p&gt;Other APs may be using the same or adjacent channels.&lt;/p&gt;

&lt;h3&gt;
  
  
  Noise
&lt;/h3&gt;

&lt;p&gt;Industrial environments can introduce significant RF noise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multipath
&lt;/h3&gt;

&lt;p&gt;Reflections from walls, metal structures, machinery, and vehicles can affect signal quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Distance
&lt;/h3&gt;

&lt;p&gt;As distance increases, the link may move to a lower MCS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Antenna placement
&lt;/h3&gt;

&lt;p&gt;A theoretically excellent antenna can perform poorly if the actual enclosure or PCB layout creates problems.&lt;/p&gt;

&lt;p&gt;This is why indoor laboratory performance and field performance can be dramatically different.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. Antenna Design Is Part of the Wi-Fi System
&lt;/h1&gt;

&lt;p&gt;A Qualcomm chipset does not operate in isolation.&lt;/p&gt;

&lt;p&gt;The RF chain includes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chipset → RF Front End → Matching Network → PCB → Connector → Cable → Antenna&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Problems anywhere in this chain can affect performance.&lt;/p&gt;

&lt;p&gt;For an industrial Wi-Fi product, engineers should consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Antenna gain&lt;/li&gt;
&lt;li&gt;Antenna efficiency&lt;/li&gt;
&lt;li&gt;Polarization&lt;/li&gt;
&lt;li&gt;Isolation&lt;/li&gt;
&lt;li&gt;VSWR&lt;/li&gt;
&lt;li&gt;Cable loss&lt;/li&gt;
&lt;li&gt;Connector loss&lt;/li&gt;
&lt;li&gt;PCB layout&lt;/li&gt;
&lt;li&gt;Grounding&lt;/li&gt;
&lt;li&gt;Antenna placement&lt;/li&gt;
&lt;li&gt;Enclosure materials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For multi-stream MIMO systems, antenna isolation becomes particularly important.&lt;/p&gt;

&lt;p&gt;Simply attaching a high-gain antenna does not guarantee higher throughput.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. Thermal Throttling Can Appear During Long Tests
&lt;/h1&gt;

&lt;p&gt;A short benchmark may look excellent.&lt;/p&gt;

&lt;p&gt;A 30-minute or 1-hour test may tell a different story.&lt;/p&gt;

&lt;p&gt;High-throughput Wi-Fi generates significant processing and RF activity.&lt;/p&gt;

&lt;p&gt;If the thermal design is insufficient, you may see:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Temperature ↑ → Performance ↓&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Therefore, for industrial Wi-Fi products, performance testing should include thermal monitoring.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 seconds    → 2.8 Gbps
1 minute     → 2.8 Gbps
5 minutes    → 2.7 Gbps
15 minutes   → 2.5 Gbps
30 minutes   → 2.3 Gbps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If throughput gradually decreases, thermal behavior should be investigated.&lt;/p&gt;




&lt;h1&gt;
  
  
  11. Firmware and Driver Configuration Matters
&lt;/h1&gt;

&lt;p&gt;The same Qualcomm chipset can produce different results depending on the software stack.&lt;/p&gt;

&lt;p&gt;Important factors include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firmware version&lt;/li&gt;
&lt;li&gt;Driver version&lt;/li&gt;
&lt;li&gt;QSDK version&lt;/li&gt;
&lt;li&gt;Kernel configuration&lt;/li&gt;
&lt;li&gt;NSS configuration&lt;/li&gt;
&lt;li&gt;CPU frequency&lt;/li&gt;
&lt;li&gt;Power management&lt;/li&gt;
&lt;li&gt;Regulatory settings&lt;/li&gt;
&lt;li&gt;Aggregation configuration&lt;/li&gt;
&lt;li&gt;Network acceleration&lt;/li&gt;
&lt;li&gt;Interrupt configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why comparing two products solely by their chipset is often misleading.&lt;/p&gt;

&lt;p&gt;Two products may both use the same Qualcomm SoC but have very different real-world performance.&lt;/p&gt;

&lt;p&gt;The difference may be in:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PCB + RF + firmware + thermal design + networking architecture.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  12. Don't Chase the Datasheet Number—Build a Reproducible Test
&lt;/h1&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Why can't I reach the datasheet speed?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A better engineering question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Under what exact conditions can I reproduce the maximum stable throughput?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A good test report should include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Qualcomm Platform&lt;/td&gt;
&lt;td&gt;IPQ9574&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wi-Fi Generation&lt;/td&gt;
&lt;td&gt;Wi-Fi 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Channel Width&lt;/td&gt;
&lt;td&gt;320 MHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Band&lt;/td&gt;
&lt;td&gt;6 GHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NSS&lt;/td&gt;
&lt;td&gt;4×4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCS&lt;/td&gt;
&lt;td&gt;Actual negotiated MCS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSSI&lt;/td&gt;
&lt;td&gt;Actual measured value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client&lt;/td&gt;
&lt;td&gt;Specific Wi-Fi 7 client&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ethernet&lt;/td&gt;
&lt;td&gt;10GbE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Protocol&lt;/td&gt;
&lt;td&gt;TCP / UDP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iperf3 Streams&lt;/td&gt;
&lt;td&gt;Specified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Distance&lt;/td&gt;
&lt;td&gt;Specified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Environment&lt;/td&gt;
&lt;td&gt;Controlled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Temperature&lt;/td&gt;
&lt;td&gt;Recorded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firmware&lt;/td&gt;
&lt;td&gt;Version specified&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now the result becomes reproducible.&lt;/p&gt;

&lt;p&gt;And reproducibility is much more valuable than a single impressive number.&lt;/p&gt;




&lt;h1&gt;
  
  
  13. A Practical Qualcomm Wi-Fi Troubleshooting Checklist
&lt;/h1&gt;

&lt;p&gt;When throughput is lower than expected, check the following in order:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — Verify PHY Rate
&lt;/h3&gt;

&lt;p&gt;Check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MCS&lt;/li&gt;
&lt;li&gt;NSS&lt;/li&gt;
&lt;li&gt;Channel width&lt;/li&gt;
&lt;li&gt;PHY rate&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2 — Check RF Conditions
&lt;/h3&gt;

&lt;p&gt;Measure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RSSI&lt;/li&gt;
&lt;li&gt;Noise floor&lt;/li&gt;
&lt;li&gt;Channel utilization&lt;/li&gt;
&lt;li&gt;Interference&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3 — Check Client Capability
&lt;/h3&gt;

&lt;p&gt;Confirm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wi-Fi generation&lt;/li&gt;
&lt;li&gt;2×2 / 4×4&lt;/li&gt;
&lt;li&gt;Supported channel width&lt;/li&gt;
&lt;li&gt;Supported MCS&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4 — Check the Network Path
&lt;/h3&gt;

&lt;p&gt;Verify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ethernet speed&lt;/li&gt;
&lt;li&gt;CPU utilization&lt;/li&gt;
&lt;li&gt;NSS acceleration&lt;/li&gt;
&lt;li&gt;Packet-processing path&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 5 — Check Software
&lt;/h3&gt;

&lt;p&gt;Record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Driver&lt;/li&gt;
&lt;li&gt;Firmware&lt;/li&gt;
&lt;li&gt;QSDK&lt;/li&gt;
&lt;li&gt;Kernel&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 6 — Check Thermal Behavior
&lt;/h3&gt;

&lt;p&gt;Monitor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SoC temperature&lt;/li&gt;
&lt;li&gt;RF temperature&lt;/li&gt;
&lt;li&gt;CPU frequency&lt;/li&gt;
&lt;li&gt;Throughput over time&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 7 — Repeat Under Controlled Conditions
&lt;/h3&gt;

&lt;p&gt;Only after controlling the variables should you compare different hardware platforms.&lt;/p&gt;




&lt;h1&gt;
  
  
  14. What This Means When Choosing a Qualcomm Wi-Fi Platform
&lt;/h1&gt;

&lt;p&gt;The most important lesson is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't choose a Wi-Fi platform based on the highest number on the datasheet.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead, evaluate the complete platform.&lt;/p&gt;

&lt;p&gt;A good industrial Wi-Fi platform should provide:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qualcomm chipset&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimized RF design&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reliable antenna architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Efficient networking acceleration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stable firmware&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thermal design&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Production-ready hardware&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering support&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is particularly important when developing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Industrial APs&lt;/li&gt;
&lt;li&gt;Wi-Fi routers&lt;/li&gt;
&lt;li&gt;Enterprise gateways&lt;/li&gt;
&lt;li&gt;Mesh networks&lt;/li&gt;
&lt;li&gt;Wireless backhaul&lt;/li&gt;
&lt;li&gt;Robotics networks&lt;/li&gt;
&lt;li&gt;Industrial cameras&lt;/li&gt;
&lt;li&gt;Edge AI gateways&lt;/li&gt;
&lt;li&gt;High-density Wi-Fi systems&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  15. This Is Where Wallys Engineering Support Matters
&lt;/h1&gt;

&lt;p&gt;For a Wi-Fi product developer, the difficult part is often not choosing a Qualcomm chipset.&lt;/p&gt;

&lt;p&gt;The difficult part is turning that chipset into a &lt;strong&gt;stable, high-performance product&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At Wallys, we work with Qualcomm-based platforms across Wi-Fi 6, Wi-Fi 6E and Wi-Fi 7, including platforms such as &lt;strong&gt;IPQ9574, QCN9274 and QCN9074&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Depending on the project, the engineering work can involve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hardware platform selection&lt;/li&gt;
&lt;li&gt;Reference design&lt;/li&gt;
&lt;li&gt;PCB design&lt;/li&gt;
&lt;li&gt;RF design&lt;/li&gt;
&lt;li&gt;Antenna integration&lt;/li&gt;
&lt;li&gt;Qualcomm software platform&lt;/li&gt;
&lt;li&gt;QSDK / driver integration&lt;/li&gt;
&lt;li&gt;NSS optimization&lt;/li&gt;
&lt;li&gt;Wi-Fi throughput optimization&lt;/li&gt;
&lt;li&gt;Thermal optimization&lt;/li&gt;
&lt;li&gt;Custom interfaces&lt;/li&gt;
&lt;li&gt;Enclosure integration&lt;/li&gt;
&lt;li&gt;EVT/DVT/PVT&lt;/li&gt;
&lt;li&gt;Mass production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't simply to put a Qualcomm chip on a PCB.&lt;/p&gt;

&lt;p&gt;The goal is to build a system that can deliver &lt;strong&gt;repeatable real-world performance&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Takeaway
&lt;/h1&gt;

&lt;p&gt;If your Qualcomm Wi-Fi throughput is lower than the datasheet number, don't immediately assume that the chipset is underperforming.&lt;/p&gt;

&lt;p&gt;Start with the complete system:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PHY → RF → Antenna → Client → CPU → NSS → Ethernet → Software → Thermal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A datasheet tells you what the silicon can support under defined conditions.&lt;/p&gt;

&lt;p&gt;Your engineering job is to determine how much of that capability your &lt;strong&gt;complete product&lt;/strong&gt; can actually turn into stable application throughput.&lt;/p&gt;

&lt;p&gt;And that's the difference between a &lt;strong&gt;Wi-Fi chipset specification&lt;/strong&gt; and a &lt;strong&gt;production-ready Wi-Fi platform&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The question isn't "Why can't I reach the datasheet speed?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Where is my throughput being lost—and how do I recover it?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>hardware</category>
      <category>networking</category>
      <category>performance</category>
    </item>
    <item>
      <title>Building a Multi-Camera AI Vision Pipeline on Jetson Orin Nano (and where it actually breaks)</title>
      <dc:creator>Lily Li</dc:creator>
      <pubDate>Fri, 28 Aug 2026 08:15:08 +0000</pubDate>
      <link>https://dev.to/lily_li_fc6c372b8805f9017/building-a-multi-camera-ai-vision-pipeline-on-jetson-orin-nano-and-where-it-actually-breaks-3143</link>
      <guid>https://dev.to/lily_li_fc6c372b8805f9017/building-a-multi-camera-ai-vision-pipeline-on-jetson-orin-nano-and-where-it-actually-breaks-3143</guid>
      <description>&lt;h1&gt;
  
  
  Building a Multi-Camera AI Vision Pipeline on Jetson Orin Nano (and where it actually breaks)
&lt;/h1&gt;

&lt;p&gt;If you've ever gone from "cool, my YOLO demo works on one USB webcam" to "okay now I need this running on 4 cameras in production," you already know the jump isn't trivial. It's not really an AI model problem — it's a systems problem.&lt;/p&gt;

&lt;p&gt;A warehouse robot wants front, rear, and side cameras. An inspection line wants several stations monitored at once. A mobile robot wants RGB + depth for perception and navigation. None of these are "just add more cameras" problems. They're pipeline design problems.&lt;/p&gt;

&lt;p&gt;This post walks through how I think about building a multi-camera AI vision pipeline on &lt;strong&gt;Jetson Orin Nano&lt;/strong&gt; — architecture, capture, inference, and where things actually fall over in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why multi-camera is a different beast than single-camera
&lt;/h2&gt;

&lt;p&gt;Single camera, the pipeline is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera → Video Capture → Preprocessing → AI Inference → Post-processing → Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scale that to 4-8 cameras and suddenly everything is fighting over the same resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Camera interfaces&lt;/li&gt;
&lt;li&gt;Memory bandwidth&lt;/li&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;GPU&lt;/li&gt;
&lt;li&gt;Video encoders/decoders&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Network bandwidth&lt;/li&gt;
&lt;li&gt;Power and thermal budget&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plugging a bunch of USB cameras into a dev kit does not automatically give you a system that scales. It gives you a demo that works until it doesn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with hardware architecture, not code
&lt;/h2&gt;

&lt;p&gt;Before writing any AI code, sketch out the camera architecture. A four-camera inspection setup looks roughly like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             ┌───────────────┐
Camera 1 ───►│               │
Camera 2 ───►│ Jetson Orin   │───► Display
Camera 3 ───►│ Nano          │
Camera 4 ───►│               │───► Network
             └───────┬───────┘
                     │
                     ▼
                AI Inference
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;USB cameras are fine for a prototype. For an embedded production system you're more likely dealing with MIPI CSI, multiple Ethernet cameras, USB 3.x, or PCIe-connected interfaces, plus Gigabit/2.5GbE networking and hardware-accelerated video processing.&lt;/p&gt;

&lt;p&gt;This is where the carrier board stops being an afterthought. The Jetson module gives you compute — the &lt;strong&gt;carrier board determines how many cameras and peripherals you can actually connect&lt;/strong&gt;. If you're still on a dev kit at this point, this is usually the wall you hit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Picking a camera interface
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;USB cameras&lt;/strong&gt; — easiest to prototype with, widely available, easy to swap out. Downside: multiple high-res USB cameras eat bandwidth and CPU fast.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;USB Camera → USB 3.x → Jetson Orin Nano
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;MIPI CSI&lt;/strong&gt; — better for embedded products. Lower interface overhead, tighter integration, more control over the ISP pipeline. The catch: how many CSI lanes you get depends entirely on the carrier board and Jetson config.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera Sensor → MIPI CSI → Jetson → ISP / Video Pipeline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ethernet cameras&lt;/strong&gt; — nice for industrial setups where cameras are physically spread across a machine or line. Trade-off: network bandwidth becomes a real design constraint, not an afterthought.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera 1 ─┐
Camera 2 ─┤
Camera 3 ─┼──► Ethernet Switch ───► Jetson
Camera 4 ─┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Capturing multiple streams
&lt;/h2&gt;

&lt;p&gt;For a quick Linux prototype, V4L2 is your friend:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; /dev/video&lt;span class="k"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see something like &lt;code&gt;/dev/video0&lt;/code&gt;, &lt;code&gt;/dev/video1&lt;/code&gt;, etc. — each one a camera or video interface. Check what a given device actually supports:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;v4l2-ctl &lt;span class="nt"&gt;--list-formats-ext&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; /dev/video0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells you supported resolutions, pixel formats, and frame rates — e.g. &lt;code&gt;1920x1080@30fps&lt;/code&gt;, &lt;code&gt;1280x720@60fps&lt;/code&gt;, &lt;code&gt;640x480@120fps&lt;/code&gt;. Don't reflexively grab the highest resolution. Pick what your model actually needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the pipeline with GStreamer
&lt;/h2&gt;

&lt;p&gt;A basic single-camera pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gst-launch-1.0 &lt;span class="se"&gt;\&lt;/span&gt;
v4l2src &lt;span class="nv"&gt;device&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/video0 &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
videoconvert &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
autovideosink
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For multiple cameras, you can spin up independent pipelines conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera 1 → Pipeline 1 ─┐
Camera 2 → Pipeline 2 ─┤
Camera 3 → Pipeline 3 ─┼→ AI Processing
Camera 4 → Pipeline 4 ─┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But fully independent pipelines aren't necessarily the most efficient design. In production you want to minimize unnecessary CPU/memory copies and format/resolution conversions — keep data on the GPU-accelerated path as much as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding AI inference
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera → Frame Capture → Resize/Normalize → AI Model → Detection → Tracking → Application Logic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;YOLO, SSD, DetectNet, EfficientDet, or a custom TensorRT model — whatever fits. The real design question here is: &lt;strong&gt;one inference engine per camera, or batch frames across cameras?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Batching multiple streams
&lt;/h2&gt;

&lt;p&gt;4 cameras at 30fps = 120 frames/second total. Run every frame through inference independently and you'll saturate the GPU fast.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera 1 ─┐
Camera 2 ─┤
Camera 3 ─┼──► Batch ───► TensorRT
Camera 4 ─┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Batching can improve GPU utilization, but it trades off against latency. Robotics usually wants low latency over max throughput; industrial inspection often wants the opposite. Know which one your application actually needs before you optimize for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't run inference on every frame if you don't have to
&lt;/h2&gt;

&lt;p&gt;If cameras capture at 30fps but your model only needs 10fps of inference, don't burn cycles processing all 30:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera → 30 FPS Capture → Frame Selection → 10 FPS AI Inference
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The leftover frames are still useful for display, recording, tracking, or motion estimation. Decoupling capture rate from inference rate is one of the cheapest wins available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Combine detection with tracking
&lt;/h2&gt;

&lt;p&gt;Instead of running expensive detection on every frame:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Detection → Tracking → Tracking → Tracking → Detection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E.g., 30fps video, 10fps detection, 30fps tracking. This cuts the number of expensive inference calls significantly — especially valuable for robotics and surveillance workloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep it zero-copy where you can
&lt;/h2&gt;

&lt;p&gt;Memory movement is one of the biggest hidden costs on embedded systems. This is the pipeline you don't want:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera → CPU Memory → CPU Processing → GPU Copy → GPU Processing → CPU Copy → Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every copy costs bandwidth. Better:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera → Hardware Capture → Accelerated Memory → GPU/TensorRT → Post-processing → Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is exactly why Jetson-specific multimedia and inference frameworks are worth using instead of rolling your own generic pipeline — the goal isn't just a faster model, it's an efficient pipeline end to end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Actually measure the bottleneck
&lt;/h2&gt;

&lt;p&gt;When things slow down, don't guess — profile it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;tegrastats
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptom&lt;/th&gt;
&lt;th&gt;Likely bottleneck&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPU near 100%&lt;/td&gt;
&lt;td&gt;AI inference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU near 100%&lt;/td&gt;
&lt;td&gt;preprocessing / application logic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory usage high&lt;/td&gt;
&lt;td&gt;buffering / large frames&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High temperature&lt;/td&gt;
&lt;td&gt;thermal throttling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dropped frames&lt;/td&gt;
&lt;td&gt;capture / bandwidth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High latency&lt;/td&gt;
&lt;td&gt;buffering / inference queue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network saturation&lt;/td&gt;
&lt;td&gt;Ethernet cameras&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Measure before you optimize. Swapping to a bigger Jetson before you know your actual bottleneck is a good way to spend money without fixing anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical four-camera architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    ┌─────────────────────┐
 Camera 1 ─────────►│                     │
 Camera 2 ─────────►│  Capture Layer      │
 Camera 3 ─────────►│                     │
 Camera 4 ─────────►│                     │
                    └──────────┬──────────┘
                               ▼
                    ┌─────────────────────┐
                    │ Frame Management    │
                    │ Resize / Convert    │
                    │ Frame Sampling      │
                    └──────────┬──────────┘
                               ▼
                    ┌─────────────────────┐
                    │ TensorRT / AI Model │
                    └──────────┬──────────┘
                               ▼
                    ┌─────────────────────┐
                    │ Detection / Tracking│
                    └──────────┬──────────┘
              ┌────────────────┼────────────────┐
              ▼                ▼                ▼
          Robot Control     Database         Network
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This covers industrial inspection, AMR perception, warehouse robotics, smart cameras, people counting, defect detection, OCR, and autonomous navigation reasonably well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the carrier board becomes unavoidable
&lt;/h2&gt;

&lt;p&gt;A dev kit is great for prototyping. The moment you need &lt;code&gt;4× camera + 2× Ethernet + NVMe + WiFi 6/7 + USB 3.x + GPIO + CAN + RS-485 + PoE&lt;/code&gt; simultaneously, the carrier board stops being a detail and becomes core product architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Jetson Orin Nano SOM
        │
        ▼
Custom Carrier Board
        │
 ┌──────┼───────────────┐
 ▼      ▼       ▼       ▼
Camera  Wi-Fi   Ethernet GPIO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is basically where every "I'll just use the dev kit in production" plan starts to hurt. I've spent enough time on custom carrier board work (industrial WiFi 6/7 + Jetson integration, specifically) to say this is the step people underestimate most.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't forget connectivity
&lt;/h2&gt;

&lt;p&gt;The edge box rarely operates in isolation — it needs to ship detection results, metadata, alerts, telemetry, sometimes raw video, over a network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             Cameras
                │
                ▼
       ┌──────────────────┐
       │ Jetson Orin Nano │
       │   Edge AI Box    │
       └────────┬─────────┘
                │
        AI Detection Results
                │
                ▼
        Wi-Fi 6 / Wi-Fi 7
                │
        ┌───────┴────────┐
        ▼                ▼
     Robot Fleet      Edge Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For mobile robots especially, wireless reliability ends up mattering just as much as raw compute performance. It's easy to over-index on TOPS and under-index on "does this thing stay connected while roaming across APs."&lt;/p&gt;

&lt;h2&gt;
  
  
  A concrete optimization walkthrough
&lt;/h2&gt;

&lt;p&gt;Starting point: 4 cameras, 1920×1080, 30fps, YOLO, 30fps inference — and it's overloaded.&lt;/p&gt;

&lt;p&gt;Before jumping to a bigger Jetson, work through this in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Drop inference FPS&lt;/strong&gt;: 30 → 15&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drop AI input resolution&lt;/strong&gt;: 1920×1080 → 1280×720&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use TensorRT optimization&lt;/strong&gt;: FP32 → FP16, or FP16 → INT8 where accuracy allows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch frames&lt;/strong&gt; across cameras instead of running independent inference calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add tracking&lt;/strong&gt; to reduce how often you actually run detection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Profile again&lt;/strong&gt; — only escalate to bigger hardware after you've actually confirmed you need it&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  "How many cameras can Jetson Orin Nano handle?" is the wrong question
&lt;/h2&gt;

&lt;p&gt;The better question: how many cameras can your &lt;em&gt;complete pipeline&lt;/em&gt; handle at the resolution, FPS, latency, and AI workload you actually need?&lt;/p&gt;

&lt;p&gt;&lt;code&gt;4× 1080p@30fps&lt;/code&gt; with lightweight detection and &lt;code&gt;8× 4K@30fps&lt;/code&gt; running multiple neural nets concurrently are not remotely the same workload, even though both technically involve "cameras on a Jetson." Account for the whole stack: resolution, FPS, codec, preprocessing, model, inference rate, tracking, recording, and networking — not just camera count.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production checklist
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hardware&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Camera interface count&lt;/li&gt;
&lt;li&gt;[ ] USB bandwidth&lt;/li&gt;
&lt;li&gt;[ ] CSI connectivity&lt;/li&gt;
&lt;li&gt;[ ] Ethernet bandwidth&lt;/li&gt;
&lt;li&gt;[ ] NVMe/storage&lt;/li&gt;
&lt;li&gt;[ ] Power supply&lt;/li&gt;
&lt;li&gt;[ ] Thermal design&lt;/li&gt;
&lt;li&gt;[ ] Carrier-board I/O&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Software&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Camera drivers&lt;/li&gt;
&lt;li&gt;[ ] GStreamer pipeline&lt;/li&gt;
&lt;li&gt;[ ] TensorRT model&lt;/li&gt;
&lt;li&gt;[ ] CUDA acceleration&lt;/li&gt;
&lt;li&gt;[ ] Frame sync&lt;/li&gt;
&lt;li&gt;[ ] Buffer management&lt;/li&gt;
&lt;li&gt;[ ] Tracking&lt;/li&gt;
&lt;li&gt;[ ] Logging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Model accuracy&lt;/li&gt;
&lt;li&gt;[ ] Input resolution&lt;/li&gt;
&lt;li&gt;[ ] Inference FPS&lt;/li&gt;
&lt;li&gt;[ ] Batch size&lt;/li&gt;
&lt;li&gt;[ ] FP16/INT8 optimization&lt;/li&gt;
&lt;li&gt;[ ] Detection latency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Long-duration testing&lt;/li&gt;
&lt;li&gt;[ ] Thermal testing&lt;/li&gt;
&lt;li&gt;[ ] Network stability&lt;/li&gt;
&lt;li&gt;[ ] Camera disconnect recovery&lt;/li&gt;
&lt;li&gt;[ ] Auto-restart&lt;/li&gt;
&lt;li&gt;[ ] Remote monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The typical evolution
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Phase 1: Jetson Dev Kit + USB Camera + YOLO
        ↓
Phase 2: Multiple Cameras + GStreamer + TensorRT + Tracking
        ↓
Phase 3: Jetson Orin Nano SOM + Custom Carrier Board + Industrial I/O + WiFi 6/7 + Production Enclosure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of squeezing your final product around whatever interfaces a dev kit happens to expose, you design the carrier board around your actual requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Building a multi-camera AI vision system on Jetson Orin Nano isn't just a model-deployment problem — it's a systems architecture problem. The pipeline that matters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Camera Interfaces → Video Capture → Frame Management → GPU-Accelerated Processing →
TensorRT Inference → Detection/Tracking → Application Logic → Wireless/Ethernet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The biggest win usually isn't a bigger GPU. It's making sure every frame moves through the system as efficiently as possible.&lt;/p&gt;

&lt;p&gt;For early prototyping, a dev kit and a USB camera will get you moving fast. For production — multiple cameras, industrial I/O, wireless, application-specific constraints — a Jetson Orin Nano SOM plus a custom carrier board gives you a much more solid foundation.&lt;/p&gt;

&lt;p&gt;The compute module runs the AI. The carrier board turns it into a product.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Curious what everyone else is running.&lt;/strong&gt; 2-4 cameras or 8+? CSI, USB, or Ethernet? What's actually your bottleneck — GPU, memory bandwidth, or network? Drop your camera count/resolution/FPS/model below, the interesting part is almost always finding where the real bottleneck is hiding.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
