> For the complete documentation index, see [llms.txt](https://guide.petoi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guide.petoi.com/product/quaddle-under-construction/quick-start-guide/update-firmware-for-motion-core-board.md).

# Update firmware for Motion core board

This section introduces a simple method for updating firmware on a Motion core board:

Use tyutool to upload the firmware to the Motion core board.

{% stepper %}
{% step %}

### Download tyutool

Please [download ](https://tuyaopen.ai/tyutool#download)and install the version of **tyutool** that corresponds to your current operating system.
{% endstep %}

{% step %}

### Upload the firmware

{% hint style="warning" %}
**NOTE:**

When connecting the mainboard to the computer via a USB cable, on **macOS**, two serial device names should appear (one starting with "cu.usbmodem" or "tty.usbmodem", and the other starting with "cu.wchusbserial" or "tty.wchusbserial"); you **must** use the device with the name starting with "**tty.wchusbserial**" or "**cu.wchusbserial**".

If your computer does not detect the corresponding serial port device name after you plug in the USB cable, please refer to the [Download and install the USB driver](/quick-reference/upload-firmware/biboard-v1.md#download-and-install-the-usb-driver) section.
{% endhint %}

You can connect the Motion core board to your computer using a **USB Type-C** data cable and upload the Tuya-based upgrade firmware as follows:

<figure><img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2FOPopWyMPYaU0StDdcMUW%2Fimage.png?alt=media&amp;token=0f6da7a4-043f-481e-99a7-209f5d13d579" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2Fq5sOMFmKmh0bwrifZKN8%2Fimage.png?alt=media&amp;token=e488b0a7-2da3-48c4-9519-63a46853d9ef" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2FDxcn2J9tM7a9A3Vo5i5E%2Fimage.png?alt=media&amp;token=7605a0c2-29f8-4328-a6e2-05592db8a888" alt=""><figcaption></figcaption></figure>

1. Select the **serial port device name** connected to the AI ​​core board.\
   Select the serial communication baud rate: **921600**\
   Select the chip platform: **ESP32-S3**
2. Select the option: **Flash**
3. Click the **Browse...** button to open the file browser and select the **.bin** file containing "merged", as shown in the image above.
4. Click the **Start flash** button.

{% hint style="info" %}
Note: After selecting the firmware .bin file in Step 3, the E**nd address** will be automatically calculated.
{% endhint %}
{% endstep %}

{% step %}

### Complete initialization configuration

After uploading new firmware, if the screen displays the following information, the robot has entered initialization mode.

<figure><img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2FcjCWaga1yQdReHb1jRts%2Fimage.png?alt=media&amp;token=c00c169b-c790-4f8f-b4ea-16c29769ac89" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2F6sHyX2QZGhg06DbDBJU3%2Fimage.png?alt=media&amp;token=f8b51fe2-7118-4fb8-9eee-0f6fd57e918b" alt=""><figcaption><p>Reset joint calibration data</p></figcaption></figure>

Press the **Lt** touch button on the back panel to select **Yes**.

<figure><img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2FM2c9oPy4THf1T0mMXZmo%2Fimage.png?alt=media&amp;token=19af0587-10e4-42e6-a321-a7e798cb4bc5" alt=""><figcaption><p>Calibrate IMU</p></figcaption></figure>

Level the robot body and press the **Lt** touch button on the back panel to select Yes.

<figure><img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2FO3VJjdp9xcWXPoIOJNDg%2Fimage.png?alt=media&amp;token=3bd24197-44ca-4fcd-9a14-f2161708aa49" alt=""><figcaption><p>Self check</p></figcaption></figure>

If "**Self check**" appears on the screen, please ignore it; the system will automatically skip this step after 5 seconds and exit initialization mode.

{% hint style="info" %}
With certain earlier firmware versions, after upgrading the firmware and restarting the program, the screen may continuously display the following information:\
![](https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2FIXdG6M1xmUdzJGmNPRTf%2Fimage.png?alt=media\&token=d26c8aa9-454b-4b23-87b8-fdbb0cdc8775)\
\
You need to open the serial monitor as follows:

<img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2F0a18T5fvNAcPORFKCKzo%2Fimage.png?alt=media&amp;token=6cadded1-652d-43f1-a2c9-2a8b9720d205" alt="" data-size="original">

Press the **Reset** button on the side of the robot body:

<img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2FItjGAthRBRvB62E8eoiI%2Fimage.png?alt=media&amp;token=7dc23322-e811-462f-98f2-faa62f4dd425" alt="" data-size="original">

Restart the program. If you drag the scroll bar on the right to the bottom and see the following print information:\
**Reset the joint’s calibration offsets? (Y/n)**

<img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2FKKlqmheRAwlmKHVOGNH3%2Fimage.png?alt=media&amp;token=5df1a95e-777b-4073-9f19-57b831d7a5f9" alt="" data-size="original">

Input "**Y"**, and click the **Send** button to skip, then observe the output serial port print information.

{% hint style="success" %}
If you do not see the prompt "Reset the joint’s calibration offsets? (Y/n)", You can close the Serial Monitor directly.
{% endhint %}

The Serial Monitor will display: **Calibrate the Inertial Measurement Unit (IMU)? (Y/n):**\
Level the robot body and input "**Y**", click the **Send** button to skip, and then observe the output serial port print information.

The Serial Monitor will display: **Run factory quality assurance program? (Y/n):** \
You can input "**n**" and click the **Send** button to skip, or wait for the 5-second countdown to skip automatically. Then, you'll see "**Ready**", indicating the program has automatically entered normal startup mode.&#x20;

<img src="https://4130507397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLpFdG7mubqEHWylLK3w%2Fuploads%2FVlvEdObO3UbV7O98kMj2%2Fimage.png?alt=media&amp;token=a17069fc-1f34-4a20-8e7e-240904412b8b" alt="" data-size="original">

At this point, you can click the **Close** button in the upper right corner to close the Serial Monitor. <br>
{% endhint %}

{% hint style="success" %}
This step is not required for subsequent robot restarts.
{% endhint %}
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://guide.petoi.com/product/quaddle-under-construction/quick-start-guide/update-firmware-for-motion-core-board.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
