| title | DevKit 2 Testing |
|---|---|
| icon | flask-vial |
| description | Test storage, button, and SD card functionality on the Omi DevKit 2. |
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.When the device is disconnected from the phone (LED is red), audio data is written to the SD card instead of streaming over Bluetooth.
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]
| 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 |
**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.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
| Connection State | LED | SD Card |
|---|---|---|
| No Bluetooth | Red | Writing audio to SD card |
| Bluetooth connected | Blue | Stops writing; streams over BLE |
When the device connects to the app with stored audio:
- A green banner appears showing estimated download time
- Tap the banner (or go to Settings → Device Settings → Storage) to open the import screen
- Press the download button to start importing — a progress bar shows completion
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.
Some devices create an empty `a01.txt` file, preventing audio from being written.
Fix:
- Delete the audio file
- Press the reset button to reboot
- The device will auto-generate the required files on startup