blob: 7753e4bea94d2b272b577103e92bdaf5375f2daf [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>iperf iperf &mdash; NuttX latest documentation</title>
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css" />
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/sphinx_highlight.js"></script>
<script src="../../../_static/clipboard.min.js"></script>
<script src="../../../_static/copybutton.js"></script>
<script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="iptables iptables library" href="../iptables/index.html" />
<link rel="prev" title="ftpd FTP server" href="../ftpd/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home"> NuttX
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../../../latest" selected="selected">latest</option>
<option value="../../../../10.0.0" >10.0.0</option>
<option value="../../../../10.0.1" >10.0.1</option>
<option value="../../../../10.1.0" >10.1.0</option>
<option value="../../../../10.2.0" >10.2.0</option>
<option value="../../../../10.3.0" >10.3.0</option>
<option value="../../../../11.0.0" >11.0.0</option>
<option value="../../../../12.0.0" >12.0.0</option>
<option value="../../../../12.1.0" >12.1.0</option>
<option value="../../../../12.2.0" >12.2.0</option>
<option value="../../../../12.2.1" >12.2.1</option>
<option value="../../../../12.3.0" >12.3.0</option>
<option value="../../../../12.4.0" >12.4.0</option>
<option value="../../../../12.5.0" >12.5.0</option>
<option value="../../../../12.5.1" >12.5.1</option>
<option value="../../../../12.6.0" >12.6.0</option>
<option value="../../../../12.7.0" >12.7.0</option>
<option value="../../../../12.8.0" >12.8.0</option>
<option value="../../../../12.9.0" >12.9.0</option>
<option value="../../../../12.10.0" >12.10.0</option>
<option value="../../../../12.11.0" >12.11.0</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../platforms/index.html">Supported Platforms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../components/index.html">OS Components</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Applications</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../audioutils/index.html">Audio Utility libraries</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../boot/index.html">Bootloader Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../benchmarks/index.html">Benchmark Applications</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../canutils/index.html">CAN Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../crypto/index.html">Cryptography Library Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../fsutils/index.html">File System Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../games/index.html">Games</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../graphics/index.html">Graphics Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../industry/index.html">Industrial Applications</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../inertial/index.html">Inertial Libraries Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../interpreters/index.html">Interpreters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../logging/index.html">Logging Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../lte/index.html">LTE Libraries and NSH Add-Ons</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../math/index.html">Math Library Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../mlearing/index.html">Machine Learning Support</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../index.html">Network Utilities</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../chat/index.html"><code class="docutils literal notranslate"><span class="pre">chat</span></code> Chat tool</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cjson/index.html"><code class="docutils literal notranslate"><span class="pre">cjson</span></code> cJSON library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../codecs/index.html"><code class="docutils literal notranslate"><span class="pre">codecs</span></code> CODEC Library: Base64 coding, URL coding, MD5</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cwebsocket/index.html"><code class="docutils literal notranslate"><span class="pre">cwebsocket</span></code> WebSocket Client Library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../dhcp6c/index.html"><code class="docutils literal notranslate"><span class="pre">dhcp6c</span></code> DHCPv6 client</a></li>
<li class="toctree-l3"><a class="reference internal" href="../dhcpc/index.html"><code class="docutils literal notranslate"><span class="pre">dhcpc</span></code> DHCP client</a></li>
<li class="toctree-l3"><a class="reference internal" href="../dhcpd/index.html"><code class="docutils literal notranslate"><span class="pre">dhcpd</span></code> DHCP server</a></li>
<li class="toctree-l3"><a class="reference internal" href="../discover/index.html"><code class="docutils literal notranslate"><span class="pre">discover</span></code> Network Discovery Utility</a></li>
<li class="toctree-l3"><a class="reference internal" href="../esp8266/index.html"><code class="docutils literal notranslate"><span class="pre">esp8266</span></code> ESP8266</a></li>
<li class="toctree-l3"><a class="reference internal" href="../ftpc/index.html"><code class="docutils literal notranslate"><span class="pre">ftpc</span></code> FTP client</a></li>
<li class="toctree-l3"><a class="reference internal" href="../ftpd/index.html"><code class="docutils literal notranslate"><span class="pre">ftpd</span></code> FTP server</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#"><code class="docutils literal notranslate"><span class="pre">iperf</span></code> iperf</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="#configuring-nuttx-to-use-your-wireless-router-aka-access-point">Configuring NuttX to use your Wireless Router (aka Access Point)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#iperf-test-example">iperf Test Example</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../iptables/index.html"><code class="docutils literal notranslate"><span class="pre">iptables</span></code> iptables library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../libcurl4nx/index.html"><code class="docutils literal notranslate"><span class="pre">libcurl4nx</span></code> cURL4nx HTTP client library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../mqttc/index.html"><code class="docutils literal notranslate"><span class="pre">mqttc</span></code> MQTT-C library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../netcat/index.html"><code class="docutils literal notranslate"><span class="pre">netcat</span></code> NetCat tool</a></li>
<li class="toctree-l3"><a class="reference internal" href="../netinit/index.html"><code class="docutils literal notranslate"><span class="pre">netinit</span></code> Network initialization</a></li>
<li class="toctree-l3"><a class="reference internal" href="../netlib/index.html"><code class="docutils literal notranslate"><span class="pre">netlib</span></code> Network support library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nng/index.html"><code class="docutils literal notranslate"><span class="pre">nng</span></code> Nanomsg NG</a></li>
<li class="toctree-l3"><a class="reference internal" href="../ntpclient/index.html"><code class="docutils literal notranslate"><span class="pre">ntpclient</span></code> NTP client</a></li>
<li class="toctree-l3"><a class="reference internal" href="../ping/index.html"><code class="docutils literal notranslate"><span class="pre">ping</span></code> ICMP ping support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../pppd/index.html"><code class="docutils literal notranslate"><span class="pre">pppd</span></code> PPP server</a></li>
<li class="toctree-l3"><a class="reference internal" href="../ptpd/index.html"><code class="docutils literal notranslate"><span class="pre">ptpd</span></code> PTPD client/server</a></li>
<li class="toctree-l3"><a class="reference internal" href="../rexec/index.html"><code class="docutils literal notranslate"><span class="pre">rexec</span></code> Remote execution client</a></li>
<li class="toctree-l3"><a class="reference internal" href="../rexecd/index.html"><code class="docutils literal notranslate"><span class="pre">rexecd</span></code> Remote Execution Server</a></li>
<li class="toctree-l3"><a class="reference internal" href="../rtptools/index.html"><code class="docutils literal notranslate"><span class="pre">rtptools</span></code> RTP Tools</a></li>
<li class="toctree-l3"><a class="reference internal" href="../smtp/index.html"><code class="docutils literal notranslate"><span class="pre">smtp</span></code> SMTP</a></li>
<li class="toctree-l3"><a class="reference internal" href="../telnetc/index.html"><code class="docutils literal notranslate"><span class="pre">telnetc</span></code> Telnet client library</a></li>
<li class="toctree-l3"><a class="reference internal" href="../telnetd/index.html"><code class="docutils literal notranslate"><span class="pre">telnetd</span></code> Telnet server daemon</a></li>
<li class="toctree-l3"><a class="reference internal" href="../tftpc/index.html"><code class="docutils literal notranslate"><span class="pre">tftpc</span></code> TFTP client</a></li>
<li class="toctree-l3"><a class="reference internal" href="../thttpd/index.html"><code class="docutils literal notranslate"><span class="pre">thttpd</span></code> THTTPD webserver</a></li>
<li class="toctree-l3"><a class="reference internal" href="../wakaama/index.html"><code class="docutils literal notranslate"><span class="pre">wakaama</span></code> Eclipse Wakaama (formerly liblwm2m) - LWM2M protocol</a></li>
<li class="toctree-l3"><a class="reference internal" href="../wakeonlan/index.html"><code class="docutils literal notranslate"><span class="pre">wakeonlan</span></code> WakeOnLAN support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../webclient/index.html"><code class="docutils literal notranslate"><span class="pre">webclient</span></code> uIP web client</a></li>
<li class="toctree-l3"><a class="reference internal" href="../webserver/index.html"><code class="docutils literal notranslate"><span class="pre">webserver</span></code> uIP web server</a></li>
<li class="toctree-l3"><a class="reference internal" href="../xmlrpc/index.html"><code class="docutils literal notranslate"><span class="pre">xmlrpc</span></code> XML RPC library</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../nsh/index.html">NuttShell (NSH)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sdr/index.html">Software Define Radio Libraries</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../system/index.html">System Libraries and NSH Add-Ons</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../testing/index.html">Testing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../tools/index.html">Host Side Tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../wireless/index.html">Wireless Libraries and NSH Add-Ons</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../examples/index.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../implementation/index.html">Implementation Details</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faq/index.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../logos/index.html">NuttX Logos</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../../index.html">Applications</a></li>
<li class="breadcrumb-item"><a href="../index.html">Network Utilities</a></li>
<li class="breadcrumb-item active"><code class="docutils literal notranslate"><span class="pre">iperf</span></code> iperf</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/applications/netutils/iper/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="iperf-iperf">
<h1><code class="docutils literal notranslate"><span class="pre">iperf</span></code> iperf<a class="headerlink" href="#iperf-iperf" title="Permalink to this heading"></a></h1>
<section id="overview">
<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this heading"></a></h2>
<p>This is a NuttX port of the ESP-IDF iperf example. [1]</p>
<p>It doesn’t support all features in standard iperf.
It’s supposed to be compatible with iperf version 2.x. [2]</p>
<p>[1] <a class="reference external" href="https://github.com/espressif/esp-idf/tree/master/examples/wifi/iperf">https://github.com/espressif/esp-idf/tree/master/examples/wifi/iperf</a>
[2] <a class="reference external" href="https://sourceforge.net/projects/iperf2/">https://sourceforge.net/projects/iperf2/</a></p>
</section>
<section id="configuring-nuttx-to-use-your-wireless-router-aka-access-point">
<h2>Configuring NuttX to use your Wireless Router (aka Access Point)<a class="headerlink" href="#configuring-nuttx-to-use-your-wireless-router-aka-access-point" title="Permalink to this heading"></a></h2>
<p>Since you are already in the root of NuttX/ repository, execute
make menuconfig to define your Wireless Router and your password:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ make menuconfig
Browser the menus this way:
Application Configuration ---&gt;
Network Utilities ---&gt;
Networking Configuration ---&gt;
WAPI Configuration ---&gt;
(myApSSID) SSID
(mySSIDpassphrase) Passprhase
</pre></div>
</div>
<p>Replace the SSID from myApSSID with your wireless router name and
the Passprhase with your WiFi password.</p>
<p>Exit and save your configuration.</p>
</section>
<section id="iperf-test-example">
<h2>iperf Test Example<a class="headerlink" href="#iperf-test-example" title="Permalink to this heading"></a></h2>
<p>To set up, do <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">menuconfig</span></code> and select the Apps &gt; netutils &gt; iperf example. By default, NuttX will the be the client
which sends data; and the host computer (Linux, macOS, or Windows) will be the server.</p>
<p>Set up networking so the NuttX computer can ping the host, and the host can ping NuttX. Now you are ready to run the
test.</p>
<p>If you are using a wireless network card, you must first connect to the router:</p>
<p>On host:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ iperf -s -p 5471 -i 1 -w 416K
------------------------------------------------------------
Server listening on TCP port 5471
TCP window size: 416 KByte
------------------------------------------------------------
</pre></div>
</div>
<p>On NuttX:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nsh&gt; iperf -c 192.168.1.181 -p 5471 -i 1 -t 10
mode=tcp-client sip=192.168.1.198:5001, dip=192.168.1.181:5471, interval=1, time=10
Interval Bandwidth
0- 1 sec, 0.39 Mbits/sec
1- 2 sec, 0.26 Mbits/sec
2- 3 sec, 0.39 Mbits/sec
3- 4 sec, 0.26 Mbits/sec
4- 5 sec, 0.26 Mbits/sec
5- 6 sec, 0.26 Mbits/sec
6- 7 sec, 0.26 Mbits/sec
7- 8 sec, 0.26 Mbits/sec
8- 9 sec, 0.26 Mbits/sec
9- 10 sec, 0.26 Mbits/sec
0- 10 sec, 0.28 Mbits/sec
</pre></div>
</div>
<p>Now on the host you should see something like:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ iperf -s -p 5471 -i 1 -w 416K
------------------------------------------------------------
Server listening on TCP port 5471
TCP window size: 416 KByte
------------------------------------------------------------
[ 5] local 192.168.1.181 port 5471 connected with 192.168.1.198 port 4210
[ 5] 0.0- 1.0 sec 60.8 KBytes 498 Kbits/sec
[ 5] 1.0- 2.0 sec 34.9 KBytes 286 Kbits/sec
[ 5] 2.0- 3.0 sec 33.7 KBytes 276 Kbits/sec
[ 5] 3.0- 4.0 sec 33.4 KBytes 274 Kbits/sec
[ 5] 4.0- 5.0 sec 32.0 KBytes 262 Kbits/sec
[ 5] 5.0- 6.0 sec 32.0 KBytes 262 Kbits/sec
[ 5] 6.0- 7.0 sec 33.4 KBytes 274 Kbits/sec
[ 5] 7.0- 8.0 sec 32.0 KBytes 262 Kbits/sec
[ 5] 8.0- 9.0 sec 32.0 KBytes 262 Kbits/sec
[ 5] 9.0-10.0 sec 33.4 KBytes 274 Kbits/sec
[ 5] 0.0-10.3 sec 368 KBytes 292 Kbits/sec
</pre></div>
</div>
<p>This will tell you the link speed in Kbits/sec – kilobits per second. If you want kilobytes, divide by 8.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../ftpd/index.html" class="btn btn-neutral float-left" title="ftpd FTP server" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../iptables/index.html" class="btn btn-neutral float-right" title="iptables iptables library" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2023, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>