How to wire up the Display

The SMuFF firmware supports many different displays, some of which are not meant to be combined in first place. In some cases the combination of board and display needs a special wiring, which this page explains it in detail. In any case, you have to ensure you've picked the right display when compiling the firmware.

Click on the link with the combination of board and display you have from the list below.
Keep in mind that for the purpose of convenience and better traceability, all signals have a different color and don't reflect the real world (though, if you're making a custom cable yourself, I'd highly recommend doing so because it'll save you time and confusion if things are not working as expected).

However, if your display doesn't show anything at boot, go down to the bottom of this page and see what you can/should do to resolve the issue.

Board Layouts and Pinouts

For the connections shown below, you'll need to know where the connectors are located on your controller board. Here's a collection of links of the pinouts for the controller boards supported:

Dupont Key

For most of the displays you'll need to wire up a specific cable using Dupont connectors. Those connectors come with the benefit that they're pretty easy to handle but also carry the risk of being inserted in reverse.
Hence, I've modeled a Dupont key, which you simply pull over the connector to make it a keyed connector. 

Please notice: This part has a pretty tight fit to ensure that it doesn't come off easily. If it doesn't slide in with ease into the IDC header on the controller/display PCB, simply sand or file it down a bit. 

In case you have two connectors (usually on the displays side), write the slot number onto the "nose" (i.e. 1 or 2 for EXP1, EXP2) and you're golden. You never again have to worry about inserting them in the wrong orientation or slot!

Print this part with a 0.4 (better 0.3) mm nozzle, 0.2 mm layer height in the upright orientation you see in the picture to the left.

You can download this STL file from here.

DIY I2C Display

SKR E3: DIP V1.1 / V1.2

On the SKR E3-DIP V1.1 and the E3 V1.2 you can use a 10 pin flat ribbon cable to connect to the DIY display. 

Both controller boards will use hardware I2C to communicate with the display.

SKR E3: V2.0 / V3.0

On the SKR E3 V2.0 and the E3 V3.0 you need to make a special cable to connect to the DIY display because the pinout on the controller board is different. 

Please notice: Only the E3 V3.0 uses hardware I2C (I2C2 in this case), whereas the E3 V2.0 needs software I2C for the communication.

LeoNerd's / GMagicians OLED Module

SKR E3: DIP V1.1 / V1.2

On the SKR E3-DIP V1.1 and the E3 V1.2 you need a 4 wire cable to connect to the display. The Reset signal of the display is optional and can be omitted.

Both controller boards will use hardware I2C to communicate with the display.

SKR E3: V2.0 / V3.0

On the SKR E3 V2.0 and the E3 V3.0 you also need a 4 wire cable to connect to the display but the pinout on the controller board is different.

Please notice: Only the E3 V3.0 uses hardware I2C (I2C2 in this case), whereas the E3 V2.0 needs software I2C for the communication.

RepRap  Full Graphics Display

SKR E3: DIP V1.1 / V1.2 / V2.0

Makerbase MKS Mini 12864

For these displays you'll need a cable which connects the EXP1 and the SPI1 header of the SKR E3 to the display.

This wiring scheme belongs to those displays known as DOG-LCD, EA DOGL or Mini 12864 and which operate on a 4-Wire hardware connection.

Be careful when wiring it all up. Accidentally swapped cables may lead to a damaged controller board, display or both. Just follow the names and the colors to get it right.

Before you start wiring up, make sure you have understood which pin on either side is which. 

In the firmware, comment all of the USE_xxx_DISPLAY definitions. The compiler will then use the default configuration.

Also: Please make sure you have at least firmware version 2.15 downloaded before compiling.

On some older RepRap displays (the original Full Graphic Smart Controller), according to the schematics published, you'll need to route the signals LCD-A0 and LCD-CS on EXP1 differently, as shown in the picture to the left.

Also, make sure the display you have is using a ST7920 controller chip, otherwise the SMuFF firmware will not be able to initialize the display correctly and you may encounter a slight shift in the pixels (or - in worst case - no picture at all). 

SKR E3: V3.0

On the new SKR E3 V3.0 it's mostly the same, except that the SPI1 connector not only has more pins but also a different pinout.

Keep in mind: For this controller board you'll need SMuFF firmware version 3.0 or newer!

BTT TFT and other Creality compatibles over EXP3

SKR E3: DIP V1.1 / V1.2 / V2.0

Cable for BTT TFT V3.0 on EXP3 with hardware SPI

For these displays you may use the configuration shown above, since those display modules come with three display connectors (EXP1, EXP2 and EXP3).

If you're going for the EXP3 solution, you have two operational mode options:

Software SPI is the easiest to set up, since it requires only a 10 pin flat ribbon cable which connects directly and usually comes with your display. Though, since it's software SPI it's pretty slow when drawing on the screen.

Using hardware SPI speeds up drawing quite a bit but you'll need a custom cable as shown in the picture to the left. I'd recommend using Dupont wires / headers for this task since they're pretty easy to assemble. You'll need two 5x2 headers, one 2x3 header and ten Dupont female/female wires, 100-150 mm in length.

In the firmware, un-comment the USE_CREALITY_DISPLAY definition and, in case you're going for the hardware SPI, the CREALITY_HW_SPI as well. 

Please notice: The BTT TFT will work only in Marlin Mode (a.k.a. LCD12864 Emulation Mode). In the settings menu of the display, you'll find an entry which tells the display in which mode to start up. This can also be achieved by editing the config.ini file, which is part of the BTT TFT firmware

Also: The BTT TFT display modules won't be able to deliver a decent encoder button signal on EXP3, unless you manually remove the resistor (R7) sitting in between the ENCBTN pin and the button pin on the encoder itself (i.e. 2.4" display) or by cutting the trace that goes from the encoders button pin to the MCU and re-wiring it to the ENCBTN signal (i.e. 3.5" display).
However, using the original splitter cable (EXP1 on board to EXP1/2 on display) is supposed to work with the latest release of the display firmware.

In either case, be aware that doing so will void your warranty for the display!

SKR E3: V3.0

For the new SKR E3 V3.0, please notice that the SPI1 connector not only has more pins but also a different pinout, as shown in the picture.

Keep in mind: For this controller board you'll need SMuFF firmware version 3.0 or newer!

On a side note: This board also comes with the option of using fast software SPI. In this case, you'll only need a 10 pin flat ribbon cable going from EXP1 on the controller board to EXP3 on the display. See down below.

The easy way (SKR E3: DIP V1.1 / V1.2 / V2.0 / 3.0)

The easiest way to connect such a display is by enabling the USE_FAST_SW_SPI option along with the USE_CREALITY_DISPLAY option in platformio.ini.

In this case you'll only need the 10 pin flat ribbon cable, that usually ships with the display, and connect it to the EXP1 header on the board to the EXP3 header on the display.

Although Fast Software SPI is a bit slower than hardware SPI, it's barely noticeable and reduces the effort when handling the display.

BTT TFT and other 12864 compatibles over EXP1, EXP2

SKR E3: DIP V1.1 / V1.2 / V2.0

For these displays you may have to use another custom made cable because of the different signal pins on EXP1 and EXP2. This configuration is also meant to be used using hardware SPI.

To go for that option, you have to create a cable with the corresponding wiring shown on the left. I'd recommend using Dupont wires / headers for this task since they're pretty easy to assemble. You'll need two 5x2 headers, one 2x3 header and ten Dupont female/female wires, 100-150 mm in length.

In the firmware, un-comment the USE_CREALITY_DISPLAY definition and CREALITY_HW_SPI as well. 

Please notice: The BTT TFT will work only in Marlin Mode (a.k.a. LCD12864 Emulation Mode). In the settings menu of the display, you'll find an entry which tells the display in which mode to start up. This can also be achieved by editing the config.ini file, which is part of the BTT TFT firmware.

Also: The BTT TFT display modules won't be able to deliver a decent encoder button signal  on EXP3, unless you manually remove the resistor (R7) sitting in between the ENCBTN pin and the button pin on the encoder itself (i.e. 2.4" display) or by cutting the trace that goes from the encoders button pin to the MCU and re-wiring it to the ENCBTN signal (i.e. 3.5" display).
However, using the original splitter cable (EXP1 on board to EXP1/2 on display) is supposed to work with the latest release of the display firmware.

In either case, be aware that doing so will void your warranty for the display!

SKR E3: V3.0

For the new SKR E3 V3.0, please notice that the SPI1 connector not only has more pins but also a different pinout, as shown in the picture to the left.

Keep in mind: For this controller board you'll need SMuFF firmware version 3.0 or newer!

On a side  note: If you have a BTT TFT 2.4/3.5 display already connected to your printer, keep in mind that you don't necessarily need a second display for the SMuFF! You're able to control your 3D printer via the serial (TFT) graphical interface, whereas the SMuFF uses the LCD12864 emulation

All you have to do, is connecting both controllers to your display and toggle between the graphical interface (Touch mode) and the emulation mode (Marlin mode) by tapping and holding the touch screen for about 3 seconds. 

If you do so, I recommend putting the display into the SMuFF housing and extend the serial interface cable coming from the printer controller board if it's too short. Though, make sure that the +5V wire is not connected! The display is already being powered by the SMuFF. In fact, you only have to wire up the RX, TX and GND signals in a 1:1 connection (i.e. not twisting RX and TX) to make it all work.

FYSETC/BTT/MKS mini 12864 over EXP1, EXP2

A word of warning: As maker Plumpkatt1 over on Discord has pointed out recently, there is this Melow FLY Mini Screen 1.0 circulating, which is supposed to be a FYSETC clone, but isn't. For one the connectors don't match the assignment shown down below, for the other bores and positions of the reset button and encoder aren't matching, which means: It will not fit the housing I've designed for the FYSETC 12864 display.
Hence, don't use this display!
You may have spotted the label on the box, which says: FOR GIFT.
I guess this means: Melow has figured the display has issues and took it off the shelf, but that's my assumption only!
Keep in mind: There might be a different version of this display, that meets the FYSETC specs, out there but we don't know for sure yet!

SKR E3: DIP V1.1 / V1.2 / V2.0

For this display you also have to have a custom made cable because of the different signal pins on EXP1 and EXP2. This configuration is also meant to be used using hardware SPI.

To go for this display option, you have to create a cable with the corresponding wiring shown on the left. I'd recommend using Dupont wires / headers for this task since they're pretty easy to assemble. You'll need two 5x2 headers, one 2x3 header, on 1x5 header and thirteen Dupont female/female wires, 100-200 mm in length.

In the firmware, un-comment the USE_MINI12864_PANEL_V21

Please notice: The FYSETC Mini Panel 12864 V2.0 won't work in this configuration because it'll need two additional wires to drive the RGB display background LED (GREEN/BLUE).
Also, this configuration will work only with the SMuFF firmware 2.26 and above.  

Also: This display additionally needs the LCD-RST signal, which in this case goes to pin 2 of the SWD connector (E3-DIP / V1.2 / V2.0) or pin 2 of the I/O connector respectively (E3 V3.0).

Without this signal it will refuse to display anything after a power cycle!

SKR E3: V3.0

In case your controller is the new SKR E3 V3.0 (the latest version), please notice that the SPI connector not only has more pins but also a different pinout, as shown in the picture to the left.

Also, since this board has spare I/O pins (YAY!), the display Reset signal has moved to pin 1 of the I/O header and must not be omitted.

Keep in mind: For this controller board you'll need SMuFF firmware version 3.0 or newer!

SKR mini V1.1

If your controller is a SKR mini V1.1 (not the E3 version), you have to connect both, EXP1 and EXP2 using a 1:1 cable.

If you're doing this, please double check whether your cables are crimped correctly. In some cases they might be twisted and hence the display will not work or, if the supply pins don't match, the display might be destroyed!

Troubleshooting

There are some simple checks you need to go through, in case your display isn't showing anything after startup:

If none of the above applies, double check your wiring. If beeper and encoder are working as supposed to but the display is not, first check the MOSI and SCK signals. Also make sure you've wired them to the correct header on the controller board and you didn't confuse the MOSI signal with the MISO signal on the SPI1 header.
If those signals are assigned correctly (according to the documentation of your display), check the wiring of the LCD-A0 and LCD-CS signals. Keep in mind: Those four signals (SCK, MOSI, LCD-CS and LCD-A0) are basically the essentials for a display to work.
In some cases (such as the FYSETC Minipanel 12864 shown above) the display controller will need an additional LCD-RST signal to initialize and start up correctly.

Attention!

On recent installs it turned out, a few people were having trouble with their SD-Card. This eventually results in the SMuFF firmware not being flashed correctly onto the controller board and the display won't show the boot screen as expected, even though the wiring is technically correct.
Whenever possible, I recommend using the SD-Card that came with the board. If your board didn't come with a SD-Card, make sure you use a relatively "small" one (i.e. 1-4GB). SD-Cards with higher capacities seem to make trouble. Format it using the FAT32 format.
Keep in mind: The boot-loader capabilities on a controller board are just a fragment of a boot-loader on a PC or Raspberry Pi and thus it doesn't support everything a PC/Raspberry would do.

Watch the flashing process: The onboard Status LED is supposed to blink rapidly for a few seconds, as the flashing is ongoing (10-15 seconds at max.). After that timespan it'll stop blinking and the firmware.bin file on the SD-Card is being deleted.
If that's not the case, re-format the SD-Card, copy the SMuFF files onto it and try again.

If everything of the above doesn't lead to some result, consider your display might be broken.