diff --git a/changelog.md b/changelog.md
index f3507cc..cbc3c84 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,21 @@
## grblHAL changelog
+20251012
+
+Core:
+
+* Added preprocessor code and symbols to allow easy assignment of unused/unclaimed limit inputs as auxiliary inputs.
+
+Drivers:
+
+* ESP32: updated board map for PiBot to assign unsed limit inputs as auxiliary inputs.
+
+Plugins:
+
+* WebUI: fix for badly formatted ESP400 response from v2 implementation. Added event hook to allow plugin code to trap regular commands originating from HTTP requests.
+
+---
+
Build 20251011
Core:
@@ -12,14 +28,14 @@ Drivers:
* ESP32: fix for some unreported compilation failures, triggered by certain configuration options - due to unique build system.
-* iMXRT1062: addd tentative support for SPI based Trinamic drivers. Ref. issue [#101](https://github.com/grblHAL/iMXRT1062/issues/101).
+* iMXRT1062: added tentative support for SPI based Trinamic drivers. Ref. issue [#101](https://github.com/grblHAL/iMXRT1062/issues/101).
A known issue is that PWM spindle cannot be enabled whith Trinamic drivers. Testing required.
* STM32F4xx: updated board specific code to use new core helper code.
Plugins:
-*all having configurable auxiliary ports: updated to use new core helper code.
+* All having configurable auxiliary ports: updated to use new core helper code.
* SD card: fixed/improved error code returned on formatting errors.
diff --git a/driver_opts.h b/driver_opts.h
index 3718796..9f49d26 100644
--- a/driver_opts.h
+++ b/driver_opts.h
@@ -86,6 +86,38 @@
#define N_GANGED (X_GANGED + Y_GANGED + Z_GANGED)
#define N_AUTO_SQUARED (X_AUTO_SQUARE + Y_AUTO_SQUARE + Z_AUTO_SQUARE)
#define N_ABC_MOTORS (N_ABC_AXIS + N_GANGED)
+#define GANGED_MAP (((Z_GANGED<<2)|(Y_GANGED<<1)|X_GANGED)< 3 || (AUTO_SQUARED_MAP & 8)
+#define M3_LIMIT_ENABLE 1
+#else
+#define M3_LIMIT_ENABLE 0
+#endif
+
+#if N_AXIS > 4 || (AUTO_SQUARED_MAP & 16)
+#define M4_LIMIT_ENABLE 1
+#else
+#define M4_LIMIT_ENABLE 0
+#endif
+
+#if N_AXIS > 5 || (AUTO_SQUARED_MAP & 32)
+#define M5_LIMIT_ENABLE 1
+#else
+#define M5_LIMIT_ENABLE 0
+#endif
+
+#if N_AXIS > 6 || (AUTO_SQUARED_MAP & 64)
+#define M6_LIMIT_ENABLE 1
+#else
+#define M6_LIMIT_ENABLE 0
+#endif
+
+#if N_AXIS > 7 || (AUTO_SQUARED_MAP & 128)
+#define M7_LIMIT_ENABLE 1
+#else
+#define M7_LIMIT_ENABLE 0
+#endif
#ifndef NEOPIXELS_ENABLE
#define NEOPIXELS_ENABLE 0
@@ -694,8 +726,12 @@
#define FS_ENABLE 0
#endif
+#ifndef SDCARD_SDIO
+#define SDCARD_SDIO 0
+#endif
+
#ifndef SPI_ENABLE
-#if SDCARD_ENABLE || TRINAMIC_SPI_ENABLE
+#if (SDCARD_ENABLE && !SDCARD_SDIO) || TRINAMIC_SPI_ENABLE
#define SPI_ENABLE 1
#else
#define SPI_ENABLE 0
diff --git a/gcode.c b/gcode.c
index 341f571..7aa4f71 100644
--- a/gcode.c
+++ b/gcode.c
@@ -1154,7 +1154,7 @@ status_code_t gc_execute_block (char *block)
FAIL(Status_GcodeUnsupportedCommand); // [probing not supported by driver or unsupported G38.x command]
int_value += (mantissa / 10) + 100;
mantissa = 0; // Set to zero to indicate valid non-integer G command.
- // No break. Continues to next line.
+ // No break. Continues to next line.
case 0: case 1: case 2: case 3:
#if GCODE_ADVANCED
@@ -3705,6 +3705,10 @@ status_code_t gc_execute_block (char *block)
case NonModal_GoHome_0:
#if N_AXIS > 3
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
+#endif
{
axes_signals_t wrap = { (axis_words.mask & settings.steppers.is_rotary.mask) & settings.steppers.rotary_wrap.mask };
if(gc_state.modal.distance_incremental && wrap.mask) {
@@ -3714,8 +3718,11 @@ status_code_t gc_execute_block (char *block)
}
}
}
- // No break. Continues to next line.
+ // No break. Continues to next line.
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
#endif
+#endif // N_AXIS > 3
case NonModal_GoHome_1:
// Move to intermediate position before going home. Obeys current coordinate system and offsets
@@ -3800,7 +3807,7 @@ status_code_t gc_execute_block (char *block)
case NonModal_ResetCoordinateOffset: // G92.1
if(!settings.flags.g92_is_volatile)
settings_write_coord_data(CoordinateSystem_G92, &null_vector.values); // Save G92 offsets to non-volatile storage
- // No break. Continues to next line.
+ // No break. Continues to next line.
case NonModal_ClearCoordinateOffset: // G92.2
add_offset(&null_vector);