Skip to content

Latest commit

 

History

History
144 lines (107 loc) · 4.29 KB

File metadata and controls

144 lines (107 loc) · 4.29 KB
title DevKit 2 Testing
icon flask-vial
description Test storage, button, and SD card functionality on the Omi DevKit 2.

Overview

Two areas to test on DevKit 2: SD card storage (offline audio recording) and button behavior (tap events via BLE).

**Never remove the SD card while the device is on.** It is not hot-swappable. Use the safe removal process described below.

SD Card Storage

When the device is disconnected from the phone (LED is red), audio data is written to the SD card instead of streaming over Bluetooth.

SD Card Commands

Commands are sent as 6-byte packets: [command, file_number, offset_byte0, offset_byte1, offset_byte2, offset_byte3]

Command Action
0 Read specified file from offset
1 Clear all bytes in specified file
2 Clear all files in directory
3 Stop transmission of specified file

Example: Read file 1 starting at byte 255:

[0, 1, 255, 0, 0, 0]

Response Codes

Code Meaning
0 Command successful
100 End of file transmission (last byte)
200 Delete process finished
3 Invalid file (file 0 never exists; files start at 1)
4 File size is 0
6 Invalid command
If you don't receive code `100` or `200`, the command was not completed.

Testing Process

**Prerequisites:** Python packages from `requirements.txt`, plus `ffmpeg` and `opus` for audio decoding. The test scripts live in [`omi/firmware/scripts/devkit/`](https://github.com/BasedHardware/omi/tree/main/omi/firmware/scripts/devkit).

Run these scripts in order:

Run `discover_devices.py` to list all nearby Bluetooth devices. Look for **"Omi"** or **"Omi Devkit 2"** and note the device ID. Run `get_info_list.py` — replace the `device_id` value with your device ID. This lists the size of each audio file on the SD card. Run `get_audio_file.py` — replace the `device_id` value with your device ID. Audio data streams to `my_file.txt` in the current directory. Run `decode_audio.py` to convert the downloaded data into a WAV file. If successful, you'll have a playable recording of what was spoken near the mic. Run `delete_audio_files.py` — replace the `device_id` value with your device ID. This clears audio data from the specified file.

Safe SD Card Removal

Double-tap the reset button inside the kit Remove the card to inspect contents on your computer Put the SD card back and tap the button to restart

Device Behavior

Connection State LED SD Card
No Bluetooth Red Writing audio to SD card
Bluetooth connected Blue Stops writing; streams over BLE

App-Side SD Card Import

When the device connects to the app with stored audio:

  1. A green banner appears showing estimated download time
  2. Tap the banner (or go to Settings → Device Settings → Storage) to open the import screen
  3. Press the download button to start importing — a progress bar shows completion
The green banner only appears for DevKit 2 devices. DevKit 1 devices do not support SD card import.

Button Events

After connecting to the BLE notification service, these events fire:

Event Code Action
1 Single tap
2 Double tap
3 Long press (~3 seconds)
4 Button pressed down
5 Button released

Verify that each physical action sends the correct BLE packet.


Known Issues

Some devices create an empty `a01.txt` file, preventing audio from being written.

Fix:

  1. Delete the audio file
  2. Press the reset button to reboot
  3. The device will auto-generate the required files on startup