🤖Have you ever tried Chat.M5Stack.com before asking??😎

Subcategories

  • 53 Topics
    243 Posts
    greenleafG
    TL;DR: The factory certificate in slot 10 is in a compressed format that AWS IoT rejects. You need to generate a new properly-formatted certificate. Full working example here: https://github.com/scarolan/grafana-core2aws-iot The Problem Everyone Hits If you've tried to use the Core2 for AWS with its built-in ATECC608 secure element, you've probably hit this error when registering the certificate: CertificateValidationException: The certificate could not be parsed You're not crazy. The factory certificate in slot 10 is stored in Microchip's compressed format with: Empty issuer/subject fields Invalid dates (Aug 28, 2005) Missing X.509 structure AWS IoT's register-certificate-without-ca API rejects it outright. The Solution Generate a new properly-formatted certificate that still uses the locked private key in slot 0 (so you maintain hardware security): 1. Clone the Working Example git clone https://github.com/scarolan/grafana-core2aws-iot cd grafana-core2aws-iot/extras/generate_cert 2. Flash the Certificate Generator pio run -t upload --upload-port COM3 pio device monitor --port COM3 --baud 115200 3. Save the Certificate Copy the certificate output (including -----BEGIN CERTIFICATE----- lines) to a file. 4. Register with AWS IoT aws iot register-certificate-without-ca \ --certificate-pem file://device_new.pem \ --status ACTIVE \ --region us-east-1 Then attach your policy and thing as usual. 5. Use in Your Firmware Update secrets.h with the new certificate and you're done! Why This Works The certificate generator: Reads the public key from slot 0 (the private key never leaves the chip) Creates a proper X.509 certificate with valid dates and subject fields Signs it using the locked private key (signing happens inside the ATECC608) Returns a properly-formatted certificate AWS IoT accepts Hardware security is maintained - the private key in slot 0 is never exposed, it's just used differently. Complete Documentation I've documented the full solution with explanations of what's happening: ATECC608 Architecture - How the secure element works, slot configuration, lock mechanism Certificate Solution - Why the factory cert fails and how to fix it Full Working Example - Complete vibration monitoring IoT demo with AWS IoT Core + Timestream Why M5Stack Doesn't Document This The compressed certificate format is a Microchip design decision (saves space on the chip). It's meant to work with: Microchip's Trust Platform provisioning tools Their specific certificate reconstruction libraries Microchip-managed certificate authorities It was never designed to work directly with third-party services like AWS IoT without special handling. M5Stack provides a complex registration helper (registration_helper.py) that reconstructs the certificate with special manifest-based APIs, but it's 800+ lines of Python with tons of dependencies. The approach above is much simpler - just generate a new cert and register it normally. Tested and Working This solution is running in production on my demo device: MQTTS publishing to AWS IoT Core every 5 seconds Data flowing to Amazon Timestream Hardware-backed authentication with ATECC608 Zero issues with certificate validation Hope This Saves Someone's Week I fought with this for a week a couple years ago and gave up in frustration. Revisited it recently and finally cracked it. Hopefully this saves others the same pain! Questions/issues? Comment here or open an issue on GitHub. Repository: https://github.com/scarolan/grafana-core2aws-iot Hardware: M5Stack Core2 for AWS Libraries: ArduinoECCX08, ArduinoBearSSL, M5Unified Tested: PlatformIO, Arduino framework on ESP32
  • 89 Topics
    337 Posts
    ShawnHymelS
    @felmue That helps a lot, thank you!
  • 65 Topics
    228 Posts
    H
    Has anyone installed firmware and upon starting gets stuck in a menu selection loop where the highlight selection continues to scroll?
  • M5Stack's little brother. Discuss M5 Stick hardware and software related issues here

    403 Topics
    2k Posts
    M
    Does anyone's built-in IR receiver work?
  • 18 Topics
    71 Posts
    P
    I just got the M5GO Kit, and I'm trying to make a Voice Assistant. For some reasons, the Demo of the kit made me think that accessing the microphone is easy. But, after hours of finding, it seems that there is no library or support for the kit to record audio. Does anyone have any resource regarding this?
  • 27 Topics
    114 Posts
    M
    Problem: Der Schrittmotor funktioniert nur korrekt in der Z-Achse bei normalen (langsamen) Drehgeschwindigkeiten. Beim Versuch, die X- und Y-Achsen zu verwenden, funktioniert der Motor nur, wenn ich die Vorschubgeschwindigkeiten auf das 10-fache oder höher erhöhe. Wenn ich versuche, die Adresse auf 0x71 zu ändern, wird das Modul nicht erkannt.
  • 50 Topics
    133 Posts
    Y
    @samantha_martin Hola Samantha. El M5StickC Plus (SKU:K016-P) utiliza el chip ESP32-PICO-D4, que integra Bluetooth LE. Para reducir la latencia en la transmisión HID, puedes probar las siguientes acciones: Optimizar la frecuencia de envío de datos: En las librerías ESP32-BLE-Keyboard o BleGamepad, ajusta el intervalo de notificación BLE a un valor más bajo (por ejemplo, 10-20 ms). Algunas librerías permiten configurar esto al inicializar el dispositivo HID. Minimizar el código en el loop(): Asegúrate de que no haya delays innecesarios ni tareas bloqueantes (como impresiones Serial) que ralenticen la detección de botones y el envío de comandos. Configurar el modo BLE de bajo consumo: Aunque el ESP32-PICO-D4 es eficiente, verifica que no se encuentre en modos de suspensión prolongada. Asegúrate de que el dispositivo BLE esté configurado para enviar notificaciones inmediatamente al detectar una pulsación. Actualizar el firmware del ESP32: Usa la última versión del core ESP32 en Arduino IDE, ya que a menudo incluyen optimizaciones en el stack BLE. Verificar la configuración de Android: En el menú de configuración de Bluetooth de tu teléfono, desactiva opciones como "Ahorro de batería" para el dispositivo M5StickC Plus, ya que pueden restringir la frecuencia de actualizaciones HID. https://chat.m5stack.com/
  • For Topics related to the Core 2

    335 Topics
    1k Posts
    easytargetE
    @skyflyer said in External 1S LIPO on M5Core2 BUS PIN1 and PIN30?: I tried to find information about it, and want to confirm that it is OK to connect the external Lipo battery to pins 1 and 30 on the "BUS expansion port"? And that the battery will be charged when connected to the external USB power? If you look at the schematic you will see that pin30 on the bus and VBAT (on the lipo connector) are the same. So yes, you can replace the internal battery with an external one with the same voltage! @skyflyer said in External 1S LIPO on M5Core2 BUS PIN1 and PIN30?: And I don't need to remove the internal 500mAh battery, since they would be connected in parallel anyhow? Do not simply put rechargeable batteries in parallel. Disconnect the internal one. You can have batteries in parallel but.. at a minimum you need some diodes to prevent them back-charging each other, have a look online where there is a lot of info about this.
  • Special characters like german umlaut äöü

    4
    0 Votes
    4 Posts
    8k Views
    P
    In the standard M5 font you can use this workaround. It is working in M5Tab5 as well ä char(132) ü char(129) ö char(148) Ä char(142) Ü char(154) Ö char(153) Example for German: Überschuss M5.Lcd.drawString(String(char(154)) + "berschuss" , 0, 0);
  • StickS3

    1
    0 Votes
    1 Posts
    227 Views
    No one has replied
  • Tab5, LVGL, trying to get touch working

    1
    0 Votes
    1 Posts
    268 Views
    No one has replied
  • ESP-NOW appears to be NOT working on V2.4.0 and V2.4.1 Firmware?

    5
    0 Votes
    5 Posts
    2k Views
    bschwahnB
    @veryalien Thanks veryalien for responding on the ESP-NOW support. Sorry for the late reply too! I did see that the M5Dials and the TAB5 support UDP/TCP which I will look into after I get the current project up for now. Thanks-Brian
  • M5Stack CoreS3 capacitive touch issue / firmware reset

    4
    0 Votes
    4 Posts
    1k Views
    P
    @ptweet [link text](https://ibb.co/CKrX3GhS!Screenshot 2026-01-20 at 11.11.04 AM.png )
  • CoreS3 - OpenAI Voice Assistant issue

    1
    0 Votes
    1 Posts
    340 Views
    No one has replied
  • TAB5 I2C issues using UIflow2

    6
    0 Votes
    6 Posts
    2k Views
    F
    @BR123456, @kuriko Hi BR123456, kuriko, we also tried your fix - unfortunately it did yet not work for my project We have the following situation: M5Stack Tab 5 with UIflow 2.4.0 We also have connected a Module13.2 Stepmotor Driver v1.1 on the Tab5 The UIflow web version is 2.4.0 https://uiflow2.m5stack.com We could not sort out how to connect to UIflow Web 2.3.8. Our UIFlow test code: [image: 1768251202218-2a73af4b-a02a-455b-82cc-51eea8da67fc-image.png] We also installed UIflow version 3.8.0 on the tab 5 but this did solve the problem. Our error message looks like this: Traceback (most recent call last): File "boot.py", line 46, in <module> File "m5sync/sync.py", line 521, in run KeyboardInterrupt: MicroPython v1.25.0-dirty on 2025-12-23; M5STACK Tab5 with ESP32P4 Type "help()" for more information. >>> import gc >>> gc.collect() >>> paste mode; Ctrl-C to cancel, Ctrl-D to finish === import os, sys, io === import M5 === from M5 import * === import m5ui === import lvgl as lv === from hardware import Pin === from hardware import I2C === from module import StepMotorDriverModule === page0 = None === i2c1 = None === stepmotor_driver_0 = None === def setup(): === global page0, i2c1, stepmotor_driver_0 === M5.begin() === Widgets.setRotation(3) === m5ui.init() === page0 = m5ui.M5Page(bg_c=0xffffff) === i2c1 = I2C(1, scl=Pin(32), sda=Pin(31), freq=100000) === stepmotor_driver_0 = StepMotorDriverModule(address=0x27, step_pin=(7, 2, 47), dir_pin=(6, 48, 35)) === def loop(): === global page0, i2c1, stepmotor_driver_0 === M5.update() === if __name__ == '__main__': === try: === setup() === while True: === loop() === except (Exception, KeyboardInterrupt) as e: === try: === m5ui.deinit() === from utility import print_error_msg === print_error_msg(e) === except ImportError: === print("please update to latest firmware") === === === E (14740) i2c.master: this port has not been initialized, please initialize it first Could you give us a hint how we can solve our problem and let turn the motors. Thanks for your support
  • CoreS3 virtual buttons

    5
    0 Votes
    5 Posts
    4k Views
    N
    @chama did you end up figuring this out? I have the same issue, where only virtual button A works. https://community.m5stack.com/topic/7919/cores3-lite-virtual-buttons-b-and-c-not-working?_=1764926737465 Thank you!
  • CoreS3 Lite virtual buttons B and C not working

    1
    0 Votes
    1 Posts
    495 Views
    No one has replied
  • TAB5 ESP-NOW

    2
    0 Votes
    2 Posts
    737 Views
    felmueF
    Hello @vsambur I don't think this is supported (yet). See here. Thanks Felix
  • Trying to compile Core example from M5Stack github

    6
    0 Votes
    6 Posts
    4k Views
    teastainT
    @wavydavy Yes, that resolved the issue, I am now using the "M5Stack by M5Stack official 3.2.2 installed " board def. The entire problem was that my pre-existing code AND the M5Stack Github examples by M5Stack use #include <M5Stack.h> instead of M5Unified. Thanks for your help. Also: No one at M5Stack picked up on this, except you, not even the online M5Stack AI chat helper. Note: The examples in the newer web based API work fine, just not the old M5Stack official Github. Cheers, Terry
  • 0 Votes
    3 Posts
    5k Views
    TomKattT
    @hacxx said in rom/miniz.h error still occurs when compiling for Core with board def 3.2.x: M5Stack isn’t abandoning older Cores, but newer SDKs drop deprecated APIs. If issues persist, stick with 2.1.x or modify the library. Open source is great - until libraries get modified and changes are made that impact existing functionality... M5Stack isn't alone in this - it's a problem that spans the open source community. I get that technology is always changing... But there must be a better way to manage libraries. If I didn't stumble on these websites, I'd never have found the solution and it's very likely that I'd toss my affected M5Stack gear in the bin because it's basically unusable. And then I'd move on to a competitor's products that work.
  • CoreS3 + PWRCAN 13.2 Module working demo required

    2
    1 Votes
    2 Posts
    2k Views
    R
    @Omurice Bump Thread, There are three threads on the PWRCAN Module, and all of the say the demo does NOT work. I tried to use TWAI based code but it doesn't seem to work either. Is it possible to get a working demo on a CoreS3
  • CoreMP135 by UIFlow

    9
    0 Votes
    9 Posts
    6k Views
    T
    Hi, I have exactly the same issue with the coremp135. Any solutions meanwhile? I'd like to use it connected via USB Serial and also upload programs, but now way. BR Tomekk
  • M5stack CoreInk RTC/deepsleep not working on UIFlow2

    2
    0 Votes
    2 Posts
    1k Views
    felmueF
    Hello @kimtommy hmm, works for me. Tested both: power off and deep sleep. I created an example which might help you. You can find it in the UIFlow2 Project Zone: M5CoreInk_PowerOff_DeepSleep_Test_UIFlow2.3.2 Thanks Felix
  • M5Tab

    1
    1 Votes
    1 Posts
    1k Views
    No one has replied
  • A problem with the 5V output capability of M5Capsule

    4
    0 Votes
    4 Posts
    4k Views
    H
    It sounds like the 5V output on the M5Capsule may not be designed to supply higher current devices directly—30mA is very low. Unlike the M5GO, the Capsule likely has current-limited or protected output. You might try powering the camera from an external 5V source and just connect data lines to the Capsule. Also worth checking if there's a FET or regulator in the schematic limiting output.
  • Watchdog Timer on M5 Tough

    2
    0 Votes
    2 Posts
    2k Views
    felmueF
    Hello @scroggyg in UIFlow2 under Hardware you can find the Watch Dog Timer (WDT) module. I created a example in the UIFlow2 Project Zone: M5Tough_Watchdog_Test_UIFlow2.2.8 Thanks Felix
  • Battery charging does not work on BASIC V2.7

    core
    3
    0 Votes
    3 Posts
    2k Views
    S
    @sgflux I measured the voltage of the ‘5V pin’. With the V2.4 I get 5 V, with the V2.7 only 4.7V. Could this be the reason why it only charges with a maximum of 150 to 200mA? How can I increase the voltage output of the IP5306? Is this possible via i2c?
  • Core2 power use versus CoreS3 power use.

    3
    0 Votes
    3 Posts
    3k Views
    felmueF
    Hello @robouden hmm, running UIFlow2 on my M5CoreS3 and measuring current on USB-C I get about 140 mA / 5 V. Is your M5CoreS3 maybe charging the battery? Thanks Felix