marlin tft display quotation

I never fully understand why Marlin was hard to maintain, until I read it completely, and start to experiment with it.. And to make my own GUI, I had to remove everything related to any other display, it is a non sens to try to have only one version that runs on all MCU AVR or ARM 8 bits or 32 bits, with a serial display B/W from the 90`s or a Super fast 16 bit bus full HD, and for all kind of printers, Delta, Core, Cartesian, polar... And why the EEPROM size is 4K, no printer uses 1/2 of it, because when I use a Delta, I do not need to store the Core XY settings, but the space is reserved !! BTW.. a byte can contain 8 bools... !!! So my conclusion is there should be a few versions of marlin , I do not know why, every time I modify something, I have to read what is used by my system and what that is not, I was always loosing my time with the AVR, the 16Mhz exception, the 4 row LCD, the option that is not on my system and will never be.. Not that it will change something once the compiler manage all the condition.. the firmware will take the same space, but for the use of mods and updates, it is so much easier to read and understand... ( and finally wrote my own firmware dedicated for the STM32F407, but it is a lot faster to compile, edit and knowing every line in it!

marlin tft display quotation

Did you know? Marlin includes a native simulator that runs on Windows, Linux, and macOS, an invaluable tool for speedier development and debugging. It can simulate either a common Graphical LCD or TFT with Classic UI.

marlin tft display quotation

Marlin 2.0.6.1 is a maintenance release with many performance and stability improvements, some nice new features, and support for a small batch of TFT displays and Touch controllers. Enjoy!https://github.com/MarlinFirmware/Marlin/releases/tag/2.0.6.1…

marlin tft display quotation

just getting it going is only half the battle, you then have to redesign all the displays to make use of the higher resolution... (presuming it has enough processing power to do it)

The touch tft displays you seen on some printers are mostly not directly connected to the printers controller. they are their own display and firmware and controller that send gcodes to and from the main controller to do the various functions.

marlin tft display quotation

I have an SKR 2 (B version) and a BTT TFT35-E3 V3.0 and am having the exact same issue.  The Marlin Mode works fine, but the TFT Mode says no printer attached.  When I disconnect the two Marlin Mode ribbon cables, the TFT has no power.  I"ve checked the TFT cable installation, and the reset and 3.3v pins are correctly aligned.  When I supply power through the separate 5v power connector using a separate cable, the TFT lights up, but again the no printer connected message, even though the lack cable is still connected.  I checked the power and ground pins on the RS232 TFT pins on the SKR board and it shows a 3.3v output.  It doesn"t appear that the RS232 interface pins are working.  Is there a way to use the UART3 pins as Printer1?  How do I fix this issue?

marlin tft display quotation

Marlin is an open source firmware for the RepRap family of replicating rapid prototypers — popularly known as “3D printers.” It was derived from Sprinter and grbl, and became a standalone open source project on August 12, 2011 with its Github release. Marlin is licensed under the GPLv3 and is free for all applications.

From the start Marlin was built by and for RepRap enthusiasts to be a straightforward, reliable, and adaptable printer driver that “just works.” As a testament to its quality, Marlin is used by several respected commercial 3D printers. Ultimaker, Printrbot, AlephObjects (Lulzbot), and Prusa Research are just a few of the vendors who ship a variant of Marlin. Marlin is also capable of driving CNC’s and laser engravers.

One key to Marlin’s popularity is that it runs on inexpensive 8-bit Atmel AVR micro-controllers – Marlin 2.x has added support for 32-bit boards. These chips are at the center of the popular open source Arduino/Genuino platform. The reference platforms for Marlin is an Arduino Mega2560 with RAMPS 1.4 and Re-Arm with Ramps 1.4.

As a community product, Marlin aims to be adaptable to as many boards and configurations as possible. We want it to be configurable, customizable, extensible, and economical for hobbyists and vendors alike. A Marlin build can be very small, for use on a headless printer with only modest hardware. Features are enabled as-needed to adapt Marlin to added components.

Marlin Firmware runs on the 3D printer’s main board, managing all the real-time activities of the machine. It coordinates the heaters, steppers, sensors, lights, LCD display, buttons, and everything else involved in the 3D printing process.

Marlin implements an additive manufacturing process called Fused Deposition Modeling (FDM) — aka Fused Filament Fabrication (FFF). In this process a motor pushes plastic filament through a hot nozzle that melts and extrudes the material while the nozzle is moved under computer control. After several minutes (or many hours) of laying down thin layers of plastic, the result is a physical object.

The control-language for Marlin is a derivative of G-code. G-code commands tell a machine to do simple things like “set heater 1 to 180°,” or “move to XY at speed F.” To print a model with Marlin, it must be converted to G-code using a program called a “slicer.” Since every printer is different, you won’t find G-code files for download; you’ll need to slice them yourself.

As Marlin receives movement commands it adds them to a movement queue to be executed in the order received. The “stepper interrupt” processes the queue, converting linear movements into precisely-timed electronic pulses to the stepper motors. Even at modest speeds Marlin needs to generate thousands of stepper pulses every second. (e.g., 80 steps-per-mm * 50mm/s = 4000 steps-per-second!) Since CPU speed limits how fast the machine can move, we’re always looking for new ways to optimize the stepper interrupt!

Heaters and sensors are managed in a second interrupt that executes at much slower speed, while the main loop handles command processing, updating the display, and controller events. For safety reasons, Marlin will actually reboot if the CPU gets too overloaded to read the sensors.

Whatever you use for your CAD toolchain, as long you can export a solid model, a slicer can “slice” it into G-code, and Marlin firmware will do its best to print the final result.

Before Marlin can dream of printing, first you’ll need a 3D model. You can either download models or make your own with one of many free CAD programs, such as FreeCAD, OpenSCAD, Tinkercad, Autodesk Fusion 360, SketchUp, etc.

Marlin can be controlled entirely from a host or in standalone mode from an SD Card. Even without an LCD controller, a standalone SD print can still be initiated from a host, so your computer can be untethered from the printer.

Marlin is a huge C++ program composed of many files, but here we’ll only be talking about the two files that contain all of Marlin’s compile-time configuration options:

These two files contain all of Marlin’s build-time configuration options. Simply edit or replace these files before building and uploading Marlin to the board. A variety of pre-built configurations are included in the config/examples folder to get you started.

To use configurations from an earlier version of Marlin, try dropping them into the newer Marlin and building. As part of the build process, the SanityCheck.h will print helpful error messages explaining what needs to be changed.

Marlin is configured using C++ compiler directives. This allows Marlin to leverage the C++ preprocessor and include only the code and data needed for the enabled options. This results in the smallest possible binary. A build of Marlin can range from 50K to over 230K in size.

The core and default settings of Marlin live in the Configuration.h file. Most of these settings are fixed. Once you compile Marlin, that’s it. To change them you need to re-compile. However, several items in Configuration.h only provide defaults -factory settings- that can be changed via the user interface, stored on EEPROM and reloaded or restored to initial values.

Marlin now checks for a configuration version and won’t compile without this setting. If you want to upgrade from an earlier version of Marlin, add this line to your old configuration file. During compilation, Marlin will throw errors explaining what needs to be changed.

STRING_CONFIG_H_AUTHOR is shown in the Marlin startup message, and is meant to identify the author (and optional variant) of the firmware. Use this setting as a way to uniquely identify all your custom configurations. The startup message is printed when connecting to host software, when the board reboots and M115.

The most important setting is Marlin is the motherboard. The firmware needs to know what board it will be running on so it can assign the right functions to all pins and take advantage of the full capabilities of the board. Setting this incorrectly will lead to unpredictable results.

This is the name of your printer as displayed on the LCD and by M115. For example, if you set this to “My Delta” the LCD will display “My Delta ready” when the printer starts up.

This value, from 0 to 6, defines how many extruders (or E steppers) the printer has. By default Marlin will assume separate nozzles all moving together on a single carriage. If you have a single nozzle, a switching extruder, a mixing extruder, or dual X carriages, specify that below.

This value is used by Marlin to compensate for Filament Width when printing in volumetric mode (See M200), and by the Unified Bed Leveling command G26 when printing a test grid.

The listing above these options in Configuration.h contains all the thermistors and thermocouples that Marlin knows and supports. Try to match your brand and model with one of the sensors in the list. If no match is found, use a profile for a similar sensor of the same brand, or try “1” – the generic profile. Each profile is calibrated for a particular temperature sensor so it’s important to be as precise as possible.

Enable this option to use sensor 1 as a redundant sensor for sensor 0. This is an advanced way to protect against temp sensor failure. If the temperature difference between sensors exceeds MAX_REDUNDANT_TEMP_SENSOR_DIFF Marlin will abort the print and disable the heater.

Maximum temperature for each temperature sensor. If Marlin reads a temperature above these values, it will immediately shut down for safety reasons. For the E3D V6 hotend, many use 285 as a maximum value.

Marlin uses PID (Proportional, Integral, Derivative) control (Wikipedia) to stabilize the dynamic heating system for the hotends and bed. When PID values are set correctly, heaters reach their target temperatures faster, maintain temperature better, and experience less wear over time.

Thermal protection is one of the most vital safety features in Marlin, allowing the firmware to catch a bad situation and shut down heaters before it goes too far. Consider what happens when a thermistor comes loose during printing. The firmware sees a low temperature reading so it keeps the heat on. As long as the temperature reading is low, the hotend will continue to heat up indefinitely, leading to smoke, oozing, a ruined print, and possibly even fire.

Marlin supports four kinematic motion systems: Cartesian, Core (H-Bot), Delta, and SCARA. Cartesian is the simplest, applying each stepper directly to an axis. CoreXY uses a special belt arrangement to do XY motion, requiring a little extra maths. Delta robots convert the motion of three vertical carriages into XYZ motion in an “effector” attached to the carriages by six arms. SCARA robots move an arm in the XY plane using two angular joints.

These settings allow Marlin to tune stepper driver timing and enable advanced options for stepper drivers that support them. You may also override timing options in Configuration_adv.h.

In print/travel moves, DEFAULT_ACCELERATION and DEFAULT_TRAVEL_ACCELERATION apply to the XYZ axes. In retraction moves, DEFAULT_RETRACT_ACCELERATION applies only to the E-axis. During movement planning, Marlin constrains the default accelerations to the maximum acceleration of all axes involved in the move.

Use this option if you’ve connected the probe to a pin other than the Z MIN endstop pin. With this option enabled, by default Marlin will use the Z_MIN_PROBE_PIN specified in your board’s pins file (usually the X or Z MAX endstop pin since these are the most likely to be unused). If you need to use a different pin, define your custom pin number for Z_MIN_PROBE_PIN in Configuration.h.

With Marlin you can directly specify the bed size. This allows Marlin to do extra logic related to the bed size when it differs from the movement limits below. If the XY carriage is able to move outside of the bed, you can specify a wider range below.

With this feature, a mechanical or opto endstop switch is used to check for the presence of filament in the feeder (usually the switch is closed when filament is present). If the filament runs out, Marlin will run the specified G-code script (by default M600). RAMPS-based boards use SERVO3_PIN. For other boards you may need to define FIL_RUNOUT_PIN.

If you have SRAM to spare, this option will multiply the resolution of the bilinear grid using the Catmull-Rom subdivision method. This option only applies to bilinear leveling. If the default value of 3 is too expensive, try 2 or 1. (In Marlin 1.1.1, the default grid will be stored in PROGMEM, as UBL now does.)

Commands like M92 only change the settings in volatile memory, and these settings are lost when the machine is powered off. With this option enabled, Marlin uses the built-in EEPROM to preserve settings across reboots. Settings saved to EEPROM (with M500) are loaded automatically whenever the machine restarts (and in most setups, when connecting to a host), overriding the defaults set in the configuration files. This option is highly recommended, as it makes configurations easier to manage.

When Host Keepalive is enabled Marlin will send a busy status message to the host every couple of seconds when it can’t accept commands. Disable if your host doesn’t like keepalive messages. Use DEFAULT_KEEPALIVE_INTERVAL for the default number of seconds between “busy” messages. Override with M113. Marlin 1.1.5 and up include the BUSY_WHILE_HEATING option for hosts that treat host keepalive as a strict busy protocol.

This option applies only to character-based displays. Character-based displays (based on the Hitachi HD44780) provide an ASCII character set plus one of the following language extensions:

Disable all menus and only display the Status Screen with NO_LCD_MENUS, or just remove some extraneous menu items to recover space with SLIM_LCD_MENUS.

REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER A monochrome 128 x 64 pixel-based LCD controller with click-wheel. Able to display simple bitmap graphics and up to 5 lines of text.

Temperature status LEDs that display the hotend and bed temperature. If all hotend and bed temperature setpoint are < 54C then the BLUE led is on. Otherwise the RED led is on. There is 1C hysteresis.

Marlin includes support for the Baricuda Extruder for 3D Printing Sugar and Chocolate also hosted on GitHub. The feature adds the codes M126, M127, M128, and M129 for controlling the pump and valve of the Baricuda.

Marlin currently supplies two options for RGB-addressable color indicators. In both cases the color is set using M150 Rr Ug Bb to specify RGB components from 0 to 255.

To solve this issue, this option sets the number of milliseconds a hotend will preheat before Marlin starts to check the temperature. Set a delay sufficient to reach a temperature your sensor can reliably read. Lower values are better and safer. If you require a value over 30000, this could indicate a problem.

Use the optimizations here to improve printing performance, which can be adversely affected by graphical display drawing, especially when doing several short moves, and when printing on DELTA and SCARA machines.

Some of these options may result in the display lagging behind controller events, as there is a trade-off between reliable printing performance versus fast display updates.

This feature allows Marlin to use linear pressure control for print extrusion, to eliminate ooze, improve corners, etc. See Configuration_adv.h and the Linear Advance page for more complete documentation.

Experimental feature for filament change support and parking the nozzle when paused. Adds the M600 command to perform a filament change. With PARK_HEAD_ON_PAUSE enabled also adds the M115 command to pause printing and park the nozzle. Requires an LCD display. Note that M600 is required for the default FILAMENT_RUNOUT_SCRIPT. Requires LCD display and NOZZLE_PARK_FEATURE.

This feature can be used to talk to slave devices on the i2c bus, passing data back to the host. With additional work the TWIBus class can be used to build a full protocol and add remote control features to Marlin, distributing load over two or more boards.

SuperPid is a router/spindle speed controller used in the CNC milling community. Marlin can be used to turn the spindle on and off. It can also be used to set the spindle speed from 5,000 to 30,000 RPM.

Enable to add support for a filament width sensor such as Filament Width Sensor Prototype Version 3. With a filament sensor installed, Marlin can adjust the flow rate according to the measured filament width. Adjust the sub-options below according to your setup.

It is recommended to enable this feature (along with EXTENDED_CAPABILITIES_REPORT) to install the M155 Auto-Report Temperature command. M115 tells Marlin to send the current temperature to the host at regular intervals, instead of requiring the host software to send M105 repeatedly. This saves a space in the command buffer and reduces overhead.

Enable this option for a leaner build of Marlin that removes all workspace offsets. This simplifies all coordinate transformations, leveling, etc., and may allow for slightly faster printing. With this option, M206 and M428 are disabled, and G92 reverts to its old behavior, as it is in Marlin 1.0.

Some hosts use a proportional font in their output console. This makes it hard to read output from Marlin that relies on fixed-width for alignment. This option tells Marlin how many spaces are required to fill up a typical character space in the host font. For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0. Otherwise, adjust according to your host.

On a board with a ATmega2560/1280 microcontroller you have three potential serial ports to use for the MMU2: serial 1 (pins 18/19), serial 2 (pins 16/17), serial 3 (pins 14/15). Define the port your MMU2 is connected to – this activates an additional serial connection in Marlin named (in the example configuration) internalSerial.

The MMU2 LCD menu allows you to load filament to the nozzle. The MMU2 will transport the filament all the way to the extruder gears. The required extruder steps to load it into the hotend have to be defined in Marlin.

marlin tft display quotation

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:39:4: error: #error "FAN_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)."

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:40:4: error: #error "Disable SPEAKER or enable FAN_SOFT_PWM."

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:39:4: error: #error "FAN_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)."

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:40:4: error: #error "Disable SPEAKER or enable FAN_SOFT_PWM."

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:39:4: error: #error "FAN_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)."

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:40:4: error: #error "Disable SPEAKER or enable FAN_SOFT_PWM."

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:39:4: error: #error "FAN_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)."

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:40:4: error: #error "Disable SPEAKER or enable FAN_SOFT_PWM."

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:39:4: error: #error "FAN_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)."

C:\Users\Moi\Downloads\Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin\src\HAL\AVR\inc\SanityCheck.h:40:4: error: #error "Disable SPEAKER or enable FAN_SOFT_PWM."

marlin tft display quotation

Today I am going to talk about Marlin 2.0 firmware and how to properly configure it for your printer. We will start with some basic knowledge about our hardware, and, after that, I will explain in full details what we need to change in the stock firmware to match our printer configuration. I will also introduce some features that you can find in Marlin 2.0 which are very handy.

If you have a Tevo Tarantula Pro, most probably you already have Marlin 1.9, which is good! But I don’t personally like how it was customized. It lacks some basics features as:Filament change – Filament change g-code doesn’t work on the standard Tevo firmware for some strange reason.

Other than those reasons, customizing your firmware makes you learn many things about your machine, and, in this way, you can always swap hardware without any configuration issues. And Marlin firmware is in constant evolution so, you will always have the latest version if you want.

Marlin is an open-source project born in the early days of the RepRap project, it gained popularity fast, but also its implementation increased rapidly with time. Now it’s used in most 3D commercial printers and, there is a reason behind this.

Marlin has some features which help a lot with bed leveling, especially with warped beds, as you can set the z offset in 9 points meaning you can level a warped bed.Support for Filament Runout/Width Sensors

Know any additional upgrade or hardware change: There are some other things you can configure in Marlin such as the hotend thermistor, leveling probe, and much other stuff. I will go through these configurations so you will have them correctly set up.

And the last thing we need is Marlin firmware! I will use a simplified version called EasyConfig by Jim Brown. This version of marlin is much easier to use and already works great for the original Tarantula, so this means that half of the works is already done. Also, this version is constantly maintained and integrates the new feature of the original Marlin firmware.

After you installed ArduinoIde you just need to extract the Zip file containing Marlin (MarlinTarantula-EasyConfig-2.0.x) and open the /Marlin folder, where you will find Configuration.handConfiguration_Adv.h.These will be the main 2 files we are going to edit today. If you have Windows just click on the Configuration.h file and it will open the project, instead, if you have a mac OS X just open Marlin.ino.

Next, we will need to install an external library that will compile our display settings.Go to ArduinoIde menu ->Sketch->Include Library->Manage libraries and search for U8g2

We will need to change some pins settings, this means that we need to go to the Marlin folder and after that, navigate to src/pins/ramps and open pins_RAMPS.h (If you have problems opening it with ArduinoIde try with and text Editor, it should work with no problem).

Now try to compile Marlin by pushing the verify button in ArduinoIde and be patient as it may take a while if everything goes well and you don’t see any errors it’s great! Plugin your printer and push upload and you are ready to test the new configuration!

marlin tft display quotation

The MKS 3.5 inch TFT Display meets all requirements for 3D printer control. Compatible with Ramps and MKS series 3D printer control cards, you can easily use popular software such as marlin. The display connections are like standard graphic displays. Simply connect the EXP1 and EXP2 slots to the corresponding connectors.

marlin tft display quotation

I was rebuilding one of my 3D printers — again — and decided I needed a display upgrade. A color screen is nice, but there are some limitations. I also found there are ways around these limitations, so I wanted to share my thoughts on a dual-mode color touch screen LCD controller for your 3D printer. The screen in question is a TFT35 from BigTree Tech. It is similar to an MKS screen, but it can operate in two different modes, as you will see.

A few years ago, I picked up an Anet A8 which was very inexpensive, especially on sale. Not the best printer, though, because it has that cheap acrylic frame. No problem. A box full of aluminum extrusion later, the printer was reborn. Over time, I’ve completely reworked the extrusion system and the Y-axis, leaving only the motors, bearings, and the controller/display as the original.

I happened to have one of these lying around so when I installed a new motherboard — a Fysetc Spider if you are curious — I also wired in the new LCD. I had to recompile Marlin, of course, but that’s easy. It all worked, it just looked a little bland.

There’s another way to control a printer, and it’s one you may have thought of before. Since the printer accepts commands via a serial port, you could take a computer like a Raspberry Pi with a nice LCD and just have it issue commands to the serial port. Bonus points if the board has more than one serial port so you can still hook up a PC or a Raspberry Pi running Octoprint or similar. Turns out, you don’t have to build this. The MKS touchscreen uses an ARM chip (it isn’t a Pi, though) and has a touch screen that you can use to control the printer. These come in different sizes and are usually called something like TFT35 for 3.5 inch display.

The advantage isn’t just appearance. Having a bunch of touch screen buttons makes many things easier. For example, if the printer is at (0,0) and you want to jog the head to (100,200), that ends up being a lot of button pushes in Marlin. With the touch display, you can bring up a navigation screen that makes it easy. Or, you can bring up an entire terminal and enter G-code. When you press Send, it shows the results of the command, if any. You can set a temperature with the knob, on-screen buttons, or press the number and type in what you want with a virtual keypad.

These displays are colorful and nice, but there are a few things they can’t do. Marlin has some wizards and user interaction that insist on a proper, local LCD. But the Marlin code thinks the MKS display is a remote host computer, connected over serial. Displays that can act like both types of LCDs are a sweet hack, and here’s the part that was never clear to me before: these displays can switch modes during printer operation. In other words, it is not a case of selecting a mode and rebooting everything. You can be looking at the colorful touchscreen, then switch over to the stock display while printing and then switch back any time you want. The best of both worlds.

On the face of it, the display looks like an MKS TFT. You have colorful menus and a touch screen. The connection for that is a simple two-wire serial port, along with — of course — power, ground, and an optional reset connection. They provide a cable you can use or modify to connect to your setup. There is also an EXT3 port for boards that have that connector.

If all you want is an MKS display, you are done. Since the display looks like a host computer, you don’t even have to recompile Marlin if the serial port you used was active. In my case, the second serial port wasn’t set up, so I had to recompile, but I do that often enough, anyway.

However, if you wire the normal EXT1 and EXT2 ribbon cables to your printer, the display can emulate a normal 128×64 LCD. If you are already set up to use one of these displays, you should not need to recompile Marlin to use this display. However, if you are set up for a different type of display, you’ll need to tell Marlin to use the normal “REPRAP DISCOUNT GRAPHICS CONTROLLER.”

Here’s what I never understood about the device. Looking at the write-up about it on different vendor sites like Amazon, Banggood, or AliExpress, it sounded like you could use the screen in either mode as a static configuration choice. In other words, you might wire up EXT1 and EXT2 and then use the emulated mode until you decided to switch over to serial at some future date. But that’s not how it works. You can connect all the cables and switch back and forth between display systems on the fly.

That’s huge. It means you can have a nice user interface that lets you control the printer, print from an SD card or USB stick, and even make customizations to the menu with the source code provided on GitHub or with a simple configuration file edit. (And, yes, you can add custom menu items simply.) But when you need to do something very specific to Marlin, or a new feature shows up that the LCD doesn’t know about yet, you can simply switch to the Marlin display mode. Then you can switch back.

The process to switch is simple. Just hold down the encoder knob or push the screen for a few seconds. A screen will show up allowing you to pick the Marlin mode or the BTT mode. Just touch the one you want. In Marlin mode, the touchscreen does nothing except switch modes, so you might want to use that method. If you hold the encoder down in Marlin mode, the printer will also see the repeated enter keys until the LCD pops up the selection screen.

Installing the LCD was straightforward save a few problems. For some reason, the pin 1 designation for EXP1 and EXP2 are not consistent among vendors. A Geeetech display worked fine with the Spider board, but the TFT35 didn’t want to come up in Marlin mode at all. I applied power at the serial port and the board appeared hung. The answer was to snip off the alignment tabs on the ribbon cables and flip them 180 degrees.

The serial port was also a mystery. With so little documentation on anything, I just soldered the power and ground wires and then hand twisted RX and TX so I could swap them until it worked. As I expected, the cable needed a cross on those lines to work. You also have to match the display’s baud rate to the port you are using.

After that, it all worked fine. The EXP1 and EXP2 connectors do connect to the board’s reset, so you don’t need to wire the serial port’s reset pin if you have those connected. However, I did notice that switching the mainboard to DFU mode will sometimes fail with the display plugged in. Reflashing the display requires an SD card that flashes a binary file and then reboots and loads fonts and icons. If it is connected to the Spider, it sometimes hangs when trying to reboot during an update. It also works sometimes, though, so I suspect it is just loading on the reset line. In any event, popping the connectors will make it work if you don’t want to try repeatedly.

The display has a number of other ports, but you probably shouldn’t use them. For example, there’s a port for a filament runout sensor. But if you connect it there, it will only work if you are printing using an SD card or USB stick in the display. A better option is to connect it to your printer and tell Marlin to notify the host if a filament break occurs. This will work with the display or something like Octoprint.

In theory, you should be able to connect Octoprint itself through one of the extra serial ports. However, I never got this to fully work. The subordinate port seems to work pretty well, but it never sends Octoprint acknowledgments so Octoprint waits forever or until you force it to continue — use the Fake Acknowledgment button in the terminal. Since the Spider has multiple serial ports, it isn’t a big deal, but in theory, the TFT should work a little better if it can intercept and filter the data stream between the printer and the host software. In practice, I don’t really notice any problems. Some Octoprint plugins like DisplayLayer can send status information to the TFT, anyway.

The truth is, I don’t switch over to Marlin mode very often, but it is nice to have it if I want it, and you can even change the colors to suit you. I really wanted the passthrough mode to work but couldn’t figure out what was going on without digging into the source code, and that might be a project for another day.

Another note: Using the jog keys sets the printer to relative mode. If you are used to popping codes into a terminal, you might want to get used to issuing a G90 before you send a move because the TFT will change it to relative anytime you do a jog.

These displays are inexpensive and easy to interface and since they can still work as a classic display, there’s no reason not to do this easy upgrade. There are plenty of mounting options you can print, of course. The finished result looks great and doing things like moving in both X and Y are much easier with the new display.