<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        
        <!-- This is broken by doc revisioning.
         -->
        <link rel="shortcut icon" href="../../../img/favicon.ico">

        <title>Install Newt on Windows - Apache Mynewt</title>

        <link href="../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
        <link rel="stylesheet" href="../../../css/highlight.css">
        <link href="../../../css/base.css" rel="stylesheet">
        <link href="../../../css/custom.css" rel="stylesheet">
        <link href="../../../css/v2.css" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->

        
            <script>
            (function(i, s, o, g, r, a, m) {
    i["GoogleAnalyticsObject"] = r;
    (i[r] =
        i[r] ||
        function() {
            (i[r].q = i[r].q || []).push(arguments);
        }),
        (i[r].l = 1 * new Date());
    (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
    a.async = 1;
    a.src = g;
    m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");

ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
        
    </head>


    <body class="Install Newt on Windows">


        <div class="container">
    <div class="row v2-main-banner">
        <a class="logo-cell" href="/">
            <img class="logo" src="/img/logo.png">
        </a>
        <div class="tagline-cell">
            <h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
        </div>
        <div class="news-cell">
            <div class="well">
                <h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.12.0, Apache NimBLE 1.7.0 </a> released (April 4, 2024)
            </div>
        </div>
    </div>
</div>

        






<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
    <div class="container">
        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            <!-- Main navigation -->
            <ul class="nav navbar-nav navbar-right">
                <li 
  class=""
>
                    <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
                </li>
                <li 
  class="important"
>
                    <a href="/quick-start/">Quick Start</a>
                </li>
                <li 
  class=""
>
                    <a href="/about/">About</a>
                </li>
                <li 
  class=""
>
                    <a href="/talks/">Talks</a>
                </li>
                <li 
  class="active"
>
                    <a href="/documentation/">Documentation</a>
                </li>
                <li 
  class=""
>
                    <a href="/download/">Download</a>
                </li>
                <li 
  class=""
>
                    <a href="/community/">Community</a>
                </li>
                <li 
  class=""
>
                    <a href="/events/">Events</a>
                </li>
            </ul>

        </div>
    </div>
</nav>

        

        <div class="container">
            
                <div class="row">
                    <div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
    <div class="top">
        <div role="search">
            <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
                <div class="form-group">
                    <input type="text" name="q" class="form-control" placeholder="Search documentation" />
                </div>
            </form>
        </div>
    </div>
    <ul class="toc-nav">
      <li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
  <option value="/latest">
    Version: master
  </option>
  <option value="/v1_12_0/" >
    Version: 1.12.0
  </option>
  <option value="/v1_11_0/" >
    Version: 1.11.0
  </option>
  <option value="/v1_10_0/" >
    Version: 1.10.0
  </option>
  <option value="/v1_9_0/" >
    Version: 1.9.0
  </option>
    <option value="/v1_8_0/" >
    Version: 1.8.0
  </option>
  <option value="/v1_7_0/" >
    Version: 1.7.0
  </option>
  <option value="/v1_6_0/" >
    Version: 1.6.0
  </option>
  <option value="/v1_5_0/" >
    Version: 1.5.0
  </option>
  <option value="/v1_4_0/" >
    Version: 1.4.0
  </option>
  <option value="/v1_3_0/os/introduction" selected="selected" >
    Version: 1.3.0
  </option>
  <option value="/v1_2_0/os/introduction" >
    Version: 1.2.0
  </option>
  <option value="/v1_1_0/os/introduction" >
    Version: 1.1.0
  </option>
  <option value="/v1_0_0/os/introduction" >
    Version: 1.0.0
  </option>
  <option value="/v0_9_0/os/introduction" >
    Version: 0.9.0
  </option>
</select></li>
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
          
  
  
    <li ><a href="../../../os/introduction/">Mynewt Documentation</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../../os/get_started/get_started/">Basic Setup</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../../os/get_started/native_install_intro/">Native Install Option</a>
  
  
    <ul>
          
              
          
              
                
  <li >
    <a href="../newt_mac/">Install Newt on Mac</a>
  </li>

              
          
              
                
  <li >
    <a href="../newt_linux/">Install Newt on Linux</a>
  </li>

              
          
              
                
  <li class="active">
    <a href="./">Install Newt on Windows</a>
  </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/native_tools/">Install Native Toolchain</a>
  </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/cross_tools/">Install Cross Tools for ARM</a>
  </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/docker/">Docker Container Option</a>
  </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/project_create/">Create Your First Project</a>
  </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/serial_access/">Serial Port Setup</a>
  </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/vocabulary/">Concepts</a>
  </li>

              
          
              
                
  
  
    <li ><a href="../../../os/tutorials/tutorials/">Tutorials</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../os/os_user_guide/">OS User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../../network/ble/ble_intro/
">BLE User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../newt_intro/">Newt Tool Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../newtmgr/overview/">Newt Manager Guide</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../../known_issues/">Known Issues</a>
  </li>

              
          
    </ul>
  
    </li>

        
      
        
          
  
  
    <li><a href="
  ../prev_releases/
">Appendix</a>
  
  
    </li>

        
      
    </ul>
</div></div>

                    <div class="col-md-9" role="main">
                        <div class="doc-header">
                            <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="/documentation/">Docs</a></li>
    
    
        
          <li>&raquo; <a href="os/get_started/native_install_intro/">Native Install Option</a></li>
        
      
        
          <li>&raquo; <a href="os/get_started/get_started/">Basic Setup</a></li>
        
      
        
          <li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
        
      
      
        <li>&raquo; Install Newt on Windows</li>
      
    
    
      <li class="wy-breadcrumbs-aside">
        
          <a href="https://github.com/apache/mynewt-site/blob/master/docs/newt/install/newt_windows.md"
            class="icon icon-github"> Edit on GitHub</a>
        
      </li>
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.3.0 is not the most recent version of the Apache Mynewt
                                    documentation. Click <a href="/latest">here</a> to read the latest
                                    version.
                                </p>
                            </div>
                          
                        
                        
                            <h2 id="installing-newt-on-windows">Installing Newt on Windows</h2>
<p>You can develop and build Mynewt OS applications for your target boards on the Windows platform.  This guide shows you how to install the latest release version of newt from binary or from source.  The tool is written in Go (golang).</p>
<p>In Windows, we use MinGW as the development environment to build and run Mynewt OS applications for target boards. MinGW runs the bash shell and provides a Unix-like environment. This provides a uniform way to build Mynewt OS applications. The Mynewt documentation and tutorials use Unix commands and you can use the same Unix commands on MinGW to follow the tutorials. The documentation will note any commands or behaviors that are specific to Windows.</p>
<p>This guide shows you how to perform the following:</p>
<ol>
<li>Install MSYS2/MinGW. </li>
<li>Install Git.</li>
<li>Install latest release (1.2.0) of newt from binary.</li>
<li>Install latest release of newt from source.</li>
</ol>
<p>See <a href="/newt/install/prev_releases">Installing Previous Releases of Newt</a> to install an earlier version of newt. You still need to set up your MinGW development environment.</p>
<p><strong>Note:</strong> If you would like to contribute to the newt tool, see <a href="/faq/go_env.md">Setting Up Go Environment to Contribute to Newt and Newtmgr Tools</a>.</p>
<p><br></p>
<h3 id="installing-msys2mingw">Installing MSYS2/MinGW</h3>
<p>MSYS2/MinGW provides a bash shell and tools to build applications that run on Windows. It includes three subsystems:</p>
<ul>
<li>MSYS2 toolchain to build POSIX applications that run on Windows. </li>
<li>MinGW32 toolchains to build 32 bit native Windows applications.  </li>
<li>MinGW64 toolchains to build 64 bit native Windows applications.  </li>
</ul>
<p>The subsystems run the bash shell and provide a Unix-like environment. You can also run Windows applications from the shell. We will use the MinGW subsystem.</p>
<p><strong>Note:</strong> You can skip this installation step if you already have MinGW installed (from an earlier MSYS2/MinGW or Git Bash installation), but you must list the <strong>bin</strong> path for your installation in your Windows Path. For example: if you installed MSYS2/MinGW in the ** C:\msys64 ** directory,  add <strong>C:\msys64\usr\bin</strong> to your Windows Path. If you are using Windows 10 WSL, ensure that you use the <strong>C:\msys64\usr\bin\bash.exe</strong> and not the Windows 10 WSL bash.</p>
<p>To install and setup MSYS2 and MinGW:</p>
<ol>
<li>Download and run the <a href="http://www.msys2.org">MSYS2 installer</a>.  Select the 64 bit version if you are running on a 64 bit platform. Follow the prompts and check the <code>Run MSYS2 now</code> checkbox on the <code>Installation Complete</code> dialog. </li>
<li>
<p>In the MSYS2 terminal, run the <code>pacman -Syuu</code> command. If you get a message to run the update again, close the terminal and run the <code>pacman -Syuu</code> command in a new terminal. </p>
<p>To start a new MSYS2 terminal, select the "MSYS2 MSYS" application from the Windows start menu.</p>
</li>
<li>
<p>Add a new user variable named <strong>MSYS2_PATH_TYPE</strong> and set the value to <strong>inherit</strong> in your Windows environment. This enables the MSYS2 and MinGW bash to inherit your Windows user <strong>Path</strong> values. </p>
<p>To add the variable,  select properties for your computer &gt; Advanced system settings &gt; Environment Variables &gt; New</p>
</li>
<li>
<p>Add the MinGW <strong>bin</strong> path to your Windows Path. For example: if you install MSYS2/MinGW in the <strong>C:\msys64</strong> directory,  add <strong>C:\msys64\usr\bin</strong> to your Windows Path. </p>
<p><strong>Note:</strong> If you are using Windows 10 WSL,  ensure that you use the <strong>C:\msys64\usr\bin\bash.exe</strong> and not the Windows 10 WSL bash.</p>
</li>
<li>
<p>Run the <code>pacman -Su vim</code> command to install the vim editor. </p>
<p><strong>Note:</strong>You can also use a Windows editor. You can access your files from the <strong>C:\&lt;msys-install-folder&gt;\home\&lt;username&gt;</strong> folder, where <strong>msys-install-folder</strong> is the folder you installed MSYS2 in. For example, if you installed MSYS2 in the <strong>msys64</strong> folder, your files are stored in <strong>C:\msys64\home\&lt;username&gt;</strong></p>
</li>
<li>
<p>Run the  <code>pacman -Su tar</code> command to install the tar tool. </p>
</li>
</ol>
<p>You will need to start a MinGW terminal to run the commands specified in the Mynewt documentation and  tutorials.  To start a MinGW terminal, select the "MSYS2 Mingw" application from the start Menu (you can use either MinGW32 or MinGW64). 
In Windows, we use the MinGW subsystem to build  Mynewt tools and applications.  </p>
<h3 id="installing-git-for-windows">Installing Git for Windows</h3>
<p>Download and install <a href="https://git-for-windows.github.io">Git for Windows</a> if it is not already installed.</p>
<h3 id="installing-the-latest-release-of-the-newt-tool-from-binary">Installing the Latest Release of the Newt Tool from Binary</h3>
<p>You can install the latest release of newt from binary. It has been tested on Windows 10 64 bit platform. </p>
<p><br>
1. Start a MinGW terminal.</p>
<p><br>
2. Download the newt binary tar file:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ wget -P /tmp https://raw.githubusercontent.com/runtimeco/binary-releases/master/mynewt-newt-tools_1.3.0/newt_1_3_0_windows_amd64.tar.gz
</code></pre></div>

<p><br>
3. Extract the file:</p>
<ul>
<li>
<p>If you previously built newt from the master branch, you can extract the file into your $GOPATH/bin directory. Note: This overwrites the current newt.exe in the directory and assumes that you are using $GOPATH/bin for your Go applications.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code> tar -xzf /tmp/newt_1_3_0_windows_amd64.tar.gz -C $GOPATH/bin
</code></pre></div>

</li>
<li>
<p>If you are installing newt for the first time and do not have a Go workspace setup, you can extract into /usr/bin directory:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code> tar -xzf /tmp/newt_1_3_0_windows_amd64.tar.gz -C /usr/bin
</code></pre></div>

</li>
</ul>
<p><br>
4. Verify the installed version of newt. See <a href="#check_newt">Checking the Installed Version</a>.</p>
<p><br></p>
<h3 id="installing-the-latest-release-of-newt-from-source">Installing the Latest Release of Newt From Source</h3>
<p>If you have an older version of Windows or a 32 bit platform, you can build and install the latest release version of newt from source.</p>
<p><br>
1.  If you do not have Go installed, download and install the latest version of <a href="https://golang.org/dl/">Go</a>. Newt requires Go version 1.7.6 or higher.</p>
<p><br>
2. Start a MinGw terminal.</p>
<p><br>
3. Download and unpack the newt source:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ wget -P /tmp https://github.com/apache/mynewt-newt/archive/mynewt_1_3_0_tag.tar.gz
$ tar -xzf /tmp/mynewt_1_3_0_tag.tar.gz
</code></pre></div>

<p><br>
4. Run the build.sh to build the newt tool.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ cd mynewt-newt-mynewt_1_3_0_tag   
$ ./build.sh
$ rm /tmp/mynewt_1_3_0_tag.tar.gz
</code></pre></div>

<p><br>
5. You should see the <code>newt/newt.exe</code> executable. Move the executable to a bin directory in your PATH:</p>
<ul>
<li>
<p>If you previously built newt from the master branch, you can move the executable to the $GOPATH/bin directory.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ mv newt/newt.exe $GOPATH/bin
</code></pre></div>

</li>
<li>
<p>If you are installing newt for the first time and do not have a Go workspace set up, you can move the executable to /usr/bin or a directory in your PATH:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ mv newt/newt.exe /usr/bin
</code></pre></div>

</li>
</ul>
<p><br></p>
<h3 id="checking-the-installed-version"><a name="check_newt"></a>Checking the Installed Version</h3>
<p><br>
1. Check the version of newt:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ newt version
Apache Newt version: 1.3.0
</code></pre></div>

<p><br>
2. Get information about newt:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>Newt allows you to create your own embedded application based on the Mynewt 
operating system. Newt provides both build and package management in a single 
tool, which allows you to compose an embedded application, and set of 
projects, and then build the necessary artifacts from those projects. For more 
information on the Mynewt operating system, please visit 
https://mynewt.apache.org/. 

Please use the newt help command, and specify the name of the command you want 
help for, for help on how to use a specific command

Usage:
  newt [flags]
  newt [command]

Examples:
  newt
  newt help [&lt;command-name&gt;]
    For help on &lt;command-name&gt;.  If not specified, print this message.

Available Commands:
  build        Build one or more targets
  clean        Delete build artifacts for one or more targets
  create-image Add image header to target binary
  debug        Open debugger session to target
  info         Show project info
  install      Install project dependencies
  load         Load built target to board
  mfg          Manufacturing flash image commands
  new          Create a new project
  pkg          Create and manage packages in the current workspace
  resign-image Re-sign an image.
  run          build/create-image/download/debug &lt;target&gt;
  size         Size of target components
  sync         Synchronize project dependencies
  target       Commands to create, delete, configure, and query targets
  test         Executes unit tests for one or more packages
  upgrade      Upgrade project dependencies
  vals         Display valid values for the specified element type(s)
  version      Display the Newt version number

Flags:
  -h, --help              Help for newt commands
  -j, --jobs int          Number of concurrent build jobs (default 8)
  -l, --loglevel string   Log level (default &quot;WARN&quot;)
  -o, --outfile string    Filename to tee output to
  -q, --quiet             Be quiet; only display error output
  -s, --silent            Be silent; don&#39;t output anything
  -v, --verbose           Enable verbose output when executing commands

Use &quot;newt [command] --help&quot; for more information about a command.
</code></pre></div>
                        
                        <div class="row">
                            



<ul class="nav nav-pills" style="margin-bottom: 10px">
    <li>
    
    </li>
    <li class="pull-right">
    
    </li>
</ul>
                        </div>
                        <footer class="row">
    <div class="col-xs-12">
        
            <p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
        
    </div>
    <div class="col-xs-12">
        <div class="logos">
            <a href="https://www.apache.org/">
                <img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
            </a>
            <p>
                Copyright © 2015-2021 The Apache Software Foundation.<br>
                <small class="footnote">
                    Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt
                    project logo are either registered trademarks or trademarks of the Apache
                    Software Foundation in the United States and other countries.
                </small>
            </p>
            <a href="">
                <img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
            </a>
        </div>
    </div>
    <a href="https://www.apache.org/licenses/">
        <button class="button-footer-asf">
            License
        </button>
    </a>
    <a href="https://www.apache.org/foundation/sponsorship.html">
        <button class="button-footer-asf">
            Sponsorship
        </button>
    </a>
    <a href="https://www.apache.org/foundation/thanks.html">
        <button class="button-footer-asf">
            Thanks
        </button>
    </a>
    <a href="https://www.apache.org/security/">
        <button class="button-footer-asf">
            Security
        </button>
    </a>
    <a href="https://apache.org/events/current-event">
        <button class="button-footer-asf">
            ASF Events
        </button>
    </a>
</footer>
                    </div>
                </div>
            
            
        </div>

        <script src="../../../js/jquery-1.10.2.min.js"></script>
        <script src="../../../js/bootstrap-3.0.3.min.js"></script>
        <script src="../../../js/highlight.pack.js"></script>
        <script src="../../../js/base.js"></script>
        <script src="../../../js/custom.js"></script>
            <script src="search/main.js"></script>

    </body>
</html>