Skip to main content

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]
CommandAction
0Read specified file from offset
1Clear all bytes in specified file
2Clear all files in directory
3Stop transmission of specified file
Example: Read file 1 starting at byte 255:
[0, 1, 255, 0, 0, 0]

Response Codes

CodeMeaning
0Command successful
100End of file transmission (last byte)
200Delete process finished
3Invalid file (file 0 never exists; files start at 1)
4File size is 0
6Invalid 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.
Run these scripts in order:

Discover Devices

Run discover_devices.py to list all nearby Bluetooth devices. Look for “Omi” or “Omi Devkit 2” and note the device ID.

Check File Sizes

Run get_info_list.py — replace line 6 with your device ID. This lists the size of each audio file on the SD card.

Download Audio

Run get_audio_file.py — replace line 9 with your device ID. Audio data streams to my_file.txt in the current directory.

Decode Audio

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.

(Optional) Delete Audio

Run delete_audio_file.py — replace line 6 with your device ID. This clears audio data from the specified file.

Safe SD Card Removal

1

Reset the device

Double-tap the reset button inside the kit
2

Remove the SD card

Remove the card to inspect contents on your computer
3

Reinsert and restart

Put the SD card back and tap the button to restart

Device Behavior

Connection StateLEDSD Card
No BluetoothRedWriting audio to SD card
Bluetooth connectedBlueStops 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 CodeAction
1Single tap
2Double tap
3Long press (~3 seconds)
4Button pressed down
5Button 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