Buckets:

hf-doc-build/doc-dev / reachy_mini /pr_1069 /en /troubleshooting.html
download
raw
106 kB
<meta charset="utf-8" /><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;Troubleshooting &amp; FAQ&quot;,&quot;local&quot;:&quot;troubleshooting--faq&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;🛠️ Troubleshooting - Frequent issues&quot;,&quot;local&quot;:&quot;-troubleshooting---frequent-issues&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🚀 Getting Started &amp; Assembly&quot;,&quot;local&quot;:&quot;-getting-started--assembly&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🔌 Connection &amp; Reachy Mini Control&quot;,&quot;local&quot;:&quot;-connection--reachy-mini-control&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🤖 Hardware, Motors &amp; Limits&quot;,&quot;local&quot;:&quot;-hardware-motors--limits&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🐍 SDK, Apps &amp; Programming&quot;,&quot;local&quot;:&quot;-sdk-apps--programming&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🕹️ Moving the Robot&quot;,&quot;local&quot;:&quot;-moving-the-robot&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;👁️ Vision &amp; Audio&quot;,&quot;local&quot;:&quot;-vision--audio&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Reachy Mini Lite Version&quot;,&quot;local&quot;:&quot;reachy-mini-lite-version&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3},{&quot;title&quot;:&quot;Reachy Mini Wireless Version&quot;,&quot;local&quot;:&quot;reachy-mini-wireless-version&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🔧 Specific Error Messages &amp; Fixes&quot;,&quot;local&quot;:&quot;-specific-error-messages--fixes&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;📦 Shipping &amp; Warranty&quot;,&quot;local&quot;:&quot;-shipping--warranty&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;💬 Still stuck?&quot;,&quot;local&quot;:&quot;-still-stuck&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2}],&quot;depth&quot;:1}">
<link href="/docs/reachy_mini/pr_1069/en/_app/immutable/assets/0.e3b0c442.css" rel="modulepreload">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/entry/start.6cd5df39.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/chunks/scheduler.f05771bc.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/chunks/singletons.8ab55633.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/chunks/index.2528d289.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/chunks/paths.a8f2e6ae.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/entry/app.405911a4.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/chunks/preload-helper.e957381b.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/chunks/index.b379be46.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/nodes/0.b229c383.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/chunks/each.e59479a4.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/nodes/51.0a7c57cc.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/chunks/MermaidChart.svelte_svelte_type_style_lang.c489a506.js">
<link rel="modulepreload" href="/docs/reachy_mini/pr_1069/en/_app/immutable/chunks/CodeBlock.f56fd9c8.js"><!-- HEAD_svelte-u9bgzb_START --><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;Troubleshooting &amp; FAQ&quot;,&quot;local&quot;:&quot;troubleshooting--faq&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;🛠️ Troubleshooting - Frequent issues&quot;,&quot;local&quot;:&quot;-troubleshooting---frequent-issues&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🚀 Getting Started &amp; Assembly&quot;,&quot;local&quot;:&quot;-getting-started--assembly&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🔌 Connection &amp; Reachy Mini Control&quot;,&quot;local&quot;:&quot;-connection--reachy-mini-control&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🤖 Hardware, Motors &amp; Limits&quot;,&quot;local&quot;:&quot;-hardware-motors--limits&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🐍 SDK, Apps &amp; Programming&quot;,&quot;local&quot;:&quot;-sdk-apps--programming&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🕹️ Moving the Robot&quot;,&quot;local&quot;:&quot;-moving-the-robot&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;👁️ Vision &amp; Audio&quot;,&quot;local&quot;:&quot;-vision--audio&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Reachy Mini Lite Version&quot;,&quot;local&quot;:&quot;reachy-mini-lite-version&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3},{&quot;title&quot;:&quot;Reachy Mini Wireless Version&quot;,&quot;local&quot;:&quot;reachy-mini-wireless-version&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;:2},{&quot;title&quot;:&quot;🔧 Specific Error Messages &amp; Fixes&quot;,&quot;local&quot;:&quot;-specific-error-messages--fixes&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;📦 Shipping &amp; Warranty&quot;,&quot;local&quot;:&quot;-shipping--warranty&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;💬 Still stuck?&quot;,&quot;local&quot;:&quot;-still-stuck&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2}],&quot;depth&quot;:1}"><!-- HEAD_svelte-u9bgzb_END --> <p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"><div class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg></span> <span>Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg></button></div> </div> <h1 class="relative group"><a id="troubleshooting--faq" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#troubleshooting--faq"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Troubleshooting &amp; FAQ</span></h1> <p data-svelte-h="svelte-18iqpkf">Welcome to the Reachy Mini support page. Click on the questions below to reveal the answers.</p> <h2 class="relative group"><a id="-troubleshooting---frequent-issues" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-troubleshooting---frequent-issues"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>🛠️ Troubleshooting - Frequent issues</span></h2> <p data-svelte-h="svelte-1wb04l7"><strong>Essential troubleshooting - Please read this first, it solves all well-known issues!</strong></p> <details data-svelte-h="svelte-187j6b"><summary><strong>Before anything else and for any issue: update &amp; restart</strong></summary> <p><strong>Make sure you are using up-to-date software and that you have restarted both your robot and your computer.</strong><br>
To restart your robot, press OFF, wait 5 seconds, then press ON. This simple procedure fixes several common and well-known issues.</p> <p><strong>How to update the software:</strong></p> <ul><li><strong>If you are using Reachy Mini Control</strong>
From the “⚙️” settings tab, “Check for updates”. If an update is available, click on “Update now”.</li> <li><strong>If you are using a cloned repository</strong><br>
Make sure you are either:
<ul><li>On the latest tagged release, or</li> <li>Up to date with the <code>main</code> branch (<code>git pull</code>).</li></ul></li></ul> <p><strong>Wireless Reachy Mini</strong>: run <code>reachyminios_check</code> to make sure everything is fine (see <a href="./platforms/reachy_mini/get_started">Get Started</a>)</p></details> <details data-svelte-h="svelte-wqktb4"><summary><strong>Bootstrap or update fails / Python environment issues (Lite &amp; Simulation)</strong></summary> <p>If Reachy Mini Control fails during the initial bootstrap, gets stuck while creating the virtual environment, or an update leaves the Python environment in a broken state, you can reset the virtual environments directly from the desktop app.</p> <p>Two reset options are available:</p> <ul><li><strong>Reset apps environment</strong> — recreates only the <code>apps_venv</code> (the environment used by installed apps). Installed apps will need to be reinstalled. Use this first if only apps fail to start or install.</li> <li><strong>Full Environment Reset</strong> — deletes all Python files and re-downloads everything (interpreter + both venvs). Use this if the bootstrap itself fails or if “Reset apps environment” didn’t help. This may take a few minutes.</li></ul> <p><strong>Where to find these buttons:</strong></p> <ul><li><strong>Before connecting</strong> (Finding Robot screen): click the ⚙️ icon in the top-right corner. A menu appears under “Local environment (USB &amp; Sim)” with “Reset apps environment” and the full reset option.</li> <li><strong>Once connected</strong> (USB / Simulation mode): open the Settings overlay and go to the “Environment” section, which contains the “Reset Apps Environment” and “Full Environment Reset” buttons.</li></ul> <p>After a full reset, the desktop app will re-run the bootstrap on next launch.</p></details> <details data-svelte-h="svelte-a1puv5"><summary><strong>Motors related issues</strong></summary> <p>This concerns issues like:</p> <ul><li>Motors blinking red or not responding/moving.</li> <li>Motors showing errors like “Overload Error”</li> <li>Missing motors: “No motor found on port”, “Missing motor”, etc.</li></ul> <p>If you have any of the following symptoms, please refer to the <a href="./troubleshooting/motors_diagnosis">Motors diagnosis and troubleshooting guide</a> for detailed steps to diagnose and fix motor-related issues.</p> <p>Using the Reachy Mini Testbench app will help you identify and resolve these problems effectively.</p></details> <details data-svelte-h="svelte-1ockfpq"><summary><strong>Electrical Shock Error</strong></summary> <p>An electrical shock error on Dynamixel motors means there is either an issue with the power supply, or a short circuit somewhere.
Please check if any cable is damaged, from the foot PCB to the head. Especially the followings cables:</p> <ul><li>Power Cable (black &amp; red)</li> <li>3-wires cables for motors (300mm, 200mm, 100mm and 40mm)</li></ul> <p>It can also be the same issue as “Motor blinking red or Overload Error” described above.</p></details> <details data-svelte-h="svelte-1cp2kj7"><summary><strong>Microphone not working</strong></summary> <p>If you have one of the following symptoms:</p> <ul><li>Audio recording not working / returns silence</li> <li>Audio recording returning zeros</li></ul> <p>You may have plugged the microphone cable upside down.</p> <ul><li>If your cable is white and blue, please check again the assembly instruction to be sure the blue side is up.</li> <li>If your cable is black, check that the side with the writing “Main Board” is up (see picture below).
<img src="https://github.com/pollen-robotics/reachy_mini/raw/develop/docs/assets/black_fpc_cable.png" alt="mic_cable"></li></ul> <p>If your cable is plugged properly and you still have issues, it is likely that the FPC cable of the microphone is damaged. Please refer to the tutorial <a href="./troubleshooting/change_mic_fpc_cable">How to change the FPC cable of the microphone of Reachy Mini?</a> to fix this issue.</p></details> <details data-svelte-h="svelte-ir0mt6"><summary><strong>Low audio volume</strong></summary> <ul><li>Update your robot to version 1.2.3 or later</li></ul> <p>For more details, see the documentation:<br> <a href="./platforms/reachy_mini/get_started">Getting Started</a></p></details> <details data-svelte-h="svelte-x0nfn3"><summary><strong>Permission errors</strong></summary> <ul><li>Update your robot to version 1.2.3 or later</li> <li>Reboot the robot</li></ul></details> <details data-svelte-h="svelte-eghmsg"><summary><strong>An antenna appears rotated by 90° or 180°</strong></summary> <p>This is a manufacturing issue.</p> <p>It is easy to fix by following this guide:<br> <a href="https://drive.google.com/file/d/1FsmNpwELuXUbdhGHDMjG_CNpYXOMtR7A/view?usp=drive_link" rel="nofollow">Antenna repositioning guide</a></p></details> <details data-svelte-h="svelte-1ash0j8"><summary><strong>A motor is shaky</strong></summary> <p><strong>Antennas shaking</strong></p> <p>This is the most common case. The antennas (motors 17 and 18) tend to shake when set to their vertical position (0°). At this angle, the gearbox backlash puts the motor in an unstable equilibrium — like an inverted pendulum. The motor constantly tries to correct its position around a point where friction is very low, which causes the oscillation.</p> <p>The simplest fix is to offset the antennas by a few degrees (typically 10° is enough). This lets gravity apply a small bias that takes up the mechanical play in one direction, eliminating the shaking.</p> <p>This is now the default behavior in Reachy Mini — see <a href="https://github.com/pollen-robotics/reachy_mini/pull/952" rel="nofollow">PR #952</a> for details.</p> <p><strong>Tuning PID values</strong></p> <p>Another option is to <a href="https://github.com/pollen-robotics/reachy_mini/tree/main/src/reachy_mini/assets/config/hardware_config.yaml#L66C1-L67C1" rel="nofollow">tune PID Control values</a>. The optimal values may vary between robot units, as tiny differences in friction from manufacturing are enough to change the behavior.</p> <p>You can try first to reduce P to 180 on motors 10 (foot), 17 and 18 (antennas).
If it doesn’t help, you can also try to increase D to 10 on the same motors.</p></details> <details data-svelte-h="svelte-v2oq4h"><summary><strong>Head makes squeaking or friction noises during movement</strong></summary> <p>If you hear high-pitched squeaking or friction noises when the robot’s head moves, the spherical joints (ball joints) on the Stewart platform rods likely need maintenance. You may also notice dark dust or residue around the connecting rods.</p> <p>This is normal wear over time. Follow the <a href="./troubleshooting/spherical_joints_maintenance">Spherical Joints Maintenance guide</a> to clean and re-grease the joints.</p></details> <details data-svelte-h="svelte-1aucyr7"><summary><strong>Image is dark on the Lite version</strong></summary> <p><strong>➡️ Quick Fix: Adjust Exposure Time in Camera Settings</strong></p> <p>To fix a dark image, enable auto-exposure or manually increase the exposure time using a camera control application. These applications provide an intuitive interface for adjusting exposure and other camera parameters.</p> <p><strong>Recommended Applications:</strong></p> <ul><li><strong>macOS:</strong> <a href="https://github.com/itaybre/CameraController" rel="nofollow">CameraController</a> - Open-source GUI application for USB camera control</li> <li><strong>Linux:</strong> qv4l2 - Qt-based GUI application for V4L2 camera control
<ul><li>Install: <code>sudo apt install qv4l2</code></li></ul></li> <li><strong>Windows:</strong> <a href="https://www.softpedia.com/get/Internet/WebCam/Webcam-Settings-Tool.shtml" rel="nofollow">Webcam Settings</a> or <a href="https://manycam.com/" rel="nofollow">ManyCam</a> for advanced camera control</li></ul> <p>These applications allow you to adjust exposure time, brightness, and other camera parameters through an intuitive graphical interface.</p> <hr> <p><strong>➡️ Advanced: Using libuvc for In-Depth Camera Control</strong></p> <p>For advanced users who want precise control over camera parameters, you can use libuvc-based command-line utilities. These tools provide low-level access to all UVC camera controls.</p> <p>To fix the darkness issue specifically, set <code>auto-exposure-priority=1</code> using these command-line tools.</p> <p><strong>Command-Line Tools by Platform:</strong></p> <ul><li><p><strong>macOS:</strong> <a href="https://github.com/jtfrey/uvc-util" rel="nofollow">uvc-util</a></p></li> <li><p><strong>Linux:</strong> <a href="https://manpages.debian.org/testing/v4l-utils/v4l2-ctl.1.en.html" rel="nofollow">v4l2-ctl</a></p> <ul><li>Install: <code>sudo apt install v4l-utils</code></li></ul></li> <li><p><strong>Windows:</strong> Windows does not have a direct equivalent.</p></li></ul> <p><strong>Note:</strong> These command-line tools require technical knowledge and access to the camera parameters may vary depending on the selected tool. Use <code>--help</code> and list available controls before making any changes.</p></details> <details data-svelte-h="svelte-4a9uqm"><summary><strong>A part is missing in my package</strong></summary> <p>Be sure to unpack everything first. Some parts are pre-assembled (e.g the bottom head part is already placed in the back head part).</p> <p><img src="https://github.com/pollen-robotics/reachy_mini/raw/develop/docs/assets/head_parts.jpg" alt="head_parts"></p> <p>Then, check the assembly guide’s parts list to see if you really miss a part:
If you are 100% sure you miss a part, please contact <a href="mailto:sales@pollen-robotics.com">sales@pollen-robotics.com</a> with a picture of all the parts you have and order number or invoice number.<br>
You can also find <a href="https://github.com/pollen-robotics/reachy_mini/tree/develop/src/reachy_mini/descriptions/reachy_mini/mjcf/assets" rel="nofollow">stl files</a> to print it by yourself in the meantime.</p></details> <details data-svelte-h="svelte-1drsrxc"><summary><strong>Can&#39;t connect to my Wireless Reachy Mini using a USB-C cable</strong></summary> <p>Wireless units do not expose the robot over USB the way the Lite version does, so plugging a USB-C cable into your laptop will not give you a working connection.<br>
Instead:</p> <ul><li>Join the robot to your Wi-Fi network and use the SDK client on your laptop to control it remotely.</li> <li>If you want to run code directly on the embedded Raspberry Pi, SSH in and execute your scripts there (this is what Reachy Mini Control does after you publish/install an app).</li> <li>For a tethered link, use a USB-C-to-Ethernet adapter plus an Ethernet cable—this simply replaces Wi-Fi with wired Ethernet.</li></ul></details> <details data-svelte-h="svelte-h3x2sm"><summary><strong>Wireless Acces point doesn&#39;t show up - RPI doesn&#39;t boot</strong></summary>
There is a switch on the board in the head that needs to be in a given position. And if it&#39;s not, the AP doesn&#39;t show. It&#39;s possible that this switch was moved during assembly or maybe even a factory mistake.
Please check that the switch is on the &quot;debug&quot; and not on &quot;download&quot; position. See the picture below:
<p><img src="https://github.com/pollen-robotics/reachy_mini/raw/develop/docs/assets/wireless_switch.png" alt="switch_position"></p> <p>If this switch is in the right position and you still can’t see the AP, you may need to re-flash the Raspberry Pi’s iso, following the <a href="/docs/source/platforms/reachy_mini/reflash_the_rpi_ISO.md">reflash the RPI Iso tutorial</a>.</p></details> <h2 class="relative group"><a id="-getting-started--assembly" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-getting-started--assembly"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>🚀 Getting Started &amp; Assembly</span></h2> <details data-svelte-h="svelte-10wmlsu"><summary><strong>How long does assembly usually take?</strong></summary> <p>Most testers report between <strong>1.5 and 2 hours</strong>. It can take up to 4 hours depending on your experience level.</p></details> <details data-svelte-h="svelte-sw4vzd"><summary><strong>Are there any difficult steps during assembly?</strong></summary> <p>Not really, testers describe it as <strong>fun, simple, and satisfying</strong>. Basic tools and patience are enough. C<strong>able routing</strong> and <strong>torqueing parts correctly</strong> are the trickiest elements. When you buy a Reachy Mini Lite or Wireless, it comes with a printed user guide, and you also have access to a video and the Digital guide.
Video for Reachy Mini <a href="https://www.youtube.com/watch?v=_r0cHySFbeY" rel="nofollow">BETA</a>, LITE, WIRELESS</p> <p>Digital Assembly Guide for Reachy Mini <a href="https://huggingface.co/spaces/pollen-robotics/Reachy_Mini_Assembly_Guide" rel="nofollow">BETA</a>, LITE, WIRELESS</p></details> <details data-svelte-h="svelte-5tszn"><summary><strong>I have 2 cables and a few screws left after finishing the assembly. Is this normal?</strong></summary> <p>Yes, this is completely normal.<br>
We intentionally include spare cables and screws in the kit in case some parts are damaged or lost during assembly.</p> <p>You do not need to install them.</p></details> <details data-svelte-h="svelte-whepsi"><summary><strong>My Reachy Mini doesn’t move on first startup. What should I check?</strong></summary> <ul><li><strong>Power Supply:</strong> Ensure the 7V-5A power supply is plugged in. The USB connection is not enough to power the motors.</li> <li><strong>Cables:</strong> Check that all cables are fully inserted. Loose power cables are a common cause of “motor not responding” errors.</li> <li><strong>Troubleshooting Section:</strong> See the Essential Troubleshooting section at the top of this page.</li></ul></details> <details data-svelte-h="svelte-svjlax"><summary><strong>Do I need to start the daemon manually?</strong></summary> <p><strong>NO</strong></p> <ul><li>With Reachy Mini (Wireless), the daemon is already running on the embedded Raspberry Pi.</li> <li>With Reachy Mini Lite, you can use <a href="./platforms/reachy_mini_lite/get_started">the desktop app</a>.</li> <li>If the desktop app doesn’t work on your system (e.g., ARM64, unusual distributions), you can <a href="./SDK/installation">install and use the Python SDK</a> directly - it’s a fully supported alternative!</li></ul></details> <h2 class="relative group"><a id="-connection--reachy-mini-control" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-connection--reachy-mini-control"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>🔌 Connection &amp; Reachy Mini Control</span></h2> <details data-svelte-h="svelte-1hkzy9r"><summary><strong>How do I connect the robot to Wi-Fi?</strong></summary> <p>See the <a href="./platforms/reachy_mini/get_started">Reachy Mini Wireless guide</a> for detailed instructions on connecting to Wi-Fi.</p></details> <details data-svelte-h="svelte-pinloq"><summary><strong>How do I reset the Wi-Fi hotspot?</strong></summary> <p>If you need to reset the robot’s Wi-Fi hotspot (for example, if you can’t connect or want to change the network), follow the instructions in the <a href="./platforms/reachy_mini/reset">Wi-Fi Reset Guide</a>.</p></details> <details><summary data-svelte-h="svelte-1w9qa4j"><strong>Does the robot have a Web API?</strong></summary> <p data-svelte-h="svelte-1wsgqtn">Yes. The daemon provides a REST API (FastAPI) and WebSocket support.</p> <ul data-svelte-h="svelte-bl4tgp"><li><strong>Docs:</strong> <code>http://localhost:8000/docs</code> (available when daemon is running).</li> <li><strong>Features:</strong> Get state, Move joints, Control daemon.</li></ul> <p data-svelte-h="svelte-17evnha">You can use the API to control the robot and get its state and even control the daemon itself. The API is implemented using <a href="https://fastapi.tiangolo.com/" rel="nofollow">FastAPI</a> and <a href="https://docs.pydantic.dev/latest/" rel="nofollow">pydantic</a> models.</p> <p data-svelte-h="svelte-i7439a">It should provide you all the necessary endpoints to interact with the robot, including:</p> <ul data-svelte-h="svelte-kisplk"><li>Getting the state of the robot (joints positions, motor status, etc.)</li> <li>Moving the robot’s joints or setting specific poses</li></ul> <p data-svelte-h="svelte-k7lewj">The API is documented using OpenAPI, and you can access all available routes and test them at http://localhost:8000/docs when the daemon is running. You can also access the raw OpenAPI schema at http://localhost:8000/openapi.json.</p> <p data-svelte-h="svelte-1jq0bc5">This can be useful if you want to generate client code for your preferred programming language or framework, connect it to your AI application, or even to create your MCP server.</p> <p data-svelte-h="svelte-v2pvg9"><strong>WebSocket support</strong></p> <p data-svelte-h="svelte-s97b98">The API also supports WebSocket connections for real-time updates. For instance, you can subscribe to joint state updates:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=" "><!-- HTML_TAG_START --><span class="hljs-keyword">let</span> ws = <span class="hljs-keyword">new</span> <span class="hljs-constructor">WebSocket(`<span class="hljs-params">ws</span>:<span class="hljs-operator">/</span><span class="hljs-operator">/</span>127.0.0.1:8000<span class="hljs-operator">/</span><span class="hljs-params">api</span><span class="hljs-operator">/</span><span class="hljs-params">state</span><span class="hljs-operator">/</span><span class="hljs-params">ws</span><span class="hljs-operator">/</span><span class="hljs-params">full</span>`)</span>;
ws.onmessage =<span class="hljs-function"> (<span class="hljs-params">event</span>) =&gt;</span> {
const data = <span class="hljs-module-access"><span class="hljs-module"><span class="hljs-identifier">JSON</span>.</span></span>parse(event.data);
console.log(data);
};<!-- HTML_TAG_END --></pre></div></details> <details data-svelte-h="svelte-l6hejn"><summary><strong>Why do I need a virtual environment (.venv)?</strong></summary> <p>Helps prevent package conflicts during SDK installation.</p></details> <details><summary data-svelte-h="svelte-scsqog"><strong>reachy-mini.local doesn&#39;t resolve</strong></summary> <p data-svelte-h="svelte-kkgnjf">A wireless unit advertises itself as <code>reachy-mini.local</code> via mDNS. This works on most home and office networks, but may fail on some enterprise, conference, or hotel networks.</p> <p data-svelte-h="svelte-1v6a7ut">If <code>reachy-mini.local</code> doesn’t resolve:</p> <ul data-svelte-h="svelte-2qd9vm"><li>Check your router’s DHCP client list for the robot’s IP address.</li> <li>Use the Reachy Mini Control app — it can discover the robot on the local network.</li> <li>As a last resort, scan the subnet:</li></ul> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START --><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> $(<span class="hljs-built_in">seq</span> 1 254); <span class="hljs-keyword">do</span>
curl -sf --connect-timeout 0.3 <span class="hljs-string">&quot;http://192.168.1.<span class="hljs-variable">${i}</span>:8000/api/daemon/status&quot;</span> &gt; /dev/null 2&gt;&amp;1 &amp;&amp; <span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;Found: 192.168.1.<span class="hljs-variable">${i}</span>&quot;</span>
<span class="hljs-keyword">done</span><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-97nh0w">Adjust the <code>192.168.1.</code> prefix to match your network.</p></details> <details data-svelte-h="svelte-1mz99of"><summary><strong>Robot and computer can&#39;t communicate on conference/hotel WiFi</strong></summary> <p>Many conference and hotel WiFi networks enable <strong>client isolation</strong>, which prevents devices on the same network from communicating with each other. Symptoms: both devices are connected to WiFi, both have IP addresses on the same subnet, but they cannot reach each other’s HTTP endpoints.</p> <p><strong>Workaround:</strong> Use a mobile phone hotspot. Connect both the robot and your computer to the hotspot. This provides a simple network where devices can see each other.</p> <p>Alternatively, use a USB-C-to-Ethernet adapter and an Ethernet cable to connect directly to the robot (Wireless version).</p></details> <details><summary data-svelte-h="svelte-vz93i7"><strong>How to access to HuggingFace services from China?</strong></summary> <p data-svelte-h="svelte-1ponch4">You can use this mirror : <a href="https://hf-mirror.com/" rel="nofollow">https://hf-mirror.com/</a></p> <p data-svelte-h="svelte-1pqkrf9">You will need to set the following environment variable :</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START --><span class="hljs-built_in">export</span> HF_ENDPOINT=https://hf-mirror.com/<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-u5qbjv">Note that you may also need to use mirrors to reach services like PyPI and GitHub.</p></details> <details><summary data-svelte-h="svelte-zoobf5"><strong>How to make the conversation app work in China?</strong></summary> <p data-svelte-h="svelte-s4nxfy">Reachy Mini conversation app relies on OpenAI gpt-realtime API, which might be inaccessible from China.</p> <p data-svelte-h="svelte-19jhn9v">The best workaround at the moment is to set up a VPN on your machine (Lite version), on the robot (Wireless version), or directly on your router.</p> <p data-svelte-h="svelte-1bwv6mh">When configuring the VPN routing rules:</p> <p data-svelte-h="svelte-1106qck">1) Route traffic through the VPN except for local network traffic, so the device remains accessible from your local network.</p> <p data-svelte-h="svelte-1i8z88f">You should whitelist:</p> <ul data-svelte-h="svelte-1s1rd0b"><li>Your local LAN IP range (for example 192.168.0.0/16, 192.168.1.0/24, etc., depending on your network setup).</li> <li>The following ports:
<ul><li>22 (SSH)</li> <li>8000 (Reachy Mini daemon)</li> <li>5353 TCP/UDP (mDNS / local discovery)</li></ul></li></ul> <p data-svelte-h="svelte-1ufcvhs">This ensures the robot remains reachable and discoverable locally, and mDNS (<code>reachy-mini.local</code>) should continue to work on the network.</p> <p data-svelte-h="svelte-1eu2pd5">2) If your VPN supports selective routing, a better approach is to route only the required external services through the VPN, instead of tunneling all HTTPS traffic.</p> <p data-svelte-h="svelte-29q3dz">If possible, configure the VPN to be used only for <code>huggingface.co</code> and <code>api.openai.com</code>.</p> <p data-svelte-h="svelte-14camce">This minimizes network side effects and keeps local services functioning normally.</p> <p data-svelte-h="svelte-1c0t0y8">For the Wireless version, once the VPN is configured on the robot, restart the daemon for the changes to take effect:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=" "><!-- HTML_TAG_START --><span class="hljs-attribute">sudo systemctl restart reachy-mini-daemon</span><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-y2oyv1">To verify the robot is reachable from a device on the same network, you can run:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=" "><!-- HTML_TAG_START --><span class="hljs-built_in">ping</span> reachy-mini.<span class="hljs-keyword">local</span><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1wct2pn"><em>Approaches based on open weight models are in the works, stay tuned!</em></p></details> <h2 class="relative group"><a id="-hardware-motors--limits" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-hardware-motors--limits"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>🤖 Hardware, Motors &amp; Limits</span></h2> <details data-svelte-h="svelte-fvxemc"><summary><strong>Where can I find more information about hardware?</strong></summary> <p>Refer to the <a href="./platforms/reachy_mini/hardware">Reachy Mini Hardware page</a> for detailed information about the robot’s hardware components.</p></details> <details data-svelte-h="svelte-1ycoide"><summary><strong>What are the safety limits (Head &amp; Body)?</strong></summary> <p>If you command a pose outside these limits, the robot will automatically clamp to the nearest safe pose.</p> <ul><li><strong>Body Yaw:</strong> [-180°, 180°].</li> <li><strong>Head Pitch/Roll:</strong> [-40°, 40°].</li> <li><strong>Head Yaw:</strong> [-180°, 180°].</li> <li><strong>Combined Limit:</strong> The difference between <code>body_yaw</code> and <code>head_yaw</code> must be within <strong>[-65°, 65°]</strong>.</li></ul></details> <details data-svelte-h="svelte-4mz2fr"><summary><strong>Why are the motors &quot;limp&quot; or &quot;stiff&quot;? (Compliancy)</strong></summary> <ul><li><strong><code>enable_motors()</code></strong>: Motors <strong>ON</strong> (Stiff). Robot holds position.</li> <li><strong><code>disable_motors()</code></strong>: Motors <strong>OFF</strong> (Limp). You can move it by hand.</li> <li><strong><code>make_motors_compliant()</code></strong>: Motors <strong>ON but Soft</strong>. Useful for teaching-by-demonstration.</li></ul></details> <details><summary data-svelte-h="svelte-1c2v8te"><strong>How do I access to motors&#39; parameters?</strong></summary> <ol data-svelte-h="svelte-122k8im"><li>You can refer scanning the motors using the <a href="https://github.com/pollen-robotics/reachy_mini/tree/main/src/reachy_mini/tools/scan_motors.py" rel="nofollow">scan_motors.py script</a>.</li></ol> <ul data-svelte-h="svelte-114mxt6"><li>If your robot is Lite, you can run the script directly on your computer:</li></ul> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START -->python -m reachy_mini.tools.scan_motors<!-- HTML_TAG_END --></pre></div> <ul data-svelte-h="svelte-90gotw"><li>If your robot is Wireless, ssh into the robot:</li></ul> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START -->ssh pollen@reachy-mini.local<!-- HTML_TAG_END --></pre></div> <ul data-svelte-h="svelte-1p7az2y"><li>Activate the venv:</li></ul> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START --><span class="hljs-built_in">source</span> /venvs/mini_daemon/bin/activate<!-- HTML_TAG_END --></pre></div> <ul data-svelte-h="svelte-qe5ipl"><li>And run the script (motors must be powered on for this!):</li></ul> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START -->python -m reachy_mini.tools.scan_motors --wireless<!-- HTML_TAG_END --></pre></div> <ul data-svelte-h="svelte-7jimqv"><li>It should print the list of detected motors. You should have all motors on baudrate 1000000, with the following IDs: 10,11, 12, 13, 14, 15,17, 18. If some are missing, check the cables again. If there is a motor with a different ID or baudrate, please contact support.</li></ul> <p data-svelte-h="svelte-6lo445">Example of the right output:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=" "><!-- HTML_TAG_START -->Trying <span class="hljs-keyword">baudrate: </span><span class="hljs-number">9600</span>
No motors found <span class="hljs-built_in">at</span> <span class="hljs-keyword">baudrate </span><span class="hljs-number">9600</span>
Trying <span class="hljs-keyword">baudrate: </span><span class="hljs-number">57600</span>
No motors found <span class="hljs-built_in">at</span> <span class="hljs-keyword">baudrate </span><span class="hljs-number">57600</span>
Trying <span class="hljs-keyword">baudrate: </span><span class="hljs-number">115200</span>
No motors found <span class="hljs-built_in">at</span> <span class="hljs-keyword">baudrate </span><span class="hljs-number">115200</span>
Trying <span class="hljs-keyword">baudrate: </span><span class="hljs-number">1000000</span>
Found motors <span class="hljs-built_in">at</span> <span class="hljs-keyword">baudrate </span><span class="hljs-number">1000000</span>: [<span class="hljs-number">10</span>, <span class="hljs-number">11</span>,<span class="hljs-number">12</span>,<span class="hljs-number">13</span>, <span class="hljs-number">14</span>, <span class="hljs-number">15</span>, <span class="hljs-number">16</span>, <span class="hljs-number">17</span>, <span class="hljs-number">18</span>]<!-- HTML_TAG_END --></pre></div> <ol start="2" data-svelte-h="svelte-98iqun"><li>Lite: You can also use the Dynamixel Wizard to read motors parameters. Follow the guide <a href="./platforms/reachy_mini_lite/wizard">here</a>.</li></ol></details> <details data-svelte-h="svelte-e35zk"><summary><strong>Motors stop responding after a while.</strong></summary> <ul><li>Check the power supply connection.</li> <li>Motors might have entered thermal protection mode (overheating). Turn off and on again.</li> <li>Updating the SDK (<code>pip install -U reachy-mini</code>) has solved this for some users.</li> <li>If the motor’s led blinks red, see the “Motor blinking red or Overload Error” section in the Essential Troubleshooting above.</li></ul></details> <details data-svelte-h="svelte-1qfz762"><summary><strong>Does the battery has safety features?</strong></summary>
Wireless includes a proper battery charger.
The battery integrates a BMS with a temperature sensor too.</details> <details data-svelte-h="svelte-17nrae6"><summary><strong>How do I see the battery left?</strong></summary>
We do not have the possibility to check the battery status, that&#39;s a known limitation of the design.
<p>We only have the led indication for “low battery” when it’s time to charge it. (green -&gt; orange -&gt; red)</p></details> <details data-svelte-h="svelte-1f22b6u"><summary><strong>How to remove the battery</strong></summary> <ul><li>Check that the green led is not on first.</li> <li>Remove the 3x screws at the bottom and take out the foot a little bit.
<img src="https://github.com/pollen-robotics/reachy_mini/raw/develop/docs/assets/remove_foot.png" alt="remove_foot"></li> <li>Unplug the indicated connector (red arrow) to be able to remove the battery. There should be some double-sided tape that maintain the battery in place, so it can be a bit hard to remove.
<img src="https://github.com/pollen-robotics/reachy_mini/raw/develop/docs/assets/battery_connector.png" alt="battery_location"></li> <li>When you’ll re-assemble it, do these step again in reverse order. Just be careful not to pinch any cable.</li></ul></details> <details data-svelte-h="svelte-vncugg"><summary><strong>The head may touch the body during some official motions</strong></summary> <p>This behavior is expected and not a hardware or software bug.<br>
However, since it can be confusing, we will update those motions to avoid this contact.</p></details> <details data-svelte-h="svelte-j6ehry"><summary><strong>Can I modify the appearance (Skins/CAD)?</strong></summary> <ul><li><strong>CAD:</strong> The full STEP files havenot been released yet, but we plan to release them in the future. In the meantime, you can find some STL files in the <a href="/src/reachy_mini/descriptions/reachy_mini/mjcf/assets">assets folder</a> of the repository.</li> <li><strong>Skins:</strong> Yes, the community has created custom builds. Some “skin” STEP files have been shared on discord, on the channel <a href="https://discord.com/channels/519098054377340948/1453340883775651861" rel="nofollow">“Pimp my Reachy Mini”</a>.</li></ul></details> <details data-svelte-h="svelte-1ri8he9"><summary><strong>My mic flat cable is broken</strong></summary> <p>The specifications of the microphone’s cable are as follows:</p> <ul><li>FFC/FPC flat flexible cable</li> <li>12 pins</li> <li>0.5mm spacing</li> <li>Type A (connectors on the same side)</li> <li>15mm length</li></ul> <p>Here are a few references if you are looking for a replacement for your microphone cable:</p> <ul><li><a href="https://www.amazon.fr/dp/B09TR4X1BP?ref=cm_sw_r_cso_cp_apan_dp_1NV8C5T7V97Z78X6J80Z&ref_=cm_sw_r_cso_cp_apan_dp_1NV8C5T7V97Z78X6J80Z&social_share=cm_sw_r_cso_cp_apan_dp_1NV8C5T7V97Z78X6J80Z" rel="nofollow">Amazon</a></li> <li><a href="https://fr.farnell.com/molex/15020-0127/cordon-ffc-12-cond-152mm-blanc/dp/3862090" rel="nofollow">Farnell</a></li></ul></details> <h2 class="relative group"><a id="-sdk-apps--programming" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-sdk-apps--programming"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>🐍 SDK, Apps &amp; Programming</span></h2> <details><summary data-svelte-h="svelte-1xqjh7o"><strong>How do I connect from Python?</strong></summary> <p data-svelte-h="svelte-18j2va8">Use the <code>ReachyMini</code> class.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-python "><!-- HTML_TAG_START --><span class="hljs-keyword">from</span> reachy_mini <span class="hljs-keyword">import</span> ReachyMini
<span class="hljs-keyword">with</span> ReachyMini() <span class="hljs-keyword">as</span> mini:
<span class="hljs-comment"># Your code here</span>
<span class="hljs-built_in">print</span>(mini.state)<!-- HTML_TAG_END --></pre></div></details> <details><summary data-svelte-h="svelte-1fn8wss"><strong>How do I create a new App?</strong></summary> <p data-svelte-h="svelte-6f7siv">Use the app assistant CLI:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START -->reachy-mini-app-assistant create my_app_name /path/to/destination --publish<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1mmgyn6">See the full guide: <a href="./SDK/apps">Building &amp; Publishing Apps</a> — covers app structure, testing, publishing, debugging, and deployment.</p></details> <details><summary data-svelte-h="svelte-16d2cio"><strong>My app crashes silently or doesn&#39;t start</strong></summary> <p data-svelte-h="svelte-t8aok">If your app depends on a package not installed in the environment, it will crash on import with no visible error. Test imports manually:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START --><span class="hljs-comment"># On Wireless</span>
ssh pollen@reachy-mini.local <span class="hljs-string">&quot;/venvs/apps_venv/bin/python3 -c &#x27;from my_app.main import MyApp&#x27;&quot;</span>
<span class="hljs-comment"># On Lite / local</span>
python -c <span class="hljs-string">&quot;from my_app.main import MyApp&quot;</span><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-yl55r1">For more debugging tips (viewing logs, common pitfalls), see <a href="./SDK/apps#debugging-apps">Debugging Apps</a>.</p></details> <details data-svelte-h="svelte-484gee"><summary><strong>Is installing apps directly from Reachy Mini Control supported?</strong></summary> <p>Sure! You can install apps directly from Reachy Mini Control if they’re native, or add them to your favourites if they’re web-based.</p></details> <details><summary data-svelte-h="svelte-upzeis"><strong>All apps installations fail on Windows !</strong></summary> <p data-svelte-h="svelte-1lwi7o3">It might be related to unsufficient rights to create symlinks in Windows. You can set the environment variable <code>HF_HUB_DISABLE_SYMLINKS_WARNING</code> to 1 to remove the warnings that cause the failure.</p> <p data-svelte-h="svelte-1cbxvwt">In a terminal, run :</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-powershell "><!-- HTML_TAG_START --><span class="hljs-built_in">set</span> HF_HUB_DISABLE_SYMLINKS_WARNING=<span class="hljs-number">1</span><!-- HTML_TAG_END --></pre></div></details> <details><summary data-svelte-h="svelte-1mwp8sl"><strong>Installing apps from Hugging Face fails.</strong></summary> <p data-svelte-h="svelte-1jmrrz6">Update your SDK. Early versions had a bug with Space installation.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START -->pip install -U reachy-mini<!-- HTML_TAG_END --></pre></div></details> <details data-svelte-h="svelte-445bvl"><summary><strong>Is there a Simulation mode?</strong></summary> <p>Yes, via MuJoCo. It is still a work in progress, but you can run code with the <code>--sim</code> flag or <code>ReachyMini(media_backend=&quot;no_media&quot;)</code> if just testing logic without physics.</p></details> <details><summary data-svelte-h="svelte-tcshex"><strong>How do I debug an app on the Wireless?</strong></summary> <p data-svelte-h="svelte-kjgghy">SSH into the embedded computer, clone (or copy) your app, and run it manually. This reproduces what Reachy Mini Control does when launching your app.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START -->ssh pollen@reachy-mini.local
<span class="hljs-comment"># password: root</span>
<span class="hljs-built_in">cd</span> your_app_name
python your_app_name/main.py<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-xciqke">Your GUI will open at the usual address (for example, <code>http://reachy-mini.local:8042</code>).</p></details> <h2 class="relative group"><a id="-moving-the-robot" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-moving-the-robot"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>🕹️ Moving the Robot</span></h2> <details><summary data-svelte-h="svelte-1udqvrs"><strong>How do I move the head?</strong></summary> <p data-svelte-h="svelte-1kd76gn">Use <code>goto_target</code> with <code>create_head_pose</code>:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-python "><!-- HTML_TAG_START --><span class="hljs-keyword">from</span> reachy_mini.utils <span class="hljs-keyword">import</span> create_head_pose
<span class="hljs-comment"># ... inside with ReachyMini() as mini:</span>
mini.goto_target(head=create_head_pose(yaw=-<span class="hljs-number">10</span>, pitch=<span class="hljs-number">20</span>))<!-- HTML_TAG_END --></pre></div></details> <details data-svelte-h="svelte-1s1lk7z"><summary><strong>What is the difference between `goto_target` and `set_target`?</strong></summary> <ul><li><strong><code>goto_target</code></strong>: <strong>Smooth</strong>. Interpolates motion over time (default 0.5s). Best for gestures.</li> <li><strong><code>set_target</code></strong>: <strong>Instant</strong>. Sets the target immediately. Best for high-frequency control (teleoperation, mathematical trajectories).</li></ul></details> <details><summary data-svelte-h="svelte-9kkjsj"><strong>How do I record and replay moves?</strong></summary> <p data-svelte-h="svelte-acdez4"><strong>Recording:</strong>
Call <code>start_recording()</code> and <code>stop_recording()</code> around your control loop.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-python "><!-- HTML_TAG_START -->mini.start_recording()
<span class="hljs-comment"># ... move robot ...</span>
move = mini.stop_recording()<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-13p8fpf"><strong>Replaying:</strong>
Use the <code>RecordedMoves</code> class to load moves from the <a href="https://github.com/pollen-robotics/reachy_mini_dances_library" rel="nofollow">Hugging Face library</a>.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-python "><!-- HTML_TAG_START -->mini.play_move(recorded_moves.get(<span class="hljs-string">&quot;dance_1&quot;</span>))<!-- HTML_TAG_END --></pre></div></details> <details><summary data-svelte-h="svelte-1w59a5o"><strong>My robot&#39;s move look shaky. Is the control loop running correctly?</strong></summary> <p data-svelte-h="svelte-vr9z6w">You can check that the motor control loop runs correctly by checking the daemon status:</p> <ul data-svelte-h="svelte-1h4378i"><li>via the SDK</li></ul> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-python "><!-- HTML_TAG_START -->mini = ReachyMini()
<span class="hljs-built_in">print</span>(mini.client.get_status())<!-- HTML_TAG_END --></pre></div> <ul data-svelte-h="svelte-1lfiaou"><li>via the REST API at <code>http://localhost:8000/docs</code> on a Lite and <code>http://reachy-mini.local:8000/docs</code> for the Wireless (look for <code>/api/daemon/status</code> endpoint)</li></ul> <p data-svelte-h="svelte-nk58bv">You should see values around 50Hz (~20ms period):</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-python "><!-- HTML_TAG_START -->{
...
<span class="hljs-string">&quot;motor_controller&quot;</span>: <span class="hljs-string">&quot;ControlLoopStats(period=~19.99ms, read_dt=~1.94 ms, write_dt=~0.19 ms)&quot;</span>
...
}<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1xgm07b">If the period is much higher than 20ms, it means the control loop is not running fast enough. This can be due to:</p> <ul data-svelte-h="svelte-10cl38h"><li>Heavy CPU load on the computer (eg. other apps using too much CPU).</li> <li>(only for lite) high USB latency (try configuring your serial port).</li></ul></details> <h2 class="relative group"><a id="-vision--audio" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-vision--audio"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>👁️ Vision &amp; Audio</span></h2> <details><summary data-svelte-h="svelte-29kz96"><strong>Volume is too low (Linux)</strong></summary> <ol data-svelte-h="svelte-17msb16"><li>Run <code>alsamixer</code>.</li> <li>Set <strong>PCM1</strong> to 100%.</li> <li>Use <strong>PCM,0</strong> to adjust the global volume.</li></ol> <p data-svelte-h="svelte-1iv0cpu">To make it permanent:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START -->CARD=$(aplay -l | grep -i <span class="hljs-string">&quot;reSpeaker&quot;</span> | <span class="hljs-built_in">head</span> -n1 | sed -n <span class="hljs-string">&#x27;s/^card \([0-9]*\):.*/\1/p&#x27;</span>)
amixer -c <span class="hljs-string">&quot;<span class="hljs-variable">$CARD</span>&quot;</span> <span class="hljs-built_in">set</span> PCM,1 100%
sudo alsactl store <span class="hljs-string">&quot;<span class="hljs-variable">$CARD</span>&quot;</span><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-10rws7n">This is a <a href="https://www.xmos.com/documentation/XM-014888-PC/html/modules/fwk_xvf/doc/user_guide/02_setting_up_the_hardware.html#low-volume-of-playback-audio-on-linux-for-project-ua" rel="nofollow">known issue</a> of the XVF3800 based sound card.</p></details> <details><summary data-svelte-h="svelte-ls28ih"><strong>How do I get camera frames?</strong></summary> <p data-svelte-h="svelte-17yn96o">Use the <code>media</code> object.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-python "><!-- HTML_TAG_START --><span class="hljs-keyword">with</span> ReachyMini() <span class="hljs-keyword">as</span> mini:
frame = mini.media.get_frame()
<span class="hljs-comment"># Returns a numpy array (BGR format, compatible with OpenCV)</span><!-- HTML_TAG_END --></pre></div></details> <details><summary data-svelte-h="svelte-1bf7wem"><strong>How do I use the Microphone / Speaker?</strong></summary> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-python "><!-- HTML_TAG_START --><span class="hljs-comment"># Get audio </span>
sample = mini.media.get_audio_sample()
<span class="hljs-comment"># Play audio</span>
mini.media.push_audio_sample(numpy_chunk)<!-- HTML_TAG_END --></pre></div></details> <details data-svelte-h="svelte-thm572"><summary><strong>How do I make Reachy look at something?</strong></summary> <ul><li><strong>2D (Image):</strong> <code>mini.look_at_image(x, y)</code> - (0,0 is top-left).</li> <li><strong>3D (World):</strong> <code>mini.look_at_world(x, y, z)</code> - Coordinates in robot frame.</li></ul></details> <details data-svelte-h="svelte-1dmqnfg"><summary><strong>Face tracking feels slow.</strong></summary> <p>Performance relies heavily on lighting conditions. Ensure the face is well-lit. The LOCAL backend (GStreamer IPC) provides the lowest latency for on-device applications.</p></details> <details><summary data-svelte-h="svelte-1l107kz"><strong>How do I check that the sound system is working?</strong></summary> <h3 class="relative group"><a id="reachy-mini-lite-version" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#reachy-mini-lite-version"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Reachy Mini Lite Version</span></h3> <p data-svelte-h="svelte-12y5v2l">The easiest way to test the Lite version is to directly use the <em>Pollen Robotics Reachy Mini Audio</em> device from your computer to verify proper functionality.</p> <h3 class="relative group"><a id="reachy-mini-wireless-version" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#reachy-mini-wireless-version"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Reachy Mini Wireless Version</span></h3> <p data-svelte-h="svelte-q79wvc">For the Wireless version, you can use the following GStreamer commands to test audio recording and playback:</p> <p data-svelte-h="svelte-10zbmxl">In the case of the wireless version, you may use the following commands:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START --><span class="hljs-comment"># record a sound</span>
gst-launch-1.0 -e alsasrc device=<span class="hljs-string">&quot;reachymini_audio_src&quot;</span> ! audioconvert ! audioresample ! wavenc ! filesink location=<span class="hljs-string">&quot;test.wav&quot;</span>
<span class="hljs-comment"># playback the recording</span>
gst-launch-1.0 filesrc location=test.wav ! wavparse ! audioconvert ! alsasink device=reachymini_audio_sink
<span class="hljs-comment">#playback a test sound (pink noise)</span>
gst-launch-1.0 audiotestsrc wave=<span class="hljs-string">&quot;pink-noise&quot;</span> ! audioconvert ! audioresample ! alsasink device=<span class="hljs-string">&quot;reachymini_audio_sink&quot;</span><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-10t3fjg"><strong>Advanced Testing:</strong>
You can play back a sound while recording simultaneously to test the echo cancellation performance. This helps verify that the microphone array is properly processing audio and canceling echo from the speakers.</p> <p data-svelte-h="svelte-1rd8xoj"><strong>Troubleshooting Tips:</strong></p> <ul data-svelte-h="svelte-15uz11i"><li>Ensure the <code>.asoundrc</code> file exists in the home directory</li> <li>Check that the microphone is detected: <code>arecord -l</code></li> <li>Check that the speaker is detected: <code>aplay -l</code></li> <li>If audio-board configuration fails with <code>No Reachy Mini Audio USB device found!</code>,
run the SDK code on the machine that has the ReSpeaker audio board connected.
For Lite this is your computer; for Wireless this is the robot itself.</li></ul></details> <h2 class="relative group"><a id="-specific-error-messages--fixes" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-specific-error-messages--fixes"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>🔧 Specific Error Messages &amp; Fixes</span></h2> <details data-svelte-h="svelte-1gj1hdo"><summary><strong>Motor &#39;<name>&#39; hardware errors: [&#39;Input Voltage Error&#39;]</name></strong></summary>
We are using a higher voltage on Reachy Mini, it&#39;s on purpose :)</details> <details><summary data-svelte-h="svelte-v0byek"><strong>Error: &quot;OSError: PortAudio library not found&quot;</strong></summary> <p data-svelte-h="svelte-zm0tze">This error occurs when using <code>sounddevice</code> directly (e.g. after calling <code>release_media()</code>). Install the system dependency:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START -->sudo apt-get install libportaudio2<!-- HTML_TAG_END --></pre></div></details> <details data-svelte-h="svelte-1rgggzm"><summary><strong>Warning: &quot;Circular buffer overrun&quot; (Simulation/Mujoco)</strong></summary> <p>This appears if you connect to the robot but don’t consume the video frames, causing the buffer to fill up.</p> <ul><li><strong>Fix:</strong> If you don’t need video, initialize with <code>ReachyMini(media_backend=&quot;no_media&quot;)</code>.</li></ul></details> <details><summary data-svelte-h="svelte-1bga0vk"><strong>Conversation app crashes on launch after update (custom profile)</strong></summary> <p data-svelte-h="svelte-1p9f54r">If you created a custom profile for the Conversation app on an older version and the app now exits immediately after updating, the app is looking for the profile at a path that no longer exists — the default profile location changed in a recent release.</p> <p data-svelte-h="svelte-1esh5xf"><strong>Symptoms</strong> — the logs end with a <code>SystemExit: 1</code> raised from <code>prompts.py</code>, e.g.:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=" "><!-- HTML_TAG_START -->File <span class="hljs-string">&quot;.../reachy_mini_conversation_app/prompts.py&quot;</span>, line <span class="hljs-number">88</span>, <span class="hljs-keyword">in</span> get_session_instructions
sys.<span class="hljs-keyword">exit</span>(<span class="hljs-number">1</span>)
SystemExit: <span class="hljs-number">1</span><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-ob0zfu"><strong>Fix (recommended):</strong> From the Reachy Mini Control desktop app, click <strong>Reset apps environment</strong> (see “Bootstrap or update fails / Python environment issues” above). Apps will need to be reinstalled afterwards.</p> <p data-svelte-h="svelte-1u3c8dn"><strong>Alternative (advanced):</strong> SSH into the robot (Wireless: <code>ssh pollen@reachy-mini.local</code>) and delete the apps venv directly, then reinstall the Conversation app:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class="language-bash "><!-- HTML_TAG_START --><span class="hljs-built_in">rm</span> -rf /venvs/apps_venv<!-- HTML_TAG_END --></pre></div></details> <details data-svelte-h="svelte-wq70jh"><summary><strong>No Microphone Input / Direction of Arrival (Beta Units)</strong></summary> <ul><li><strong>No Input:</strong> Requires firmware 2.1.3. Run the <a href="https://github.com/pollen-robotics/reachy_mini/tree/main/src/reachy_mini/assets/firmware/update.sh" rel="nofollow">update script</a>.</li> <li><strong>No Direction:</strong> Requires firmware 2.1.0+.</li> <li>Check that the flat flexible cable is intalled the right way (Slides 45-47 of assembly guide).</li></ul></details> <h2 class="relative group"><a id="-shipping--warranty" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-shipping--warranty"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>📦 Shipping &amp; Warranty</span></h2> <details data-svelte-h="svelte-5rix95"><summary><strong>My package is damaged or missing.</strong></summary> <p>Contact <strong>Pollen Robotics</strong> team immediately. You can send us an email to <a href="mailto:sales@pollen-robotics.com">sales@pollen-robotics.com</a> with photos of the package, receipt number or invoice number and your full name. We will then check with the transport company and keep you updated.</p></details> <details data-svelte-h="svelte-5dypjb"><summary><strong>Refund Policy</strong></summary> <ul><li><strong>Before shipping:</strong> Contact <code>sales@pollen-robotics.com</code> for a 100% refund.</li> <li><strong>After shipping:</strong> You have 30 days to return your package. Contact sales (<a href="mailto:sales@pollen-robotics.com">sales@pollen-robotics.com</a>) with proof of delivery and invoice or receipt number. If you have comments / feedback, please let us know, our focus is building a robot the open-source community enjoys building.</li></ul></details> <details data-svelte-h="svelte-1ydogov"><summary><strong>Warranty</strong></summary> <p>If a part is broken/malfunctioning, Pollen’s after-sales team will determine if it is a hardware defect covered by warranty. Then, our manufacturer will provide repair or replacement parts. You can send us an email to <a href="mailto:sales@pollen-robotics.com">sales@pollen-robotics.com</a> with photos of the issue, receipt number or invoice number and your full name.</p></details> <h2 class="relative group"><a id="-still-stuck" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#-still-stuck"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>💬 Still stuck?</span></h2> <p data-svelte-h="svelte-5n1k81">If you couldn’t find the answer to your issue in this guide, please reach out to us directly!
The Pollen Robotics team and the community are active on Discord to help you troubleshoot specific problems.</p> <p data-svelte-h="svelte-1vivtir">👉 <strong><a href="https://discord.gg/Y7FgMqHsub" rel="nofollow">Join the Pollen Robotics Discord</a></strong></p> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/pollen-robotics/reachy_mini/blob/main/docs/source/troubleshooting.md" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg> <span data-svelte-h="svelte-zjs2n5"><span class="underline">Update</span> on GitHub</span></a> <p></p>
<script>
{
__sveltekit_14cjvgd = {
assets: "/docs/reachy_mini/pr_1069/en",
base: "/docs/reachy_mini/pr_1069/en",
env: {}
};
const element = document.currentScript.parentElement;
const data = [null,null];
Promise.all([
import("/docs/reachy_mini/pr_1069/en/_app/immutable/entry/start.6cd5df39.js"),
import("/docs/reachy_mini/pr_1069/en/_app/immutable/entry/app.405911a4.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 51],
data,
form: null,
error: null
});
});
}
</script>

Xet Storage Details

Size:
106 kB
·
Xet hash:
1b6b7c671ffac9ed16b8fb2ca403987a26b4a6ef0dc7962ee231fede73bd4ec8

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.