Skip to content

Add M5StickS3 build target#9

Closed
mfiumara wants to merge 1 commit into
anthropics:mainfrom
mfiumara:port/sticks3
Closed

Add M5StickS3 build target#9
mfiumara wants to merge 1 commit into
anthropics:mainfrom
mfiumara:port/sticks3

Conversation

@mfiumara
Copy link
Copy Markdown

Summary

  • Adds a second PlatformIO env (m5stickc-plus-s3) targeting the ESP32-S3-based M5StickS3 alongside the existing StickC Plus build, which is left untouched.
  • Routes the M5 SDK + sprite types through buddy_common.h typedefs (M5StickCPlus / TFT_eSprite vs M5Unified / M5Canvas), and wraps PMIC / IMU / RTC / beep call sites behind a small inline HAL (src/buddy_hal.h) so main.cpp stays single-source.
  • The StickS3 has no hardware RTC; clock display and time-of-day persona logic gracefully fall back when buddyHalRtcAvailable() is false. NTP / software-clock seeding is deferred to a follow-up phase.

Scope and rationale

See .planning/phases/01-sticks3-port/SPEC.md for the hardware delta table, locked decisions, and what's intentionally out of scope (e.g. WiFi/NTP, captive portal, OTA, migrating the legacy build to M5Unified).

Status

  • pio run -e m5stickc-plus — builds clean (legacy unchanged)
  • pio run -e m5stickc-plus-s3 — builds clean
  • ✅ Flashes to StickS3 over USB (verified with esptool via pio run -e m5stickc-plus-s3 -t upload)
  • ⚠️ On-device behavior not yet validated. Author hasn't run through the full verification checklist — buddy rendering, buttons, speaker, shake, BLE pairing, etc. The display panel choice (esp32-s3-devkitc-1 board ID + M5GFX autodetect) is the most likely site for surprises since there's no dedicated m5stack-sticks3 board in the espressif32 platform.

Test plan

  • Boot screen renders the buddy / character GIF correctly
  • BtnA / BtnB cycle pets and open the brightness menu
  • Speaker plays the boot beep
  • Shake and face-down detection trigger the expected state changes
  • Landscape clock view renders layout with --:-- placeholder (orientation-by-tilt still works)
  • BLE bridge pairs from the desktop helper and round-trips a prompt
  • Legacy StickC Plus build still works after a full flash

🤖 Generated with Claude Code

Adds a second PlatformIO env (m5stickc-plus-s3) targeting the
ESP32-S3-based M5StickS3 alongside the existing StickC Plus build,
which is left untouched.

Routes M5 SDK + sprite types through buddy_common.h typedefs
(M5StickCPlus / TFT_eSprite vs M5Unified / M5Canvas). Wraps PMIC,
IMU, RTC, and beep call sites behind a small inline HAL
(src/buddy_hal.h) so main.cpp stays single-source.

The StickS3 has no hardware RTC; clock and time-of-day persona
logic gracefully fall back when buddyHalRtcAvailable() is false
(NTP/software clock deferred to a follow-up phase).

Built clean for both envs. Hardware validation on StickS3 still
pending — see .planning/phases/01-sticks3-port/SPEC.md for the
verification checklist.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@felixrieseberg
Copy link
Copy Markdown
Member

#3 is already in flight, I'm closing this until that lands!

Thank you very much for your contribution though 🙇

@mfiumara
Copy link
Copy Markdown
Author

#3 is already in flight, I'm closing this until that lands!

Thank you very much for your contribution though 🙇

Ah great!

Well I'll continue off my current branch anyways, but looking forward when #3 lands.

@mfiumara mfiumara deleted the port/sticks3 branch April 28, 2026 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants