EyeTrackVR-Docs/firmware_guide/upload_and_update_firmware/index.html
2023-04-28 14:50:06 +00:00

28 lines
48 KiB
HTML

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Building and uploading the firmware manually | EyeTrackVR Docs</title>
<meta name="description" content="Official documentation for EyeTrackVR. Fully opensource and affordable VR eye tracking platform.">
<link rel="preload stylesheet" href="/assets/style.7df1d8e2.css" as="style">
<link rel="modulepreload" href="/assets/chunks/virtual_search-data.01f04ffb.js">
<link rel="modulepreload" href="/assets/chunks/index.e989031f.js">
<link rel="modulepreload" href="/assets/chunks/index.150e11f2.js">
<link rel="modulepreload" href="/assets/app.106a9488.js">
<link rel="modulepreload" href="/assets/firmware_guide_upload_and_update_firmware.md.6b6412b0.lean.js">
<script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-5aaf92e7><!--[--><!--]--><!--[--><span tabindex="-1" data-v-8ab7c6af></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-8ab7c6af> Skip to content </a><!--]--><!----><header class="VPNav" data-v-5aaf92e7 data-v-264fabfc><div class="VPNavBar has-sidebar" data-v-264fabfc data-v-26cab421><div class="container" data-v-26cab421><div class="VPNavBarTitle has-sidebar" data-v-26cab421 data-v-092de34b><a class="title" href="/" data-v-092de34b><!--[--><!--]--><!--[--><!--[--><!--[--><img class="VPImage dark logo" src="/logo.svg" alt="EyeTrackVR Logo" data-v-74766fef><!--]--><!--[--><img class="VPImage light logo" src="/logo_light.png" alt="EyeTrackVR Logo" data-v-74766fef><!--]--><!--]--><!--]--><!--[-->EyeTrackVR Docs<!--]--><!--[--><!--]--></a></div><div class="content" data-v-26cab421><!--[--><!--]--><div class="VPNavBarSearch search" data-v-26cab421><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><span class="DocSearch-Button-Key">Meta</span><span class="DocSearch-Button-Key">K</span></span></button></div></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-26cab421 data-v-408d05b6><span id="main-nav-aria-label" class="visually-hidden" data-v-408d05b6>Main Navigation</span><!--[--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-408d05b6 data-v-01da497a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-01da497a><span class="text" data-v-01da497a><!----> About <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-01da497a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-01da497a><div class="VPMenu" data-v-01da497a data-v-1e25c4ce><div class="items" data-v-1e25c4ce><!--[--><!--[--><div class="VPMenuLink" data-v-1e25c4ce data-v-48adf3ca><a class="VPLink link" href="/about" data-v-48adf3ca data-v-cd683231><!--[-->About Us<!--]--><!----></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-1e25c4ce data-v-48adf3ca><a class="VPLink link" href="/dev_roadmap" data-v-48adf3ca data-v-cd683231><!--[-->Development Road Map<!--]--><!----></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/contact" data-v-408d05b6 data-v-45557806 data-v-cd683231><!--[-->Contact<!--]--><!----></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-26cab421 data-v-24251c90><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" aria-label="toggle dark mode" aria-checked="false" data-v-24251c90 data-v-16a7f83e data-v-8be94668><span class="check" data-v-8be94668><span class="icon" data-v-8be94668><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-16a7f83e><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-16a7f83e><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-26cab421 data-v-be888c46 data-v-de2bf516><!--[--><a class="VPSocialLink" href="https://github.com/RedHawk989/EyeTrackVR" target="_blank" rel="noopener" data-v-de2bf516 data-v-af939139><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink" href="https://discord.gg/kkXYbVykZX" target="_blank" rel="noopener" data-v-de2bf516 data-v-af939139><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discord</title><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-26cab421 data-v-7af1585b data-v-01da497a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-01da497a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-01da497a><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-01da497a><div class="VPMenu" data-v-01da497a data-v-1e25c4ce><!----><!--[--><!--[--><!----><div class="group" data-v-7af1585b><div class="item appearance" data-v-7af1585b><p class="label" data-v-7af1585b>Appearance</p><div class="appearance-action" data-v-7af1585b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" aria-label="toggle dark mode" aria-checked="false" data-v-7af1585b data-v-16a7f83e data-v-8be94668><span class="check" data-v-8be94668><span class="icon" data-v-8be94668><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-16a7f83e><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-16a7f83e><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-7af1585b><div class="item social-links" data-v-7af1585b><div class="VPSocialLinks social-links-list" data-v-7af1585b data-v-de2bf516><!--[--><a class="VPSocialLink" href="https://github.com/RedHawk989/EyeTrackVR" target="_blank" rel="noopener" data-v-de2bf516 data-v-af939139><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink" href="https://discord.gg/kkXYbVykZX" target="_blank" rel="noopener" data-v-de2bf516 data-v-af939139><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discord</title><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-26cab421 data-v-670493dd><span class="container" data-v-670493dd><span class="top" data-v-670493dd></span><span class="middle" data-v-670493dd></span><span class="bottom" data-v-670493dd></span></span></button></div></div></div><!----></header><div class="VPLocalNav" data-v-5aaf92e7 data-v-232414b9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-232414b9><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-232414b9><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-232414b9>Menu</span></button><a class="top-link" href="#" data-v-232414b9> Return to top </a></div><aside class="VPSidebar" data-v-5aaf92e7 data-v-21951dfa><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-21951dfa><span class="visually-hidden" id="sidebar-aria-label" data-v-21951dfa> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-21951dfa><section class="VPSidebarGroup collapsible" data-v-21951dfa data-v-6a6002da><div class="title" role="button" data-v-6a6002da><h2 class="title-text" data-v-6a6002da>Getting Started</h2><div class="action" data-v-6a6002da><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" class="icon minus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2zM20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h8c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="icon plus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2z M20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11h-3V8c0-0.6-0.4-1-1-1s-1,0.4-1,1v3H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h3v3c0,0.6,0.4,1,1,1s1-0.4,1-1v-3h3c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg></div></div><div class="items" data-v-6a6002da><!--[--><!--[--><a class="VPLink link link" href="/getting_started/intro" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Introduction</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/getting_started/things_to_know" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Things to know before you start</span><!--]--><!----></a><!----><!--]--><!--]--></div></section></div><div class="group" data-v-21951dfa><section class="VPSidebarGroup collapsible" data-v-21951dfa data-v-6a6002da><div class="title" role="button" data-v-6a6002da><h2 class="title-text" data-v-6a6002da>How to Build</h2><div class="action" data-v-6a6002da><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" class="icon minus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2zM20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h8c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="icon plus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2z M20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11h-3V8c0-0.6-0.4-1-1-1s-1,0.4-1,1v3H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h3v3c0,0.6,0.4,1,1,1s1-0.4,1-1v-3h3c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg></div></div><div class="items" data-v-6a6002da><!--[--><!--[--><a class="VPLink link link" href="/how_to_build/full_build" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Full Build Guide</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/how_to_build/parts_list" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Part List</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/how_to_build/creating_your_own_mount" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>How to Create your own Camera Mount</span><!--]--><!----></a><!----><!--]--><!--]--></div></section></div><div class="group" data-v-21951dfa><section class="VPSidebarGroup collapsible" data-v-21951dfa data-v-6a6002da><div class="title" role="button" data-v-6a6002da><h2 class="title-text" data-v-6a6002da>Firmware Guide</h2><div class="action" data-v-6a6002da><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" class="icon minus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2zM20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h8c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="icon plus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2z M20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11h-3V8c0-0.6-0.4-1-1-1s-1,0.4-1,1v3H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h3v3c0,0.6,0.4,1,1,1s1-0.4,1-1v-3h3c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg></div></div><div class="items" data-v-6a6002da><!--[--><!--[--><a class="VPLink link link" href="/firmware_guide/firmware" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Introduction</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/firmware_guide/setup_vscode" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Setup Visual Studio Code environment</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/firmware_guide/configure_firmware" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Configuring Firmware</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link active" href="/firmware_guide/upload_and_update_firmware" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Uploading and Updating the Firmware</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/firmware_guide/update_platformio" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Updating PlatformIO</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/firmware_guide/environments" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Firmware Environments</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/firmware_guide/mdns" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>MDNS</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/firmware_guide/rest_api" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>REST API</span><!--]--><!----></a><!----><!--]--><!--]--></div></section></div><div class="group" data-v-21951dfa><section class="VPSidebarGroup collapsible" data-v-21951dfa data-v-6a6002da><div class="title" role="button" data-v-6a6002da><h2 class="title-text" data-v-6a6002da>Software Guide</h2><div class="action" data-v-6a6002da><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" class="icon minus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2zM20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h8c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="icon plus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2z M20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11h-3V8c0-0.6-0.4-1-1-1s-1,0.4-1,1v3H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h3v3c0,0.6,0.4,1,1,1s1-0.4,1-1v-3h3c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg></div></div><div class="items" data-v-6a6002da><!--[--><!--[--><a class="VPLink link link" href="/software_guide/eyetrackvr_app_guide" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Installing and setting up the ETVR App</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/software_guide/build_software" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Building the app from source</span><!--]--><!----></a><!----><!--]--><!--]--></div></section></div><div class="group" data-v-21951dfa><section class="VPSidebarGroup collapsible" data-v-21951dfa data-v-6a6002da><div class="title" role="button" data-v-6a6002da><h2 class="title-text" data-v-6a6002da>Miscellaneous</h2><div class="action" data-v-6a6002da><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" class="icon minus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2zM20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h8c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="icon plus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2z M20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11h-3V8c0-0.6-0.4-1-1-1s-1,0.4-1,1v3H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h3v3c0,0.6,0.4,1,1,1s1-0.4,1-1v-3h3c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg></div></div><div class="items" data-v-6a6002da><!--[--><!--[--><a class="VPLink link link" href="/misc/vrc_avatar_setup" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>VR Chat Avatar Setup</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/misc/faq" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>FAQ</span><!--]--><!----></a><!----><!--]--><!--]--></div></section></div><div class="group" data-v-21951dfa><section class="VPSidebarGroup collapsible" data-v-21951dfa data-v-6a6002da><div class="title" role="button" data-v-6a6002da><h2 class="title-text" data-v-6a6002da>Development</h2><div class="action" data-v-6a6002da><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" class="icon minus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2zM20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h8c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="icon plus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2z M20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11h-3V8c0-0.6-0.4-1-1-1s-1,0.4-1,1v3H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h3v3c0,0.6,0.4,1,1,1s1-0.4,1-1v-3h3c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg></div></div><div class="items" data-v-6a6002da><!--[--><!--[--><a class="VPLink link link" href="/development/docs/dev_docs" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Docs</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/development/docs/pages" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Edit Docs</span><!--]--><!----></a><!----><!--]--><!--[--><a class="VPLink link link" href="/development/docs/standards" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Standards</span><!--]--><!----></a><!----><!--]--><!--]--></div></section></div><div class="group" data-v-21951dfa><section class="VPSidebarGroup collapsible" data-v-21951dfa data-v-6a6002da><div class="title" role="button" data-v-6a6002da><h2 class="title-text" data-v-6a6002da>Archive</h2><div class="action" data-v-6a6002da><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" class="icon minus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2zM20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h8c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="icon plus" data-v-6a6002da><path d="M19,2H5C3.3,2,2,3.3,2,5v14c0,1.7,1.3,3,3,3h14c1.7,0,3-1.3,3-3V5C22,3.3,20.7,2,19,2z M20,19c0,0.6-0.4,1-1,1H5c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h14c0.6,0,1,0.4,1,1V19z"></path><path d="M16,11h-3V8c0-0.6-0.4-1-1-1s-1,0.4-1,1v3H8c-0.6,0-1,0.4-1,1s0.4,1,1,1h3v3c0,0.6,0.4,1,1,1s1-0.4,1-1v-3h3c0.6,0,1-0.4,1-1S16.6,11,16,11z"></path></svg></div></div><div class="items" data-v-6a6002da><!--[--><!--[--><a class="VPLink link link" href="/archive/fox_ir_v2_build_instructions" style="padding-left:0px;" tabindex="-1" data-v-9ac6cb77 data-v-cd683231><!--[--><span class="link-text" data-v-9ac6cb77>Prepare to solder IR LED PCB V2's</span><!--]--><!----></a><!----><!--]--><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5aaf92e7 data-v-ac201f45><div class="VPDoc has-sidebar has-aside" data-v-ac201f45 data-v-317b0207><div class="container" data-v-317b0207><div class="aside" data-v-317b0207><div class="aside-curtain" data-v-317b0207></div><div class="aside-container" data-v-317b0207><div class="aside-content" data-v-317b0207><div class="VPDocAside" data-v-317b0207 data-v-39cd9708><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-39cd9708 data-v-586090b2><div class="content" data-v-586090b2><div class="outline-marker" data-v-586090b2></div><div class="outline-title" data-v-586090b2>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-586090b2><span class="visually-hidden" id="doc-outline-aria-label" data-v-586090b2> Table of Contents for current page </span><ul class="root" data-v-586090b2 data-v-0eba5460><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-39cd9708></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-317b0207><div class="content-container" data-v-317b0207><!--[--><!--]--><main class="main" data-v-317b0207><div style="position:relative;" class="vp-doc _firmware_guide_upload_and_update_firmware" data-v-317b0207><div><h1 class="text-[var(--font-accent)]" id="building-and-uploading-the-firmware-manually" tabindex="-1">Building and uploading the firmware manually <a class="header-anchor" href="#building-and-uploading-the-firmware-manually" aria-hidden="true">#</a></h1><p>Uploading your firmware must initially be done over cable. Once you have the tracker connected to your WiFi after your first firmware update, you can opt to use <a href="#how-do-i-use-it">OTA</a> in the future.</p><h2 id="_1-connect-your-tracker-to-your-pc-via-the-programmer" tabindex="-1">1. Connect your tracker to your PC via the programmer <a class="header-anchor" href="#_1-connect-your-tracker-to-your-pc-via-the-programmer" aria-hidden="true">#</a></h2><p>First, connect your ESP32-Cam to your programmer. In the case of the ESP32-Cam-MB board, it&#39;s as simple as sticking it into the socket the way it came in the package and then connecting it to your PC with a micro-USB cable. In some cases, there is a button labeled <code>IOO</code> on the programmer. If that button exists make sure to hold it in while you plug the programmer into your PC, once plugged in you can release the button.</p><p>In the case of an FTDI programmer, the steps aren&#39;t as easy, so grab <a href="https://randomnerdtutorials.com/program-upload-code-esp32-cam/" target="_blank" rel="noreferrer">this guide</a> for how to set it up.</p><h2 id="_2-build-your-firmware" tabindex="-1">2. Build your firmware <a class="header-anchor" href="#_2-build-your-firmware" aria-hidden="true">#</a></h2><ol><li>Press the build button at the bottom of Visual Studio Code.</li></ol><blockquote><p>This builds the firmware, but does not send it to the ESP yet.</p></blockquote><p><img src="https://i.imgur.com/EmSkhFp.png" alt="img"></p><h2 id="_3-upload-your-firmware" tabindex="-1">3. Upload your firmware <a class="header-anchor" href="#_3-upload-your-firmware" aria-hidden="true">#</a></h2><ul><li><p>If you are using the OTA method, skip to the <a href="#how-do-i-use-it">OTA section below</a>.</p></li><li><p>Once the firmware has been built, press the upload button to upload the firmware.</p><p>This sends the firmware to the ESP. <img src="https://i.imgur.com/lI3PFVC.png" alt="img"></p></li></ul><div class="my-2 max-w-xs rounded-lg bg-white px-4 py-4 shadow-xl ring-1 ring-slate-900/5 dark:bg-slate-800"><div><span class="drop-shadow-lg"><span class="VPBadge info" data-v-e233384c><!--[-->NOTE<!--]--></span></span></div><div class="text-[blue] mt-2 pl-1 text-2xl font-bold tracking-tight text-slate-900"></div><p class="text-slate-500 dark:text-slate-400 mt-2 pl-1 text-sm"><!--[--><p> The MB board does the resetting for you. If you&#39;re using the FTDI programmer, follow the guide linked above (the one from randomnerdtutorials) </p><!--]--></p></div><ul><li><p>If the upload is successful, you should get an output that looks like this:</p><p><img src="https://i.imgur.com/SDQcCr1.png" alt="img"></p></li></ul><p>Congratulations! You have now successfully uploaded the firmware to your EyeTrackVR Tracker!</p><p>If you have trouble with uploading your firmware over cable check the following:</p><ol><li>Make sure your USB cable from the tracker is plugged firmly into your PC.</li><li>Make sure that your USB cable is a data and charging cable (it is suggested you try other cables or devices with the cable).</li><li>Make sure that your drivers are up-to-date.</li><li>Some ports might not work, try other ones.</li></ol><p>Additionally, this can be caused by software hogging COM ports (<strong>VSCode and Cura can be the cause of this</strong>).</p><h2 id="uploading-via-ota" tabindex="-1">Uploading via OTA <a class="header-anchor" href="#uploading-via-ota" aria-hidden="true">#</a></h2><h3 id="what-is-it" tabindex="-1">What is it? <a class="header-anchor" href="#what-is-it" aria-hidden="true">#</a></h3><p>OTA stands for <code>Over The Air</code>, and it is a way to update your firmware without having to connect your device to your computer.</p><h3 id="how-do-i-use-it" tabindex="-1">How do I use it? <a class="header-anchor" href="#how-do-i-use-it" aria-hidden="true">#</a></h3><p>To use OTA, you need to have working firmware on your ESPs first. Follow <a href="#Building-and-uploading-the-firmware-manually">the manual building guide</a></p><p>Once you have manually flashed the firmware at least once, you can use the <code>OTA</code> environment to upate your ESPs.</p><div class="tip custom-block"><p class="custom-block-title">Coming Soon</p><p>Currently, we only support OTA using the provided web interface, but we are working on a new app, where you will be able to upload your firmware to your ESPs over WiFi straight from the app.</p></div><h4 id="for-firmware-versions-1-1-0-and-up" tabindex="-1">For firmware versions 1.1.0 and up: <a class="header-anchor" href="#for-firmware-versions-1-1-0-and-up" aria-hidden="true">#</a></h4><p>Since version 1.1.0 we&#39;ve switched from using OTA via platformio to a more user-friendly approach.</p><div class="my-2 max-w-xs rounded-lg bg-white px-4 py-4 shadow-xl ring-1 ring-slate-900/5 dark:bg-slate-800"><div><span class="drop-shadow-lg"><span class="VPBadge info" data-v-e233384c><!--[-->NOTE<!--]--></span></span></div><div class="text-[blue] mt-2 pl-1 text-2xl font-bold tracking-tight text-slate-900"></div><p class="text-slate-500 dark:text-slate-400 mt-2 pl-1 text-sm"><!--[--><p> You don&#39;t have to have the trackers connected to your pc for any of these steps, just powered on and connected to the Wi-Fi. </p><!--]--></p></div><ol><li>Build the firmware using your current environment, if you&#39;ve switched to an OTA env in the past - repeat those steps but select the environment without the <code>_OTA</code> suffix. Next, press the checkmark button to build it without uploading.</li></ol><div align="center" class="mb-4"><figure><a class="no_icon" target="_blank" rel="noopener" href="https://i.imgur.com/5E5u5Jz.png"><img class="docimage max-w-full h-auto rounded-lg" src="https://i.imgur.com/5E5u5Jz.png" alt="&#39;Selecting platformio environment&#39;" style="max-width: 600px;"></a><!----></figure></div><ol start="2"><li><p>Turn on your trackers and wait for them to connect to Wi-Fi</p></li><li><p>Locate their ip or mDNS name. For mDNS, the default is: <a href="http://openiristracker.local/" target="_blank" rel="noreferrer">http://openiristracker.local/</a></p></li><li><p>Having done that, open <a href="http://openiristracker.local:81/update" target="_blank" rel="noreferrer">http://&lt;your-up-or-mdns-name&gt;:81/update</a> in your browser</p></li></ol><p>for example: <a href="http://openiristracker.local:81/update" target="_blank" rel="noreferrer">http://openiristracker.local/</a></p><p>This should open a page similar to this:</p><div align="center" class="mb-4"><figure><a class="no_icon" target="_blank" rel="noopener" href="https://i.imgur.com/wMXdZcJ.png"><img class="docimage max-w-full h-auto rounded-lg" src="https://i.imgur.com/wMXdZcJ.png" alt="&#39;Firmware uploading web page&#39;" style="max-width: 600px;"></a><!----></figure></div><p>Click on the select file button, and navigate to where you cloned the project and then to the <code>ESP/</code> directory.</p><p>Once there, open <code>.pio\build\your-environment</code> like so:</p><blockquote><p>By default, windows treats files and directories with a dot in front of their name as hidden. To change that - <a href="https://support.microsoft.com/en-us/windows/view-hidden-files-and-folders-in-windows-97fbc472-c603-9d90-91d0-1166d1d9f4b5" target="_blank" rel="noreferrer">see here</a></p></blockquote><div align="center" class="mb-4"><figure><a class="no_icon" target="_blank" rel="noopener" href="https://i.imgur.com/KnnB28z.png"><img class="docimage max-w-full h-auto rounded-lg" src="https://i.imgur.com/KnnB28z.png" alt="&#39;An example of how the bin file directory looks like&#39;" style="max-width: 600px;"></a><!----></figure></div><p>You&#39;ll find a couple files in there, select the one named <code>your-environment-vVersion-feature</code>.</p><p>like this one:</p><div align="center" class="mb-4"><figure><a class="no_icon" target="_blank" rel="noopener" href="https://i.imgur.com/Ujx3iaG.png"><img class="docimage max-w-full h-auto rounded-lg" src="https://i.imgur.com/Ujx3iaG.png" alt="&#39;An example of how the bin file looks like&#39;" style="max-width: 600px;"></a><!----></figure></div><ol start="5"><li>Press upload and wait for it to finish. Done!</li></ol><div align="center" class="mb-4"><figure><a class="no_icon" target="_blank" rel="noopener" href="https://i.imgur.com/O2KzHAN.png"><img class="docimage max-w-full h-auto rounded-lg" src="https://i.imgur.com/O2KzHAN.png" alt="&#39;A finished OTA upload&#39;" style="max-width: 600px;"></a><!----></figure></div><h4 id="for-firmware-versions-of-1-0-0-and-under" tabindex="-1">For firmware versions of 1.0.0 and under: <a class="header-anchor" href="#for-firmware-versions-of-1-0-0-and-under" aria-hidden="true">#</a></h4><ol><li>Retrieve the IP or mDNS name of the tracker you wish to flash. The IP can be found through network monitoring applications, or by viewing tracker output in a serial monitor.</li><li>In the <code>ini/user_config.ini</code> file: <ul><li>Put IP or hostname of device into config file</li></ul></li></ol><p>Like so:</p><div class="language-ini line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#89DDFF;">[ota]</span></span>
<span class="line"><span style="color:#F07178;">enableota</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> 1</span></span>
<span class="line"><span style="color:#F07178;">otaserverip</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">openiristrackerL.local</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># here we use a custom mDNS name</span></span>
<span class="line"><span style="color:#F07178;">otapassword</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">12345678</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#F07178;">otaserverport</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> 3232</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><ol start="3"><li>Change to OTA env</li></ol><p>To do that, in visual studio code, locate the uplaod button, next to it will be listed a couple of buttons and your current environment.</p><p>For example, if you have a working <code>esp32AIThinker</code> environment, you would change your environment to <code>esp32AIThinker_OTA</code>.</p><p>Click on it.</p><div align="center" class="mb-4"><figure><a class="no_icon" target="_blank" rel="noopener" href="https://i.imgur.com/8sn6FSe.png"><img class="docimage max-w-full h-auto rounded-lg" src="https://i.imgur.com/8sn6FSe.png" alt="&#39;An example of how the popup list of envs looks like&#39;" style="max-width: 600px;"></a><!----></figure></div><p>This will open a list of all available environments, select the one that matches your board and has a _OTA suffix</p><div align="center" class="mb-4"><figure><a class="no_icon" target="_blank" rel="noopener" href="https://i.imgur.com/nRpuBSI.png"><img class="docimage max-w-full h-auto rounded-lg" src="https://i.imgur.com/nRpuBSI.png" alt="&#39;An example of how the button for selecting env looks like&#39;" style="max-width: 600px;"></a><!----></figure></div><ol start="4"><li>Restart the ESPs, they <strong><em>must</em></strong> be power cycled</li><li>Press the upload button to upload the firmware.<br><br><img src="https://i.imgur.com/lI3PFVC.png" alt="img"></li><li>Do not touch esps or move them during OTA upload</li><li>Wait around 1 minute.</li><li>Repeat for as many trackers as you need.</li></ol><h2 id="finding-the-ip-address-of-your-tracker" tabindex="-1">Finding the IP address of your tracker <a class="header-anchor" href="#finding-the-ip-address-of-your-tracker" aria-hidden="true">#</a></h2><p>Connect your tracker to your PC and then open a serial monitor in VSC by pressing the <code>plug</code> icon.</p><div align="center" class="mb-4"><figure><a class="no_icon" target="_blank" rel="noopener" href="https://i.imgur.com/dSPSpkY.png"><img class="docimage max-w-full h-auto rounded-lg" src="https://i.imgur.com/dSPSpkY.png" alt="&#39;platformio serial monitor button&#39;" style="max-width: 500px;"></a><!----></figure></div><p>Now, press the restart button on the esp itself. watch the monitor for output like this:</p><div align="center" class="mb-4"><figure><a class="no_icon" target="_blank" rel="noopener" href="https://i.imgur.com/PoHP3NC.png"><img class="docimage max-w-full h-auto rounded-lg" src="https://i.imgur.com/PoHP3NC.png" alt="&#39;img of platformio serial monitor&#39;" style="max-width: 600px;"></a><!----></figure></div><p>The text, highlighted in green for demonstration, is the stream address of the camera. Take note of this for input into the software.</p><p>Keep in mind while testing and getting set up, the ESP can only have one client, to use the camera in the app, make sure you close the browser tab you tested it in.</p><h1 id="updating-the-firmware-to-the-newest-version" tabindex="-1">Updating the firmware to the newest version <a class="header-anchor" href="#updating-the-firmware-to-the-newest-version" aria-hidden="true">#</a></h1><p>To update the firmware you&#39;ll need to follow a couple of steps.</p><ol><li><p>Open a terminal and enter the directory you&#39;ve cloned OpenIris into, for example <code>cd C:/OpenIris/</code></p></li><li><p>Save your current changes to the config using <code>git stash</code></p></li><li><p>Download the newest changes from the repo using <code>git pull</code></p></li><li><p>Apply your saved changes so that you don&#39;t have to retype your WI-FI credentials using <code>git stash apply</code></p></li></ol><div class="my-2 max-w-xs rounded-lg bg-white px-4 py-4 shadow-xl ring-1 ring-slate-900/5 dark:bg-slate-800"><div><span class="drop-shadow-lg"><span class="VPBadge warning" data-v-e233384c><!--[-->CAUTION<!--]--></span></span></div><div class="text-[orange] mt-2 pl-1 text-2xl font-bold tracking-tight text-slate-900"></div><p class="text-slate-500 dark:text-slate-400 mt-2 pl-1 text-sm"><!--[--><p> Skip this step if the update message denotes that the config had changed. If it does so, retype your credentials in the updated files. </p><!--]--></p></div><p>4.1. If anything went wrong, you can reset everything to the default state using <code>git reset --hard</code> and then retyping your credentials</p><ol start="5"><li>Upload your firmware <a href="#Building-and-uploading-the-firmware-manually">following steps from the uploading section</a></li></ol><h2 id="troubleshooting" tabindex="-1">Troubleshooting <a class="header-anchor" href="#troubleshooting" aria-hidden="true">#</a></h2><p>If you encountered an issue while following these steps check the <a href="./../misc/faq">FAQ.</a></p><p>If you don&#39;t find an answer to your question there ask in <strong>#questions</strong> channel in <a href="https://discord.gg/kkXYbVykZX" target="_blank" rel="noreferrer">the discord</a>, we will be happy to help.</p><p><em>Adapted from the SlimeVR docs, Some Credit goes to the SlimeVR team <a href="https://docs.slimevr.dev/firmware/setup-and-install.html" target="_blank" rel="noreferrer">here</a></em></p></div></div></main><!--[--><!--]--><footer class="VPDocFooter" data-v-317b0207 data-v-cbbeb5ab><div class="edit-info" data-v-cbbeb5ab><!----><div class="last-updated" data-v-cbbeb5ab><p class="VPLastUpdated" data-v-cbbeb5ab data-v-cc1176cb>Last updated: <time datetime="2023-04-14T21:25:39.000Z" data-v-cc1176cb></time></p></div></div><div class="prev-next" data-v-cbbeb5ab><div class="pager" data-v-cbbeb5ab><a class="pager-link prev" href="/firmware_guide/configure_firmware" data-v-cbbeb5ab><span class="desc" data-v-cbbeb5ab>Previous page</span><span class="title" data-v-cbbeb5ab>Configuring Firmware</span></a></div><div class="has-prev pager" data-v-cbbeb5ab><a class="pager-link next" href="/firmware_guide/update_platformio" data-v-cbbeb5ab><span class="desc" data-v-cbbeb5ab>Next page</span><span class="title" data-v-cbbeb5ab>Updating PlatformIO</span></a></div></div></footer><!--[--><!--]--></div></div></div></div></div><footer class="VPFooter has-sidebar" data-v-5aaf92e7 data-v-1a0cce0c><div class="container" data-v-1a0cce0c><p class="message" data-v-1a0cce0c>Released under the MIT License.</p><p class="copyright" data-v-1a0cce0c>Copyright © 2022-present ETVR</p></div></footer><!--[--><!--]--></div></div>
<script>__VP_HASH_MAP__ = JSON.parse("{\"about.md\":\"67558f22\",\"dev_roadmap.md\":\"59bac4c2\",\"development_docs_dev_docs.md\":\"1c7099a1\",\"development_docs_pages.md\":\"e3ea318f\",\"development_docs_standards.md\":\"c022dc66\",\"firmware_guide_configure_firmware.md\":\"ad3a7a27\",\"firmware_guide_environments.md\":\"35702a84\",\"firmware_guide_firmware.md\":\"3ff987da\",\"firmware_guide_mdns.md\":\"f7cf7152\",\"firmware_guide_rest_api.md\":\"c031cbdb\",\"firmware_guide_setup_vscode.md\":\"5c098e1b\",\"firmware_guide_update_platformio.md\":\"f77a6333\",\"firmware_guide_upload_and_update_firmware.md\":\"6b6412b0\",\"getting_started_intro.md\":\"66aa4f59\",\"getting_started_things_to_know.md\":\"36842c3c\",\"how_to_build_creating_your_own_mount.md\":\"ac844386\",\"contact.md\":\"2a8274c7\",\"how_to_build_parts_list.md\":\"a0e01995\",\"index.md\":\"c15589ce\",\"misc_faq.md\":\"557dde35\",\"misc_vrc_avatar_setup.md\":\"ffcc0d92\",\"software_guide_eyetrackvr_app_guide.md\":\"139d2041\",\"software_guide_build_software.md\":\"a667b707\",\"how_to_build_full_build.md\":\"955d0e98\",\"archive_fox_ir_v2_build_instructions.md\":\"818f52c9\"}")</script>
<script type="module" async src="/assets/app.106a9488.js"></script>
</body>
</html>