diff --git a/CI/build/arduino-cli.py b/CI/build/arduino-cli.py
index f6307d5c99..d87ff979a4 100644
--- a/CI/build/arduino-cli.py
+++ b/CI/build/arduino-cli.py
@@ -492,10 +492,11 @@ def check_status(status, build_conf, boardKo):
     elif status[1] == 1:
         # Check if failed due to a region overflowed
         logFile = os.path.join(build_conf[3], sketch_name + ".log")
-        error_pattern = re.compile(":\\d+:\\d+:\\serror:\\s")
+        # error or fatal error
+        error_pattern = re.compile(r":\d+:\d+:\s.*error:\s")
         ld_pattern = re.compile("arm-none-eabi/bin/ld:")
         overflow_pattern = re.compile(
-            "will not fit in region|region .+ overflowed by [\\d]+ bytes"
+            r"will not fit in region|region .+ overflowed by [\d]+ bytes"
         )
         error_found = False
         for i, line in enumerate(open(logFile)):
diff --git a/CI/build/conf/cores_config.json b/CI/build/conf/cores_config.json
index e815c5f5f3..50a345662f 100644
--- a/CI/build/conf/cores_config.json
+++ b/CI/build/conf/cores_config.json
@@ -23,9 +23,56 @@
       ],
       "sketches": [
         {
+          "comment": "By default, ignore all those boards",
+          "pattern": "^.*$",
+          "applicable": false,
+          "boards": [
+            "AFROFLIGHT_F103CB_12M",
+            "BLACKPILL_F103CB",
+            "BLACK_F407VG",
+            "BLACK_F407ZE",
+            "BLACK_F407ZG",
+            "BLUEPILL_F103C6",
+            "BLUEPILL_F103CB",
+            "DEMO_F030F4_16M",
+            "DEMO_F030F4_HSI",
+            "Generic_F103R8T6",
+            "Generic_F103RBT6",
+            "Generic_F103RCT6",
+            "Generic_F103ZC",
+            "Generic_F103ZD",
+            "Generic_F103ZE",
+            "Generic_F103ZF",
+            "Generic_F401CB",
+            "Generic_F401CC",
+            "Generic_F401CD",
+            "Generic_F401RB",
+            "Generic_F401RC",
+            "Generic_F401RD",
+            "Generic_F405RG",
+            "Generic_F407VE",
+            "Generic_F410C8",
+            "Generic_F410R8",
+            "Generic_F411CC",
+            "Generic_F411RE",
+            "Generic_F412CE",
+            "Generic_F412RE",
+            "Generic_F413CG",
+            "Generic_F413RG",
+            "Generic_F417VE",
+            "Generic_F423CH",
+            "Generic_F446RC",
+            "NUCLEO_H743ZI",
+            "NUCLEO_L496ZG",
+            "NUCLEO_L4R5ZI",
+            "RAK811_TRACKERA"
+          ]
+        },
+        {
+          "comment": "Ignore also those boards except for BareMinimum",
           "pattern": "^((?!BareMinimum).)*$",
           "applicable": false,
-          "boards": [ "DEMO_F030F4", "DEMO_F030F4_16M", "DEMO_F030F4_HSI", "RHF76_052" ]
+          "boards": [ "DEMO_F030F4", "RHF76_052" ]
         },
         {
           "pattern": "DISCO_IOT_|M24SR64-Y|MX25R6435F",
@@ -52,13 +99,9 @@
           "applicable": false,
           "boards": [
             "AFROFLIGHT_F103CB",
-            "AFROFLIGHT_F103CB_12M",
             "ARMED_V1",
             "BLUE_F407VE_Mini",
             "BLACKPILL_F103C8",
-            "BLACKPILL_F103CB",
-            "BLUEPILL_F103C6",
-            "BLUEPILL_F103C8",
             "BLUEPILL_F103CB",
             "BLACKPILL_F303CC",
             "BLACKPILL_F401CC",
@@ -67,9 +110,6 @@
             "EEXTR_F030_V1",
             "ELEKTOR_F072C8",
             "FEATHER_F405",
-            "Generic_F103R8T6",
-            "Generic_F103RBT6",
-            "Generic_F103RCT6",
             "Generic_F103RET6",
             "HY_TinySTM103TB",
             "MALYANM200_F070CB",
@@ -85,7 +125,6 @@
             "PRNTR_V2",
             "RUMBA32",
             "RAK811_TRACKER",
-            "RAK811_TRACKERA",
             "REMRAM_V1",
             "Sparky_V1",
             "Wraith32_V1"
@@ -105,14 +144,14 @@
           "pattern": "Firmata/",
           "applicable": false,
           "boards": [
-            "BLUEPILL_F103C6", "EEXTR_F030_V1", "ELEKTOR_F072C8", "MALYANM200_F103CB",
-            "PX_HER0", "STEVAL_MKSBOX1V1", "VAKE_F446VE", "Wraith32_V1"
+            "EEXTR_F030_V1", "ELEKTOR_F072C8", "FYSETC_S6", "MALYANM200_F103CB",
+            "PRNTR_V2", "PX_HER0", "STEVAL_MKSBOX1V1", "VAKE_F446VE", "Wraith32_V1"
           ]
         },
         {
           "pattern": "Blink(WithoutDelay)?",
           "applicable": false,
-          "boards": [ "EEXTR_F030_V1", "MALYANM200_F103CB", "PRNTR_V2" ]
+          "boards": [ "EEXTR_F030_V1", "FYSETC_S6", "MALYANM200_F103CB", "PRNTR_V2" ]
         },
         {
           "pattern": "STM32SD",
@@ -123,7 +162,7 @@
           "pattern": "Ethernet/|STM32FreeRTOS",
           "applicable": false,
           "boards": [
-            "BLUEPILL_F103C6", "EEXTR_F030_V1", "MALYANM200_F103CB", "NUCLEO_F030R8",
+            "EEXTR_F030_V1", "FYSETC_S6", "MALYANM200_F103CB", "NUCLEO_F030R8",
             "NUCLEO_L031K6", "PRNTR_V2" ]
         },
         {
@@ -152,22 +191,15 @@
           "applicable": false,
           "boards": [
             "AFROFLIGHT_F103CB",
-            "AFROFLIGHT_F103CB_12M",
             "ARMED_V1",
             "BLACKPILL_F103C8",
-            "BLACKPILL_F103CB",
-            "BLUEPILL_F103C6",
             "BLUEPILL_F103C8",
-            "BLUEPILL_F103CB",
             "BLACKPILL_F303CC",
             "BLACKPILL_F401CC",
             "BLUE_F407VE_Mini",
             "CoreBoard_F401RC",
             "DIYMORE_F407VGT",
             "EEXTR_F030_V1",
-            "Generic_F103R8T6",
-            "Generic_F103RBT6",
-            "Generic_F103RCT6",
             "Generic_F103RET6",
             "HY_TinySTM103TB",
             "MALYANM200_F070CB",
@@ -198,16 +230,15 @@
           "applicable": false,
           "boards": [
             "ARMED_V1",
-            "BLUEPILL_F103C6", 
             "EEXTR_F030_V1",
             "ELEKTOR_F072C8",
             "FEATHER_F405",
+            "FYSETC_S6",
             "MALYANM200_F103CB",
             "NUCLEO_L031K6",
             "PRNTR_V2",
             "PX_HER0",
             "RAK811_TRACKER",
-            "RAK811_TRACKERA",
             "REMRAM_V1",
             "STEVAL_MKSBOX1V1",
             "THUNDERPACK_F411",
@@ -223,7 +254,6 @@
             "EEXTR_F030_V1",
             "PX_HER0",
             "RAK811_TRACKER",
-            "RAK811_TRACKERA",
             "REMRAM_V1",
             "STEVAL_MKSBOX1V1",
             "THUNDERPACK_F411",
@@ -237,19 +267,18 @@
             "ARMED_V1",
             "EEXTR_F030_V1",
             "RAK811_TRACKER",
-            "RAK811_TRACKERA",
             "STEVAL_MKSBOX1V1"
           ]
         },
         {
           "pattern": "SerialLoop|Tests_basic_functions",
           "applicable": false,
-          "boards": [ "BLUEPILL_F103C6", "NUCLEO_L031K6", "Wraith32_V1" ]
+          "boards": [ "NUCLEO_L031K6", "Wraith32_V1" ]
         },
         {
           "pattern": "(Alarm)?TimedWak(e)?up|SerialDeepSleep",
           "applicable": false,
-          "boards": [ "EEXTR_F030_V1", "MALYANM200_F103CB", "PRNTR_V2", "STEVAL_MKSBOX1V1" ]
+          "boards": [ "EEXTR_F030_V1", "FYSETC_S6", "MALYANM200_F103CB", "PRNTR_V2", "STEVAL_MKSBOX1V1" ]
         },
         {
           "pattern": "ArduinoISP",
@@ -278,8 +307,7 @@
           "pattern": "PWM_FullConfiguration",
           "applicable": false,
           "boards": [
-            "GENERIC_F401RB", "GENERIC_F401RC", "GENERIC_F401RD", "GENERIC_F401RE",
-            "HY_TinySTM103TB", "THUNDERPACK_F411", "THUNDERPACK_L072"
+            "GENERIC_F401RE", "HY_TinySTM103TB", "THUNDERPACK_F411", "THUNDERPACK_L072"
           ]
         },
         {
diff --git a/CI/build/conf/cores_config_ci.json b/CI/build/conf/cores_config_ci.json
index 1aec0925d7..2de82e2220 100644
--- a/CI/build/conf/cores_config_ci.json
+++ b/CI/build/conf/cores_config_ci.json
@@ -34,6 +34,7 @@
             "BLUEPILL_F103C6",
             "BLUEPILL_F103CB",
             "DEMO_F030F4_16M",
+            "DEMO_F030F4_HSI",
             "Generic_F103R8T6",
             "Generic_F103RBT6",
             "Generic_F103RCT6",
@@ -47,6 +48,7 @@
             "Generic_F401RB",
             "Generic_F401RC",
             "Generic_F401RD",
+            "Generic_F405RG",
             "Generic_F407VE",
             "Generic_F410C8",
             "Generic_F410R8",
diff --git a/README.md b/README.md
index 36e188e990..efdde6db41 100644
--- a/README.md
+++ b/README.md
@@ -116,7 +116,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
 | :---: | --- | :---: | :--- |
 | :green_heart: | [BluePill F103C(6-8-B)](https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill) | *1.2.0* | USB CDC support since *1.5.0*, Maple bootloaders support since *1.6.0* |
 | :green_heart: | [BlackPill F103C(8-B)](https://stm32-base.org/boards/STM32F103C8T6-Black-Pill) | *1.5.0* |  |
-| :green_heart: | [Generic F103R(8-B-C-E)T6](https://stm32-base.org/boards/STM32F103RET6-Generic-Board) | *1.7.0* | Blue Button |
+| :green_heart: | [Generic F103R(8-B-C-E)T6](https://stm32-base.org/boards/STM32F103RET6-Generic-Board) | *1.7.0* |  |
 | :yellow_heart: | Generic F103Z(C-D-E-F-G) | **1.9.0** |  |
 | :green_heart: | HY-TinySTM103T | *1.5.0* |  |
 | :green_heart: | MapleMini F103CB | *1.2.0* | USB CDC support since *1.5.0*, Maple bootloaders support since *1.6.0* |
diff --git a/boards.txt b/boards.txt
index 0e7420c392..13f3fae4c4 100644
--- a/boards.txt
+++ b/boards.txt
@@ -873,29 +873,29 @@ GenF1.menu.pnum.BLACKPILL_F103CB.build.board=BLACKPILL_F103CB
 GenF1.menu.pnum.BLACKPILL_F103CB.build.product_line=STM32F103xB
 GenF1.menu.pnum.BLACKPILL_F103CB.build.variant=PILL_F103XX
 
-# Generic STM32F103Rx boards (Blue button)
-GenF1.menu.pnum.Generic_F103R8T6=Generic F103R8T6 (Blue Button)
+# Generic STM32F103Rx boards
+GenF1.menu.pnum.Generic_F103R8T6=Generic F103R8T6
 GenF1.menu.pnum.Generic_F103R8T6.upload.maximum_size=65536
 GenF1.menu.pnum.Generic_F103R8T6.upload.maximum_data_size=20480
 GenF1.menu.pnum.Generic_F103R8T6.build.board=GENERIC_F103R8T6
 GenF1.menu.pnum.Generic_F103R8T6.build.product_line=STM32F103xB
 GenF1.menu.pnum.Generic_F103R8T6.build.variant=Generic_F103Rx
 
-GenF1.menu.pnum.Generic_F103RBT6=Generic F103RBT6 (Blue Button)
+GenF1.menu.pnum.Generic_F103RBT6=Generic F103RBT6
 GenF1.menu.pnum.Generic_F103RBT6.upload.maximum_size=131072
 GenF1.menu.pnum.Generic_F103RBT6.upload.maximum_data_size=20480
 GenF1.menu.pnum.Generic_F103RBT6.build.board=GENERIC_F103RBT6
 GenF1.menu.pnum.Generic_F103RBT6.build.product_line=STM32F103xB
 GenF1.menu.pnum.Generic_F103RBT6.build.variant=Generic_F103Rx
 
-GenF1.menu.pnum.Generic_F103RCT6=Generic F103RCT6 (Blue Button)
+GenF1.menu.pnum.Generic_F103RCT6=Generic F103RCT6
 GenF1.menu.pnum.Generic_F103RCT6.upload.maximum_size=262144
 GenF1.menu.pnum.Generic_F103RCT6.upload.maximum_data_size=49152
 GenF1.menu.pnum.Generic_F103RCT6.build.board=GENERIC_F103RCT6
 GenF1.menu.pnum.Generic_F103RCT6.build.product_line=STM32F103xE
 GenF1.menu.pnum.Generic_F103RCT6.build.variant=Generic_F103Rx
 
-GenF1.menu.pnum.Generic_F103RET6=Generic F103RET6 (Blue Button)
+GenF1.menu.pnum.Generic_F103RET6=Generic F103RET6
 GenF1.menu.pnum.Generic_F103RET6.upload.maximum_size=524288
 GenF1.menu.pnum.Generic_F103RET6.upload.maximum_data_size=65536
 GenF1.menu.pnum.Generic_F103RET6.build.board=GENERIC_F103RET6
diff --git a/variants/BLACK_F407XX/variant.h b/variants/BLACK_F407XX/variant.h
index fb3c7d4144..341421c87b 100644
--- a/variants/BLACK_F407XX/variant.h
+++ b/variants/BLACK_F407XX/variant.h
@@ -290,15 +290,9 @@ extern "C" {
 
 // UART Definitions
 // Define here Serial instance number to map on Serial generic name
-#define SERIAL_UART_INSTANCE    1 //ex: 2 for Serial2 (USART2)
-// DEBUG_UART could be redefined to print on another instance than 'Serial'
-//#define DEBUG_UART              ((USART_TypeDef *) U(S)ARTX) // ex: USART3
-// DEBUG_UART baudrate, default: 9600 if not defined
-//#define DEBUG_UART_BAUDRATE     x
-// DEBUG_UART Tx pin name, default: the first one found in PinMap_UART_TX for DEBUG_UART
-//#define DEBUG_PINNAME_TX        PX_n // PinName used for TX
+#define SERIAL_UART_INSTANCE    1
 
-// Default pin used for 'Serial' instance (ex: ST-Link)
+// Default pin used for 'Serial' instance
 // Mandatory for Firmata
 #define PIN_SERIAL_RX           PA10
 #define PIN_SERIAL_TX           PA9
diff --git a/variants/Generic_F103Rx/variant.cpp b/variants/Generic_F103Rx/variant.cpp
index 917c5ca9da..4d815a34d7 100644
--- a/variants/Generic_F103Rx/variant.cpp
+++ b/variants/Generic_F103Rx/variant.cpp
@@ -23,6 +23,14 @@ extern "C" {
 #endif
 
 const PinName digitalPin[] = {
+  PA_0,
+  PA_1,
+  PA_2,
+  PA_3,
+  PA_4,
+  PA_5,
+  PA_6,
+  PA_7,
   PA_8,
   PA_9,  // RXD
   PA_10, // TXD
@@ -31,6 +39,8 @@ const PinName digitalPin[] = {
   PA_13, // JTDI
   PA_14, // JTCK
   PA_15,
+  PB_0,
+  PB_1,
   PB_2,
   PB_3,  // JTDO
   PB_4,  // JTRST
@@ -45,6 +55,12 @@ const PinName digitalPin[] = {
   PB_13,
   PB_14,
   PB_15,
+  PC_0,
+  PC_1,
+  PC_2,
+  PC_3,
+  PC_4,
+  PC_5,
   PC_6,
   PC_7,
   PC_8,
@@ -53,28 +69,31 @@ const PinName digitalPin[] = {
   PC_11,
   PC_12,
   PC_13,
-  NC,     // PC_14 OSC32_1
-  NC,     // PC_15 OSC32_2
-  NC,     // PD_0 OSCIN
-  NC,     // PD_1 OSCOUT
-  PD_2,
+  PC_14,  // OSC32_1
+  PC_15,  // OSC32_2
+  PD_0,   // OSCIN
+  PD_1,   // OSCOUT
+  PD_2
+};
 
-  PA_0,
-  PA_1,
-  PA_2,
-  PA_3,
-  PA_4,
-  PA_5,
-  PA_6,
-  PA_7,
-  PB_0,
-  PB_1,
-  PC_0,
-  PC_1,
-  PC_2,
-  PC_3,
-  PC_4,
-  PC_5
+// Analog (Ax) pin number array
+const uint32_t analogInputPin[] = {
+  0,  // A0,  PA0
+  1,  // A1,  PA1
+  2,  // A2,  PA2
+  3,  // A3,  PA3
+  4,  // A4,  PA4
+  5,  // A5,  PA5
+  6,  // A6,  PA6
+  7,  // A7,  PA7
+  16, // A8,  PB0
+  17, // A9,  PB1
+  32, // A10, PC0
+  33, // A11, PC1
+  34, // A12, PC2
+  35, // A13, PC3
+  36, // A14, PC4
+  37  // A15, PC5
 };
 
 #ifdef __cplusplus
diff --git a/variants/Generic_F103Rx/variant.h b/variants/Generic_F103Rx/variant.h
index 31c51a60f4..ac048e3b18 100644
--- a/variants/Generic_F103Rx/variant.h
+++ b/variants/Generic_F103Rx/variant.h
@@ -27,69 +27,77 @@ extern "C" {
  *        Pins
  *----------------------------------------------------------------------------*/
 
-#define PA8  0
-#define PA9  1
-#define PA10 2
-#define PA11 3
-#define PA12 4
-#define PA13 5
-#define PA14 6
-#define PA15 7
-#define PB2  8
-#define PB3  9
-#define PB4  10
-#define PB5  11
-#define PB6  12
-#define PB7  13
-#define PB8  14
-#define PB9  15
-#define PB10 16
-#define PB11 17
-#define PB12 18
-#define PB13 19
-#define PB14 20
-#define PB15 21
-#define PC6  22
-#define PC7  23
-#define PC8  24
-#define PC9  25
-#define PC10 26
-#define PC11 27
-#define PC12 28
-#define PC13 29
-#define PC14 30
-#define PC15 31
-#define PD0  32
-#define PD1  33
-#define PD2  34
-
-#define PA0  35
-#define PA1  36
-#define PA2  37
-#define PA3  38
-#define PA4  39
-#define PA5  40
-#define PA6  41
-#define PA7  42
-#define PB0  43
-#define PB1  44
-#define PC0  45
-#define PC1  46
-#define PC2  47
-#define PC3  48
-#define PC4  49
-#define PC5  50
+#define PA0  A0
+#define PA1  A1
+#define PA2  A2
+#define PA3  A3
+#define PA4  A4
+#define PA5  A5
+#define PA6  A6
+#define PA7  A7
+#define PA8  8
+#define PA9  9
+#define PA10 10
+#define PA11 11
+#define PA12 12
+#define PA13 13
+#define PA14 14
+#define PA15 15
+
+#define PB0  A8
+#define PB1  A9
+#define PB2  18
+#define PB3  19
+#define PB4  20
+#define PB5  21
+#define PB6  22
+#define PB7  23
+#define PB8  24
+#define PB9  25
+#define PB10 26
+#define PB11 27
+#define PB12 28
+#define PB13 29
+#define PB14 30
+#define PB15 31
+
+#define PC0  A10
+#define PC1  A11
+#define PC2  A12
+#define PC3  A13
+#define PC4  A14
+#define PC5  A15
+#define PC6  38
+#define PC7  39
+#define PC8  40
+#define PC9  41
+#define PC10 42
+#define PC11 43
+#define PC12 44
+#define PC13 45
+#define PC14 46
+#define PC15 47
+
+#define PD0  48
+#define PD1  49
+#define PD2  50
 
 // This must be a literal
 #define NUM_DIGITAL_PINS        51
 // This must be a literal with a value less than or equal to to MAX_ANALOG_INPUTS
 #define NUM_ANALOG_INPUTS       16
-#define NUM_ANALOG_FIRST        35
 
 // On-board LED pin number
-#define LED_BUILTIN             PB11
+#ifndef LED_BUILTIN
+#define LED_BUILTIN             PB11 // On some generic board with a blue button
+#endif
 #define LED_GREEN               LED_BUILTIN
 
+// On-board user button
+#ifndef USER_BTN
+#define USER_BTN                PC13
+#endif
+
 // Override default Arduino configuration
 // SPI Definitions
 #define PIN_SPI_SS              PA4
diff --git a/variants/Generic_F103Zx/variant.h b/variants/Generic_F103Zx/variant.h
index f3f908ab76..3e466d7696 100644
--- a/variants/Generic_F103Zx/variant.h
+++ b/variants/Generic_F103Zx/variant.h
@@ -149,6 +149,13 @@ extern "C" {
 #define LED_BUILTIN             PG15
 #elif defined(ARDUINO_VCCGND_F103ZET6)
 #define LED_BUILTIN             PC13
+#elif !defined(LED_BUILTIN)
+#define LED_BUILTIN             PC13
+#endif
+
+// On-board user button
+#ifndef USER_BTN
+#define USER_BTN                PB1
 #endif
 
 // SPI Definitions
diff --git a/variants/Generic_F411Cx/variant.h b/variants/Generic_F411Cx/variant.h
index fbe68e38d6..c4488de4b3 100644
--- a/variants/Generic_F411Cx/variant.h
+++ b/variants/Generic_F411Cx/variant.h
@@ -74,8 +74,7 @@ extern "C" {
 // On-board LED pin number
 #ifdef ARDUINO_BLACKPILL_F411CE
 #define LED_BUILTIN             PC13
-#endif
-#ifndef LED_BUILTIN
+#elif !defined(LED_BUILTIN)
 #define LED_BUILTIN             PA5
 #endif
 #define LED_GREEN               LED_BUILTIN
@@ -83,8 +82,7 @@ extern "C" {
 // On-board user button
 #ifdef ARDUINO_BLACKPILL_F411CE
 #define USER_BTN                PA0
-#endif
-#if !defined(USER_BTN)
+#elif !defined(USER_BTN)
 #define USER_BTN                PC13
 #endif
 
diff --git a/variants/Generic_F4x5RG/variant.h b/variants/Generic_F4x5RG/variant.h
index 834623d789..06256625d6 100644
--- a/variants/Generic_F4x5RG/variant.h
+++ b/variants/Generic_F4x5RG/variant.h
@@ -106,6 +106,10 @@ extern "C" {
 #define TIMER_TONE              TIM6
 #define TIMER_SERVO             TIM7
 
+// UART Definitions
+// Define here Serial instance number to map on Serial generic name
+#define SERIAL_UART_INSTANCE    2
+
 // Default pin used for 'Serial' instance
 // Mandatory for Firmata
 #define PIN_SERIAL_RX           PA3