Software for the 2024A using the ESP-IDF.
  • C 87.5%
  • Python 5.7%
  • Ruby 2.1%
  • C++ 1.8%
  • CMake 1.8%
  • Other 1.1%
Find a file
Joe Kearney f4c6ad53d4 v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18)
## Summary

This branch updates the 2024A firmware to [**SystemK v2.00**](Software/SystemK#15) and migrates to [**ESP-IDF v6.0.0**](https://docs.espressif.com/projects/esp-idf/en/v6.0/esp32s3/migration-guides/release-6.x/6.0/index.html).

### SystemK v2.00 Interface Updates

Updated all components to use the new SystemK v2.00 API across four phases:

- **Phase 1** — BLE and NVM/Settings components; removed now-unnecessary boilerplate from `main.c`
- **Phase 2** — Further BLE and Settings interface alignment
- **Phase 3** — NeoPixel (`HW_NeoPixels`) driver simplified using new SystemK LED interface
- **Phase 4** — Audio (`I2S_Audio`), IR, and NVM/Settings components migrated to new interfaces

### ESP-IDF v6.0.0 Migration

- Updated `MuxedLedStrip` (vendored `espressif/led_strip`) to v3.0.3 for ESP-IDF v6.0 compatibility
- Updated IR component `CMakeLists.txt` for v6.0 build system changes
- Added new direct dependencies: `espressif/usb` v1.3.0 and `espressif/network_provisioning` v1.2.2
- Fixed `System_Command.c` for ESP-IDF v6.0 / FreeRTOS 11 API changes:
  - `uxTaskGetSystemState` runtime counter now uses `configRUN_TIME_COUNTER_TYPE`
  - Replaced deprecated `esp_read_mac` with `esp_base_mac_addr_get`
  - Fixed `esp_partition_iterator_release` null-guard
- Fixed `Serial_Console` component to derive firmware version string from CMake (`PROJECT_VER`) rather than a `main/` header, removing a cross-component include coupling

### Build System

- `PROJECT_VER` in `CMakeLists.txt` is now derived directly from `VERSION_MAJOR`/`VERSION_MINOR` in `main/Version.h`, making `Version.h` the single source of truth for the version number

### Other

- Improved USB error diagnostics in `NVM/USB.c`
- Updated `README.md` open-source component versions table to reflect current dependencies
- Bumped firmware to **Version 2.00**

## Test Plan

- [x] Clean build with ESP-IDF v6.0.0 passes without warnings
         ℹ️ There is one warning in the build.  It can be safely ignored.
         `
         [295/1367] Building C object esp-idf/vfs/CMakeFiles/__idf_vfs.dir/vfs.c.obj
         .../.espressif/v6.0/esp-idf/components/vfs/vfs.c:31:9: warning: 'LOG_LOCAL_LEVEL' redefined
         31 | #define LOG_LOCAL_LEVEL ESP_LOG_NONE
            |         ^~~~~~~~~~~~~~~
         <command-line>: note: this is the location of the previous definition
         `
- [x] `system version` serial console command reports correct firmware version
- [x] `system tasks` command works with runtime stats enabled
- [x] `system mac` command prints all four MAC addresses correctly
- [x] `system partition` command lists partition table without crash
- [x] BLE provisioning works with new SystemK interface
- [x] IR transmit/receive works
- [x] Audio playback works
- [x] NeoPixels function correctly
- [x] NVM settings persist across reboots
- [x] USB host MSC mounts and logs diagnostics on failure

Co-authored-by: Joe Kearney <joe@clubk.club>
Reviewed-on: #18
2026-03-28 21:33:54 +00:00
components v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18) 2026-03-28 21:33:54 +00:00
main v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18) 2026-03-28 21:33:54 +00:00
managed_components v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18) 2026-03-28 21:33:54 +00:00
partition_table Initial public release of the 2024A software. 2025-01-25 14:04:42 -06:00
spiffs_image v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18) 2026-03-28 21:33:54 +00:00
.gitignore v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18) 2026-03-28 21:33:54 +00:00
.gitmodules Initial public release of the 2024A software. 2025-01-25 14:04:42 -06:00
CMakeLists.txt v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18) 2026-03-28 21:33:54 +00:00
dependencies.lock v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18) 2026-03-28 21:33:54 +00:00
LICENSE Initial commit 2025-01-25 19:49:17 +00:00
partitions.csv Initial public release of the 2024A software. 2025-01-25 14:04:42 -06:00
README.md v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18) 2026-03-28 21:33:54 +00:00
sdkconfig v2.00: SystemK v2.00, ESP-IDF v6.0.0 (#18) 2026-03-28 21:33:54 +00:00

2024A Software

Overview

This is software for the 2024A "32ESPecial" based on the ESP-IDF.

The primary documentation for the 32ESPecial is on the KTag website at https://ktag.clubk.club/Devices/32ESPecial/.

You can ask questions (and get answers!) about this software on the KTag forum at https://forum.ktag.clubk.club/c/software/.

License: AGPL-3.0-or-later

This software is part of the KTag project, a DIY laser tag game with customizable features and wide interoperability.

🛡 https://ktag.clubk.club 🃞

Copyright © 2023-2026 Joseph P. Kearney and the KTag developers.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

There should be a copy of the GNU Affero General Public License in the LICENSE file in the root of this repository. If not, see http://www.gnu.org/licenses/.

Open-Source Software

This software in turn makes use of the following open-source software libraries and components:

Name Version License (SPDX) URL
SystemK 2.00 AGPL-3.0-or-later https://git.ktag.clubk.club/Software/SystemK/
ESP-IDF 6.0.0 Apache-2.0 https://github.com/espressif/esp-idf/
espressif/button 4.1.6 Apache-2.0 https://components.espressif.com/components/espressif/button
espressif/led_strip 3.0.3 Apache-2.0 https://components.espressif.com/components/espressif/led_strip
espressif/mdns 1.11.0 Apache-2.0 https://components.espressif.com/components/espressif/mdns
espressif/network_provisioning 1.2.2 Apache-2.0 https://components.espressif.com/components/espressif/network_provisioning
espressif/usb 1.3.0 Apache-2.0 https://components.espressif.com/components/espressif/usb
espressif/usb_host_msc 1.1.4 Apache-2.0 https://components.espressif.com/components/espressif/usb_host_msc
chmorgan/esp-audio-player 1.1.0 Apache-2.0 https://components.espressif.com/components/chmorgan/esp-audio-player
esp-libhelix-mp3 1.0.3 Apache-2.0 https://github.com/chmorgan/esp-libhelix-mp3
libhelix-mp3 f443079 RPSL https://github.com/chmorgan/libhelix-mp3/