diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index fd49aada6b..a43e57d158 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -755,13 +755,13 @@
   // to select a USER library for MAX6675, MAX31855, MAX31865
   //
   #if BOTH(HAS_MAX6675, LIB_MAX6675)
-    #define LIB_USR_MAX6675 1
+    #define USE_LIB_MAX6675 1
   #endif
   #if BOTH(HAS_MAX31855, LIB_MAX31855)
-    #define LIB_USR_MAX31855 1
+    #define USE_ADAFRUIT_MAX31855 1
   #endif
   #if BOTH(HAS_MAX31865, LIB_MAX31865)
-    #define LIB_USR_MAX31865 1
+    #define USE_ADAFRUIT_MAX31865 1
   #elif HAS_MAX31865
     #define LIB_INTERNAL_MAX31865 1
   #endif
diff --git a/Marlin/src/libs/MAX31865.cpp b/Marlin/src/libs/MAX31865.cpp
index 86c31edee9..1264c6fbe8 100644
--- a/Marlin/src/libs/MAX31865.cpp
+++ b/Marlin/src/libs/MAX31865.cpp
@@ -44,12 +44,11 @@
 //#define MAX31865_DEBUG
 //#define MAX31865_DEBUG_SPI
 
-#include <SoftwareSPI.h>
-
 #include "../inc/MarlinConfig.h"
 
-#if HAS_MAX31865 && !LIB_USR_MAX31865
+#if HAS_MAX31865 && !USE_ADAFRUIT_MAX31865
 
+//#include <SoftwareSPI.h> // TODO: switch to SPIclass/SoftSPI
 #include "MAX31865.h"
 
 // The maximum speed the MAX31865 can do is 5 MHz
@@ -62,7 +61,7 @@ SPISettings MAX31865::spiConfig = SPISettings(
     500000
   #endif
   , MSBFIRST
-  , SPI_MODE1 // CPOL0 CPHA1
+  , SPI_MODE_1 // CPOL0 CPHA1
 );
 
 #ifndef LARGE_PINMAP
@@ -153,15 +152,17 @@ void MAX31865::begin(max31865_numwires_t wires, float zero, float ref) {
   OUT_WRITE(_cs, HIGH);
 
   if (_sclk != TERN(LARGE_PINMAP, -1UL, -1)) {
-    // define pin modes for Software SPI
+    // Define pin modes for Software SPI
     #ifdef MAX31865_DEBUG
       SERIAL_ECHOLN("Initializing MAX31865 Software SPI");
     #endif
-    
-    swSpiBegin(_sclk, _miso, _mosi);
-    
-  } else {
-    // start and configure hardware SPI
+
+    OUT_WRITE(_sclk, LOW);
+    SET_OUTPUT(_mosi);
+    SET_INPUT(_miso);
+  }
+  else {
+    // Start and configure hardware SPI
     #ifdef MAX31865_DEBUG
       SERIAL_ECHOLN("Initializing MAX31865 Hardware SPI");
     #endif
@@ -169,9 +170,6 @@ void MAX31865::begin(max31865_numwires_t wires, float zero, float ref) {
     SPI.begin();
   }
 
-  // SPI Begin must be called first, then init
-  _spi_speed = swSpiInit(SPI_QUARTER_SPEED, _sclk, _mosi);
-
   setWires(wires);
   enableBias(false);
   autoConvert(false);
@@ -486,7 +484,17 @@ uint8_t MAX31865::spixfer(uint8_t x) {
   if (_sclk == TERN(LARGE_PINMAP, -1UL, -1))
     return SPI.transfer(x);
 
-  return swSpiTransfer(x, _spi_speed, _sclk, _miso, _mosi);
+  uint8_t reply = 0;
+  for (int i = 7; i >= 0; i--) {
+    reply <<= 1;
+    WRITE(_sclk, HIGH);
+    WRITE(_mosi, x & (1 << i));
+    WRITE(_sclk, LOW);
+    if (READ(_miso))
+      reply |= 1;
+  }
+
+  return reply;
 }
 
-#endif // HAS_MAX31865 && !LIB_USR_MAX31865
+#endif // HAS_MAX31865 && !USE_ADAFRUIT_MAX31865
diff --git a/Marlin/src/libs/MAX31865.h b/Marlin/src/libs/MAX31865.h
index 13a117447d..5d50e870ec 100644
--- a/Marlin/src/libs/MAX31865.h
+++ b/Marlin/src/libs/MAX31865.h
@@ -90,7 +90,6 @@ private:
   static SPISettings spiConfig;
 
   TERN(LARGE_PINMAP, uint32_t, uint8_t) _sclk, _miso, _mosi, _cs;
-  uint8_t _spi_speed;
   float Rzero, Rref;
 
   void setConfig(uint8_t config, bool enable);
diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp
index 0475db486c..935de772f4 100644
--- a/Marlin/src/module/temperature.cpp
+++ b/Marlin/src/module/temperature.cpp
@@ -63,21 +63,21 @@
 
 // LIB_MAX6675 can be added to the build_flags in platformio.ini to use a user-defined library
 // If LIB_MAX6675 is not on the build_flags then raw SPI reads will be used.
-#if HAS_MAX6675 && LIB_USR_MAX6675
+#if HAS_MAX6675 && USE_LIB_MAX6675
   #include <max6675.h>
   #define HAS_MAX6675_LIBRARY 1
 #endif
 
 // LIB_MAX31855 can be added to the build_flags in platformio.ini to use a user-defined library.
 // If LIB_MAX31855 is not on the build_flags then raw SPI reads will be used.
-#if HAS_MAX31855 && LIB_USR_MAX31855
+#if HAS_MAX31855 && USE_ADAFRUIT_MAX31855
   #include <Adafruit_MAX31855.h>
   #define HAS_MAX31855_LIBRARY 1
   typedef Adafruit_MAX31855 MAX31855;
 #endif
 
 #if HAS_MAX31865
-  #if LIB_USR_MAX31865
+  #if USE_ADAFRUIT_MAX31865
     #include <Adafruit_MAX31865.h>
     typedef Adafruit_MAX31865 MAX31865;
   #else