The M5Unified library supports a wide range of M5Stack hardware. Because different devices use different GPIO pins for the same functions (like LCD, SPI, or I2C), refer to the hardware mapping table to understand how pins are allocated across various models.
Key device families include:
- M5Stack BASIC/GRAY/GO/FIRE
- M5Stack Core2 (AWS/Tough)
- M5Stick C/CPlus/CPlus2
- M5Paper / CoreInk
- M5Station
- M5ATOM (Lite/Matrix/ECHO/U/PSRAM)
- M5STAMP PICO
Commonly shared pin functions across devices include LCD_CS, LCD_D/C, SPI_MOSI, I2C_SDA, and BTN_A/B/C.
| |M5Stack<BR>BASIC<BR>GRAY |M5Stack<BR>GO/FIRE |M5Stack<BR>Core2(AWS)<BR>Tough |M5Stick<BR>C/CPlus |M5Stick<BR>CPlus2 |M5Stack<BR>CoreInk |M5Paper |M5Station |M5ATOM<BR>Lite/Matrix<BR>ECHO/U<BR>PSRAM |M5STAMP<BR>PICO |
|:------------------:|:---------------------------------:|:---------------------------------:|:-------------------------------------:|:----------------------------:|:-------------------------:|:----------------------:|:---------------------:|:---------------------:|:---------------------------------------:|:------------------:|
|GPIO 0<BR>`ADC2_CH1`|`M-Bus`<BR>IIS_MK |`M-Bus`<BR>IIS_MK |`M-Bus`<BR>**SPK_LRCK<BR>PDM_C**(Core2)|`HAT`<BR>`PAD`<BR>**PDM_C** |`HAT`<BR>**PDM_C** |**EPD_RST** | --- | --- | --- | |GPIO 0<BR>`ADC2_CH1`|
|GPIO 1<BR>`USB_TX` |`M-Bus`<BR>**Serial** |`M-Bus`<BR>**Serial** |`M-Bus`<BR>**Serial** |**Serial** |**Serial** |**Serial** |**Serial** |**Serial** |**Serial** |GPIO 1<BR>`USB_TX` |
|GPIO 2<BR>`ADC2_CH2`|`M-Bus`<BR> |`M-Bus`<BR> |`M-Bus`<BR>**SPK_D** |`PAD`<BR>**Beep**(CPlus) |**Beep** |**Beep** |**PW_Hold** |**ReadEn** | --- | --- |GPIO 2<BR>`ADC2_CH2`|
|GPIO 3<BR>`USB_RX` |`M-Bus`<BR>**Serial** |`M-Bus`<BR>**Serial** |`M-Bus`<BR>**Serial** |**Serial** |**Serial** |**Serial** |**Serial** |**Serial** |**Serial** |GPIO 3<BR>`USB_RX` |
|GPIO 4<BR>`ADC2_CH0`|**TF_CS** |**TF_CS** |**TF_CS** | --- |**PW_Hold** |**EPD_BUSY** |**TF_CS** |**RGB LED** | --- | --- |GPIO 4<BR>`ADC2_CH0`|
|GPIO 5 |`M-Bus` |`M-Bus` |**LCD_CS** |**LCD_CS** |**LCD_CS** |**BTN_HAT** |**EXT_5V** |**LCD_CS** |`Bus`(P)<BR>**PDM_C**(U) | --- |GPIO 5 |
|GPIO 9 | --- | --- | --- |**InfraRed** | --- |**EPD_CS** | --- | --- | --- | --- |GPIO 9 |
|GPIO10 | --- | --- | --- |**LED** | --- |**LED** | --- | --- | --- | --- |GPIO10 |
|GPIO12<BR>`ADC2_CH5`|`M-Bus`<BR>IIS_SK |`M-Bus`<BR>IIS_SK |**SPK_BCLK** | --- |**LCD_RST** |**PW_Hold** |**SPI_MOSI** |**USB_PW** |**InfraRed** | --- |GPIO12<BR>`ADC2_CH5`|
|GPIO13<BR>`ADC2_CH4`|`M-Bus`<BR>IIS_WS |`M-Bus`<BR>IIS_WS |**RXD2** |**SPI_SCLK** |**SPI_SCLK** |`MI-Bus`<BR>RXD2 |**SPI_MISO** |**PORT.C1** | --- | --- |GPIO13<BR>`ADC2_CH4`|
|GPIO14<BR>`ADC2_CH6`|**LCD_CS** |**LCD_CS** |`M-Bus`<BR>TXD2 | --- |**LCD_D/C** |`MI-Bus`<BR>TXD2 |**SPI_SCLK** |**PORT.C1** | --- | --- |GPIO14<BR>`ADC2_CH6`|
|GPIO15<BR>`ADC2_CH3`|`M-Bus`<BR>IIS_OUT |`M-Bus`<BR>**RGB LED** |**LCD_D/C** |**SPI_MOSI** |**SPI_MOSI** |**EPD_D/C** |**EPD_CS** |**LCD_RST** | --- | --- |GPIO15<BR>`ADC2_CH3`|
|GPIO16<BR>`PSRAM` |`M-Bus`<BR>RXD2 |`M-Bus`<BR>`PORT.C`<BR>RXD2 | --- | --- |--- | --- | --- |`PORT.C2`<BR>RXD2 | --- | --- |GPIO16<BR>`PSRAM` |
|GPIO17<BR>`PSRAM` |`M-Bus`<BR>TXD2 |`M-Bus`<BR>`PORT.C`<BR>TXD2 | --- | --- |--- | --- | --- |`PORT.C2`<BR>TXD2 | --- | --- |GPIO17<BR>`PSRAM` |
|GPIO18 |`M-Bus`<BR>**SPI_SCLK** |`M-Bus`<BR>**SPI_SCLK** |**SPI_SCLK** |**LCD_RST** |--- |`MI-Bus`<BR>**SPI_SCLK**|`PORT.C` |**SPI_SCLK** | --- | |GPIO18 |
|GPIO19 |`M-Bus`<BR>**SPI_MISO** |`M-Bus`<BR>**SPI_MISO** |`M-Bus` | --- |**LED**<BR>**InfraRed** |**RTC_INT** |`PORT.C` |LCD_D/C |`Bus`<BR>**SPK_C**(ECHO)<BR>***PDM_D**(U)| |GPIO19 |
|GPIO21 |`M-Bus`<BR>`PORT.A`<BR>**I2C0_SDA**|`M-Bus`<BR>`PORT.A`<BR>**I2C0_SDA**|**I2C1_SDA** |**I2C1_SDA** |**I2C1_SDA** |`MI-Bus`<BR>**I2C1_SDA**|**I2C1_SDA** |**I2C1_SDA** |`Bus`<BR>**I2C1_SCL** | |GPIO21 |
|GPIO22 |`M-Bus`<BR>`PORT.A`<BR>**I2C0_SCL**|`M-Bus`<BR>`PORT.A`<BR>**I2C0_SCL**|**I2C1_SCL** |**I2C1_SCL** |**I2C1_SCL** |`MI-Bus`<BR>**I2C1_SCL**|**I2C1_SCL** |**I2C1_SCL** |`Bus`<BR>**SPK_D**(ECHO) | |GPIO22 |
|GPIO23 |`M-Bus`<BR>**SPI_MOSI** |`M-Bus`<BR>**SPI_MOSI** |**SPI_MOSI** |**LCD_D/C** | --- |`MI-Bus`<BR>**SPI_MOSI**|**EPD_RST** |**SPI_MOSI** |`Bus`<BR>**PDM_D**(ECHO) | --- |GPIO23 |
|GPIO25<BR>`DAC1` |`M-Bus`<BR>**SPK_DAC** |`M-Bus`<BR>**SPK_DAC** |`M-Bus`<BR>**RGB LED**(AWS) |`HAT`(CPlus)<BR>`PAD` |`HAT` |`MI-Bus`<BR>`HAT` |`PORT.A`<BR>I2C0_SDA |`PORT.B1` |`Bus`<BR>**I2C1_SDA** | |GPIO25<BR>`DAC1` |
|GPIO26<BR>`DAC2` |`M-Bus` |`M-Bus`<BR>`PORT.B` |`M-Bus` |`HAT`<BR>`PAD` |`HAT` |`MI-Bus`<BR>`HAT` |`PORT.B` |`PORT.B2` |`PORT.A`<BR>**I2C0_SDA** | |GPIO26<BR>`DAC2` |
|GPIO27<BR>`ADC2_CH7`|**LCD_D/C** |**LCD_D/C** |`M-Bus` |**AXP192 VBUSEN** |**LCD_BL** |**BTN_PWR** |**EPD_BUSY** |**IMU_INT** |**RGB LED** |**RGB LED** |GPIO27<BR>`ADC2_CH7`|
|GPIO32<BR>`ADC1_CH4`|**LCD_BL** |**LCD_BL** |`M-Bus`<BR>`PORT.A`<BR>I2C0_SDA |`PORT.A`<BR>I2C0_SDA |`PORT.A`<BR>I2C0_SDA |`PORT.A`<BR>I2C0_SDA |`PORT.A`<BR>I2C0_SCL |`PORT.A`<BR>I2C0_SDA |`PORT.A`<BR>**I2C0_SCL** |`PORT.A`<BR>I2C0_SDA|GPIO32<BR>`ADC1_CH4`|
|GPIO33<BR>`ADC1_CH5`|**LCD_RST** |**LCD_RST** |`M-Bus`<BR>`PORT.A`<BR>I2C0_SCL |`PORT.A`<BR>I2C0_SCL |`PORT.A`<BR>I2C0_SCL |`PORT.A`<BR>I2C0_SCL |`PORT.B` |`PORT.A`<BR>I2C0_SCL |`Bus`<BR>**PDM_C**(ECHO) |`PORT.A`<BR>I2C0_SCL|GPIO33<BR>`ADC1_CH5`|
|GPIO34<BR>`ADC1_CH6`|`M-Bus`<BR>IIS_IN |`M-Bus`<BR>**MIC_ADC**<BR>IIS_IN |`M-Bus`<BR>**PDM_D**(Core2) |**PDM_D** |**PDM_D** |`MI-Bus`<BR>**SPI_MISO**| --- | USB Current? | | --- |GPIO34<BR>`ADC1_CH6`|
|GPIO35<BR>`ADC1_CH7`|`M-Bus` |`M-Bus` |`M-Bus` |**RTC_INT** |**BTN_PWR** |**BAT_V** |**BAT_V** |`PORT.B1` | --- | --- |GPIO35<BR>`ADC1_CH7`|
|GPIO36<BR>`ADC1_CH0`|`M-Bus` |`M-Bus`<BR>`PORT.B` |`M-Bus` |`HAT`<BR>`PAD` |`HAT` |`MI-Bus`<BR>`HAT` |**TP_INT** |`PORT.B2` | --- | --- |GPIO36<BR>`ADC1_CH0`|
|GPIO37<BR>`ADC1_CH1`|**BTN_C** |**BTN_C** | --- |**BTN_A** |**BTN_A** |**SW_Up** |**SW_Up** |**BTN_A** | --- | --- |GPIO37<BR>`ADC1_CH1`|
|GPIO38<BR>`ADC1_CH2`|**BTN_B** |**BTN_B** |`M-Bus`<BR>**SPI_MISO** |`PAD` |**BAT_V** |**SW_Press** |**SW_Press** |**BTN_B** | --- | --- |GPIO38<BR>`ADC1_CH2`|
|GPIO39<BR>`ADC1_CH3`|**BTN_A** |**BTN_A** |**TP_INT** |**BTN_B** |**BTN_B** |**SW_Down** |**SW_Down** |**BTN_C** |**BTN** |**BTN** |GPIO39<BR>`ADC1_CH3`|