diff --git a/HardwarePlatform_Waveshare3.5B.md b/HardwarePlatform_Waveshare3.5B.md
index 6fc56319..9555759d 100644
--- a/HardwarePlatform_Waveshare3.5B.md
+++ b/HardwarePlatform_Waveshare3.5B.md
@@ -16,6 +16,10 @@ https://www.waveshare.com/product/esp32-s3-touch-lcd-3.5b.htm?sku=31334
+**Important note:** Waveshare have two very similar boards:
+- ESP32-S3-3.5: This board is **NOT COMPATIBLE**
+- ESP32-S3-3.5**B**: This is the supported version
+
This module provides the microcontroller, power input suitable for 5v DC pedal board use, and LCD screen with capacitive touch.
## Connections
diff --git a/MidiCommands.md b/MidiCommands.md
index 1055d45c..9efb11f5 100644
--- a/MidiCommands.md
+++ b/MidiCommands.md
@@ -118,4 +118,5 @@ This project uses a low-cost embedded controller (Espressif ESP32-S3) to form a
| Global Tuning Reference | 119 | 0-127 |
| Load Preset to Slot A | 120 | 0-19 |
| Load Preset to Slot B | 121 | 0-19 |
+| Global Volume | 122 | 0-127 |
| Select Preset | 127 | 0-19 |
diff --git a/README.md b/README.md
index 40bd8fdf..67064d24 100644
--- a/README.md
+++ b/README.md
@@ -142,6 +142,12 @@ For more information about the firmware development and customisation, refer to
- https://github.com/vit3k/tonex_controller for great work on reverse engineering the Tonex One USB protocol
## Firmware Release Notes
+V2.0.1.2
+- Minor bug fix release. No features
+- Fixed issues with wired Midi on Waveshare 4.3B
+- Fixed issue with Internal/External footwitch FX config, where the "Set Preset" option didn't toggle between the two selected presets. Only preset 1 was set active.
+
+
V2.0.0.2
- Caution: due to structural changes, amp/pedal skins and user preset text is not maintained and will need to be entered again. And if rolling back to an older version, all config will be lost
- Upgraded to ESP-IDF 5.5.1
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_DevKitC_N16R8.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_DevKitC_N16R8.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_DevKitC_N16R8.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_DevKitC_N16R8.zip
index 8d23817b..7bc59b64 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_DevKitC_N16R8.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_DevKitC_N16R8.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_Zero.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_DevKitC_N8R2.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_Zero.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_DevKitC_N8R2.zip
index 8451d4b1..d4cd6a37 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_Zero.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_DevKitC_N8R2.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_JC3248W_Display_Amp_Skins.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_JC3248W_Display_Amp_Skins.zip
similarity index 92%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_JC3248W_Display_Amp_Skins.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_JC3248W_Display_Amp_Skins.zip
index 199ee134..5bdc3eef 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_JC3248W_Display_Amp_Skins.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_JC3248W_Display_Amp_Skins.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_JC3248W_Display_Pedal_Skins.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_JC3248W_Display_Pedal_Skins.zip
similarity index 94%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_JC3248W_Display_Pedal_Skins.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_JC3248W_Display_Pedal_Skins.zip
index 5558952e..e5b7e163 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_JC3248W_Display_Pedal_Skins.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_JC3248W_Display_Pedal_Skins.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Lilygo_TDisplay_S3.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Lilygo_TDisplay_S3.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Lilygo_TDisplay_S3.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Lilygo_TDisplay_S3.zip
index 6df37fe3..f479af75 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Lilygo_TDisplay_S3.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Lilygo_TDisplay_S3.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_M5AtomS3R.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_M5AtomS3R.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_M5AtomS3R.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_M5AtomS3R.zip
index 5bc3e8a7..10d7bfc9 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_M5AtomS3R.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_M5AtomS3R.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarMax_Amp_Skins.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarMax_Amp_Skins.zip
similarity index 92%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarMax_Amp_Skins.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarMax_Amp_Skins.zip
index d5b4cabf..2a382353 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarMax_Amp_Skins.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarMax_Amp_Skins.zip differ
diff --git a/Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarMini.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarMini.zip
new file mode 100644
index 00000000..de3d9680
Binary files /dev/null and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarMini.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_DevKitC_N8R2.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarPico.zip
similarity index 96%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_DevKitC_N8R2.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarPico.zip
index 15179e41..1ff258af 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_DevKitC_N8R2.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarPico.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarPlus.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarPlus.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarPlus.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarPlus.zip
index 0b707324..ab70de0a 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarPlus.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_PirateMidi_PolarPlus.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69.zip
index 05faa57e..0bac39a5 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69_Touch.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69_Touch.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69_Touch.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69_Touch.zip
index c00c5419..8e34b732 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69_Touch.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69_Touch.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69_Touch_land.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69_Touch_land.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69_Touch_land.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69_Touch_land.zip
index 1fe9a693..b2909ecf 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69_Touch_land.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69_Touch_land.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69land.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69land.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69land.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69land.zip
index e308f657..23cbb84f 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_69land.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_69land.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_9.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_9.zip
similarity index 95%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_9.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_9.zip
index 9baad445..e3be7934 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_1_9.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_1_9.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_3_5B_Display_Amp_Skins.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_3_5B_Display_Amp_Skins.zip
similarity index 92%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_3_5B_Display_Amp_Skins.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_3_5B_Display_Amp_Skins.zip
index 1d485f9e..11fd7ab0 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_3_5B_Display_Amp_Skins.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_3_5B_Display_Amp_Skins.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_3_5B_Display_Pedal_Skins.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_3_5B_Display_Pedal_Skins.zip
similarity index 94%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_3_5B_Display_Pedal_Skins.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_3_5B_Display_Pedal_Skins.zip
index fda298cd..7243efee 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_3_5B_Display_Pedal_Skins.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_3_5B_Display_Pedal_Skins.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_4_3B_Display_Amp_Skins.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_4_3B_Display_Amp_Skins.zip
similarity index 92%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_4_3B_Display_Amp_Skins.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_4_3B_Display_Amp_Skins.zip
index 6f7de8e9..2cfa09c1 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_4_3B_Display_Amp_Skins.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_4_3B_Display_Amp_Skins.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_4_3B_Display_Pedal_Skins.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_4_3B_Display_Pedal_Skins.zip
similarity index 94%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_4_3B_Display_Pedal_Skins.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_4_3B_Display_Pedal_Skins.zip
index a52b86cb..6c4856a6 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_Waveshare_4_3B_Display_Pedal_Skins.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_4_3B_Display_Pedal_Skins.zip differ
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarPico.zip b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_Zero.zip
similarity index 96%
rename from build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarPico.zip
rename to Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_Zero.zip
index 91eee9a5..719a37c4 100644
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarPico.zip and b/Releases/V2.0.1.2/TonexController_V2.0.1.2_Waveshare_Zero.zip differ
diff --git a/Releases/V2.0.1.2/readme.md b/Releases/V2.0.1.2/readme.md
new file mode 100644
index 00000000..cff4f1e7
--- /dev/null
+++ b/Releases/V2.0.1.2/readme.md
@@ -0,0 +1,66 @@
+
+V2.0.1.2 released 20 October 2025.
+
+CAUTION: due to differences in the configuration storage, it is recommended to perform an Erase before updating from older V1.x versions. This can be done with the programming software or web page method.
+
Erase the memory, then program the release as normal.
+
+Files for each platform:
+- Espressif DevKit-C with 2 MB PSRAM (Quad SPI):
+TonexController_V2.0.1.2_DevKitC_N8R2.zip
+
+- Espressif DevKit-C with 8 MB PSRAM (Octal SPI):
+TonexController_V2.0.1.2_DevKitC_N16R8.zip
+
+- JC3248W 3.5" Amp Skins
+TonexController_V2.0.1.2_JC3248W_Display_Amp_Skins.zip
+
+- JC3248W 3.5" Pedal Skins
+TonexController_V2.0.1.2_JC3248W_Display_Pedal_Skins.zip
+
+- M5Stack Atom S3R:
+TonexController_V2.0.1.2_M5AtomS3R.zip
+
+- Pirate Midi Polar Max:
+TonexController_V2.0.1.2_PirateMidi_PolarMax_Amp_Skins.zip
+
+- Pirate Midi Polar Mini:
+TonexController_V2.0.1.2_PirateMidi_PolarMini.zip
+
+- Pirate Midi Polar Pico:
+TonexController_V2.0.1.2_PirateMidi_PolarPico.zip
+
+- Pirate Midi Polar Plus:
+TonexController_V2.0.1.2_PirateMidi_PolarPlus.zip
+
+- Waveshare 1.9" LCD board:
+TonexController_V2.0.1.2_Waveshare_1_9.zip
+
+- Waveshare 1.69" LCD board (no Touch):
+TonexController_V2.0.1.2_Waveshare_1_69.zip
+
+- Waveshare 1.69" Touch LCD board:
+TonexController_V2.0.1.2_Waveshare_1_69_Touch.zip
+
+- Waveshare 1.69" Touch LCD board Landscape mode:
+TonexController_V2.0.1.2_Waveshare_1_69_Touch_land.zip
+
+- Waveshare 1.69" LCD board (no Touch) Landscape mode:
+TonexController_V2.0.1.2_Waveshare_1_69land.zip
+
+- Waveshare 3.5B board, Amplifier skin images:
+TonexController_V2.0.1.2_Waveshare_3_5B_Display_Amp_Skins.zip
+
+- Waveshare 3.5B board, Pedal skin images:
+TonexController_V2.0.1.2_Waveshare_3_5B_Display_Pedal_Skins.zip
+
+- Waveshare 4.3B board, Amplifier skin images:
+TonexController_V2.0.1.2_Waveshare_4_3B_Display_Amp_Skins.zip
+
+- Waveshare 4.3B board, Pedal skin images:
+TonexController_V2.0.1.2_Waveshare_4_3B_Display_Pedal_Skins.zip
+
+- Waveshare Zero board:
+TonexController_V2.0.1.2_Waveshare_Zero.zip
+
+
+
diff --git a/build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarMini.zip b/build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarMini.zip
deleted file mode 100644
index 5be49e1c..00000000
Binary files a/build_distrib/TonexOneController_V2.0.0.2_beta_5_PirateMidi_PolarMini.zip and /dev/null differ
diff --git a/build_distrib/build_distrib.py b/build_distrib/build_distrib.py
index 24612d4f..dc8ac096 100644
--- a/build_distrib/build_distrib.py
+++ b/build_distrib/build_distrib.py
@@ -9,7 +9,7 @@
dirname = Path.cwd()
# set version
-version = '2.0.0.2'
+version = '2.0.1.2'
def delete_files_in_folder(directory):
for filename in os.listdir(directory):
diff --git a/source/main/control.c b/source/main/control.c
index efb3d5ee..f4e1e465 100644
--- a/source/main/control.c
+++ b/source/main/control.c
@@ -1206,6 +1206,18 @@ void control_trigger_tap_tempo(void)
}
}
+/****************************************************************************
+* NAME:
+* DESCRIPTION:
+* PARAMETERS:
+* RETURN:
+* NOTES:
+*****************************************************************************/
+uint32_t control_get_current_preset_index(void)
+{
+ return ControlData.ConfigData.PresetOrderMappingConfig.PresetOrder[ControlData.PresetIndex];
+}
+
/****************************************************************************
* NAME:
* DESCRIPTION:
diff --git a/source/main/control.h b/source/main/control.h
index 163e0d18..250c9622 100644
--- a/source/main/control.h
+++ b/source/main/control.h
@@ -285,6 +285,7 @@ void control_set_preset_order(uint8_t* order);
uint8_t* control_get_preset_order(void);
void control_set_sync_complete(void);
uint8_t control_get_sync_complete(void);
+uint32_t control_get_current_preset_index(void);
// config API
void control_set_default_config(void);
diff --git a/source/main/index.html b/source/main/index.html
index cae0c35f..6fc16b20 100644
--- a/source/main/index.html
+++ b/source/main/index.html
@@ -3120,7 +3120,7 @@