<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title> – Install</title>
    <link>/docs/getting-started/install-mcxos/install-rtos/install/</link>
    <description>Recent content in Install on </description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/docs/getting-started/install-mcxos/install-rtos/install/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Install on an industrial PC</title>
      <link>/docs/getting-started/install-mcxos/install-rtos/install/usb/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/getting-started/install-mcxos/install-rtos/install/usb/</guid>
      <description>
        
        
        &lt;p&gt;An industrial PC runs MCX-RTOS from its internal disk. To put the image there, you boot the controller from a USB imager stick that carries the image, and the stick writes it to the disk. It takes four parts; click one to jump to it.&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-flow&#34; role=&#34;group&#34; aria-label=&#34;Four parts: create the imager stick on your PC, copy the MCX-RTOS image onto it, boot the controller from the stick, install the image on the controller&amp;#39;s disk with mci restore&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 830 180&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-gsu-arrow&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;7&#34; markerHeight=&#34;7&#34; orient=&#34;auto-start-reverse&#34;&gt;
      &lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-arrow-head&#34;/&gt;
    &lt;/marker&gt;
  &lt;/defs&gt;

  &lt;line class=&#34;mcx-arrow&#34; x1=&#34;192&#34; y1=&#34;90&#34; x2=&#34;218&#34; y2=&#34;90&#34; marker-end=&#34;url(#mcx-gsu-arrow)&#34;/&gt;
  &lt;line class=&#34;mcx-arrow&#34; x1=&#34;402&#34; y1=&#34;90&#34; x2=&#34;428&#34; y2=&#34;90&#34; marker-end=&#34;url(#mcx-gsu-arrow)&#34;/&gt;
  &lt;line class=&#34;mcx-arrow&#34; x1=&#34;612&#34; y1=&#34;90&#34; x2=&#34;638&#34; y2=&#34;90&#34; marker-end=&#34;url(#mcx-gsu-arrow)&#34;/&gt;

  &lt;!-- 1 --&gt;
  &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/install/usb/#create-the-imager-stick&#34; aria-label=&#34;Create the imager stick on your PC&#34;&gt;
    &lt;title&gt;Create the imager stick on your PC&lt;/title&gt;
    &lt;g class=&#34;mcx-step&#34; transform=&#34;translate(10 20)&#34;&gt;
      &lt;rect class=&#34;mcx-card&#34; width=&#34;180&#34; height=&#34;140&#34; rx=&#34;12&#34;/&gt;
      &lt;circle class=&#34;mcx-num&#34; cx=&#34;26&#34; cy=&#34;26&#34; r=&#34;15&#34;/&gt;&lt;text class=&#34;mcx-num-text&#34; x=&#34;26&#34; y=&#34;31&#34;&gt;1&lt;/text&gt;
      &lt;g class=&#34;mcx-icon&#34; transform=&#34;translate(66 22)&#34;&gt;
        &lt;rect x=&#34;14&#34; y=&#34;2&#34; width=&#34;20&#34; height=&#34;12&#34; rx=&#34;1&#34;/&gt;
        &lt;rect x=&#34;8&#34; y=&#34;14&#34; width=&#34;32&#34; height=&#34;30&#34; rx=&#34;4&#34;/&gt;
        &lt;line x1=&#34;19&#34; y1=&#34;7&#34; x2=&#34;19&#34; y2=&#34;10&#34;/&gt;
        &lt;line x1=&#34;29&#34; y1=&#34;7&#34; x2=&#34;29&#34; y2=&#34;10&#34;/&gt;
      &lt;/g&gt;
      &lt;text class=&#34;mcx-label&#34; x=&#34;90&#34; y=&#34;100&#34;&gt;Create the stick&lt;/text&gt;
      &lt;text class=&#34;mcx-sub&#34; x=&#34;90&#34; y=&#34;121&#34;&gt;Imager on a USB drive&lt;/text&gt;
    &lt;/g&gt;
  &lt;/a&gt;

  &lt;!-- 2 --&gt;
  &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/install/usb/#copy-the-image-onto-the-stick&#34; aria-label=&#34;Copy the MCX-RTOS image onto the stick&#34;&gt;
    &lt;title&gt;Copy the MCX-RTOS image onto the stick&lt;/title&gt;
    &lt;g class=&#34;mcx-step&#34; transform=&#34;translate(220 20)&#34;&gt;
      &lt;rect class=&#34;mcx-card&#34; width=&#34;180&#34; height=&#34;140&#34; rx=&#34;12&#34;/&gt;
      &lt;circle class=&#34;mcx-num&#34; cx=&#34;26&#34; cy=&#34;26&#34; r=&#34;15&#34;/&gt;&lt;text class=&#34;mcx-num-text&#34; x=&#34;26&#34; y=&#34;31&#34;&gt;2&lt;/text&gt;
      &lt;g class=&#34;mcx-icon&#34; transform=&#34;translate(66 22)&#34;&gt;
        &lt;path d=&#34;M10 2 H30 L40 12 V44 H10 z&#34;/&gt;
        &lt;path d=&#34;M30 2 V12 H40&#34;/&gt;
        &lt;line x1=&#34;25&#34; y1=&#34;20&#34; x2=&#34;25&#34; y2=&#34;36&#34;/&gt;
        &lt;path d=&#34;M19 30 L25 36 L31 30&#34;/&gt;
      &lt;/g&gt;
      &lt;text class=&#34;mcx-label&#34; x=&#34;90&#34; y=&#34;100&#34;&gt;Copy the image&lt;/text&gt;
      &lt;text class=&#34;mcx-sub&#34; x=&#34;90&#34; y=&#34;121&#34;&gt;Into ImageData&lt;/text&gt;
    &lt;/g&gt;
  &lt;/a&gt;

  &lt;!-- 3 --&gt;
  &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/install/usb/#boot-the-controller-from-the-stick&#34; aria-label=&#34;Boot the controller from the stick&#34;&gt;
    &lt;title&gt;Boot the controller from the stick&lt;/title&gt;
    &lt;g class=&#34;mcx-step&#34; transform=&#34;translate(430 20)&#34;&gt;
      &lt;rect class=&#34;mcx-card&#34; width=&#34;180&#34; height=&#34;140&#34; rx=&#34;12&#34;/&gt;
      &lt;circle class=&#34;mcx-num&#34; cx=&#34;26&#34; cy=&#34;26&#34; r=&#34;15&#34;/&gt;&lt;text class=&#34;mcx-num-text&#34; x=&#34;26&#34; y=&#34;31&#34;&gt;3&lt;/text&gt;
      &lt;g class=&#34;mcx-icon&#34; transform=&#34;translate(66 22)&#34;&gt;
        &lt;path d=&#34;M16 10 A16 16 0 1 0 32 10&#34;/&gt;
        &lt;line x1=&#34;24&#34; y1=&#34;2&#34; x2=&#34;24&#34; y2=&#34;22&#34;/&gt;
      &lt;/g&gt;
      &lt;text class=&#34;mcx-label&#34; x=&#34;90&#34; y=&#34;100&#34;&gt;Boot from it&lt;/text&gt;
      &lt;text class=&#34;mcx-sub&#34; x=&#34;90&#34; y=&#34;121&#34;&gt;On the controller&lt;/text&gt;
    &lt;/g&gt;
  &lt;/a&gt;

  &lt;!-- 4 --&gt;
  &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/install/usb/#install-the-image&#34; aria-label=&#34;Install the image on the controller&#39;s disk&#34;&gt;
    &lt;title&gt;Install the image on the controller&#39;s disk&lt;/title&gt;
    &lt;g class=&#34;mcx-step&#34; transform=&#34;translate(640 20)&#34;&gt;
      &lt;rect class=&#34;mcx-card&#34; width=&#34;180&#34; height=&#34;140&#34; rx=&#34;12&#34;/&gt;
      &lt;circle class=&#34;mcx-num&#34; cx=&#34;26&#34; cy=&#34;26&#34; r=&#34;15&#34;/&gt;&lt;text class=&#34;mcx-num-text&#34; x=&#34;26&#34; y=&#34;31&#34;&gt;4&lt;/text&gt;
      &lt;g class=&#34;mcx-icon&#34; transform=&#34;translate(66 22)&#34;&gt;
        &lt;rect x=&#34;4&#34; y=&#34;26&#34; width=&#34;40&#34; height=&#34;16&#34; rx=&#34;3&#34;/&gt;
        &lt;circle cx=&#34;36&#34; cy=&#34;34&#34; r=&#34;2&#34;/&gt;
        &lt;line x1=&#34;24&#34; y1=&#34;2&#34; x2=&#34;24&#34; y2=&#34;20&#34;/&gt;
        &lt;path d=&#34;M17 13 L24 20 L31 13&#34;/&gt;
      &lt;/g&gt;
      &lt;text class=&#34;mcx-label&#34; x=&#34;90&#34; y=&#34;100&#34;&gt;Install&lt;/text&gt;
      &lt;text class=&#34;mcx-sub&#34; x=&#34;90&#34; y=&#34;121&#34;&gt;mci restore to its disk&lt;/text&gt;
    &lt;/g&gt;
  &lt;/a&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;h2 id=&#34;before-you-start&#34;&gt;Before you start&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Intel image and the imager stick image, both downloaded from the store: see &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/download/#industrial-pc&#34;&gt;Download&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An empty USB drive of at least 8 GB.&lt;/li&gt;
&lt;li&gt;A keyboard and a display for the controller, or a network cable between your PC and the controller.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;create-the-imager-stick&#34;&gt;Create the imager stick&lt;/h2&gt;



 
 




 



&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;
 &lt;p&gt;Writing the imager stick image erases everything on the USB drive.&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;Insert the USB drive into your PC, then write the imager stick image to it. Select the operating system of your PC:&lt;/p&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1&#34; role=&#34;tablist&#34;&gt;&lt;li class=&#34;nav-item&#34;&gt;&lt;a data-toggle=&#34;tab&#34; class=&#34;nav-link active&#34; href=&#34;#ubuntu&#34; data-target=&#34;#tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1-0&#34; role=&#34;tab&#34; aria-controls=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1-0&#34; aria-selected=&#34;true&#34; data-slug=&#34;ubuntu&#34;&gt;&lt;span class=&#34;fab fa-ubuntu&#34; style=&#34;margin-right:.25em&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
Ubuntu&lt;/a&gt;&lt;/li&gt;&lt;li class=&#34;nav-item&#34;&gt;&lt;a data-toggle=&#34;tab&#34; class=&#34;nav-link&#34; href=&#34;#windows&#34; data-target=&#34;#tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1-1&#34; role=&#34;tab&#34; aria-controls=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1-1&#34; data-slug=&#34;windows&#34;&gt;&lt;span class=&#34;fab fa-windows&#34; style=&#34;margin-right:.25em&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
Windows&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1&#34;&gt;&lt;div id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1-0&#34; class=&#34;td-content tab-pane show active&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1-0&#34;&gt;&lt;br&gt;
  &lt;span id=&#34;ubuntu&#34;&gt;&lt;/span&gt;&lt;p&gt;Ubuntu writes the image with its Disks tool, through &lt;code&gt;Disk Image Writer&lt;/code&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In your file manager, right-click the imager stick image (&lt;code&gt;…mcx-clonezilla….img.xz&lt;/code&gt;) and choose &lt;code&gt;Open With&lt;/code&gt; › &lt;code&gt;Disk Image Writer&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;code&gt;Restore Disk Image&lt;/code&gt; window, set &lt;code&gt;Destination&lt;/code&gt; to your USB drive. Check the size and name: the wrong choice erases another disk.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;Start Restoring...&lt;/code&gt; and confirm.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/usb/_media/ubuntu-restore-disk-image.png&#34;
         alt=&#34;Restore Disk Image window with the imager stick image selected, the Destination list and the Start Restoring button highlighted&#34; width=&#34;600&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When writing is done, Ubuntu mounts the &lt;code&gt;ImageData&lt;/code&gt; partition of the stick.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    Watch it as a video
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;iframe src=&#34;https://player.vimeo.com/video/849476876&#34; width=&#34;960&#34; height=&#34;540&#34; frameborder=&#34;0&#34; allow=&#34;autoplay; fullscreen; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;

  &lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1-1&#34; class=&#34;td-content tab-pane&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1-1&#34;&gt;&lt;br&gt;
  &lt;span id=&#34;windows&#34;&gt;&lt;/span&gt;&lt;p&gt;Windows has no built-in tool to write a disk image, so you use a separate one such as 
&lt;a href=&#34;https://rufus.ie/en&#34; target=&#34;_blank&#34;&gt;Rufus&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install and start the disk image writer.&lt;/li&gt;
&lt;li&gt;Select your USB drive and the imager stick image (&lt;code&gt;…mcx-clonezilla….img.xz&lt;/code&gt;). Check that you picked the USB drive: the wrong choice erases another disk.&lt;/li&gt;
&lt;li&gt;Start writing and wait until it is done.&lt;/li&gt;
&lt;li&gt;The stick now shows up as a drive called &lt;code&gt;ImageData&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;script&gt;
 (function(tabsetId){
  
  
  var fromTabClick = false;

  function activateFromHash(){
    try{
      if(fromTabClick) return;
      var hash = decodeURIComponent(window.location.hash || &#39;&#39;);
      if(!hash) return;
      if(hash.charAt(0) === &#39;#&#39;) hash = hash.slice(1);
      var esc = (window.CSS &amp;&amp; CSS.escape) ? CSS.escape(hash) : hash;
      var selector = &#39;#&#39; + tabsetId + &#39; .nav-link[data-slug=&#34;&#39; + esc + &#39;&#34;]&#39;;
      var link = document.querySelector(selector);
      if(link){
        if(!link.classList.contains(&#39;active&#39;)) link.click();
        
        
        
        var nav = link.closest(&#39;.nav-tabs&#39;);
        if(nav){
          window.requestAnimationFrame(function(){
            var top = nav.getBoundingClientRect().top + window.pageYOffset - 90;
            window.scrollTo({top: top, behavior: &#39;smooth&#39;});
          });
        }
      }
    }catch(e){   }
  }
  
  if(document.readyState === &#39;loading&#39;){
    document.addEventListener(&#39;DOMContentLoaded&#39;, function(){ activateFromHash(); attachClickHandlers(); });
  } else { activateFromHash(); attachClickHandlers(); }
  window.addEventListener(&#39;hashchange&#39;, activateFromHash);

  
  function attachClickHandlers(){
    try{
      var links = document.querySelectorAll(&#39;#&#39; + tabsetId + &#39; .nav-link[data-slug]&#39;);
      Array.prototype.forEach.call(links, function(link){
        link.addEventListener(&#39;click&#39;, function(e){
          var slug = link.getAttribute(&#39;data-slug&#39;) || &#39;&#39;;
          if(!slug) return;
          var newHash = &#39;#&#39; + slug;
          if(history &amp;&amp; history.pushState){
            
            history.pushState(null, &#39;&#39;, newHash);
            
            fromTabClick = true;
            try { window.dispatchEvent(new HashChangeEvent(&#39;hashchange&#39;)); }
            finally { fromTabClick = false; }
          } else {
            
            window.location.hash = slug;
          }
        }, false);
      });
    }catch(e){   }
  }
 })(&#39;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-1&#39;);
&lt;/script&gt;

&lt;p&gt;There is no tested procedure for macOS yet. Use an Ubuntu or Windows PC to create the stick.&lt;/p&gt;
&lt;h2 id=&#34;copy-the-image-onto-the-stick&#34;&gt;Copy the image onto the stick&lt;/h2&gt;
&lt;p&gt;The stick has a partition called &lt;code&gt;ImageData&lt;/code&gt;. The imager looks there for the images it can install.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the &lt;code&gt;ImageData&lt;/code&gt; partition of the stick in your file manager.&lt;/li&gt;
&lt;li&gt;Copy the Intel image (the &lt;code&gt;.img.xz&lt;/code&gt; file) into it.&lt;/li&gt;
&lt;li&gt;Eject the stick safely before you pull it out.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;boot-the-controller-from-the-stick&#34;&gt;Boot the controller from the stick&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Switch the controller off.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Insert the imager stick into a USB port of the controller.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Switch the controller on. It boots from the stick.&lt;/p&gt;
&lt;p&gt;If it starts from its internal disk instead, enable booting from USB in the controller&amp;rsquo;s &lt;span class=&#34;mcx-term&#34; tabindex=&#34;0&#34;&gt;BIOS&lt;span class=&#34;mcx-term-tip&#34; role=&#34;tooltip&#34;&gt;The BIOS or UEFI setup is the firmware menu of a PC, where you choose which drive it starts from. You usually open it by pressing a key such as Del or F2 while the PC starts.&lt;/span&gt;&lt;/span&gt;
, or pick the stick in its boot menu.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    Watch the boot and install as a video
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;iframe src=&#34;https://player.vimeo.com/video/850575289&#34; width=&#34;960&#34; height=&#34;540&#34; frameborder=&#34;0&#34; allow=&#34;autoplay; fullscreen; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;

  &lt;/div&gt;
&lt;/details&gt;
&lt;h2 id=&#34;open-the-imager-terminal&#34;&gt;Open the imager terminal&lt;/h2&gt;
&lt;p&gt;You give the imager its commands in a terminal. Open it on the controller itself, or from your PC over the network:&lt;/p&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2&#34; role=&#34;tablist&#34;&gt;&lt;li class=&#34;nav-item&#34;&gt;&lt;a data-toggle=&#34;tab&#34; class=&#34;nav-link active&#34; href=&#34;#keyboard-and-display&#34; data-target=&#34;#tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2-0&#34; role=&#34;tab&#34; aria-controls=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2-0&#34; aria-selected=&#34;true&#34; data-slug=&#34;keyboard-and-display&#34;&gt;&lt;span class=&#34;fas fa-desktop&#34; style=&#34;margin-right:.25em&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
Keyboard and display&lt;/a&gt;&lt;/li&gt;&lt;li class=&#34;nav-item&#34;&gt;&lt;a data-toggle=&#34;tab&#34; class=&#34;nav-link&#34; href=&#34;#ssh&#34; data-target=&#34;#tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2-1&#34; role=&#34;tab&#34; aria-controls=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2-1&#34; data-slug=&#34;ssh&#34;&gt;&lt;span class=&#34;fas fa-terminal&#34; style=&#34;margin-right:.25em&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
SSH&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2&#34;&gt;&lt;div id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2-0&#34; class=&#34;td-content tab-pane show active&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2-0&#34;&gt;&lt;br&gt;
  &lt;span id=&#34;keyboard-and-display&#34;&gt;&lt;/span&gt;&lt;p&gt;Connect a keyboard and a display to the controller. After the stick has booted, the display shows the imager terminal, ready for a command. If it asks you to log in, use the user &lt;code&gt;admin&lt;/code&gt; and the password &lt;code&gt;vectioneer&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/usb/_media/screen-connect-clonezilla.png&#34;
         alt=&#34;Imager terminal on the controller&amp;#39;s display after booting from the stick&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/div&gt;&lt;div id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2-1&#34; class=&#34;td-content tab-pane&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2-1&#34;&gt;&lt;br&gt;
  &lt;span id=&#34;ssh&#34;&gt;&lt;/span&gt;&lt;p&gt;With &lt;span class=&#34;mcx-term&#34; tabindex=&#34;0&#34;&gt;SSH&lt;span class=&#34;mcx-term-tip&#34; role=&#34;tooltip&#34;&gt;SSH (Secure Shell) opens a terminal on another computer over the network. Ubuntu, macOS and Windows 10 and later have the &lt;code&gt;ssh&lt;/code&gt; command built in.&lt;/span&gt;&lt;/span&gt;
 you open the imager terminal from your PC, without a keyboard or display on the controller.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Connect your PC to the controller&amp;rsquo;s network port with a network cable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Give your PC&amp;rsquo;s network adapter an address in the &lt;code&gt;192.168.2.x&lt;/code&gt; range, for example &lt;code&gt;192.168.2.10&lt;/code&gt;: see &lt;a href=&#34;/docs/getting-started/connect-your-pc/configure-your-network/&#34;&gt;Configure your network&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open a terminal on your PC and connect to the controller at &lt;span class=&#34;mcx-ip&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;controller_ip_address&lt;/code&gt;&lt;span class=&#34;mcx-ip-tip&#34; role=&#34;tooltip&#34;&gt;The IP address of your controller. In most cases 192.168.2.100.&lt;/span&gt;&lt;/span&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;ssh admin@controller_ip_address
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Log in with the password &lt;code&gt;vectioneer&lt;/code&gt;. The terminal shows the imager&amp;rsquo;s welcome text.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/usb/_media/ssh-connect-clonezilla.png&#34;
         alt=&#34;Terminal after ssh admin@192.168.2.100: Clonezilla with motorcortex imaging scripts, quickstart mci restore or mci backup, more information mci-help&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Run &lt;code&gt;mci-help&lt;/code&gt; for more information on the imager commands.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;script&gt;
 (function(tabsetId){
  
  
  var fromTabClick = false;

  function activateFromHash(){
    try{
      if(fromTabClick) return;
      var hash = decodeURIComponent(window.location.hash || &#39;&#39;);
      if(!hash) return;
      if(hash.charAt(0) === &#39;#&#39;) hash = hash.slice(1);
      var esc = (window.CSS &amp;&amp; CSS.escape) ? CSS.escape(hash) : hash;
      var selector = &#39;#&#39; + tabsetId + &#39; .nav-link[data-slug=&#34;&#39; + esc + &#39;&#34;]&#39;;
      var link = document.querySelector(selector);
      if(link){
        if(!link.classList.contains(&#39;active&#39;)) link.click();
        
        
        
        var nav = link.closest(&#39;.nav-tabs&#39;);
        if(nav){
          window.requestAnimationFrame(function(){
            var top = nav.getBoundingClientRect().top + window.pageYOffset - 90;
            window.scrollTo({top: top, behavior: &#39;smooth&#39;});
          });
        }
      }
    }catch(e){   }
  }
  
  if(document.readyState === &#39;loading&#39;){
    document.addEventListener(&#39;DOMContentLoaded&#39;, function(){ activateFromHash(); attachClickHandlers(); });
  } else { activateFromHash(); attachClickHandlers(); }
  window.addEventListener(&#39;hashchange&#39;, activateFromHash);

  
  function attachClickHandlers(){
    try{
      var links = document.querySelectorAll(&#39;#&#39; + tabsetId + &#39; .nav-link[data-slug]&#39;);
      Array.prototype.forEach.call(links, function(link){
        link.addEventListener(&#39;click&#39;, function(e){
          var slug = link.getAttribute(&#39;data-slug&#39;) || &#39;&#39;;
          if(!slug) return;
          var newHash = &#39;#&#39; + slug;
          if(history &amp;&amp; history.pushState){
            
            history.pushState(null, &#39;&#39;, newHash);
            
            fromTabClick = true;
            try { window.dispatchEvent(new HashChangeEvent(&#39;hashchange&#39;)); }
            finally { fromTabClick = false; }
          } else {
            
            window.location.hash = slug;
          }
        }, false);
      });
    }catch(e){   }
  }
 })(&#39;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-2&#39;);
&lt;/script&gt;

&lt;h2 id=&#34;install-the-image&#34;&gt;Install the image&lt;/h2&gt;
&lt;p&gt;The imager has two commands: &lt;code&gt;mci restore&lt;/code&gt; writes an image from the stick to the controller&amp;rsquo;s disk, and &lt;code&gt;mci backup&lt;/code&gt; saves the controller&amp;rsquo;s disk to the stick. To keep what is on the controller now, back it up first.&lt;/p&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3&#34; role=&#34;tablist&#34;&gt;&lt;li class=&#34;nav-item&#34;&gt;&lt;a data-toggle=&#34;tab&#34; class=&#34;nav-link active&#34; href=&#34;#install&#34; data-target=&#34;#tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3-0&#34; role=&#34;tab&#34; aria-controls=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3-0&#34; aria-selected=&#34;true&#34; data-slug=&#34;install&#34;&gt;&lt;span class=&#34;fas fa-download&#34; style=&#34;margin-right:.25em&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
Install&lt;/a&gt;&lt;/li&gt;&lt;li class=&#34;nav-item&#34;&gt;&lt;a data-toggle=&#34;tab&#34; class=&#34;nav-link&#34; href=&#34;#back-up&#34; data-target=&#34;#tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3-1&#34; role=&#34;tab&#34; aria-controls=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3-1&#34; data-slug=&#34;back-up&#34;&gt;&lt;span class=&#34;fas fa-save&#34; style=&#34;margin-right:.25em&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
Back up&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3&#34;&gt;&lt;div id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3-0&#34; class=&#34;td-content tab-pane show active&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3-0&#34;&gt;&lt;br&gt;
  &lt;span id=&#34;install&#34;&gt;&lt;/span&gt;


 
 




 



&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;
 &lt;p&gt;Installing the image erases everything on the disk you choose. Back up the controller first if you want to keep its current software or settings.&lt;/p&gt;
&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Start the install:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;mci restore
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose the image to install: the Intel image you copied into &lt;code&gt;ImageData&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose the disk to install it on: the controller&amp;rsquo;s internal disk, usually &lt;code&gt;/dev/sda&lt;/code&gt;. The disk must be at least as large as the image.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wait until the imager is done, which takes a while. It ends with &lt;code&gt;Done:&lt;/code&gt; and the partitions of the disk.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/usb/_media/clonezilla-install-mcx.png&#34;
         alt=&#34;End of the mci restore output: the filesystem on /dev/sda2 is resized, the partition table shows an EFI and a platform partition, followed by Done&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check the output for errors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pull out the imager stick and restart the controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;sudo reboot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The controller now starts MCX-RTOS from its disk.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3-1&#34; class=&#34;td-content tab-pane&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3-1&#34;&gt;&lt;br&gt;
  &lt;span id=&#34;back-up&#34;&gt;&lt;/span&gt;&lt;p&gt;A backup saves the controller&amp;rsquo;s disk as an image on the stick, so you can install it again later with &lt;code&gt;mci restore&lt;/code&gt;. Make sure the stick has enough free space.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Start the backup:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;mci backup
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose the source disk: the controller&amp;rsquo;s internal disk, usually &lt;code&gt;/dev/sda&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose the target directory on the stick. The imager offers a new directory named after the date and time, for example &lt;code&gt;/mnt/usb/2026-01-06_15-44-42_mci-fsa-image&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;Choose Source Device:
1) sda /dev/sda
...
Choose Target Image Directory:
1) /mnt/usb/2026-01-06_15-44-42_mci-fsa-image   (new directory)
...
Done
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wait until the imager shows &lt;code&gt;Done&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pull out the imager stick and restart the controller:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;sudo reboot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The backup is a directory of filesystem archives, not a raw disk image. &lt;code&gt;mci restore&lt;/code&gt; can install it, but a virtual machine such as QEMU cannot start from it.&lt;/p&gt;
&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    Make a raw disk image for QEMU
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;p&gt;A raw disk image is one file with the whole disk in it, which QEMU can start. You make it by restoring the backup into an empty image file on the stick. The stick needs room for the backup and for the full image file, 6 GB in this example.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Go to the stick and check it is mounted:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#204a87&#34;&gt;cd&lt;/span&gt; /mnt/usb
ls -lart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create an empty 6 GB image file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;truncate -s 6G temp.img
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Attach it as a loop device and see which one it got:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;sudo losetup -fP temp.img
losetup -a
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;/dev/loop1: []: (/mnt/usb/temp.img)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Back up the controller as above with &lt;code&gt;mci backup&lt;/code&gt;, if you have not done so yet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Restore the backup into the loop device. Use the loop device from step 3:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;mci restore -d /dev/loop1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check that the loop device now has partitions:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;lsblk
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop1      7:1    0     6G  0 loop
├─loop1p1 259:2    0    34M  0 part
└─loop1p2 259:3    0     6G  0 part
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Detach the loop device:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;sudo losetup -d /dev/loop1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check the partition table of the image file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;fdisk -l temp.img
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;Disklabel type: gpt

Device     Start      End  Sectors Size Type
temp.img1   2048    71615    69568  34M EFI System
temp.img2  71616 12582847 12511232   6G Linux filesystem
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;temp.img&lt;/code&gt; is now a raw disk image. You can start it in QEMU: see &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/&#34;&gt;Run a virtual machine&lt;/a&gt;.&lt;/p&gt;

  &lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;script&gt;
 (function(tabsetId){
  
  
  var fromTabClick = false;

  function activateFromHash(){
    try{
      if(fromTabClick) return;
      var hash = decodeURIComponent(window.location.hash || &#39;&#39;);
      if(!hash) return;
      if(hash.charAt(0) === &#39;#&#39;) hash = hash.slice(1);
      var esc = (window.CSS &amp;&amp; CSS.escape) ? CSS.escape(hash) : hash;
      var selector = &#39;#&#39; + tabsetId + &#39; .nav-link[data-slug=&#34;&#39; + esc + &#39;&#34;]&#39;;
      var link = document.querySelector(selector);
      if(link){
        if(!link.classList.contains(&#39;active&#39;)) link.click();
        
        
        
        var nav = link.closest(&#39;.nav-tabs&#39;);
        if(nav){
          window.requestAnimationFrame(function(){
            var top = nav.getBoundingClientRect().top + window.pageYOffset - 90;
            window.scrollTo({top: top, behavior: &#39;smooth&#39;});
          });
        }
      }
    }catch(e){   }
  }
  
  if(document.readyState === &#39;loading&#39;){
    document.addEventListener(&#39;DOMContentLoaded&#39;, function(){ activateFromHash(); attachClickHandlers(); });
  } else { activateFromHash(); attachClickHandlers(); }
  window.addEventListener(&#39;hashchange&#39;, activateFromHash);

  
  function attachClickHandlers(){
    try{
      var links = document.querySelectorAll(&#39;#&#39; + tabsetId + &#39; .nav-link[data-slug]&#39;);
      Array.prototype.forEach.call(links, function(link){
        link.addEventListener(&#39;click&#39;, function(e){
          var slug = link.getAttribute(&#39;data-slug&#39;) || &#39;&#39;;
          if(!slug) return;
          var newHash = &#39;#&#39; + slug;
          if(history &amp;&amp; history.pushState){
            
            history.pushState(null, &#39;&#39;, newHash);
            
            fromTabClick = true;
            try { window.dispatchEvent(new HashChangeEvent(&#39;hashchange&#39;)); }
            finally { fromTabClick = false; }
          } else {
            
            window.location.hash = slug;
          }
        }, false);
      });
    }catch(e){   }
  }
 })(&#39;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallusb-3&#39;);
&lt;/script&gt;



&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Next: &lt;span class=&#34;fas fa-arrow-alt-circle-right&#34;  aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
&lt;a href=&#34;/docs/getting-started/connect-your-pc/&#34;&gt;Step 2: connect your PC&lt;/a&gt;.&lt;/p&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Install on a Raspberry Pi</title>
      <link>/docs/getting-started/install-mcxos/install-rtos/install/sdcard/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/getting-started/install-mcxos/install-rtos/install/sdcard/</guid>
      <description>
        
        
        &lt;p&gt;A Raspberry Pi runs MCX-RTOS from its microSD card. You write the image to the card on your PC with Raspberry Pi Imager, let the image use the whole card, and put the card in the Pi. For a Raspberry Pi Compute Module, which has built-in storage instead of a card, see &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/install/sdcard/rpi-compute-module-install/&#34;&gt;Install on a Compute Module&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;before-you-start&#34;&gt;Before you start&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Raspberry Pi image, downloaded from the store: see &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/download/#raspberry-pi&#34;&gt;Download&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A microSD card and a card reader for your PC.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;write-the-image-to-the-card&#34;&gt;Write the image to the card&lt;/h2&gt;



 
 




 



&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;
 &lt;p&gt;Writing the image erases everything on the SD card.&lt;/p&gt;
&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download Raspberry Pi Imager for your operating system from 
&lt;a href=&#34;https://www.raspberrypi.com/software&#34; target=&#34;_blank&#34;&gt;raspberrypi.com/software&lt;/a&gt; and install it.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/sdcard/_media/raspberry-pi-imager-download.png&#34;
         alt=&#34;Download page of Raspberry Pi Imager with a download button per operating system&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Insert the SD card into your PC and open Raspberry Pi Imager. The labels below are those of the version in the screenshots; newer versions word them differently.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/sdcard/_media/raspberry-pi-imager.png&#34;
         alt=&#34;Raspberry Pi Imager with the CHOOSE OS, CHOOSE STORAGE and WRITE buttons&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;CHOOSE OS&lt;/code&gt;, scroll down and choose &lt;code&gt;Use custom&lt;/code&gt;. Select the Raspberry Pi image you downloaded.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/sdcard/_media/raspberry-pi-imager-operating-system.png&#34;
         alt=&#34;Operating System list in Raspberry Pi Imager, with Use custom at the bottom: select a custom .img from your computer&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;CHOOSE STORAGE&lt;/code&gt; and select the SD card.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/sdcard/_media/raspberry-pi-imager-storage.png&#34;
         alt=&#34;Storage list in Raspberry Pi Imager with the SD card&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;WRITE&lt;/code&gt;. Raspberry Pi Imager warns that all data on the card will be erased; press &lt;code&gt;YES&lt;/code&gt; to go on.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/sdcard/_media/raspberry-pi-imager-warning.png&#34;
         alt=&#34;Warning in Raspberry Pi Imager that all existing data on the card will be erased, with the YES and NO buttons&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wait until writing and verifying are done.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;use-the-whole-card&#34;&gt;Use the whole card&lt;/h2&gt;
&lt;p&gt;The image only fills part of the card. Grow its second partition to the end of the card, so MCX-RTOS can use all of it. This uses &lt;span class=&#34;mcx-term&#34; tabindex=&#34;0&#34;&gt;GParted&lt;span class=&#34;mcx-term-tip&#34; role=&#34;tooltip&#34;&gt;GParted is a free partition editor for Linux. It resizes, moves and creates partitions on a disk.&lt;/span&gt;&lt;/span&gt;
 on a Linux PC.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install GParted, for example with &lt;code&gt;sudo apt install gparted&lt;/code&gt; on Ubuntu, and open it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;At the top right, select the SD card. Select its second partition and press &lt;span class=&#34;fas fa-arrow-right&#34;  aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
 (&lt;code&gt;Resize/Move&lt;/code&gt;).&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/sdcard/_media/01-sdcard-disk-partition.png&#34;
         alt=&#34;GParted with the SD card /dev/mmcblk0 selected, its second partition highlighted, unallocated space behind it and the resize button marked&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set &lt;code&gt;New size (MiB)&lt;/code&gt; to the maximum and press &lt;code&gt;Resize/Move&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/sdcard/_media/02-sdcard-disk-partition.png&#34;
         alt=&#34;Resize/Move dialog of GParted with New size set to the maximum size of 15039 MiB&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;span class=&#34;fas fa-check&#34;  aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
 (&lt;code&gt;Apply All Operations&lt;/code&gt;) to apply the change to the card.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/sdcard/_media/03-sdcard-disk-partition.png&#34;
         alt=&#34;GParted with one pending operation, growing the second partition from 1.26 GiB to 14.69 GiB, and the apply button marked&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Eject the SD card, put it in the Raspberry Pi and switch the Pi on.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;connect-to-the-raspberry-pi&#34;&gt;Connect to the Raspberry Pi&lt;/h2&gt;
&lt;p&gt;A standard Raspberry Pi has one network port, and MCX-RTOS uses it for the EtherCAT network. You reach the controller over Wi-Fi, or through a second wired network adapter such as a USB-to-Ethernet adapter.&lt;/p&gt;
&lt;p&gt;Without a second adapter, the Raspberry Pi opens its own Wi-Fi network. This needs a Raspberry Pi model with Wi-Fi.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On your PC, connect to the Wi-Fi network of the controller, for example &lt;code&gt;mcx-fa3c06&lt;/code&gt;, with the password &lt;code&gt;vectioneer&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The controller&amp;rsquo;s address on that network is &lt;code&gt;192.168.0.1&lt;/code&gt;. Use it wherever these pages say &lt;span class=&#34;mcx-ip&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;controller_ip_address&lt;/code&gt;&lt;span class=&#34;mcx-ip-tip&#34; role=&#34;tooltip&#34;&gt;The IP address of your controller. In most cases 192.168.2.100.&lt;/span&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To join the controller to an existing Wi-Fi network instead, or to change its access point, see &lt;a href=&#34;/docs/software-maintenance/network-configuration/&#34;&gt;Network configuration&lt;/a&gt;.&lt;/p&gt;



 
 






&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
 &lt;p&gt;On a wired connection to a Raspberry Pi, ARP sometimes has to be switched on first: &lt;code&gt;sudo ifconfig eth0 arp&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;




&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Next: &lt;span class=&#34;fas fa-arrow-alt-circle-right&#34;  aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
&lt;a href=&#34;/docs/getting-started/connect-your-pc/&#34;&gt;Step 2: connect your PC&lt;/a&gt;.&lt;/p&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Run a virtual machine</title>
      <link>/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/</guid>
      <description>
        
        
        &lt;p&gt;A virtual machine runs MCX-RTOS on your own PC, so you can try Motorcortex without controller hardware. It has no EtherCAT devices, so the application must run in &lt;a href=&#34;/docs/software-maintenance/simulation-mode/&#34;&gt;simulation mode&lt;/a&gt;. On Ubuntu you run it in QEMU; on Windows in VirtualBox.&lt;/p&gt;
&lt;h2 id=&#34;before-you-start&#34;&gt;Before you start&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The image for your virtual machine, downloaded from the store: see &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/download/#virtual-machine&#34;&gt;Download&lt;/a&gt;. QEMU takes the Intel disk image, VirtualBox the &lt;code&gt;.ova&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;A PC whose processor supports virtualization, with at least 8 GB of memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;set-up-the-virtual-machine&#34;&gt;Set up the virtual machine&lt;/h2&gt;
&lt;p&gt;Select the operating system of your PC:&lt;/p&gt;
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1&#34; role=&#34;tablist&#34;&gt;&lt;li class=&#34;nav-item&#34;&gt;&lt;a data-toggle=&#34;tab&#34; class=&#34;nav-link active&#34; href=&#34;#ubuntu&#34; data-target=&#34;#tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-0&#34; role=&#34;tab&#34; aria-controls=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-0&#34; aria-selected=&#34;true&#34; data-slug=&#34;ubuntu&#34;&gt;&lt;span class=&#34;fab fa-ubuntu&#34; style=&#34;margin-right:.25em&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
Ubuntu&lt;/a&gt;&lt;/li&gt;&lt;li class=&#34;nav-item&#34;&gt;&lt;a data-toggle=&#34;tab&#34; class=&#34;nav-link&#34; href=&#34;#windows&#34; data-target=&#34;#tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-1&#34; role=&#34;tab&#34; aria-controls=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-1&#34; data-slug=&#34;windows&#34;&gt;&lt;span class=&#34;fab fa-windows&#34; style=&#34;margin-right:.25em&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
Windows&lt;/a&gt;&lt;/li&gt;&lt;li class=&#34;nav-item&#34;&gt;&lt;a data-toggle=&#34;tab&#34; class=&#34;nav-link&#34; href=&#34;#virtualbox-on-ubuntu&#34; data-target=&#34;#tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-2&#34; role=&#34;tab&#34; aria-controls=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-2&#34; data-slug=&#34;virtualbox-on-ubuntu&#34;&gt;&lt;span class=&#34;fas fa-box&#34; style=&#34;margin-right:.25em&#34; aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
VirtualBox on Ubuntu&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class=&#34;tab-content&#34; id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1&#34;&gt;&lt;div id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-0&#34; class=&#34;td-content tab-pane show active&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-0&#34;&gt;&lt;br&gt;
  &lt;span id=&#34;ubuntu&#34;&gt;&lt;/span&gt;&lt;p&gt;&lt;span class=&#34;mcx-term&#34; tabindex=&#34;0&#34;&gt;QEMU&lt;span class=&#34;mcx-term-tip&#34; role=&#34;tooltip&#34;&gt;QEMU is a free program that runs a virtual machine. With KVM, the virtualization built into the Linux kernel, the virtual machine runs at close to the speed of your PC.&lt;/span&gt;&lt;/span&gt;
 starts the Intel disk image as a virtual machine. Three scripts do the work: one starts QEMU, and two set up and remove the network between your PC and the virtual machine.&lt;/p&gt;
&lt;h4 id=&#34;how-the-virtual-machine-reaches-your-pc&#34;&gt;How the virtual machine reaches your PC&lt;/h4&gt;
&lt;p&gt;QEMU connects the virtual machine to a &lt;span class=&#34;mcx-term&#34; tabindex=&#34;0&#34;&gt;TAP device&lt;span class=&#34;mcx-term-tip&#34; role=&#34;tooltip&#34;&gt;A TAP device is a virtual network port on your PC. What QEMU sends into it comes out of the virtual machine&amp;rsquo;s network card, and the other way round.&lt;/span&gt;&lt;/span&gt;
, &lt;code&gt;tap0&lt;/code&gt;. The script &lt;code&gt;network-up.sh&lt;/code&gt; adds &lt;code&gt;tap0&lt;/code&gt; to a bridge, &lt;code&gt;br0&lt;/code&gt;, and gives your PC the address &lt;code&gt;192.168.2.15&lt;/code&gt; on it. The controller in the virtual machine has the fixed address &lt;code&gt;192.168.2.100&lt;/code&gt;, so your PC reaches it at &lt;span class=&#34;mcx-ip&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;controller_ip_address&lt;/code&gt;&lt;span class=&#34;mcx-ip-tip&#34; role=&#34;tooltip&#34;&gt;The IP address of your controller. In most cases 192.168.2.100.&lt;/span&gt;&lt;/span&gt; without further network settings. When QEMU stops, &lt;code&gt;network-down.sh&lt;/code&gt; removes the bridge again.&lt;/p&gt;
&lt;div class=&#34;mcx-svg mcx-gs-qemu&#34; role=&#34;group&#34; aria-label=&#34;Your PC runs your browser and ssh. They reach the bridge br0, which has the address 192.168.2.15/24 and is set up by network-up.sh. The bridge connects to tap0, the TAP device created by QEMU, which leads to the virtio network card of MCX-RTOS in QEMU, the controller at 192.168.2.100.&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 820 196&#34; width=&#34;100%&#34;&gt;
  &lt;defs&gt;
    &lt;marker id=&#34;mcx-gsq-arrow&#34; viewBox=&#34;0 0 10 10&#34; refX=&#34;8&#34; refY=&#34;5&#34; markerWidth=&#34;7&#34; markerHeight=&#34;7&#34; orient=&#34;auto-start-reverse&#34;&gt;
      &lt;path d=&#34;M0 0 L10 5 L0 10 z&#34; class=&#34;mcx-gsq-head&#34;/&gt;
    &lt;/marker&gt;
  &lt;/defs&gt;

  &lt;rect class=&#34;mcx-gsq-pc&#34; x=&#34;10&#34; y=&#34;10&#34; width=&#34;800&#34; height=&#34;176&#34; rx=&#34;14&#34;/&gt;
  &lt;text class=&#34;mcx-gsq-pctitle&#34; x=&#34;30&#34; y=&#34;40&#34;&gt;Your PC (Ubuntu)&lt;/text&gt;

  &lt;line class=&#34;mcx-gsq-link&#34; x1=&#34;182&#34; y1=&#34;100&#34; x2=&#34;226&#34; y2=&#34;100&#34; marker-start=&#34;url(#mcx-gsq-arrow)&#34; marker-end=&#34;url(#mcx-gsq-arrow)&#34;/&gt;
  &lt;line class=&#34;mcx-gsq-link&#34; x1=&#34;402&#34; y1=&#34;100&#34; x2=&#34;446&#34; y2=&#34;100&#34; marker-start=&#34;url(#mcx-gsq-arrow)&#34; marker-end=&#34;url(#mcx-gsq-arrow)&#34;/&gt;
  &lt;line class=&#34;mcx-gsq-link&#34; x1=&#34;562&#34; y1=&#34;100&#34; x2=&#34;606&#34; y2=&#34;100&#34; marker-start=&#34;url(#mcx-gsq-arrow)&#34; marker-end=&#34;url(#mcx-gsq-arrow)&#34;/&gt;

  &lt;g class=&#34;mcx-gsq-node&#34;&gt;
    &lt;rect x=&#34;30&#34; y=&#34;66&#34; width=&#34;150&#34; height=&#34;68&#34; rx=&#34;10&#34;/&gt;
    &lt;text class=&#34;mcx-gsq-name&#34; x=&#34;105&#34; y=&#34;96&#34;&gt;Browser, ssh&lt;/text&gt;
    &lt;text class=&#34;mcx-gsq-sub&#34; x=&#34;105&#34; y=&#34;117&#34;&gt;your tools&lt;/text&gt;
  &lt;/g&gt;

  &lt;g class=&#34;mcx-gsq-node mcx-gsq-net&#34;&gt;
    &lt;rect x=&#34;230&#34; y=&#34;66&#34; width=&#34;170&#34; height=&#34;68&#34; rx=&#34;10&#34;/&gt;
    &lt;text class=&#34;mcx-gsq-name&#34; x=&#34;315&#34; y=&#34;96&#34;&gt;Bridge br0&lt;/text&gt;
    &lt;text class=&#34;mcx-gsq-ip&#34; x=&#34;315&#34; y=&#34;117&#34;&gt;192.168.2.15/24&lt;/text&gt;
  &lt;/g&gt;
  &lt;text class=&#34;mcx-gsq-note&#34; x=&#34;315&#34; y=&#34;170&#34;&gt;set up by network-up.sh&lt;/text&gt;

  &lt;g class=&#34;mcx-gsq-node mcx-gsq-net&#34;&gt;
    &lt;rect x=&#34;450&#34; y=&#34;66&#34; width=&#34;110&#34; height=&#34;68&#34; rx=&#34;10&#34;/&gt;
    &lt;text class=&#34;mcx-gsq-name&#34; x=&#34;505&#34; y=&#34;96&#34;&gt;tap0&lt;/text&gt;
    &lt;text class=&#34;mcx-gsq-sub&#34; x=&#34;505&#34; y=&#34;117&#34;&gt;TAP device&lt;/text&gt;
  &lt;/g&gt;
  &lt;text class=&#34;mcx-gsq-note&#34; x=&#34;505&#34; y=&#34;170&#34;&gt;created by QEMU&lt;/text&gt;

  &lt;g class=&#34;mcx-gsq-vm&#34;&gt;
    &lt;rect x=&#34;610&#34; y=&#34;56&#34; width=&#34;180&#34; height=&#34;88&#34; rx=&#34;12&#34;/&gt;
    &lt;text class=&#34;mcx-gsq-vmname&#34; x=&#34;700&#34; y=&#34;88&#34;&gt;MCX-RTOS in QEMU&lt;/text&gt;
    &lt;text class=&#34;mcx-gsq-vmip&#34; x=&#34;700&#34; y=&#34;112&#34;&gt;192.168.2.100&lt;/text&gt;
    &lt;text class=&#34;mcx-gsq-vmsub&#34; x=&#34;700&#34; y=&#34;131&#34;&gt;the controller&lt;/text&gt;
  &lt;/g&gt;
  &lt;text class=&#34;mcx-gsq-note&#34; x=&#34;700&#34; y=&#34;170&#34;&gt;virtio network card&lt;/text&gt;
&lt;/svg&gt;

&lt;/div&gt;

&lt;p&gt;If your PC also has a network adapter on &lt;code&gt;192.168.2.x&lt;/code&gt;, for example to a real controller, disconnect it while the virtual machine runs. Otherwise your PC does not know which of the two to use.&lt;/p&gt;
&lt;h4 id=&#34;check-that-your-pc-supports-virtualization&#34;&gt;Check that your PC supports virtualization&lt;/h4&gt;
&lt;p&gt;The scripts need Ubuntu 20.04 or later; they are tested on 22.04 and 24.04. The virtual machine takes 4 GB of memory and four processor cores.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Check that the processor supports virtualization. A number greater than 0 means it does:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;egrep -c &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;(vmx|svm)&amp;#39;&lt;/span&gt; /proc/cpuinfo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check that KVM can be used. &lt;code&gt;kvm-ok&lt;/code&gt; comes with the &lt;code&gt;cpu-checker&lt;/code&gt; package:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;sudo apt install cpu-checker
kvm-ok
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;INFO: /dev/kvm exists
KVM acceleration can be used
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If it cannot be used, switch on Intel VT-x or AMD-V in the BIOS of your PC.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;install-qemu&#34;&gt;Install QEMU&lt;/h4&gt;
&lt;p&gt;Install QEMU with KVM, and OVMF, the UEFI firmware the image starts with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;sudo apt update
sudo apt install -y qemu-system-x86 qemu-kvm ovmf bridge-utils net-tools
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;get-the-scripts&#34;&gt;Get the scripts&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download the three scripts into the folder that holds the Intel disk image:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;qemu/start-qemu-mcx-image.sh&#34;&gt;start-qemu-mcx-image.sh&lt;/a&gt;: starts QEMU&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;qemu/network-up.sh&#34;&gt;network-up.sh&lt;/a&gt;: sets up the bridge&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;qemu/network-down.sh&#34;&gt;network-down.sh&lt;/a&gt;: removes the bridge&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make them executable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;chmod +x start-qemu-mcx-image.sh network-up.sh network-down.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;start-the-virtual-machine&#34;&gt;Start the virtual machine&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In that folder, start the script with the name of the image file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;./start-qemu-mcx-image.sh mcx-image-mcx-intel.rootfs-2026.05.1-0-g34c0e28-20260508091432.wic
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The script uses &lt;code&gt;sudo&lt;/code&gt;, so it asks for your password. If only a compressed &lt;code&gt;.wic.xz&lt;/code&gt; or &lt;code&gt;.wic.gz&lt;/code&gt; file is there, the script unpacks it first and keeps the compressed file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The virtual machine starts in the same terminal: QEMU shows its console there instead of in a window.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When MCX-RTOS has started, log in from a second terminal on your PC, with the password &lt;code&gt;vectioneer&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;ssh admin@controller_ip_address
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To stop the virtual machine, run &lt;code&gt;sudo poweroff&lt;/code&gt; in it, or press &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;A&lt;/code&gt; and then &lt;code&gt;X&lt;/code&gt; in the QEMU terminal.&lt;/p&gt;
&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    What the QEMU command does
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;p&gt;&lt;code&gt;start-qemu-mcx-image.sh&lt;/code&gt; ends with this command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;sudo qemu-system-x86_64 &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    -drive &lt;span style=&#34;color:#000&#34;&gt;file&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$BASE_NAME&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;,format&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;raw,if&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;virtio &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    -m &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4096&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    -bios /usr/share/ovmf/OVMF.fd &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    -cpu Skylake-Client &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    -smp &lt;span style=&#34;color:#000&#34;&gt;cores&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    -enable-kvm &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    -netdev tap,id&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;net0,ifname&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;tap0,script&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;network-up.sh,downscript&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;network-down.sh &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    -device virtio-net-pci,netdev&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;net0 &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    -nographic
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sudo&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;TAP networking needs root rights&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;qemu-system-x86_64&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The QEMU emulator for 64-bit Intel and AMD processors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-drive file=…,format=raw,if=virtio&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The disk image as a raw disk, on a fast virtio disk controller&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-m 4096&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4096 MB of memory for the virtual machine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-bios /usr/share/ovmf/OVMF.fd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Start with UEFI firmware instead of a legacy BIOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-cpu Skylake-Client&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show the virtual machine a Skylake-generation Intel processor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-smp cores=4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Four processor cores&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-enable-kvm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use KVM, so the virtual machine runs at close to native speed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-netdev tap,…&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The network through &lt;code&gt;tap0&lt;/code&gt;, set up by &lt;code&gt;network-up.sh&lt;/code&gt; and removed by &lt;code&gt;network-down.sh&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-device virtio-net-pci,netdev=net0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A virtio network card on that network&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-nographic&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No window: the console runs in the terminal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

  &lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-1&#34; class=&#34;td-content tab-pane&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-1&#34;&gt;&lt;br&gt;
  &lt;span id=&#34;windows&#34;&gt;&lt;/span&gt;&lt;p&gt;VirtualBox runs the Motorcortex appliance, the &lt;code&gt;.ova&lt;/code&gt; file from the store. The virtual machine talks to your PC over a &lt;span class=&#34;mcx-term&#34; tabindex=&#34;0&#34;&gt;host-only network&lt;span class=&#34;mcx-term-tip&#34; role=&#34;tooltip&#34;&gt;A host-only network is a virtual network between your PC and its virtual machines only. It does not reach other computers.&lt;/span&gt;&lt;/span&gt;
, which you set up once.&lt;/p&gt;
&lt;h4 id=&#34;install-virtualbox&#34;&gt;Install VirtualBox&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download VirtualBox for Windows from 
&lt;a href=&#34;https://www.virtualbox.org/wiki/Downloads&#34; target=&#34;_blank&#34;&gt;virtualbox.org&lt;/a&gt; and open the &lt;code&gt;.exe&lt;/code&gt; file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the setup wizard, press &lt;code&gt;Next&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-vm-setup-wizard.png&#34;
         alt=&#34;Welcome page of the VirtualBox setup wizard&#34; width=&#34;400&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;Next&lt;/code&gt; twice, to keep the default features, install location and shortcuts.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-vm-setup-setup.png&#34;
         alt=&#34;Custom Setup page of the VirtualBox setup wizard with the features to install and the install location&#34; width=&#34;400&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-vm-setup-custom-setup.png&#34;
         alt=&#34;Second Custom Setup page of the VirtualBox setup wizard with the shortcut options&#34; width=&#34;400&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The wizard warns that your network connections are interrupted for a moment. Press &lt;code&gt;Yes&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-vm-setup-warning.png&#34;
         alt=&#34;Warning of the VirtualBox setup wizard about resetting the network connection&#34; width=&#34;400&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;Install&lt;/code&gt;. When Windows asks whether to install the device software, press &lt;code&gt;Install&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-vm-setup-ready-to-install.png&#34;
         alt=&#34;Ready to Install page of the VirtualBox setup wizard&#34; width=&#34;400&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-vm-setup-security.png&#34;
         alt=&#34;Windows Security: would you like to install this device software, published by Oracle Corporation, with the Install button&#34; width=&#34;400&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;Finish&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-vm-setup-finish.png&#34;
         alt=&#34;Last page of the VirtualBox setup wizard with the Finish button&#34; width=&#34;400&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;add-the-host-only-network&#34;&gt;Add the host-only network&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Open VirtualBox, go to &lt;code&gt;File&lt;/code&gt; and open &lt;code&gt;Host Network Manager...&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/virtual-machine-windows-hostnetworkmanager.png&#34;
         alt=&#34;VirtualBox File menu with Host Network Manager&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;Create&lt;/code&gt;. VirtualBox adds a &lt;code&gt;VirtualBox Host-Only Ethernet Adapter&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/virtual-machine-windows-hostnetwork-create.png&#34;
         alt=&#34;Host Network Manager with the Create button and the new host-only adapter&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;code&gt;DHCP Server&lt;/code&gt; column, tick &lt;code&gt;Enable&lt;/code&gt; for the new adapter and press &lt;code&gt;Apply&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/virtual-machine-windows-hostnetwork-properties.png&#34;
         alt=&#34;Host Network Manager with DHCP Server enabled for the host-only adapter&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;change-the-host-only-adapter-settings-in-windows&#34;&gt;Change the host-only adapter settings in Windows&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In Windows, open &lt;code&gt;Network Connections&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Right-click the connection of the &lt;code&gt;VirtualBox Host-Only Ethernet Adapter&lt;/code&gt; and choose &lt;code&gt;Properties&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Untick &lt;code&gt;VirtualBox NDIS6 Bridged Networking Driver&lt;/code&gt; and press &lt;code&gt;OK&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-hostonly-ethernet-settings.png&#34;
         alt=&#34;Properties of the VirtualBox Host-Only Ethernet Adapter connection, with VirtualBox NDIS6 Bridged Networking Driver unticked&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Restart the connection: right-click it, choose &lt;code&gt;Disable&lt;/code&gt;, then &lt;code&gt;Enable&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;import-the-motorcortex-appliance&#34;&gt;Import the Motorcortex appliance&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In VirtualBox, go to &lt;code&gt;File&lt;/code&gt; and choose &lt;code&gt;Import Appliance...&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;At &lt;code&gt;File&lt;/code&gt;, choose the &lt;code&gt;.ova&lt;/code&gt; file you downloaded and press &lt;code&gt;Next&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-install-vm-ova-import-virtual-appliance.png&#34;
         alt=&#34;Import Virtual Appliance wizard with the Motorcortex .ova file selected&#34; width=&#34;600&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In &lt;code&gt;Appliance settings&lt;/code&gt;, press &lt;code&gt;Import&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/windows-install-vm-ova-import-virtual-appliance-settings.png&#34;
         alt=&#34;Appliance settings page of the Import Virtual Appliance wizard&#34; width=&#34;600&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Connect the virtual machine to the host-only network. Select it, press &lt;code&gt;Settings&lt;/code&gt; and open &lt;code&gt;Network&lt;/code&gt;. On &lt;code&gt;Adapter 1&lt;/code&gt;, set &lt;code&gt;Name&lt;/code&gt; to &lt;code&gt;VirtualBox Host-Only Ethernet Adapter&lt;/code&gt; and press &lt;code&gt;OK&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/virtual-machine-windows-motorcortex.png&#34;
         alt=&#34;VirtualBox with the imported Motorcortex virtual machine selected&#34; width=&#34;600&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_windowsmedia/virtual-machine-windows-settings.png&#34;
         alt=&#34;Network settings of the Motorcortex virtual machine: Adapter 1 attached to Host-only Adapter, name VirtualBox Host-Only Ethernet Adapter&#34; width=&#34;600&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;If the name does not show up in the list, restart VirtualBox and try again.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;start-the-virtual-machine&#34;&gt;Start the virtual machine&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In VirtualBox, select the Motorcortex virtual machine and press &lt;code&gt;Start&lt;/code&gt;. It takes a few seconds to start.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/virtualBox-202209.png&#34;
         alt=&#34;VirtualBox with the Motorcortex 2022.09 virtual machine and the Start button&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The console shows the address of the virtual machine next to &lt;code&gt;eth0&lt;/code&gt;, for example &lt;code&gt;192.168.56.111&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/MOTD-virtualBox-202209.png&#34;
         alt=&#34;Console of the Motorcortex virtual machine with the address 192.168.56.111 next to eth0 and the mcx-intel login prompt&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Log in with the user &lt;code&gt;admin&lt;/code&gt; and the password &lt;code&gt;vectioneer&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This address takes the place of &lt;span class=&#34;mcx-ip&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;controller_ip_address&lt;/code&gt;&lt;span class=&#34;mcx-ip-tip&#34; role=&#34;tooltip&#34;&gt;The IP address of your controller. In most cases 192.168.2.100.&lt;/span&gt;&lt;/span&gt; everywhere: in your browser, over SSH and when you deploy packages. Check the connection from a terminal on your PC, with the address from your console:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;ssh admin@192.168.56.111
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    The virtual machine does not start: VERR_PATH_NOT_FOUND
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;p&gt;VirtualBox can fail to start the machine with this error:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;Failed to load the NVRAM store from the file (VERR_PATH_NOT_FOUND).
Can&amp;#39;t attach Nvram Storage driver (VERR_PATH_NOT_FOUND).
Result Code:
E_FAIL (0X80004005)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Rename the virtual machine, for example from &lt;code&gt;Motorcortex 2024.01&lt;/code&gt; to &lt;code&gt;Motorcortex 2024&lt;/code&gt;, and start it again.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/VerrPathNotFound.png&#34;
         alt=&#34;VirtualBox with the Motorcortex 2024.01 virtual machine aborted, and the dialog that changes its name&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

  &lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;div id=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-2&#34; class=&#34;td-content tab-pane&#34; role=&#34;tabpanel&#34; aria-labelledby=&#34;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1-2&#34;&gt;&lt;br&gt;
  &lt;span id=&#34;virtualbox-on-ubuntu&#34;&gt;&lt;/span&gt;&lt;p&gt;This is the older way to run MCX-RTOS on Ubuntu. &lt;a href=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/#ubuntu&#34;&gt;QEMU&lt;/a&gt; is the recommended one. VirtualBox runs the Motorcortex appliance, the &lt;code&gt;.ova&lt;/code&gt; file from the store, and talks to your PC over a &lt;span class=&#34;mcx-term&#34; tabindex=&#34;0&#34;&gt;host-only network&lt;span class=&#34;mcx-term-tip&#34; role=&#34;tooltip&#34;&gt;A host-only network is a virtual network between your PC and its virtual machines only. It does not reach other computers.&lt;/span&gt;&lt;/span&gt;
.&lt;/p&gt;
&lt;h4 id=&#34;install-virtualbox&#34;&gt;Install VirtualBox&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download the VirtualBox &lt;code&gt;.deb&lt;/code&gt; package for your Ubuntu version from 
&lt;a href=&#34;https://www.virtualbox.org/wiki/Downloads&#34; target=&#34;_blank&#34;&gt;virtualbox.org&lt;/a&gt; and install it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open VirtualBox. Go to &lt;code&gt;File&lt;/code&gt; › &lt;code&gt;Tools&lt;/code&gt; and open &lt;code&gt;Network Manager&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_ubuntumedia/open-network-manager.png&#34;
         alt=&#34;VirtualBox File menu with Tools and Network Manager&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Press &lt;code&gt;Create&lt;/code&gt;, then &lt;code&gt;Properties&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;code&gt;DHCP Server&lt;/code&gt; tab, tick &lt;code&gt;Enable Server&lt;/code&gt; and press &lt;code&gt;Apply&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_ubuntumedia/create-host-network-manager.png&#34;
         alt=&#34;VirtualBox Network Manager with the new host-only network vboxnet0 and its DHCP Server tab&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;import-the-motorcortex-appliance&#34;&gt;Import the Motorcortex appliance&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In VirtualBox, go to &lt;code&gt;File&lt;/code&gt; and choose &lt;code&gt;Import Appliance...&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_ubuntumedia/import-appliance.png&#34;
         alt=&#34;VirtualBox File menu with Import Appliance&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose the &lt;code&gt;.ova&lt;/code&gt; file you downloaded and press &lt;code&gt;Finish&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/_ubuntumedia/import-appliance-wizard.png&#34;
         alt=&#34;Import Virtual Appliance wizard with the Motorcortex .ova file and the Finish button&#34; width=&#34;400&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;start-the-virtual-machine&#34;&gt;Start the virtual machine&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In VirtualBox, select the Motorcortex virtual machine and press &lt;code&gt;Start&lt;/code&gt;. It takes a few seconds to start.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/virtualBox-202209.png&#34;
         alt=&#34;VirtualBox with the Motorcortex 2022.09 virtual machine and the Start button&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The console shows the address of the virtual machine next to &lt;code&gt;eth0&lt;/code&gt;, for example &lt;code&gt;192.168.56.111&lt;/code&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/MOTD-virtualBox-202209.png&#34;
         alt=&#34;Console of the Motorcortex virtual machine with the address 192.168.56.111 next to eth0 and the mcx-intel login prompt&#34; width=&#34;800&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Log in with the user &lt;code&gt;admin&lt;/code&gt; and the password &lt;code&gt;vectioneer&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This address takes the place of &lt;span class=&#34;mcx-ip&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;controller_ip_address&lt;/code&gt;&lt;span class=&#34;mcx-ip-tip&#34; role=&#34;tooltip&#34;&gt;The IP address of your controller. In most cases 192.168.2.100.&lt;/span&gt;&lt;/span&gt; everywhere: in your browser, over SSH and when you deploy packages. Check the connection from a terminal on your PC, with the address from your console:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;ssh admin@192.168.56.111
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To use a real controller again, switch the host-only network off with &lt;code&gt;sudo ifconfig vboxnet0 down&lt;/code&gt;. Switch it back on with &lt;code&gt;sudo ifconfig vboxnet0 up&lt;/code&gt;.&lt;/p&gt;
&lt;details style=&#34;border:1px solid #f5f5f5; border-radius:0px; background:#f6f6f7; padding:0.7em 1em 0.7em 1em; margin:1em 0;&#34;&gt;
  &lt;summary style=&#34;font-weight:600; cursor:pointer; color:#1976d2; padding:0.2em 0;&#34;&gt;
    The virtual machine does not start: VERR_PATH_NOT_FOUND
  &lt;/summary&gt;
  &lt;div style=&#34;margin-top:0.7em;&#34;&gt;
    &lt;p&gt;VirtualBox can fail to start the machine with this error:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;Failed to load the NVRAM store from the file (VERR_PATH_NOT_FOUND).
Can&amp;#39;t attach Nvram Storage driver (VERR_PATH_NOT_FOUND).
Result Code:
E_FAIL (0X80004005)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Rename the virtual machine, for example from &lt;code&gt;Motorcortex 2024.01&lt;/code&gt; to &lt;code&gt;Motorcortex 2024&lt;/code&gt;, and start it again.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;/docs/getting-started/install-mcxos/install-rtos/install/virtual-machine/_media/VerrPathNotFound.png&#34;
         alt=&#34;VirtualBox with the Motorcortex 2024.01 virtual machine aborted, and the dialog that changes its name&#34; width=&#34;700&#34;/&gt;&lt;/a&gt;
&lt;/figure&gt;

  &lt;/div&gt;
&lt;/details&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;script&gt;
 (function(tabsetId){
  
  
  var fromTabClick = false;

  function activateFromHash(){
    try{
      if(fromTabClick) return;
      var hash = decodeURIComponent(window.location.hash || &#39;&#39;);
      if(!hash) return;
      if(hash.charAt(0) === &#39;#&#39;) hash = hash.slice(1);
      var esc = (window.CSS &amp;&amp; CSS.escape) ? CSS.escape(hash) : hash;
      var selector = &#39;#&#39; + tabsetId + &#39; .nav-link[data-slug=&#34;&#39; + esc + &#39;&#34;]&#39;;
      var link = document.querySelector(selector);
      if(link){
        if(!link.classList.contains(&#39;active&#39;)) link.click();
        
        
        
        var nav = link.closest(&#39;.nav-tabs&#39;);
        if(nav){
          window.requestAnimationFrame(function(){
            var top = nav.getBoundingClientRect().top + window.pageYOffset - 90;
            window.scrollTo({top: top, behavior: &#39;smooth&#39;});
          });
        }
      }
    }catch(e){   }
  }
  
  if(document.readyState === &#39;loading&#39;){
    document.addEventListener(&#39;DOMContentLoaded&#39;, function(){ activateFromHash(); attachClickHandlers(); });
  } else { activateFromHash(); attachClickHandlers(); }
  window.addEventListener(&#39;hashchange&#39;, activateFromHash);

  
  function attachClickHandlers(){
    try{
      var links = document.querySelectorAll(&#39;#&#39; + tabsetId + &#39; .nav-link[data-slug]&#39;);
      Array.prototype.forEach.call(links, function(link){
        link.addEventListener(&#39;click&#39;, function(e){
          var slug = link.getAttribute(&#39;data-slug&#39;) || &#39;&#39;;
          if(!slug) return;
          var newHash = &#39;#&#39; + slug;
          if(history &amp;&amp; history.pushState){
            
            history.pushState(null, &#39;&#39;, newHash);
            
            fromTabClick = true;
            try { window.dispatchEvent(new HashChangeEvent(&#39;hashchange&#39;)); }
            finally { fromTabClick = false; }
          } else {
            
            window.location.hash = slug;
          }
        }, false);
      });
    }catch(e){   }
  }
 })(&#39;tabset-docsgetting-startedinstall-mcxosinstall-rtosinstallvirtual-machine-1&#39;);
&lt;/script&gt;

&lt;p&gt;There is no tested procedure for macOS yet. To build a VirtualBox machine from scratch instead of importing the &lt;code&gt;.ova&lt;/code&gt; file, see &lt;a href=&#34;/docs/hardware/virtual-machine-install-full-config/&#34;&gt;Virtual machine full configuration&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Next: &lt;span class=&#34;fas fa-arrow-alt-circle-right&#34;  aria-hidden=&#34;true&#34;&gt;&lt;/span&gt;
&lt;a href=&#34;/docs/getting-started/connect-your-pc/&#34;&gt;Step 2: connect your PC&lt;/a&gt;.&lt;/p&gt;

&lt;/div&gt;


      </description>
    </item>
    
  </channel>
</rss>
