<!--
 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.18.1: http://docutils.sourceforge.net/" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Configuring &mdash; NuttX latest documentation</title>
      <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
      <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
      <link rel="stylesheet" href="../_static/tabs.css" type="text/css" />
      <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
    <link rel="shortcut icon" href="../_static/favicon.ico"/>
  <!--[if lt IE 9]>
    <script src="../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
        <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/js/theme.js"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="Debugging" href="debugging.html" />
    <link rel="prev" title="Running" href="running.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>
    
    </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 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="install.html">Installing</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiling.html">Compiling</a></li>
<li class="toctree-l2"><a class="reference internal" href="running.html">Running</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Configuring</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#fast-configuration-changes">Fast configuration changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="debugging.html">Debugging</a></li>
<li class="toctree-l2"><a class="reference internal" href="organization.html">Directory Structure</a></li>
</ul>
</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"><a class="reference internal" href="../applications/index.html">Applications</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>
</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">Getting Started</a></li>
      <li class="breadcrumb-item active">Configuring</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../_sources/quickstart/configuring.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="configuring">
<span id="id1"></span><h1>Configuring<a class="headerlink" href="#configuring" title="Permalink to this heading"></a></h1>
<p>Apache NuttX is a very configurable: nearly all features can be configured in or
out of the system. This makes it possible to compile a build tailored for your
hardware and application.</p>
<p>The Apache NuttX configuration system uses Linux’s
<a class="reference external" href="https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt">kconfig system</a> which
includes various frontends that allow you to modify configuration easily. Usually, the <code class="docutils literal notranslate"><span class="pre">menuconfig</span></code>
frontend is used, which is a console based menu system (more info <a class="reference external" href="https://en.wikipedia.org/wiki/Menuconfig">here</a>).</p>
<p>As previously explained in <a class="reference internal" href="compiling.html"><span class="doc">Compiling</span></a>, the first step is to load a premade configuration for
your board. Then, you can modify this configuration to your liking. In this example, we will show
how you modify the default configuration of the <code class="docutils literal notranslate"><span class="pre">sim</span></code> build, a build of NuttX which runs on your own
computer.</p>
<ol class="arabic">
<li><p>Initialize Board Configuration</p>
<blockquote>
<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>nuttx
<span class="gp">$ </span>./tools/configure.sh<span class="w"> </span>-l<span class="w"> </span>sim:nsh
<span class="go">  Copy files</span>
<span class="go">  Select CONFIG_HOST_LINUX=y</span>
<span class="go">  Refreshing...</span>
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Build &amp; run</p>
<blockquote>
<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>make<span class="w"> </span>clean<span class="p">;</span><span class="w"> </span>make
<span class="gp">$ </span>./nuttx
<span class="go">login:</span>
</pre></div>
</div>
</div></blockquote>
<p>From another terminal window, kill the simulator:</p>
<blockquote>
<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>pkill<span class="w"> </span>nuttx
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Modify configuration</p>
<p>In this case we will remove the login feature (which will boot straight to the prompt). To
do so, we use the <code class="docutils literal notranslate"><span class="pre">menuconfig</span></code> frontend.</p>
<blockquote>
<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>make<span class="w"> </span>menuconfig
</pre></div>
</div>
</div></blockquote>
<p>Here’s what you should see:</p>
<a class="reference internal image-reference" href="../_images/menuconfig.png"><img alt="Screenshot of menuconfig system main screen" class="align-center" src="../_images/menuconfig.png" style="width: 800px;" /></a>
<p><br/></p>
<p>The NSH Login setting is under <span class="menuselection">Application Configuration ‣ NSH Library</span>. You
can use <kbd class="kbd docutils literal notranslate">🢁</kbd> and <kbd class="kbd docutils literal notranslate">🢃</kbd> keys to navigate and <kbd class="kbd docutils literal notranslate">↵</kbd> to enter a submenu.
To disable the corresponding setting go to <span class="menuselection">Console Login</span> and press <kbd class="kbd docutils literal notranslate">spacebar</kbd> to
it (so that it has a blank space instead of a star in it).</p>
<p>Now you need to exit <code class="docutils literal notranslate"><span class="pre">menuconfig</span></code> and save the modified configuration. Use the <kbd class="kbd docutils literal notranslate">🡸</kbd> and
<kbd class="kbd docutils literal notranslate">🡺</kbd> arrow keys to navigate the lower menu. If you select <span class="menuselection">Exit</span> you will be
prompted to save the config.</p>
</li>
<li><p>Build with the new Configuration</p>
<blockquote>
<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>make
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Run</p>
<blockquote>
<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>./nuttx
<span class="go">NuttShell (NSH) NuttX-8.2</span>
<span class="go">MOTD: username=admin password=Administrator</span>
</pre></div>
</div>
</div></blockquote>
<p>Success!</p>
</li>
</ol>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>If you find that message of the day (MOTD) annoying and want to turn that off, it’s
configured in <span class="menuselection">Application Configuration ‣ NSH Library ‣ Message of the Day (MOTD)</span>.</p>
</div>
<section id="fast-configuration-changes">
<h2>Fast configuration changes<a class="headerlink" href="#fast-configuration-changes" title="Permalink to this heading"></a></h2>
<p>If you know exactly which configuration symbol you want to change, you can use the <code class="docutils literal notranslate"><span class="pre">kconfig-tweak</span></code> tool (comes with the <code class="docutils literal notranslate"><span class="pre">kconfig-frontends</span></code> package) to quickly change a setting without going into the configuration frontend. This is useful to change settings such as debug options:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_NET
<span class="gp">$ </span>make<span class="w"> </span>olddefconfig<span class="w">  </span><span class="c1"># needed to have the kconfig system check the config</span>
<span class="gp">$ </span>kconfig-tweak<span class="w"> </span>--enable<span class="w"> </span>CONFIG_DEBUG_NET
<span class="gp">$ </span>make<span class="w"> </span>olddefconfig
</pre></div>
</div>
<p>This is also useful to script configuration changes that you perform often:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span>

kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_ALERT
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_FEATURES
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_ERROR
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_WARN
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_INFO
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_ASSERTIONS
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_NET
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_NET_ERROR
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_NET_WARN
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_NET_INFO
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_SYMBOLS
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_DEBUG_NOOPT
kconfig-tweak<span class="w"> </span>--disable<span class="w"> </span>CONFIG_SYSLOG_TIMESTAMP
make<span class="w"> </span>oldconfig
</pre></div>
</div>
</section>
</section>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="running.html" class="btn btn-neutral float-left" title="Running" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="debugging.html" class="btn btn-neutral float-right" title="Debugging" 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 2020, The Apache Software Foundation.</p>
  </div>

   

</footer>
        </div>
      </div>
    </section>
  </div>
  <script>
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script> 

</body>
</html>