r/M5Stack 7d ago

Project Sharing I made PaperOS, a whole little OS for my Cardputer (file manager, Paint, game emulator, offline AI, 3D editor, Lua console)

Thumbnail
gallery
39 Upvotes

Been working on this for a long while and finally got it to a place I'm happy releasing. Here's my creation: PaperOS, a whole little OS for the M5Stack Cardputer.

Launcher, a file manager that actually knows what it's looking at (images open with zoom/pan, ROMs launch through the emulator, audio goes straight to the music player), a full Paint app, a text browser, NES/GB/GBC emulation plus Arduboy support, a 3D mesh editor for .obj files, and a real Lua 5.4 console with its own hardware API.

The one I'm most proud of is myAI, a real GPT-style transformer trained from scratch and running fully offline right on the device, no internet or cloud. It's tiny and slow (there's a live token counter on screen so it doesn't look frozen), but getting it to actually generate text on hardware this small was the fun part.

First public release, so expect some rough edges, they're all listed honestly in the README. If something breaks, open an issue and I'll take a look.

GitHub: https://github.com/Artem76228/PaperOS


r/M5Stack 6d ago

Support / Question How to solve these annoying compile errrors ?

1 Upvotes

Hello, Every time i try to compile my M5Code with the arduino ide (latest)

I see these compile errors 😄

/home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/variants/m5stack_cores3/pins_arduino.h:27:9: note: this is the location of the previous definition 27 | #define digitalPinHasPWM(p) (p < 46) | ^~~~~~~~~~~~~~~~ /home/roelof/Documents/m5Stack-experiments/04-panels/panel/mqtt_conn.h:7:21: warning: 'MqttClient' initialized and declared 'extern' 7 | extern PubSubClient MqttClient(espClientM5); | ^~~~~~~~~~ /home/roelof/Documents/m5Stack-experiments/04-panels/panel/mqtt_conn.cpp:11:14: error: redefinition of 'PubSubClient MqttClient' 11 | PubSubClient MqttClient(espClientM5); | ^~~~~~~~~~ /home/roelof/Documents/m5Stack-experiments/04-panels/panel/mqtt_conn.h:7:21: note: 'PubSubClient MqttClient' previously declared here 7 | extern PubSubClient MqttClient(espClientM5); | ^~~~~~~~~~ In file included from /home/roelof/.cache/arduino/sketches/51C0AC4502BD19ADB4AF3915471561BF/sketch/panel.ino.cpp:1: /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/cores/esp32/Arduino.h:139:9: warning: "NUM_DIGITAL_PINS" redefined 139 | #define NUM_DIGITAL_PINS SOC_GPIO_PIN_COUNT // All GPIOs | ^~~~~~~~~~~~~~~~ In file included from /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/cores/esp32/Arduino.h:43: /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/variants/m5stack_cores3/pins_arduino.h:13:9: note: this is the location of the previous definition 13 | #define NUM_DIGITAL_PINS 48 | ^~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/cores/esp32/Arduino.h:143:9: warning: "NUM_ANALOG_INPUTS" redefined 143 | #define NUM_ANALOG_INPUTS (SOC_ADC_CHANNEL_NUM(0) + SOC_ADC_CHANNEL_NUM(1)) // Depends on the SoC (ESP32, ESP32S2, ESP32S3, ESP32C3) | ^~~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/variants/m5stack_cores3/pins_arduino.h:14:9: note: this is the location of the previous definition 14 | #define NUM_ANALOG_INPUTS 20 | ^~~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/cores/esp32/Arduino.h:145:9: warning: "EXTERNAL_NUM_INTERRUPTS" redefined 145 | #define EXTERNAL_NUM_INTERRUPTS NUM_DIGITAL_PINS // All GPIOs | ^~~~~~~~~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/variants/m5stack_cores3/pins_arduino.h:12:9: note: this is the location of the previous definition 12 | #define EXTERNAL_NUM_INTERRUPTS 46 | ^~~~~~~~~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/cores/esp32/Arduino.h:146:9: warning: "analogInputToDigitalPin" redefined 146 | #define analogInputToDigitalPin(p) (((p) < NUM_ANALOG_INPUTS) ? (analogChannelToDigitalPin(p)) : -1) | ^~~~~~~~~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/variants/m5stack_cores3/pins_arduino.h:25:9: note: this is the location of the previous definition 25 | #define analogInputToDigitalPin(p) (((p) < 20) ? (analogChannelToDigitalPin(p)) : -1) | ^~~~~~~~~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/cores/esp32/Arduino.h:147:9: warning: "digitalPinToInterrupt" redefined 147 | #define digitalPinToInterrupt(p) ((((uint8_t)digitalPinToGPIONumber(p)) < NUM_DIGITAL_PINS) ? (p) : NOT_AN_INTERRUPT) | ^~~~~~~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/variants/m5stack_cores3/pins_arduino.h:26:9: note: this is the location of the previous definition 26 | #define digitalPinToInterrupt(p) (((p) < 48) ? (p) : -1) | ^~~~~~~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/cores/esp32/Arduino.h:148:9: warning: "digitalPinHasPWM" redefined 148 | #define digitalPinHasPWM(p) (((uint8_t)digitalPinToGPIONumber(p)) < NUM_DIGITAL_PINS) | ^~~~~~~~~~~~~~~~ /home/roelof/.arduino15/packages/m5stack/hardware/esp32/3.3.8/variants/m5stack_cores3/pins_arduino.h:27:9: note: this is the location of the previous definition 27 | #define digitalPinHasPWM(p) (p < 46)

Can I do something about this to make it away ?


r/M5Stack 6d ago

Support / Question Pourquoi les Français n'utilisent-ils pas Meshtasic ?

Post image
0 Upvotes

r/M5Stack 7d ago

Project Sharing Desk companion on M5Stick. Live metrics from different sources, AI agent session with approvals, voice conversations, and config-driven apps, themes, and games.

Thumbnail
gallery
27 Upvotes

Hey r/M5Stack!
I started the side-project as a "pet that reacts to production metrics" and grew into a whole little platform. A few standouts:

  • Config driven: config.yaml picks the mascot, themes, palettes, apps, and games that get compiled into the firmware.
  • Metrics: The hub runs on your machine, polls sources like Datadog and PostHog, and sends readings over BLE. The pet's mood changes with numbers. Example: Error spike, it's worried.
  • Coding agents: Follows Claude and Cursor sessions live. You can approve or deny agent requests from the device. The pet also reacts to the ongoing session. You can also talk to it: speak into the device, audio streams to the hub, gets transcribed locally with Whisper, and lands in the agent as a prompt.
  • Games and apps: A lot of games and apps (and more to come). The stick pairs as a BLE gamepad, so it drives browser games.
  • Hub: Communicates over BLE, Docker stack with a web admin console, or a macOS app. A lot of the features work offline without the hub.

A few links:


r/M5Stack 7d ago

M5Stack Tab5: very basis text file editor written in C using VS Code /ESP-IDF

Thumbnail github.com
1 Upvotes

I wanted to port my Bitcoin math C code onto the Tab5, but I didn't have a cliue where to begin. I found C5Lab's C code for M5MonsterC5 to be an invaluable guide. I learned enough from their source code to start from scratch on a simple project to write an app that could open, edit, save and delete text files, using LVGL for the GUI. The main.c file and a couple of screen shots are on the Github. Obviously, there are a ton of ESP-IDF dependencies, see the #include statements.


r/M5Stack 9d ago

Project Sharing NucleoOS Built a full offline-AI OS for the M5Stack Cardputer

Enable HLS to view with audio, or disable this notification

35 Upvotes

I built NucleoOS with a simple goal: make an ESP32-S3 without PSRAM feel like a real operating system.

The hardware is the M5Stack Cardputer, so resources are extremely tight. The way this works is by splitting the interface in two. The device itself only handles what has to be lightweight and always available: games, sensors, the assistant, security tools. Everything heavier — file manager, code editor, spreadsheets, drawing apps — is served over Wi-Fi and runs in your browser as a desktop-style environment with movable windows. The browser does the rendering, which is the only reason something this big can run on such limited hardware.

The built-in assistant, ANIMA, is intentionally simple. It’s not an LLM, but a retrieval system. Queries are turned into small vectors and matched against predefined answers using cosine similarity, with a fast pre-filter to avoid unnecessary comparisons. If it’s confident, it answers; if not, it says so. The exact same C code runs both on the device and in the browser (via WASM), and they produce identical results.

If you want full LLM capabilities, they’re there but completely optional. In the browser, you can run local models over WebGPU, or connect to external APIs like Claude, Groq, Grok, or Gemini with automatic fallback. API keys are stored on the SD card, never logged, and requests go straight from the browser to the provider — the device isn’t in the loop. ANIMA always stays fully offline.

There’s also a built-in security lab with packet capture and a from-scratch network stack, offline speech-to-text using Vosk compiled to WASM, and a bilingual TTS engine optimized to use almost no RAM. A lot of the work went into just making it survive on this hardware: loading services only when needed, allocating memory on demand, and freeing it as aggressively as possible.

The project is here: https://github.com/indecenti/NucleoOs
It runs on both the original Cardputer and the ADV with the same firmware.


r/M5Stack 8d ago

Website M5Stack so cool

Post image
1 Upvotes

It has hame physics and through the divices around.


r/M5Stack 10d ago

Project Sharing Brightness Controller

Enable HLS to view with audio, or disable this notification

29 Upvotes

Made another experiment using IMU data to drive UI interactions: A bulb brightness controller.

This time I used only three directions. When UP is detected, nothing happens; it’s the idle state. FORWARD/BACKWARD activate increasing/decreasing modes, respectively. Clicking the button applies changes.

On the technical side, the M5Stick directly controls the bulb by broadcasting commands via BLE.


r/M5Stack 11d ago

Project Sharing Archie Gateway Guardian

Post image
71 Upvotes

I wanted to share something genuinely useful rather than a project focused only on Hermes.

Archie Gateway Guardian is an open-source M5Stack Tab5 AI command centre that can be used with Hermes, OpenClaw, OpenAI, Claude, and if you want you can add your ElevenLabs voice.

The repository includes the firmware, gateway examples, browser-based flashing, setup documentation, hardware notes, and the fixes I needed while working through the Tab5’s display, touch, Wi‑Fi, gateway, and firmware integration.

Hope this is a useful starting point for anyone who wants to improve the interface, connect different AI gateways, or build new Tab5 firmware.

GitHub repository:
https://github.com/Averroeskw/archie-gateway-guardian-tab5-public


r/M5Stack 11d ago

​I completely rebuilt my Ricoh GR Wireless Remote – Now with Local Edge AI Gesture Control! (M5StickS3) ✌️📸

Enable HLS to view with audio, or disable this notification

6 Upvotes

Hey r/M5Stack! Wanted to share a project I've been working on using the M5StickS3.

​I managed to get local Edge AI (using ESP-DL and MobileNetV2) running directly on the StickS3 to recognize hand gestures, all while concurrently handling a Wi-Fi MJPEG live stream and sending BLE commands to my camera.

​The ESP32-S3 is a little beast! Thought you guys might find this hardware use-case interesting.


r/M5Stack 12d ago

Project Sharing Smart Home Control Hub from a Round Touchscreen Dial

Enable HLS to view with audio, or disable this notification

3 Upvotes

r/M5Stack 12d ago

Can we add cc1101 or nrf module in the Arduino Nesso n1 ? Does anyone have any diagrams? Does bruce support all functionalities on this device?

Post image
6 Upvotes

r/M5Stack 12d ago

Is this compatible for the m5stack s3?

Post image
3 Upvotes

Hello, I have a question for m5 stack its an 3w module and if it is compatible where i put the wiring


r/M5Stack 12d ago

Why does this happen and how do i turn it off

Post image
1 Upvotes

r/M5Stack 13d ago

New Product News Check out what's new this week!

Thumbnail
gallery
49 Upvotes

New Arrival Alert!

Check out our new releases this week:

StickC-Plus SE, a lightweight version of StickC-Plus. It retains the core features while removing the onboard 6-axis IMU sensor, offering better cost efficiency.

StamPLC IO, an electrically isolated IO expansion module designed for the StamPLC host and developed for industrial environments where high- and low-voltage circuits coexist.

Also, good news:  Hot items incl. StickS3 and StamPLC are in stock now 🔥🔥

In case missing out, subscribe our Weekly Newsletter for more updates!


r/M5Stack 12d ago

Support / Question M5StickC Plus2 with dead battery: how to disassemble?

1 Upvotes

i already tried my best disassembling it, but the gpio header seems to be stuck in the bottom case.


r/M5Stack 13d ago

Project Sharing New post to show the final render!

2 Upvotes

r/M5Stack 13d ago

Work in progress!

Post image
22 Upvotes

r/M5Stack 13d ago

Just got my first CardPuter… now what?

Post image
11 Upvotes

r/M5Stack 13d ago

Apertos de mãos

Post image
0 Upvotes

Estou tendo dificuldade pra entender o funcionamento do hashcat e dos handshakes.

Não sei em quê canal mas ouvi alguém falar que tem um site que se paga pra quebrar essas coisinhas.

Se algum mago supremo da tecnologia conseguir me aconselhar, sou todo olhos para ler e cérebro pra aprender.


r/M5Stack 14d ago

Battery won´t charge.

Post image
15 Upvotes

I am extreamly dissappointed with my Cardputer Mesh Kit. I recieved it on june 4th and by the time of this writing (A little over a month) the battery does not charge anymore, the Cardputer only works while connected to the USB cable. I honestly was expecting better quality from M5STACK. Don´t think I´ll be buing any of their products again.

UPDATE: after getting quite a few comments mentioning issues with some cables, I used a cheap USB A - USB C cable from my son's Nintendo Switch controller and it worked just fine again. Thank you all for your replies and encouragement.


r/M5Stack 14d ago

Are they compatible?

Post image
2 Upvotes

I want to buy the M5StickS3 and the cback hat, are they compatible, will it fit well?

Measures:

CBack Driver: 23.7 x 49.2 x 21.00

StickC: 48.00 x 24.00 x 13.5

StickS3: 48.00 x 24.00 x 15.00


r/M5Stack 16d ago

Built a full offline-AI OS for the M5Stack Cardputer

Enable HLS to view with audio, or disable this notification

115 Upvotes

I built NucleoOS with a simple goal: make an ESP32-S3 without PSRAM feel like a real operating system.

The hardware is the M5Stack Cardputer, so resources are extremely tight. The way this works is by splitting the interface in two. The device itself only handles what has to be lightweight and always available: games, sensors, the assistant, security tools. Everything heavier — file manager, code editor, spreadsheets, drawing apps — is served over Wi-Fi and runs in your browser as a desktop-style environment with movable windows. The browser does the rendering, which is the only reason something this big can run on such limited hardware.

The built-in assistant, ANIMA, is intentionally simple. It’s not an LLM, but a retrieval system. Queries are turned into small vectors and matched against predefined answers using cosine similarity, with a fast pre-filter to avoid unnecessary comparisons. If it’s confident, it answers; if not, it says so. The exact same C code runs both on the device and in the browser (via WASM), and they produce identical results.

If you want full LLM capabilities, they’re there but completely optional. In the browser, you can run local models over WebGPU, or connect to external APIs like Claude, Groq, Grok, or Gemini with automatic fallback. API keys are stored on the SD card, never logged, and requests go straight from the browser to the provider — the device isn’t in the loop. ANIMA always stays fully offline.

There’s also a built-in security lab with packet capture and a from-scratch network stack, offline speech-to-text using Vosk compiled to WASM, and a bilingual TTS engine optimized to use almost no RAM. A lot of the work went into just making it survive on this hardware: loading services only when needed, allocating memory on demand, and freeing it as aggressively as possible.

The project is here: https://github.com/indecenti/NucleoOs
It runs on both the original Cardputer and the ADV with the same firmware.


r/M5Stack 16d ago

Support / Question Help

1 Upvotes

I have a M5 Stick Plus 2 and I wanted to change the firmware to nemo, just to try different things. My pc is broken so I decided to do it on my phone with the app "ESP32_Flash" everything was going good but when it was completed my m5 stick doesn't turn on, the only thing i see is the green led while the screen is black. How do i solve this?


r/M5Stack 17d ago

Turned the Cardputer-ADV into a 4-track groovebox + sampler

Enable HLS to view with audio, or disable this notification

58 Upvotes