🤖Have you ever tried Chat.M5Stack.com before asking??😎
  • 0 Votes
    2 Posts
    154 Views
    Y
    Root Cause Analysis A detailed schematic review revealed the source of the problem. All three components — Core2, Audio Module, and Bottom2 — are interconnected through the shared M5 BUS. The Bottom2 module includes a SPM1423 MEMS microphone, which uses: GPIO0 (BUS pin 24) for the clock signal (CLK) GPIO34 (BUS pin 26) for the data signal (DAT, digital output) The Audio Module, based on the ES8388 codec, uses: GPIO0 (BUS pin 24) for I2S_MCLK GPIO34 (BUS pin 26) for I2S_MAIN_DIN This creates a fundamental hardware conflict on the I2S bus. The Core Conflict Two independent devices attempt to drive the same data line: The ES8388 (M144 Audio Module) uses GPIO34 to send digitized audio data from its ADC (line-in or microphone) to the ESP32 via I2S. The SPM1423 (Bottom2) uses the same GPIO34 to output PDM audio data from its internal MEMS microphone. From the ESP32’s perspective: GPIO34 is input-only However, on the physical PCB traces, both devices are electrically connected to this same line and actively drive it. This results in a classic and severe bus contention scenario: Two outputs connected together No arbitration No isolation No possibility for coexistence Why This Cannot Be Solved in Software At first glance, one might consider disabling the microphone via software. Unfortunately, this is not feasible due to both architectural and hardware constraints. The Bottom2 doesn’t expose the SPM1423 MEMS dedicated enable/disable (chip select) pin. The only way to silence it — effectively forcing its data output into a high-impedance (Hi-Z) state — is to stop its clock signal on GPIO0. This leads directly to a deadlock: If the M144 switch is set to position A: GPIO0 is used as MCLK (mandatory master clock for ES8388 operation, typically 12.288 MHz) If the switch is set to position B: GPIO0 becomes I2S SCLK (bit clock) Additionally: The internal amplifier of the Core2 (NS4168) also uses GPIO0 for BCLK In other words, GPIO0 is always actively used in any valid configuration. Stopping the clock to disable the microphone would simultaneously break: the ES8388 codec or the Core2 internal audio path Thus, there is no viable way to control the microphone via software without disrupting essential system functionality. Design Oversight The A/B switch on the M144 Audio Module was clearly designed to avoid clock conflicts (MCLK vs SCLK) with other peripherals. However, the design completely overlooks the data line conflict on GPIO34. This is particularly problematic because: the Bottom2 module is an official M5Stack accessory the SPM1423 microphone is always active by default both modules are intended to be used within the same ecosystem Despite this, their coexistence leads to a non-functional configuration when using the ES8388 input path. Conclusion This issue is not a matter of configuration, firmware, or library incompatibility. It is a fundamental hardware design conflict on the shared M5 BUS. When Bottom2 is attached: the SPM1423 microphone continuously drives the I2S data line the ES8388 is unable to deliver valid audio data the result is severe noise and corrupted signal There is no reliable software workaround. The only effective solutions are hardware-level: physically removing or isolating the SPM1423 microphone redesigning the Bottom2 PCB to include a switch or gating mechanism routing the microphone control (e.g., SELECT or enable logic) to a dedicated GPIO Until such changes are implemented, the ES8388 input functionality cannot be used in conjunction with the Bottom2 module in a stable and predictable way. My solution was to remove the SPM1423 Microphone from the PCB. Another solution is to cut the relevant pins from the Bottom2 BUS with the same effect - removing SPM1423 from the circuit.
  • M5Core2 - How to restore to pre-installed factory firmware

    8
    0 Votes
    8 Posts
    11k Views
    S
    @caccum Did you have any luck ? Little late to party . I cannot do anything because keeps saying I need an API Key. No idea where / how to get the to do the factory reset. Every search I do sends me to an M5 AI bot that does not actually tell you how to get the key. Just says device screen will give it to you.
  • ⚠️ M5Stack Core2 v1.3 - Ouroboros-like power loop -

    6
    0 Votes
    6 Posts
    428 Views
    Y
    @felmue Unfortunately, I can't find the AXP dump from that condition to double check but the current loop was there and was very annoying! Oh, I think I missed to specify that the charging current of the LiPo cell was limited from registers to 360mA! It was definetly a current loop but I solved it and this is what matters... VBUS must be set to OFF when EXTEN is Enable otherwise the AXP IPS will try to charge the battery from itself after the voltage is raised to 5V through SY7088! Cheers, Adrian
  • External 1S LIPO on M5Core2 BUS PIN1 and PIN30?

    4
    1
    1 Votes
    4 Posts
    1k Views
    Y
    @easytarget The internal battery have it's own protection module; if you really want to put another one in parallel with the internal one, choose one with a similar protection module. This would be the "next best practice" if you don't want to simpl replace the internal one with a bigger external one. Cheers, Adrian
  • Issue With Module GPS v2.1 and M5Core2

    8
    1 Votes
    8 Posts
    1k Views
    H
    Hi. Have you tried reading bytes from the GPS and displaying them on a serial monitor as they arrive as below, just to show you are getting data (if the serial setup is incorrect you should still receive data but it will be gibberish): // Serial is the serial monitor // Serial1 is the GPS data int intChar; char charChar; intChar = Serial1.read(); if(inChar != -1){ charChar = (char)intChar; Serial.print(charChar); } I have been using the M5Stack GPS v1.1 and it was set to 115200@7N1, not the advertised 115200@8N1 so might be an issue there (I got gibberish at first) Finally my M5Stack GPSv1.1 works fine with an Adafruit Itsy Bitsy 3v controller and an ESP32S3 based controller but not with the Seeed Wio Terminal. With the Seeed Wio Terminal I get nothing at all - no gibberish, absolutely nothing. It's as if the signal is not there (but it is !!).
  • Core2 deep sleep with wakeup by PIR sensor

    4
    0 Votes
    4 Posts
    2k Views
    felmueF
    Hello @drvval when I run M5Core2 v1.1 from battery, power consumption gets down to about 5.2 mA @ 4.2 V in ESP32 deep sleep. BTW: Interestingly when running from battery I can turn off the boost circuit. In my test I now only turn LCD backlight to zero and turn off boost circuit. When I turn LCD and/or TP off things start to go wrong. My guess is that ESP32 SPI / I2C bus gets confused if devices are suddenly disappearing. Thanks Felix
  • M5Core2 basic SPI questions

    1
    3
    0 Votes
    1 Posts
    407 Views
    No one has replied
  • Core2: expose pin - proto board - M5GO bottom2

    1
    0 Votes
    1 Posts
    669 Views
    No one has replied
  • Core2 and M5Unified display no longer works

    9
    1 Votes
    9 Posts
    5k Views
    S
    I should note that I am also using the SD card interface and whenever the SD is not detected on power up the display doesn't work either. I believe they are on the same bus.
  • M5Stack Core2 AI Voice Assistant

    1
    0 Votes
    1 Posts
    715 Views
    No one has replied
  • Touchscreen not responding when using GoPlus2 with two servo motors

    6
    0 Votes
    6 Posts
    4k Views
    felmueF
    Hello @eleonorafontana16 just to clarify - your current setup (controlling 2 servos using GPIO25 and GPIO26) doesn't include the GoPlus2 module anymore, correct? Thanks Felix
  • No COM detected after connecting to PC

    12
    0 Votes
    12 Posts
    8k Views
    konacurrentsK
    @robski not that I know of. As I mentioned, the USB-C works fine. It's the USB-A that is hit or miss on working. I think this is a mac issue as I search the net. Eg: here and here and mac ports Just was wondering if anyone has had this issue as well. I'm not stuck but my co-worker (not a developer) couldn't get the USB-A on a mac dongle to work. I just wanted her to use the Serial Monitor - as I implemented commands the user can type is to do an OTA update or other things. So they just needed a Serial Monitor (and this issue crept in). Thanks.
  • Replacement battery?

    5
    0 Votes
    5 Posts
    4k Views
    S
    @GeorgeR Have a search for 'quadcopter battery' on Amazon (or your marketplace of choice) and you should find one of the right size and correct connector. I've bought a couple of batteries and charged them with the 'Timer Power Unit' for various projects. WARNING!! BEWARE! I've found about 50% of the batteries I've bought had the wires the opposite way round to that required by the M5Stack controllers. They will instantly kill your controller! Triple check the polarity before ever plugging them into your controller.
  • LittleFS problem with M5core2 and PIO

    2
    0 Votes
    2 Posts
    5k Views
    H
    It looks like PlatformIO is still uploading your filesystem as SPIFFS despite setting board_build.filesystem = littlefs. This happens because the default partition table might not reserve space for LittleFS. Try creating a custom partition table that supports LittleFS and specify it in platformio.ini with board_build.partitions. Also, ensure your LittleFS_esp32 library is compatible with M5Core2. Without proper partitioning, mounting fails with corrupted directory errors like yours. Let me know if you want help generating a suitable partition CSV file!
  • 0 Votes
    4 Posts
    8k Views
    felmueF
    Hello @hacxx please refrain from posting in year old threads which are already resolved. Thank you. Thanks Felix
  • [Error] Get MAC failed in m5Burner

    7
    1
    0 Votes
    7 Posts
    7k Views
    ajb2k3A
    @Boomvalt Xcode is OSX's dev environment and is needed for some low level functions needed for hardware programming even if you are not directly using it.
  • Wakeup Core2 v1.1 by USB and GPIO possible?

    3
    0 Votes
    3 Posts
    3k Views
    D
    @kuriko Thank you for your hint. However, I don't know how it could help to solve my requirements. In M5StickC-Plus example, IMU will remain powered on and will send interrupt on gpio 35 on motion. In my requirement, axp2101 could send interrupt on power-on (usb), but its interrupt pin is not connected to esp32. AXP2101 usually wakes up esp32 by simply powering on esp32, it is not a real wake up by interrupt. Therefore, wake up by power-on (usb) works only if esp32 was powered off by axp2101 previously. I cannot power-off esp32 because it should also wake up on gpio interrupt from PIR.
  • CORE2 HIVEMQ

    33
    0 Votes
    33 Posts
    80k Views
    robskiR
    for Hive MQTT below works for me Uiflow 2.2.5 [image: 1744880435095-mqtt-hive-m5stack.png]
  • Android sketch works with AXP192, but not 2101

    4
    0 Votes
    4 Posts
    3k Views
    felmueF
    Hello @Krmiller GetVBusVoltage() exists in M5Core2 library as well. See here. Thanks Felix
  • Core Basic v2.7 not shown in IDE

    10
    1
    1 Votes
    10 Posts
    6k Views
    P
    @pleister found the solution in rebuilding the extension https://github.com/curdeveryday/vscode-m5stack-mpy/issues/45