Library / SDK
m5stack/M5StickC avatar
m5stack/M5StickC

The M5StickC Arduino library is deprecated, and its successors are already out

M5StickC Arduino Library

524 stars216 forksCMIT

At a glance

What is it?
M5StickC was a per-device Arduino library for the ESP32 finger-sized board with a small TFT, IMU and IR blaster, and its own README now points new projects at M5GFX, M5Unified and M5UnitUnified instead.
Who is it for?
Start new M5StickC work with M5GFX for the display and M5Unified for the peripherals, and treat this repository as a reference rather than a dependency, because the README marks it deprecated and the last release is 0.3.0 from 2024-09-14 even though the last push was on 2026-06-11. Do not pin a new product to M5StickC, and do not assume the board documentation links still describe the deprecated API surface.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 135 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The README's first line tells you to stop using this library

The M5StickC repository still exists, still builds, and still carries a full Arduino example set, but the top of the README opens with a deprecation notice pointing at three successor projects. M5GFX is described as a high-performance, lightweight graphics and display driver library for M5 devices. M5Unified is the unified base library for M5 devices, covering IO and peripherals, power management and audio. M5UnitUnified is a library for unified handling of various M5 unit products.

That notice is the single most important fact about the project for anyone deciding what to adopt. The pattern here is the reverse of a normal feature release. Instead of new capabilities, you get pointers to a different, more layered design where graphics, base hardware and attachable units each live in their own library.

The MIT licence stays in place, so nothing about ownership or redistribution changes. What changes is where new effort goes. Anyone starting a fresh project with an M5StickC should install the successor libraries rather than adding this one to their dependency list, and anyone with an existing project can keep it running while the surrounding M5Stack libraries are migrated.

What the M5StickC board actually gives you

The README describes the hardware in plain terms, which is worth reading before you decide the board fits the job. M5StickC is an ESP32 development board with a 0.96 inch TFT color screen at 80 by 160 resolution, a red LED, a button, a microphone, an IR transmitter, a 6-axis IMU using the SH200Q part, and an 80 mAh battery. The ESP32 module in the board is the ESP32-Pico, and the README notes that it also has a built-in 4MB flash.

The battery is small enough that it changes what you can reasonably build on it, and the screen is small enough that the choice of graphics library is a first order concern rather than a detail. The IMU and the IR transmitter together are what make the board useful as a remote controller or gesture input device rather than a generic microcontroller.

There is a mechanical detail in the README that tells you how the device is actually used: press for two seconds to turn it on, and press and hold for six seconds to turn it off. That is a long press scheme for a single button, and it means the board is designed to live on a desk or a wrist rather than in an enclosure where a mistouch would matter. The README also notes that with the watch base and watch belt the device can be worn on your wrist, which explains the industrial design of that single button.

A small C library with its own build tooling and CI gates

The repository layout is compact and typical of an Arduino library. The implementation sits in src, the examples are grouped under an examples directory, there is a tools directory, and the root carries a CMakeLists.txt alongside a library.json and a library.properties file, which are the manifests the Arduino and PlatformIO toolchains use to discover a library. The language is C, and a keywords.txt file provides the keyword list the IDE uses for highlighting.

Quality control is visible in the workflow badges at the top of the README. There is an Arduino compile workflow scoped to the StickC target, an Arduino Lint Check workflow, and a Clang Format check workflow. The last one matters for contributors: a .clang-format file at the root means formatting is enforced automatically rather than argued about in review.

The split into Basics, Advanced, Games, Hat, KIT and Unit subdirectories under examples is the clearest statement of how the board is meant to be used. Basics covers the usual first steps, Hat covers stackable add-on boards, KIT covers bundle products, and Unit covers the attachable sensor and actuator units that M5UnitUnified later took over.

Your first build goes through the M5Stack docs, not through this repo

There is no install command in the README, because there is nothing to install. The repository is a library you add to an Arduino project, and the setup guidance lives in the M5Stack documentation site. The README links a UIFlow quick start for the M5StickC, a MicroPython API page for display work, an Arduino IDE development guide, and an M5StickC Arduino API reference. Detailed hardware documentation sits on the core product page.

A sensible first run follows that order. Flash a Basics example through the Arduino IDE path, confirm the TFT draws and the button reads, then move to one example that exercises a sensor unit. The compile workflow in this repository builds the examples against the StickC target on every push, so a given example either compiles for this board or it does not, which makes the examples directory a reasonable sanity check of your toolchain and library versions.

Two caveats are worth naming. The Arduino and MicroPython routes are different worlds: the MicroPython page covers an LVGL based display stack that is not the C library in this repository. And the API reference page was written while this library was current, so treat it as a description of the deprecated API rather than a template for the M5GFX and M5Unified equivalents.

The pin map lives in documentation, not in a header you can grep

The README points to a PinMap page for the board and shows an image of the M5StickC top extended IO port. That is the whole of what this repository says about the physical interface, which is a real limitation for a library that wraps hardware access.

You will not find a pin definition table, a register map or a peripheral setup function in the README. The mapping is documented on the docs site and implemented in the source, so if you are integrating the board with a non-M5Stack sensor, budget time to read the source and cross-check it against the published PinMap page rather than assuming the header is self-describing.

The same applies to the other peripherals named in the feature list of the board itself: the microphone, the IR transmitter and the SH200Q IMU all need configuration code before they produce useful data, and the README does not explain their registers, interrupt pins or sample rates. This is where a device-specific library usually earns its keep, and it is the reason the deprecation notice is best read as a warning about documentation depth as much as about code health.

Version history: the last release predates the last push by a long way

The release tags tell a slightly awkward story. Version 0.2.8, dated 2022-07-12, is annotated as depending on M5Family, which is the family library that the later split into M5GFX and M5Unified grew out of. Version 0.2.9 followed on 2023-08-18, and 0.3.0 on 2024-09-14 is the most recent release.

The last push to the repository was on 2026-06-11, well after the 0.3.0 tag. A gap like that between the newest tag and the newest commit usually means maintenance work rather than feature releases, and it is consistent with a library that is being kept alive for existing users rather than extended. Combined with the deprecation notice at the top of the README, the reasonable assumption is that the code compiles and works, and that no new API is being designed for it.

For an existing installation, the upgrade path is therefore a migration rather than a version bump: M5GFX for the display and graphics work, M5Unified for IO, power management and audio, and M5UnitUnified if you use attachable units. Migrate those three layers in that order, since the display driver sits underneath most of the visual examples, and check the Arduino compile workflow status in this repository as your reference for what a working port looks like.

Editorial conclusion

Start new M5StickC work with M5GFX for the display and M5Unified for the peripherals, and treat this repository as a reference rather than a dependency, because the README marks it deprecated and the last release is 0.3.0 from 2024-09-14 even though the last push was on 2026-06-11. Do not pin a new product to M5StickC, and do not assume the board documentation links still describe the deprecated API surface. Before you start, open the PinMap page for the board and the M5StickC Arduino API page, then confirm which of the three successor libraries covers the peripheral you actually need.

Frequently asked questions

Is the M5StickC Arduino library deprecated?

Yes. The README opens with a deprecation notice and points to M5GFX, M5Unified and M5UnitUnified as the libraries to use for graphics and display, base IO, peripherals, power management and audio, and for M5 unit products.

What hardware is inside the M5StickC board?

The README describes an ESP32 development board with a 0.96 inch TFT color screen at 80 by 160 resolution, a red LED, a button, a microphone, an IR transmitter, a 6-axis IMU using the SH200Q, and an 80 mAh battery, built on the ESP32-Pico module with a built-in 4MB flash.

How do I turn the M5StickC on and off?

Press for two seconds to turn it on, and press and hold for six seconds to turn it off, according to the README.

Which libraries should a new M5StickC project use?

M5GFX for the display and graphics driver, M5Unified for IO and peripherals, power management and audio, and M5UnitUnified for handling M5 unit products. The M5StickC library itself is deprecated.

What licence applies to the M5StickC library?

The repository is MIT licensed, with the terms in the LICENSE file at the root of the repository. Deprecation of the library does not change those terms for code you already use.

Where are the M5StickC examples and the pin map?

Examples are grouped under examples into Basics, Advanced, Games, Hat, KIT and Unit folders, and the README points to the PinMap page in the M5Stack documentation for the board pin assignment. The repository itself shows the top extended IO port as an image rather than a table.

Official sources

  1. Issues
  2. License: MIT
  3. m5stack/M5StickC on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/m5stack-m5stickc.svg)](https://hysenlabs.com/projects/m5stack-m5stickc)

Was this useful?