{"id":51264519,"url":"https://github.com/thc1006/zephyr-m5stack-sticks3","last_synced_at":"2026-06-29T14:32:28.102Z","repository":{"id":361300118,"uuid":"1253934337","full_name":"thc1006/zephyr-m5stack-sticks3","owner":"thc1006","description":"First public Zephyr RTOS board port for the M5Stack StickS3 / M5StickS3 K150 (ESP32-S3-PICO-1-N8R8). Board m5stack_sticks3 — runtime-verified boot, console, buttons, BMI270 IMU, and ST7789P3 LCD.","archived":false,"fork":false,"pushed_at":"2026-06-11T02:39:56.000Z","size":32065,"stargazers_count":3,"open_issues_count":8,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T03:14:29.433Z","etag":null,"topics":["bmi270","board-port","devicetree","embedded","esp32","esp32-s3","esp32s3","espressif","firmware","iot","m5pm1","m5stack","m5stick-s3","m5stickc","m5sticks3","rtos","st7789","st7789p3","zephyr","zephyr-rtos"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thc1006.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-30T00:45:02.000Z","updated_at":"2026-06-11T02:10:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/thc1006/zephyr-m5stack-sticks3","commit_stats":null,"previous_names":["thc1006/zephyr-m5stack-sticks3"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/thc1006/zephyr-m5stack-sticks3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thc1006%2Fzephyr-m5stack-sticks3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thc1006%2Fzephyr-m5stack-sticks3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thc1006%2Fzephyr-m5stack-sticks3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thc1006%2Fzephyr-m5stack-sticks3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thc1006","download_url":"https://codeload.github.com/thc1006/zephyr-m5stack-sticks3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thc1006%2Fzephyr-m5stack-sticks3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34931587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bmi270","board-port","devicetree","embedded","esp32","esp32-s3","esp32s3","espressif","firmware","iot","m5pm1","m5stack","m5stick-s3","m5stickc","m5sticks3","rtos","st7789","st7789p3","zephyr","zephyr-rtos"],"created_at":"2026-06-29T14:32:24.540Z","updated_at":"2026-06-29T14:32:28.088Z","avatar_url":"https://github.com/thc1006.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Zephyr RTOS support for the M5Stack StickS3 (ESP32-S3) — board `m5stack_sticks3`\n\n[![CI](https://github.com/thc1006/zephyr-m5stack-sticks3/actions/workflows/ci.yml/badge.svg)](https://github.com/thc1006/zephyr-m5stack-sticks3/actions/workflows/ci.yml)\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)\n[![Zephyr](https://img.shields.io/badge/Zephyr-4.4.0-7f52ff.svg)](https://docs.zephyrproject.org/latest/releases/release-notes-4.4.html)\n[![Board](https://img.shields.io/badge/board-m5stack__sticks3-informational.svg)](boards/m5stack/m5stack_sticks3)\n\n**Yes — you can run Zephyr RTOS on the M5Stack StickS3.** This repository is a\npublic, reproducible, upstream-oriented Zephyr 4.4 **board port** for the\n**M5Stack StickS3 / M5StickS3 K150** (SoC: **ESP32-S3-PICO-1-N8R8**, 8 MB flash +\n8 MB PSRAM). It has been **runtime-verified on physical hardware** for board\ndiscovery, build, flash, boot/console, the two front buttons, the **BMI270 IMU**,\nand the **ST7789(P3) LCD**.\n\n\u003e Board name: `m5stack_sticks3` · SoC: `esp32s3/procpu` · Zephyr: 4.4.0 ·\n\u003e Status: runtime-verified (boot, console, buttons, IMU, LCD)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"evidence/PXL_20260529_235120410.jpg\" width=\"300\"\n       alt=\"M5Stack StickS3 running this Zephyr port: ST7789P3 LCD showing a green color-fill frame, board powered over USB-C and held in hand\"\u003e\n  \u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"evidence/PXL_20260529_235122375.jpg\" width=\"300\"\n       alt=\"M5Stack StickS3 running this Zephyr port: ST7789P3 LCD showing a white color-fill frame\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003csub\u003eThe M5Stack StickS3 running this Zephyr port — the ST7789P3 LCD during the\ncolor-fill test (green and white frames), powered over USB-C. Full logs and more\nphotos in \u003ca href=\"evidence/\"\u003e\u003ccode\u003eevidence/\u003c/code\u003e\u003c/a\u003e.\u003c/sub\u003e\u003c/p\u003e\n\nAliases people search for: *M5StickS3*, *M5Stick S3*, *StickS3 K150*,\n*M5Stack StickS3 Zephyr*, *Zephyr ESP32-S3 board port*, *M5PM1 PMIC Zephyr\nregulator*, *ST7789P3 Zephyr display*.\n\n## Quick answer (TL;DR)\n\n| Question | Answer |\n| --- | --- |\n| Does Zephyr support the M5Stack StickS3? | Yes, via this out-of-tree board port (`m5stack_sticks3`). |\n| What's verified on hardware? | Boot/console, buttons (G11/G12), BMI270 IMU, ST7789P3 LCD. |\n| What's roadmap (not yet claimed)? | Full M5PM1 PMIC (charger/audio rails), IR TX/RX, ES8311 audio, power measurement. |\n| Do I need any AI tooling? | **No.** Standard `west` + Zephyr SDK + `esptool` only. |\n| How is the LCD powered? | The L3B rail is gated by the M5PM1 PMIC (PYG2); an in-repo regulator driver enables it. |\n\n## Hardware\n\n| Component | Part | Bus / pins | Status |\n| --- | --- | --- | --- |\n| SoC | ESP32-S3-PICO-1-N8R8 (8 MB flash, 8 MB PSRAM) | USB-Serial/JTAG | runtime-verified |\n| Buttons | KEY1 (middle), KEY2 (right) | GPIO G11 / G12 (active-low) | runtime-verified |\n| IMU | Bosch BMI270 | I²C `0x68` (G48/G47) | runtime-verified |\n| Display | ST7789P3 135×240 | SPI2 (mipi-dbi-spi), CS G41, offsets x=52/y=40 | runtime-verified |\n| LCD/audio/IR power | M5PM1 PMIC | I²C `0x6e`, rail via PYG2 (L3B) | runtime-verified (LCD rail) |\n| Audio codec | ES8311 | I²C `0x18` + I²S | roadmap |\n| IR TX/RX | — | G46 / G42 (RMT) | roadmap |\n\n## Quick start\n\n```bash\n# 1. Repo integrity check (always runnable, no Zephyr needed).\nbash verify.sh\n\n# 2. One-time: create a Zephyr 4.4 workspace + SDK (review the script first).\nbash scripts/bootstrap_zephyr_ubuntu.sh\n\n# 3. Build the validation app for the board.\nbash scripts/build_m5sticks3.sh\n# or directly:\nwest build -p always -b m5stack_sticks3/esp32s3/procpu app\n\n# 4. Flash and watch the console (device on USB-C).\nwest flash\nwest espressif monitor\n```\n\nOn Windows, flash/monitor from the host — the ESP32-S3 USB-Serial/JTAG needs\n`esptool --after watchdog-reset`. See `docs/10_HARDWARE_FLASHING_NOTES.md` and\n`scripts/flash_windows.ps1` / `scripts/monitor_windows.ps1`.\n\n## What \"first public port\" means (scoped honestly)\n\nA large-scale prior-art search on 2026-05-30 (three independent passes; see\n`docs/00_RESEARCH_SNAPSHOT_UPDATED.md`) found **no public Zephyr board port for the\nM5Stack StickS3** in the upstream tree, in open PRs/issues, or elsewhere on\nGitHub/web. The defensible claim is therefore:\n\n\u003e First public, reproducible, upstream-oriented Zephyr RTOS board port and\n\u003e validation suite for the M5Stack StickS3 / M5StickS3 K150 (ESP32-S3-PICO-1-N8R8).\n\nIt is **not** \"first Zephyr on ESP32-S3\" (the SoC and sibling\nStampS3/AtomS3/CoreS3 boards are long supported); **not** \"first RTOS on StickS3\"\n(Arduino / ESP-IDF / UiFlow2 / MicroPython / ESPHome predate it); and **not**\n\"first M5PM1 Zephyr driver\" (Zephyr PR #109961 is upstreaming an M5PM1 MFD driver\nfor a different board — this project reuses that work upstream, see\n`docs/07_UPSTREAM_PLAN.md`).\n\n## Evidence \u0026 honesty rule\n\nDo not publish \"working\" claims beyond what `evidence/` supports. As of\n2026-05-30 the LCD has photo evidence (`evidence/PXL_20260529_2351*.jpg`: panel\nlit and cycling colours) plus build/flash/serial logs. Audio, IR, and full\npower-management remain roadmap and must not be claimed until they have their own\ncaptured evidence. Verification levels (scaffolded → build-verified →\nflash-verified → runtime-verified → upstream-reviewed) are defined in\n`docs/05_VALIDATION_MATRIX.md`.\n\n## Repository map\n\n```text\n.\n├── CONTRIBUTING.md                   # Project conventions, rules, Definition of Done\n├── docs/                             # SDD, TDD, ADRs, prior art, validation, upstream plan\n├── boards/m5stack/m5stack_sticks3/   # Zephyr HWMv2 board definition (procpu/appcpu)\n├── drivers/{mfd,gpio,adc}/           # M5PM1 PMIC MFD parent + GPIO/ADC children (+ emulator)\n├── drivers/audio/                    # ES8311 codec driver (+ native_sim emulator)\n├── dts/bindings/                     # Devicetree bindings for the above\n├── app/                              # Minimal hardware-validation app\n├── tests/                            # Host-side integrity + native_sim ztest\n├── scripts/                          # Bootstrap / build / flash helpers\n├── tools/                            # Repo quality checks\n└── evidence/                         # Build/flash/serial logs + LCD photos\n```\n\n## Documentation\n\n- `CONTRIBUTING.md` — conventions, verification levels, Definition of Done.\n- `docs/02_SDD.md`, `docs/03_TDD.md` — software/test design.\n- `docs/05_VALIDATION_MATRIX.md` — what is verified and how.\n- `docs/07_UPSTREAM_PLAN.md` — plan for contributing to Zephyr.\n- `docs/10_HARDWARE_FLASHING_NOTES.md` — verified flash/monitor procedure.\n\n## License\n\nApache-2.0 (matching Zephyr). See `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthc1006%2Fzephyr-m5stack-sticks3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthc1006%2Fzephyr-m5stack-sticks3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthc1006%2Fzephyr-m5stack-sticks3/lists"}