diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index cb110a942e..cf0b3abe2d 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -1618,6 +1618,12 @@
   #define U8GLIB_SH1106
 #endif
 
+//
+// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
+// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
+//
+//#define ULTI_CONTROLLER
+
 //
 // CONTROLLER TYPE: Shift register panels
 //
diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index 0c6ca8f9af..d4c43ecf17 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -151,10 +151,21 @@
   #define DEFAULT_LCD_CONTRAST 17
 #endif
 
-// Generic support for SSD1306 / SH1106 OLED based LCDs.
-#if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SH1106)
+#if ENABLED(ULTI_CONTROLLER)
+  #define U8GLIB_SSD1309
+  #define REVERSE_ENCODER_DIRECTION
+  #define LCD_RESET_PIN LCD_PINS_D6 //  This controller need a reset pin
+  #define LCD_CONTRAST_MIN 0
+  #define LCD_CONTRAST_MAX 254
+  #define DEFAULT_LCD_CONTRAST 127
+  #define ENCODER_PULSES_PER_STEP 2
+  #define ENCODER_STEPS_PER_MENU_ITEM 2
+#endif
+
+// Generic support for SSD1306 / SSD1309 / SH1106 OLED based LCDs.
+#if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SSD1309) || ENABLED(U8GLIB_SH1106)
   #define ULTRA_LCD  //general LCD support, also 16x2
-  #define DOGLCD  // Support for I2C LCD 128x64 (Controller SSD1306 / SH1106 graphic Display Family)
+  #define DOGLCD  // Support for I2C LCD 128x64 (Controller SSD1306 / SSD1309 / SH1106 graphic Display Family)
 #endif
 
 #if ENABLED(PANEL_ONE) || ENABLED(U8GLIB_SH1106)
@@ -178,7 +189,8 @@
 #if ENABLED(ULTIMAKERCONTROLLER)              \
  || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \
  || ENABLED(G3D_PANEL)                        \
- || ENABLED(RIGIDBOT_PANEL)
+ || ENABLED(RIGIDBOT_PANEL)                   \
+ || ENABLED(ULTI_CONTROLLER)
   #define ULTIPANEL
 #endif
 
diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index 5737438d02..a669b40c3f 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -1426,6 +1426,9 @@ static_assert(1 >= 0
   #if ENABLED(ZONESTAR_LCD)
     + 1
   #endif
+  #if ENABLED(ULTI_CONTROLLER)
+    + 1
+  #endif
   , "Please select no more than one LCD controller option."
 );
 
diff --git a/Marlin/src/lcd/ultralcd_impl_DOGM.h b/Marlin/src/lcd/ultralcd_impl_DOGM.h
index 9a148c995d..2f537445f8 100644
--- a/Marlin/src/lcd/ultralcd_impl_DOGM.h
+++ b/Marlin/src/lcd/ultralcd_impl_DOGM.h
@@ -211,6 +211,9 @@
   // Generic support for SH1106 OLED I2C LCDs
     //U8GLIB_SH1106_128X64_2X_I2C_2_WIRE  u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST); // 4 stripes
     U8GLIB_SH1106_128X64_2X u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST); // 4 stripes
+#elif ENABLED(U8GLIB_SSD1309)
+  // Generic support for SSD1309 OLED I2C LCDs
+  U8GLIB_SSD1309_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST);
 #elif ENABLED(MINIPANEL)
   // The MINIPanel display
     //U8GLIB_MINI12864 u8g(DOGLCD_CS, DOGLCD_A0);  // 8 stripes