> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omi.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Omi Firmware

> Keep your Omi device up to date with the latest firmware. Use the app for easy updates or follow the manual process.

## Overview

There are two ways to update your Omi device firmware:

<CardGroup cols={2}>
  <Card title="Via Omi App" icon="mobile">
    **Recommended** - The easiest way to update

    Go to **Settings → Device Settings → Update Firmware**
  </Card>

  <Card title="Manual Update" icon="terminal">
    For advanced users or troubleshooting

    Follow the instructions below for your device
  </Card>
</CardGroup>

<Tabs>
  <Tab title="DevKit (DK1 & DK2)" icon="microchip">
    ## Manual Update for DevKit

    <Steps>
      <Step title="Download Required Files" icon="download">
        **Bootloader** (required for first-time setup or if corrupted):

        * Download [bootloader0.9.0.uf2](https://github.com/BasedHardware/omi/releases/download/v2.0.1-Omi/bootloader0.9.0.uf2)
        * Compatible with Seeed XIAO nRF52840 Sense (SoftDevice S140 7.3.0)

        **Firmware** (choose your device):

        * [DevKit 1 Firmware](https://github.com/BasedHardware/omi/releases?q=release_firmware+DK1)
        * [DevKit 2 Firmware](https://github.com/BasedHardware/omi/releases?q=release_firmware+DK2)
      </Step>

      <Step title="Prepare Your Device" icon="check">
        Before starting, ensure:

        * Battery is above 50%
        * Using a direct USB connection (avoid USB hubs)
        * Have a small pin ready for the reset button
      </Step>

      <Step title="Enter DFU Mode" icon="power-off">
        1. Connect your device via USB
        2. Locate the reset button:

        <Tabs>
          <Tab title="DevKit 2">
            Remove the lid and find the button labeled "RST"

            <img src="https://mintcdn.com/omi/kuqgaBKwHOGhyCBK/images/docs/get_started/assets/images/dk2_rst_button-568e837198e6acedc078bd922c2a46e0.jpeg?fit=max&auto=format&n=kuqgaBKwHOGhyCBK&q=85&s=cfd04a6258a98545ffe6edd159e491ec" alt="DFU Button Location, DevKit 2" width="855" height="857" data-path="images/docs/get_started/assets/images/dk2_rst_button-568e837198e6acedc078bd922c2a46e0.jpeg" />
          </Tab>

          <Tab title="DevKit 1">
            Use the button shown below

            <img src="https://mintcdn.com/omi/kuqgaBKwHOGhyCBK/images/docs/get_started/assets/images/dfu_dev_kit_reset_button-6564f71a7c6f4aab49c9ff131d3435ce.png?fit=max&auto=format&n=kuqgaBKwHOGhyCBK&q=85&s=89354fd4ddc96628f5d96b7c88de4c3f" alt="DFU Button Location, DevKit 1" width="3024" height="4032" data-path="images/docs/get_started/assets/images/dfu_dev_kit_reset_button-6564f71a7c6f4aab49c9ff131d3435ce.png" />
          </Tab>
        </Tabs>

        3. **Double-click** the reset button quickly
        4. Your computer should show a drive named `/Volumes/XIAO-SENSE`
      </Step>

      <Step title="Flash the Device" icon="bolt">
        **Install Bootloader** (if needed):

        1. Drag `bootloader0.9.0.uf2` to the `/Volumes/XIAO-SENSE` drive
        2. Wait for the drive to eject automatically
        3. Put device back in DFU mode (repeat step 3)

        **Install Firmware**:

        1. Drag the firmware `.uf2` file to the `/Volumes/XIAO-SENSE` drive
        2. Wait for completion (ignore "transfer incomplete" messages)
        3. Device will restart automatically
      </Step>
    </Steps>

    ### Troubleshooting

    <AccordionGroup>
      <Accordion title="Device isn't recognized" icon="usb">
        * Try a different USB cable (some cables are charge-only)
        * Try a different USB port
        * Avoid USB hubs - connect directly to your computer
      </Accordion>

      <Accordion title="Update fails" icon="rotate">
        * Retry the process from the beginning
        * Make sure battery is above 50%
        * Try double-clicking the reset button faster
      </Accordion>

      <Accordion title="'Transfer incomplete' message" icon="clock">
        This is normal! Wait 30 seconds, then check if the device restarted successfully.
      </Accordion>

      <Accordion title="Still having issues?" icon="circle-question">
        See the [DevKit2 Firmware Guide](https://help.omi.me/en/articles/9995941-updating-your-devkit2-firmware) for additional help.
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="Consumer Version (CV1)" icon="microchip">
    ## Flashing Consumer Version 1

    <Warning>
      CV1 requires a **special flashing cable** that connects to a J-Link programmer. Without this cable, the CV1 cannot be programmed.
    </Warning>

    ### Prerequisites

    <CardGroup cols={2}>
      <Card title="Hardware Required" icon="plug">
        * Omi CV1 device
        * J-Link programmer
        * Special SWD flashing cable
        * USB cable
      </Card>

      <Card title="Software Required" icon="download">
        * [J-Link Software](https://www.segger.com/downloads/jlink/)
        * Latest firmware files from GitHub
      </Card>
    </CardGroup>

    ### Step 1: Download Latest Firmware

    <Steps>
      <Step title="Get Firmware Files" icon="download">
        1. Go to [Omi GitHub Releases for CV1](https://github.com/BasedHardware/omi/releases?q=release_firmware+OMI+CV1)
        2. Find the latest release
        3. Download both files:
           * `merged.hex` — Application core firmware
           * `merged_CPUNET.hex` — Network core firmware
      </Step>

      <Step title="Replace Existing Files" icon="copy">
        <Tabs>
          <Tab title="macOS">
            ```bash theme={null}
            cd MAC/

            # Optional: Backup existing files
            mv merged.hex merged.hex.backup
            mv merged_CPUNET.hex merged_CPUNET.hex.backup

            # Copy new firmware files to this folder
            ```
          </Tab>

          <Tab title="Windows">
            ```cmd theme={null}
            cd WINDOWS\

            # Optional: Backup existing files
            # Rename merged.hex → merged.hex.backup
            # Rename merged_CPUNET.hex → merged_CPUNET.hex.backup

            # Copy new firmware files to this folder
            ```
          </Tab>
        </Tabs>
      </Step>

      <Step title="Verify Files" icon="check">
        Ensure both files are updated:

        * File sizes should match downloaded versions
        * Modification dates should reflect the replacement
      </Step>
    </Steps>

    ### Step 2: Flash the Firmware

    <Tabs>
      <Tab title="macOS" icon="apple">
        1. Install J-Link Software from [SEGGER](https://www.segger.com/downloads/jlink/)

        2. Navigate to the MAC folder and flash:

        ```bash theme={null}
        cd MAC

        # Flash network core first
        JLinkExe -CommanderScript program_net.jlink

        # Then flash application core
        JLinkExe -CommanderScript program_app.jlink
        ```
      </Tab>

      <Tab title="Windows" icon="windows">
        1. Install J-Link Software from [SEGGER](https://www.segger.com/downloads/jlink/)

        2. Add J-Link to your PATH (default: `C:\Program Files\SEGGER\JLink\`)

        3. Navigate to the WINDOWS folder and flash:

        ```cmd theme={null}
        cd WINDOWS

        # Flash network core first
        JLink.exe -CommanderScript program_net.jlink

        # Then flash application core
        JLink.exe -CommanderScript program_app.jlink
        ```
      </Tab>
    </Tabs>

    ### Verification

    <Info>
      If the LEDs start blinking after flashing, the update was successful! Confirm the firmware version in the Omi app.
    </Info>

    ### Troubleshooting

    <AccordionGroup>
      <Accordion title="JLinkExe not found" icon="terminal">
        * Verify J-Link is installed correctly
        * Check that the installation path is in your system PATH
        * Try using the full path to the executable
      </Accordion>

      <Accordion title="Connection issues" icon="plug">
        * Try a different USB port or cable
        * Ensure device is in programming mode
        * Check that the flashing cable is properly connected
      </Accordion>

      <Accordion title="Flashing fails" icon="circle-xmark">
        * Always flash the network core first
        * Wait for each command to complete before running the next
        * Ensure device has sufficient power
      </Accordion>

      <Accordion title="Firmware file errors" icon="file-circle-xmark">
        * Re-download the firmware files
        * Verify file integrity (sizes should match GitHub)
        * Check for file corruption during download
      </Accordion>
    </AccordionGroup>
  </Tab>
</Tabs>

***

## Success!

<Tip>
  Your Omi device is now updated with the latest firmware. Enjoy the enhanced features and improvements!
</Tip>

## Related Documentation

<CardGroup cols={2}>
  <Card title="Build Your Device" icon="hammer" href="/doc/assembly/Build_the_device">
    Step-by-step assembly instructions
  </Card>

  <Card title="Buying Guide" icon="cart-shopping" href="/doc/assembly/Buying_Guide">
    Components needed to build Omi
  </Card>

  <Card title="Get Started" icon="rocket" href="/doc/get_started/introduction">
    Introduction to Omi
  </Card>
</CardGroup>
