diff --git a/libraries/SD/examples/SD_Test/SD_Test.ino b/libraries/SD/examples/SD_Test/SD_Test.ino
index 8084ee17dae..a7de5ca24ce 100644
--- a/libraries/SD/examples/SD_Test/SD_Test.ino
+++ b/libraries/SD/examples/SD_Test/SD_Test.ino
@@ -1,21 +1,56 @@
 /*
- * Connect the SD card to the following pins:
+ * pin 1 - not used          |  Micro SD card     |
+ * pin 2 - CS (SS)           |                   /
+ * pin 3 - DI (MOSI)         |                  |__
+ * pin 4 - VDD (3.3V)        |                    |
+ * pin 5 - SCK (SCLK)        | 8 7 6 5 4 3 2 1   /
+ * pin 6 - VSS (GND)         | ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄  /
+ * pin 7 - DO (MISO)         | ▀ ▀ █ ▀ █ ▀ ▀ ▀ |
+ * pin 8 - not used          |_________________|
+ *                             ║ ║ ║ ║ ║ ║ ║ ║
+ *                     ╔═══════╝ ║ ║ ║ ║ ║ ║ ╚═════════╗
+ *                     ║         ║ ║ ║ ║ ║ ╚══════╗    ║
+ *                     ║   ╔═════╝ ║ ║ ║ ╚═════╗  ║    ║
+ * Connections for     ║   ║   ╔═══╩═║═║═══╗   ║  ║    ║
+ * full-sized          ║   ║   ║   ╔═╝ ║   ║   ║  ║    ║
+ * SD card             ║   ║   ║   ║   ║   ║   ║  ║    ║
+ * Pin name         |  -  DO  VSS SCK VDD VSS DI CS    -  |
+ * SD pin number    |  8   7   6   5   4   3   2   1   9 /
+ *                  |                                  █/
+ *                  |__▍___▊___█___█___█___█___█___█___/
  *
- * SD Card | ESP32
- *    D2       -
- *    D3       SS
- *    CMD      MOSI
- *    VSS      GND
- *    VDD      3.3V
- *    CLK      SCK
- *    VSS      GND
- *    D0       MISO
- *    D1       -
+ * Note:  that SPI pins can be configured by using `SPI.begin(sck, miso, mosi, cs);`
+ *        alternatively you can change only the CS pin with `SD.begin(CSpin)`
+ *
+ * +--------------+---------+-------+----------+----------+----------+
+ * | SPI Pin Name | ESP8266 | ESP32 | ESP32-S2 | ESP32-C3 | ESP32-S3 |
+ * +==============+=========+=======+==========+==========+==========+
+ * | CS (SS)      | GPIO15  | GPIO5 | GPIO5    | GPIO13   | GPIO13   |
+ * +--------------+---------+-------+----------+----------+----------+
+ * | DI (MOSI)    | GPIO13  | GPIO23| GPIO24   | GPIO14   | GPIO14   |
+ * +--------------+---------+-------+----------+----------+----------+
+ * | DO (MISO)    | GPIO12  | GPIO19| GPIO25   | GPIO15   | GPIO15   |
+ * +--------------+---------+-------+----------+----------+----------+
+ * | SCK (SCLK)   | GPIO14  | GPIO18| GPIO19   | GPIO16   | GPIO16   |
+ * +--------------+---------+-------+----------+----------+----------+
+ *
+ * For more info see file README.md in this library or on URL:
+ * https://github.com/espressif/arduino-esp32/tree/master/libraries/SD
  */
+
 #include "FS.h"
 #include "SD.h"
 #include "SPI.h"
 
+/*
+Uncomment and setup pins you want to use for the SPI communication
+#define REASSIGN_PINS
+int sck = -1;
+int miso = -1;
+int mosi = -1;
+int cs = -1;
+*/
+
 void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
     Serial.printf("Listing directory: %s\n", dirname);
 
@@ -175,6 +210,12 @@ void testFileIO(fs::FS &fs, const char * path){
 
 void setup(){
     Serial.begin(115200);
+    while(!Serial) { delay (10); }
+
+#ifdef REASSIGN_PINS
+    SPI.begin(sck, miso, mosi, cs);
+#endif
+    //if(!SD.begin(cs)){ //Change to this function to manually change CS pin
     if(!SD.begin()){
         Serial.println("Card Mount Failed");
         return;
diff --git a/libraries/SD/examples/SD_time/SD_time.ino b/libraries/SD/examples/SD_time/SD_time.ino
index cef80dd600c..8219942193e 100644
--- a/libraries/SD/examples/SD_time/SD_time.ino
+++ b/libraries/SD/examples/SD_time/SD_time.ino
@@ -1,16 +1,41 @@
 /*
- * Connect the SD card to the following pins:
+ * pin 1 - not used          |  Micro SD card     |
+ * pin 2 - CS (SS)           |                   /
+ * pin 3 - DI (MOSI)         |                  |__
+ * pin 4 - VDD (3.3V)        |                    |
+ * pin 5 - SCK (SCLK)        | 8 7 6 5 4 3 2 1   /
+ * pin 6 - VSS (GND)         | ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄  /
+ * pin 7 - DO (MISO)         | ▀ ▀ █ ▀ █ ▀ ▀ ▀ |
+ * pin 8 - not used          |_________________|
+ *                             ║ ║ ║ ║ ║ ║ ║ ║
+ *                     ╔═══════╝ ║ ║ ║ ║ ║ ║ ╚═════════╗
+ *                     ║         ║ ║ ║ ║ ║ ╚══════╗    ║
+ *                     ║   ╔═════╝ ║ ║ ║ ╚═════╗  ║    ║
+ * Connections for     ║   ║   ╔═══╩═║═║═══╗   ║  ║    ║
+ * full-sized          ║   ║   ║   ╔═╝ ║   ║   ║  ║    ║
+ * SD card             ║   ║   ║   ║   ║   ║   ║  ║    ║
+ * Pin name         |  -  DO  VSS SCK VDD VSS DI CS    -  |
+ * SD pin number    |  8   7   6   5   4   3   2   1   9 /
+ *                  |                                  █/
+ *                  |__▍___▊___█___█___█___█___█___█___/
  *
- * SD Card | ESP32
- *    D2       -
- *    D3       SS
- *    CMD      MOSI
- *    VSS      GND
- *    VDD      3.3V
- *    CLK      SCK
- *    VSS      GND
- *    D0       MISO
- *    D1       -
+ * Note:  that SPI pins can be configured by using `SPI.begin(sck, miso, mosi, cs);`
+ *        alternatively you can change only the CS pin with `SD.begin(CSpin)`
+ *
+ * +--------------+---------+-------+----------+----------+----------+
+ * | SPI Pin Name | ESP8266 | ESP32 | ESP32-S2 | ESP32-C3 | ESP32-S3 |
+ * +==============+=========+=======+==========+==========+==========+
+ * | CS (SS)      | GPIO15  | GPIO5 | GPIO5    | GPIO13   | GPIO13   |
+ * +--------------+---------+-------+----------+----------+----------+
+ * | DI (MOSI)    | GPIO13  | GPIO23| GPIO24   | GPIO14   | GPIO14   |
+ * +--------------+---------+-------+----------+----------+----------+
+ * | DO (MISO)    | GPIO12  | GPIO19| GPIO25   | GPIO15   | GPIO15   |
+ * +--------------+---------+-------+----------+----------+----------+
+ * | SCK (SCLK)   | GPIO14  | GPIO18| GPIO19   | GPIO16   | GPIO16   |
+ * +--------------+---------+-------+----------+----------+----------+
+ *
+ * For more info see file README.md in this library or on URL:
+ * https://github.com/espressif/arduino-esp32/tree/master/libraries/SD
  */
 
 #include "FS.h"
@@ -25,6 +50,15 @@ const char* password = "your-password";
 long timezone = 1; 
 byte daysavetime = 1;
 
+/*
+Uncomment and setup pins you want to use for the SPI communication
+#define REASSIGN_PINS
+int sck = -1;
+int miso = -1;
+int mosi = -1;
+int cs = -1;
+*/
+
 void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
     Serial.printf("Listing directory: %s\n", dirname);
 
@@ -172,6 +206,10 @@ void setup(){
 	Serial.printf("\nNow is : %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct.tm_year)+1900,( tmstruct.tm_mon)+1, tmstruct.tm_mday,tmstruct.tm_hour , tmstruct.tm_min, tmstruct.tm_sec);
     Serial.println("");
     
+#ifdef REASSIGN_PINS
+    SPI.begin(sck, miso, mosi, cs);
+#endif
+    //if(!SD.begin(cs)){ //Change to this function to manually change CS pin
     if(!SD.begin()){
         Serial.println("Card Mount Failed");
         return;
diff --git a/libraries/SD_MMC/examples/SDMMC_Test/SDMMC_Test.ino b/libraries/SD_MMC/examples/SDMMC_Test/SDMMC_Test.ino
index 024ea4bfdea..8e3e0f31a55 100644
--- a/libraries/SD_MMC/examples/SDMMC_Test/SDMMC_Test.ino
+++ b/libraries/SD_MMC/examples/SDMMC_Test/SDMMC_Test.ino
@@ -1,21 +1,59 @@
 /*
- * Connect the SD card to the following pins:
+ * pin 1 - D2                |  Micro SD card     |
+ * pin 2 - D3                |                   /
+ * pin 3 - CMD               |                  |__
+ * pin 4 - VDD (3.3V)        |                    |
+ * pin 5 - CLK               | 8 7 6 5 4 3 2 1   /
+ * pin 6 - VSS (GND)         | ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄  /
+ * pin 7 - D0                | ▀ ▀ █ ▀ █ ▀ ▀ ▀ |
+ * pin 8 - D1                |_________________|
+ *                             ║ ║ ║ ║ ║ ║ ║ ║
+ *                     ╔═══════╝ ║ ║ ║ ║ ║ ║ ╚═════════╗
+ *                     ║         ║ ║ ║ ║ ║ ╚══════╗    ║
+ *                     ║   ╔═════╝ ║ ║ ║ ╚═════╗  ║    ║
+ * Connections for     ║   ║   ╔═══╩═║═║═══╗   ║  ║    ║
+ * full-sized          ║   ║   ║   ╔═╝ ║   ║   ║  ║    ║
+ * SD card             ║   ║   ║   ║   ║   ║   ║  ║    ║
+ * ESP32-S3 DevKit  | 21  47  GND  39 3V3 GND  40 41  42  |
+ * ESP32-S3-USB-OTG | 38  37  GND  36 3V3 GND  35 34  33  |
+ * ESP32            |  4   2  GND  14 3V3 GND  15 13  12  |
+ * Pin name         | D1  D0  VSS CLK VDD VSS CMD D3  D2  |
+ * SD pin number    |  8   7   6   5   4   3   2   1   9 /
+ *                  |                                  █/
+ *                  |__▍___▊___█___█___█___█___█___█___/
+ * WARNING: ALL data pins must be pulled up to 3.3V with external 10k Ohm resistor!
+ * Note to ESP32 pin 2 (D0) : add 1K pull up after flashing
  *
- * SD Card | ESP32
- *    D2       12
- *    D3       13
- *    CMD      15
- *    VSS      GND
- *    VDD      3.3V
- *    CLK      14
- *    VSS      GND
- *    D0       2  (add 1K pull up after flashing)
- *    D1       4
+ * For more info see file README.md in this library or on URL:
+ * https://github.com/espressif/arduino-esp32/tree/master/libraries/SD_MMC
  */
 
 #include "FS.h"
 #include "SD_MMC.h"
 
+// Default pins for ESP-S3
+// Warning: ESP32-S3-WROOM-2 is using most of the default GPIOs (33-37) to interface with on-board OPI flash.
+//   If the SD_MMC is initialized with default pins it will result in rebooting loop - please
+//   reassign the pins elsewhere using the mentioned command `setPins`.
+// Note: ESP32-S3-WROOM-1 does not have GPIO 33 and 34 broken out.
+// Note: The board SP32-S3-USB-OTG has predefined default pins and the following definitions with the setPins() call will not be compiled.
+// Note: Pins in this definition block are ordered from top down in order in which they are on the full-sized SD card
+//       from left to right when facing the pins down (when connected to a breadboard)
+
+#if defined(SOC_SDMMC_USE_GPIO_MATRIX) && not defined(BOARD_HAS_SDMMC)
+    int d1  = 21; // SD pin 8 - add 10k Pullup to 3.3V if using 4-bit mode (use_1_bit_mode = false)
+    int d0  = 47; // SD pin 7 - add 10k Pullup
+    //     GND pin - SD pin 6
+    int clk = 39; // SD pin 5 - add 10k Pullup
+    //    3.3V pin - SD pin 4
+    //     GND pin - SD pin 3
+    int cmd = 40; // SD pin 2 - add 10k Pullup
+    int d3  = 41; // SD pin 1 - add 10k Pullup to card's pin even when using 1-bit mode
+    int d2  = 42; // SD pin 9 - add 10k Pullup to 3.3V if using 4-bit mode (use_1_bit_mode = false)
+#endif
+
+bool use_1_bit_mode = false; // Change the value to `true` to use 1-bit mode instead of the 4-bit mode
+
 void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
     Serial.printf("Listing directory: %s\n", dirname);
 
@@ -172,8 +210,34 @@ void testFileIO(fs::FS &fs, const char * path){
 
 void setup(){
     Serial.begin(115200);
-    if(!SD_MMC.begin()){
-        Serial.println("Card Mount Failed");
+    while(!Serial) { delay(10); }
+    Serial.println("SDMMC_Test.ino starting!");
+
+    // If you are using any other ESP32-S3 board than ESP32-S3-USB-OTG which has preset default pins, you will
+    //    need to specify the pins with the following example of SD_MMC.setPins()
+    // If you want to use only 1-bit mode, you can use the line with only one data pin (d0) begin changed.
+    // Please note that ESP32 does not allow pin change and will always fail.
+#if defined(SOC_SDMMC_USE_GPIO_MATRIX) && not defined(BOARD_HAS_SDMMC)
+    //if(! SD_MMC.setPins(clk, cmd, d0)){ // 1-bit line version
+    if(! SD_MMC.setPins(clk, cmd, d0, d1, d2, d3)){ // 4-bit line version
+        Serial.println("Pin change failed!");
+        return;
+    }
+#endif
+
+    if(use_1_bit_mode){
+        Serial.printf("Begin in 1-bit mode; pins: CLK=%d, CMD=%d, D0=%d\n", SD_MMC.getClkPin(), SD_MMC.getCmdPin(), SD_MMC.getD0Pin());
+    }else{
+        Serial.printf("Begin in 4-bit mode; pins: CLK=%d, CMD=%d, D0=%d, D1=%d, D2=%d, D3=%d\n", SD_MMC.getClkPin(), SD_MMC.getCmdPin(), SD_MMC.getD0Pin(), SD_MMC.getD1Pin(), SD_MMC.getD2Pin(), SD_MMC.getD3Pin());
+    }
+
+    if(!SD_MMC.begin("/sdcard", use_1_bit_mode)){
+        Serial.println("Card Mount Failed.");
+        Serial.println("Increase log level to see more info: Tools > Core Debug Level > Verbose");
+        Serial.println("Make sure that all data pins have 10 kOhm pull-up resistor");
+#ifdef SOC_SDMMC_USE_GPIO_MATRIX
+        Serial.println("Make sure that when using generic ESP32-S3 board the pins are setup using SD_MMC.setPins()");
+#endif
         return;
     }
     uint8_t cardType = SD_MMC.cardType();
diff --git a/libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino b/libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino
index 4472f8c6c37..a416a2a723f 100644
--- a/libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino
+++ b/libraries/SD_MMC/examples/SDMMC_time/SDMMC_time.ino
@@ -1,16 +1,31 @@
 /*
- * Connect the SD card to the following pins:
+ * pin 1 - D2                |  Micro SD card     |
+ * pin 2 - D3                |                   /
+ * pin 3 - CMD               |                  |__
+ * pin 4 - VDD (3.3V)        |                    |
+ * pin 5 - CLK               | 8 7 6 5 4 3 2 1   /
+ * pin 6 - VSS (GND)         | ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄  /
+ * pin 7 - D0                | ▀ ▀ █ ▀ █ ▀ ▀ ▀ |
+ * pin 8 - D1                |_________________|
+ *                             ║ ║ ║ ║ ║ ║ ║ ║
+ *                     ╔═══════╝ ║ ║ ║ ║ ║ ║ ╚═════════╗
+ *                     ║         ║ ║ ║ ║ ║ ╚══════╗    ║
+ *                     ║   ╔═════╝ ║ ║ ║ ╚═════╗  ║    ║
+ * Connections for     ║   ║   ╔═══╩═║═║═══╗   ║  ║    ║
+ * full-sized          ║   ║   ║   ╔═╝ ║   ║   ║  ║    ║
+ * SD card             ║   ║   ║   ║   ║   ║   ║  ║    ║
+ * ESP32-S3 DevKit  | 21  47  GND  39 3V3 GND  40 41  42  |
+ * ESP32-S3-USB-OTG | 38  37  GND  36 3V3 GND  35 34  33  |
+ * ESP32            |  4   2  GND  14 3V3 GND  15 13  12  |
+ * Pin name         | D1  D0  VSS CLK VDD VSS CMD D3  D2  |
+ * SD pin number    |  8   7   6   5   4   3   2   1   9 /
+ *                  |                                  █/
+ *                  |__▍___▊___█___█___█___█___█___█___/
+ * WARNING: ALL data pins must be pulled up to 3.3V with external 10k Ohm resistor!
+ * Note to ESP32 pin 2 (D0) : add 1K pull up after flashing
  *
- * SD Card | ESP32
- *    D2       -
- *    D3       SS
- *    CMD      MOSI
- *    VSS      GND
- *    VDD      3.3V
- *    CLK      SCK
- *    VSS      GND
- *    D0       MISO
- *    D1       -
+ * For more info see file README.md in this library or on URL:
+ * https://github.com/espressif/arduino-esp32/tree/master/libraries/SD_MMC
  */
 
 #include "FS.h"
@@ -19,12 +34,35 @@
 #include <time.h> 
 #include <WiFi.h>
 
-const char* ssid     = "your-ssid";
-const char* password = "your-password";
+const char* ssid     = "Viks";
+const char* password = "Mordornumber1";
 
 long timezone = 1; 
 byte daysavetime = 1;
 
+// Default pins for ESP-S3
+// Warning: ESP32-S3-WROOM-2 is using most of the default GPIOs (33-37) to interface with on-board OPI flash.
+//   If the SD_MMC is initialized with default pins it will result in rebooting loop - please
+//   reassign the pins elsewhere using the mentioned command `setPins`.
+// Note: ESP32-S3-WROOM-1 does not have GPIO 33 and 34 broken out.
+// Note: The board SP32-S3-USB-OTG has predefined default pins and the following definitions with the setPins() call will not be compiled.
+// Note: Pins in this definition block are ordered from top down in order in which they are on the full-sized SD card
+//       from left to right when facing the pins down (when connected to a breadboard)
+
+#if defined(SOC_SDMMC_USE_GPIO_MATRIX) && not defined(BOARD_HAS_SDMMC)
+    int d1  = 21; // SD pin 8 - add 10k Pullup to 3.3V if using 4-bit mode (use_1_bit_mode = false)
+    int d0  = 47; // SD pin 7 - add 10k Pullup
+    //     GND pin - SD pin 6
+    int clk = 39; // SD pin 5 - add 10k Pullup
+    //    3.3V pin - SD pin 4
+    //     GND pin - SD pin 3
+    int cmd = 40; // SD pin 2 - add 10k Pullup
+    int d3  = 41; // SD pin 1 - add 10k Pullup to card's pin even when using 1-bit mode
+    int d2  = 42; // SD pin 9 - add 10k Pullup to 3.3V if using 4-bit mode (use_1_bit_mode = false)
+#endif
+
+bool use_1_bit_mode = false; // Change the value to `true` to use 1-bit mode instead of the 4-bit mode
+
 void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
     Serial.printf("Listing directory: %s\n", dirname);
 
@@ -164,16 +202,39 @@ void setup(){
     Serial.println("IP address: ");
     Serial.println(WiFi.localIP());
     Serial.println("Contacting Time Server");
-	configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org");
-	struct tm tmstruct ;
+    configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org");
+    struct tm tmstruct ;
     delay(2000);
     tmstruct.tm_year = 0;
     getLocalTime(&tmstruct, 5000);
-	Serial.printf("\nNow is : %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct.tm_year)+1900,( tmstruct.tm_mon)+1, tmstruct.tm_mday,tmstruct.tm_hour , tmstruct.tm_min, tmstruct.tm_sec);
+    Serial.printf("\nNow is : %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct.tm_year)+1900,( tmstruct.tm_mon)+1, tmstruct.tm_mday,tmstruct.tm_hour , tmstruct.tm_min, tmstruct.tm_sec);
     Serial.println("");
     
-    if(!SD_MMC.begin()){
-        Serial.println("Card Mount Failed");
+    // If you are using any other ESP32-S3 board than ESP32-S3-USB-OTG which has preset default pins, you will
+    //    need to specify the pins with the following example of SD_MMC.setPins()
+    // If you want to use only 1-bit mode, you can use the line with only one data pin (d0) begin changed.
+    // Please note that ESP32 does not allow pin change and will always fail.
+#if defined(SOC_SDMMC_USE_GPIO_MATRIX) && not defined(BOARD_HAS_SDMMC)
+    //if(! SD_MMC.setPins(clk, cmd, d0)){ // 1-bit line version
+    if(! SD_MMC.setPins(clk, cmd, d0, d1, d2, d3)){ // 4-bit line version
+        Serial.println("Pin change failed!");
+        return;
+    }
+#endif
+
+    if(use_1_bit_mode){
+        Serial.printf("Begin in 1-bit mode; pins: CLK=%d, CMD=%d, D0=%d\n", SD_MMC.getClkPin(), SD_MMC.getCmdPin(), SD_MMC.getD0Pin());
+    }else{
+        Serial.printf("Begin in 4-bit mode; pins: CLK=%d, CMD=%d, D0=%d, D1=%d, D2=%d, D3=%d\n", SD_MMC.getClkPin(), SD_MMC.getCmdPin(), SD_MMC.getD0Pin(), SD_MMC.getD1Pin(), SD_MMC.getD2Pin(), SD_MMC.getD3Pin());
+    }
+
+    if(!SD_MMC.begin("/sdcard", use_1_bit_mode)){
+        Serial.println("Card Mount Failed.");
+        Serial.println("Increase log level to see more info: Tools > Core Debug Level > Verbose");
+        Serial.println("Make sure that all data pins have 10 kOhm pull-up resistor");
+#ifdef SOC_SDMMC_USE_GPIO_MATRIX
+        Serial.println("Make sure that when using generic ESP32-S3 board the pins are setup using SD_MMC.setPins()");
+#endif
         return;
     }
     uint8_t cardType = SD_MMC.cardType();
@@ -203,7 +264,7 @@ void setup(){
     deleteFile(SD_MMC, "/hello.txt");
     writeFile(SD_MMC, "/hello.txt", "Hello ");
     appendFile(SD_MMC, "/hello.txt", "World!\n");
-	listDir(SD_MMC, "/", 0);
+    listDir(SD_MMC, "/", 0);
 }
 
 void loop(){
diff --git a/libraries/SD_MMC/src/SD_MMC.cpp b/libraries/SD_MMC/src/SD_MMC.cpp
index 83cf9aa0dd1..e421c55305e 100644
--- a/libraries/SD_MMC/src/SD_MMC.cpp
+++ b/libraries/SD_MMC/src/SD_MMC.cpp
@@ -84,6 +84,60 @@ bool SDMMCFS::setPins(int clk, int cmd, int d0, int d1, int d2, int d3)
 #endif
 }
 
+int SDMMCFS::getClkPin()
+{
+#ifdef SOC_SDMMC_USE_GPIO_MATRIX
+    return _pin_clk;
+#elif CONFIG_IDF_TARGET_ESP32
+    return SDMMC_SLOT1_IOMUX_PIN_NUM_CLK;
+#endif
+}
+
+int SDMMCFS::getCmdPin()
+{
+#ifdef SOC_SDMMC_USE_GPIO_MATRIX
+    return _pin_cmd;
+#elif CONFIG_IDF_TARGET_ESP32
+    return SDMMC_SLOT1_IOMUX_PIN_NUM_CMD;
+#endif
+}
+
+int SDMMCFS::getD0Pin()
+{
+#ifdef SOC_SDMMC_USE_GPIO_MATRIX
+    return _pin_d0;
+#elif CONFIG_IDF_TARGET_ESP32
+    return SDMMC_SLOT1_IOMUX_PIN_NUM_D0;
+#endif
+}
+
+int SDMMCFS::getD1Pin()
+{
+#ifdef SOC_SDMMC_USE_GPIO_MATRIX
+    return _pin_d1;
+#elif CONFIG_IDF_TARGET_ESP32
+    return SDMMC_SLOT1_IOMUX_PIN_NUM_D1;
+#endif
+}
+
+int SDMMCFS::getD2Pin()
+{
+#ifdef SOC_SDMMC_USE_GPIO_MATRIX
+    return _pin_d2;
+#elif CONFIG_IDF_TARGET_ESP32
+    return SDMMC_SLOT1_IOMUX_PIN_NUM_D2;
+#endif
+}
+
+int SDMMCFS::getD3Pin()
+{
+#ifdef SOC_SDMMC_USE_GPIO_MATRIX
+    return _pin_d3;
+#elif CONFIG_IDF_TARGET_ESP32
+    return SDMMC_SLOT1_IOMUX_PIN_NUM_D3;
+#endif
+}
+
 bool SDMMCFS::begin(const char * mountpoint, bool mode1bit, bool format_if_mount_failed, int sdmmc_frequency, uint8_t maxOpenFiles)
 {
     if(_card) {
diff --git a/libraries/SD_MMC/src/SD_MMC.h b/libraries/SD_MMC/src/SD_MMC.h
index ffbc3b8f964..0ee5932fc81 100644
--- a/libraries/SD_MMC/src/SD_MMC.h
+++ b/libraries/SD_MMC/src/SD_MMC.h
@@ -50,6 +50,12 @@ class SDMMCFS : public FS
     SDMMCFS(FSImplPtr impl);
     bool setPins(int clk, int cmd, int d0);
     bool setPins(int clk, int cmd, int d0, int d1, int d2, int d3);
+    int getClkPin();
+    int getCmdPin();
+    int getD0Pin();
+    int getD1Pin();
+    int getD2Pin();
+    int getD3Pin();
     bool begin(const char * mountpoint="/sdcard", bool mode1bit=false, bool format_if_mount_failed=false, int sdmmc_frequency=BOARD_MAX_SDMMC_FREQ, uint8_t maxOpenFiles = 5);
     void end();
     sdcard_type_t cardType();