This repository contains precompiled FW for Bigtreetech TFTs and compatible MKS TFTs. It is based on the master branch of the Bigtreetech's TFT Firmware repository as of 2023.VII.31. These precompiled files are more updated/enhanced, they contain unmerged pull requests with bugfixes and enhancements and contain additional and not published bugfixes and enhacements as described in the changelog.
Another big difference from the original firmware is the implementation of the feature called "Hesitation Guard". It is fundamentally different from the ADVANCED_OK present in the original firmware. ADVANCED_OK is deprecated, no one really uses that, it only mitigates the outcome of a problem and creates other issues. On the other hand Hesitation Guard deals with the root of the issue and it does it dynamically, based on the momentary load of the TFT. As the name suggests, this feature guards against hesitations during printing (resulting in blobs) from TFT media (SD Card, USB).
2023.XII.31:
- fixed an issue with the GUI at end of the print, it wouldn't switch to the end print interface if the gcode file had at the end anything else than one single new line; it now works regardless of what is at the end of the gcode file
- fixed the issue with icons not updating from the USB stick (PR #2879)
- fixed the issue during the icons update where the icon name was different from the icon displayed (PR #2879)
- during fonts update the displayed text (font file name, font file size, update percentage) was cluttered, rearranged the display of the fields into a readable form (PR #2879)
2023.X.9:
- fixed the issue with thumbnails disappearing when going through files
- fixed the issue with some TFT variants where the text in the "Info" menu was shifted downwards so the lower lines were not legible
2023.X.8:
- IMPORTANT: DMA based serial transmission implemented. It brings an even more stability improvement, it gives a speed boost of at least 20% to the TFT during print. (PR #2844)
- reworked the buzzer handler, it is purely interrupt based with the benefit of more consistent sound patterns and no interference with other tasks (PR #2846)
- fixed some bugs in the numpad (PR #2856)
- rework of the "Corner Leveling" menu to accommodate more printer setups to the latest Marlin changes (PR #2825)
- Please note that this change made the "config.ini" file to have some parameters removed ("Machine size") and some new parameters added ("Motion limits" and "Bed size"). Update your "config.ini" according to your printer's setup.
- removed "Disarm" button from the manual leveling menu (there was no practical use of it there) (PR #2825)
- there's no submenu there anymore, "Distance" and "Shim" buttons are visible in that menu
- removed "M48" button from "Corner Leveling" menu (had no reason to be there) and replaced it with a button for "Home Z" function (PR #2825)
- some slight speed improvement due to a rework of the OS time IRQ handler (PR #2833)
- cosmetic rework of the "Move" menu (PR #2834)
- there's a print abort procedure rework making it react even more faster than before
- fixed a bug where upon inserting or removing the SD card or the USB stick a permanent message was shown in the title area ("Busy processing, please wait...")
- added an uploader for the original bootloader for the Artillery MKS TFT28 with GD32F305VCT6 (v3.05)
2023.VIII.24:
-
IMPORTANT: more stability improvement during print. The hesitation guard is no more static, it is dynamic now, it constantly adapts to the situation. (for ex. it adapts to the situation where in a very busy print job the user start pressing buttons, moving across menus; it adapts to external commands (ESP3D, terminal, etc) perturbing the print job and so on...)
-
added an uploader for the patched bootloader for the Artillery MKS TFT28 with STM32F107VCT6 MCU, this bootloader replaces the annoying long "beep" at boot with a short "chirp"
Just copy the file to the SD card and update your FW as usual. While flashing the patched bootloader there's a red dot and a progress bar. When the bootloader flashing is finished the progress bar gets filled and the red dot changes to a blinking green dot. After this you can proceed to upload your favorite regular firmware.
- fixes some issues with MKS TFT28 for Artillery printers equipped with GD32F305VCT6 MCU:
- the connected WiFi (ESP3D) was assigned to UART3 instead of the port labeled "WiFi", it's been fixed
- if "mkstft28evo.cur" file already existed on the SD card than upon a FW update the "mkstft28evo.bin" FW file is not renamed to "mkstft28evo.cur" and on the next rebood the FW update process would execute again; it is a bootloader bug but it was fixed in the firmware
- includes PR #2825 (fixes some issues due to some Marlin updates)
2023.VIII.13:
- added an uploader for the patched bootloader for the Artillery MKS TFT28 with GD32F305VCT6
Just copy the file to the SD card and update your FW as usual. While flashing the patched bootloader there's a red dot and a progress bar. When the bootloader flashing is finished the progress bar gets filled and the red dot changes to a blinking green dot. After this you can proceed to upload your favorite regular firmware.
The newly flashed bootloader is the one that does the following:
- no more need for the "mks_font", "mks_pic" folders and "mks_config.txt" file for the FW update to be executed
- FW update doesn't erase the SPI flash anymore, no need to update fonts, icons and config at every FW update
- replaces the annoying long "beep" at boot with a short "chirp"
2023.VIII.11:
- added patched bootloader for the Artillery MKS TFT28 with GD32F305VCT6 ("GD32F305VC BootLoader v3.0.5 Patched.bin")
- no more need for the "mks_font", "mks_pic" folders and "mks_config.txt" file for the FW update to be executed
- FW update doesn't erase the SPI flash anymore, no need to update fonts, icons and config at every FW update
- removed the annoying long "beep" at boot, replaced with a short "chirp"
-Attention!- With this bootloader it is not possible to restore the original FW from SD card. The original bootloader is needed for that.
- added patched bootloader for the Artillery MKS TFT28 with GD32F305VCT6 ("GD32F305VC BootLoader v3.0.5 Chirp.bin")
- removed the annoying long "beep" at boot, replaced with a short "chirp", it retained all other original functionality
- fixed some Artillery TFTs not having touch sounds
- a new build was necessary as it is caused by HW differences (the file is: "MKS_GD_TFT28_V4_0.27.x Sound_Fixed.bin")
- added boot logo for Artillery printers
- to use the Artillery logo at boot, replace "Logo.bmp" file in the "bmp" folder
2023.VII.31:
- PR #2591 included
- PR #2701 included
- PR #2778 included
- PR #2793 included
- PR #2798 included
- PR #2799 included
- PR #2805 included
- PR #2807 included
- PR #2817 included
- PR #2818 included
- PR #2822 included
- eliminate some frequent casting thus reducing the size and increasing the speed of the FW
- rework of PR #2788 (which is a partial fix only and introduces a new bug)
- bugfix of issue #2789
- huge print stability enhancement as per fixing issue #2761
- added support for the Artillery MKS TFTs with GD32F305VCT6 MCU (all credits go to @ciotto), a feature request discussed here, an addition with some extra fixes as follows:
- RAM increased to 96K (from 64K)
- fixed flash size (originally was defined to 256K but the bootloder is taking up 28K space so only 228K remains for the FW)
- removed serial port 4 as this MCU has only 3 USART ports (the TFT would freeze in certain circumstances when trying to acces serial port 4)
- There is an issue right at the beginning of the RAM, whatever variable is there, their values are altered (probably by the bootloader). The compiled FW in ciotto's repository has an issue in the variable "fanCmd[]"; "fanCmd[4]" points to '\0' (the address is one value lower) and "fanCmd[5]" points to "106 P5 S%d\n" instead of "M106 P5 S%d\n" (the address is one value higher). It has been fixed in the linker script reserving a few bytes (0xF0) at the beginning of the RAM.
- added some instructions for this TFT's FW upgrade
- added bootloader v3.0.5 for the MKS TFT28 with GD32F305VCT6
- Supported Screens
- Software Repository
- Marlin Dependencies
- Connecting the TFT to the Mainboard
- Menus and Themes
- Firmware Update
- Configuration Update
- Touch Screen Calibration
- Hard Reset
- Customization
- Troubleshooting
- Version History
- Appendix
Only the TFTs listed below are currently supported. Trying to install the firmware on a TFT which is not supported can harm the hardware.
BTT TFT
BTT_TFT24_V1.1
BTT_TFT28_V1.0 and V3.0
BTT_TFT35_V1.0, V1.1, V1.2, V2.0, V3.0, E3_V3.0 and B1_V3.0
BTT_TFT43_V3.0
BTT_TFT50_V3.0
BTT_TFT70_V3.0
BTT GD TFT
BTT_GD_TFT24_V1.1
BTT_GD_TFT35_V2.0, V3.0, E3_V3.0 and B1_V3.0
BTT_GD_TFT43_V3.0
BTT_GD_TFT50_V3.0
BTT_GD_TFT70_V3.0
MKS TFT
MKS_TFT28_V3.0 and V4.0
MKS_GD_TFT28_V4
MKS_TFT32_V1.3 and V1.4
MKS_TFT32L_V3_0
MKS_TFT35_V1_0
WARNING: BTT does not officially provide MKS TFT hardware support. MKS TFT is maintained by open source contributors and BTT does not bear any risk of MKS TFT hardware using this firmware.
Firmware source: https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware
Main branch: Master
In the Master branch you will find:
- The most recent source code updates
- The most recent resources such as precompiled firmwares, themes, configuration and language files
IMPORTANT NOTE: The Master branch is currently the ONLY branch in the project to be used. The other currently existing branches develop and release-xx.27 are outdated and MUST NOT be used.
Minimum Marlin firmware version: 2.1.1
Distribution date: 2022-09-22
Firmware source: https://github.com/MarlinFirmware/Marlin/releases
To use all the features and functionalities supported by the TFT, the following options must be enabled in Marlin firmware.
General options which MUST be always activated:
EEPROM_SETTINGS
(in Configuration.h)
BABYSTEPPING
(in Configuration_adv.h)
AUTO_REPORT_TEMPERATURES
(in Configuration_adv.h)
AUTO_REPORT_POSITION
(in Configuration_adv.h)
EXTENDED_CAPABILITIES_REPORT
(in Configuration_adv.h)
MIN/MAX_SOFTWARE_ENDSTOPS
(in Configuration.h)
M114_DETAIL
(in Configuration_adv.h)
REPORT_FAN_CHANGE
(in Configuration_adv.h)
Options to support printing from onboard media:
SDSUPPORT
(in Configuration.h)
LONG_FILENAME_HOST_SUPPORT
(in Configuration_adv.h)
AUTO_REPORT_SD_STATUS
(in Configuration_adv.h)
SDCARD_CONNECTION ONBOARD
(in Configuration_adv.h)
Options to support dialog with host:
EMERGENCY_PARSER
(in Configuration_adv.h)
HOST_ACTION_COMMANDS
(in Configuration_adv.h)
HOST_PROMPT_SUPPORT
(in Configuration_adv.h)
HOST_STATUS_NOTIFICATIONS
(in Configuration_adv.h)
Options to support M73 with host:
Options to support dialog with host
(as pre requisite)
SET_PROGRESS_MANUALLY
(in Configuration_adv.h)
M73_REPORT
(in Configuration_adv.h)
Options to support M600 with host & (Un)Load menu:
Options to support dialog with host
(as pre requisite)
NOZZLE_PARK_FEATURE
(in Configuration.h)
ADVANCED_PAUSE_FEATURE
(in Configuration_adv.h)
PARK_HEAD_ON_PAUSE
(in Configuration_adv.h)
FILAMENT_LOAD_UNLOAD_GCODES
(in Configuration_adv.h)
Options to fully support Bed Leveling menu:
Z_MIN_PROBE_REPEATABILITY_TEST
(in Configuration.h)
G26_MESH_VALIDATION
(in Configuration.h)
Z_STEPPER_AUTO_ALIGN
(in Configuration_adv.h)
In order to use the Touch Mode on your screen:
- Connect the 5pin serial cable according to the manual of your mainboard
- Define a serial port in Marlin, to activate the port used by the TFT
- Make sure the same BAUDRATE is defined on both the Marlin and TFT firmwares
In case one of the three points above is not properly done, the message:
No printer attached!
will be shown at the top of the screen. This is because the TFT can not "see" the mainboard through the serial cable.
On TFT firmware, the baudrate can be changed in two ways:
- by menu: After the firmware is installed, the baudrate can be changed from Menu->Settings->Connection->S. Ports menu
- by configuration file: Set the parameter
serial_port
inconfig.ini
file with the proper baudrate (e.g.serial_port:P1:6
for baudrate 115200). Please, see Configuration section for configuringconfig.ini
file
In order to use the Marlin Mode (emulation mode) on your screen:
- In case your TFT does not have an EXP connector at all (TFT28 v1 for example), you can not use the Marlin emulator mode.
- In case your mainboard provides EXP1 and EXP2, you have to connect 2 ribbon cables connecting EXP1 and EXP2 of the mainboard to EXP1 and EXP2 of the TFT. In the Marlin firmware of your mainboard, make sure that ONLY
REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
is activated inConfiguration.h
and that all other controllers are Deactivated (especiallyCR10_STOCKDISPLAY
). - In case you have an "E3" mainboard which provides a single EXP connector, you have to connect 1 ribbon cable connecting EXP of the mainboard to EXP3 of the TFT. In case your TFT does not provide an EXP3 connector but only two 10pin connectors (TFT24 v1.1 for example) you will need a "Y-split" cable with one 10pin connector on one side (for the mainboard) and two 10pin connectors on the other side (for the TFT). In the Marlin firmware of your mainboard, make sure that ONLY
CR10_STOCKDISPLAY
is activated inConfiguration.h
and that all other controllers are Deactivated (especiallyREPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
).
Unified Menu Theme | The Round Miracle Theme by Acenotass |
---|---|
Use firmware, icons, and fonts from the Copy to SD Card root directory to update - Unified Menu Material theme folder |
Use firmware, icons, and fonts from the Copy to SD Card root directory to update - The Round Miracle theme folder |
Hybrid Red Material Theme by AntoszHUN | Hybrid Mono Material Theme by bepstein111 |
---|---|
Use firmware, icons, and fonts from the Copy to SD Card root directory to update - Hybrid Red Menu Material theme folder |
Use firmware, icons, and fonts from the Copy to SD Card root directory to update - Hybrid Mono Menu Material theme folder |
Rep Rap Firmware Dark Theme by xPew | |
---|---|
Use firmware, icons, and fonts from the Copy to SD Card root directory to update - Rep Rap Firmware Dark theme folder |
The TFT firmware update process is based on the following stages:
- Deployment Files: All the resources needed for the firmware update (up to four kinds of resources)
- Configuration: All the changes needed on configuration file before the firmware installation
- Installation: All the steps needed in order to install the firmware
- Post Installation: Post installation process in case of major changes applied by the installed firmware
The following sections provide all the resources needed for the firmware update (up to four kinds of resources).
Precompiled firmwares are available on Copy to SD Card root directory to update
folder.
For BTT TFTs, the firmwares use the naming convention BIGTREE_TFT*_V*.*.*.x.bin
.
For BTT GD TFTs, the firmwares use the naming convention BIGTREE_GD_TFT*_V*.*.*.x.bin
For MKS TFTs:
- The firmwares use the naming convention
MKS_TFT*_V*.*.*.x.bin
- Any binary file for an MKS firmware (e.g.
MKS_TFT28_V4.0.27.x.bin
) MUST be renamed toMKSTFT*.bin
(e.g.MKSTFT28.bin
,MKSTFT35.bin
etc.) in order to be recognized and installed by the TFT
For MKS GD TFTs:
- The firmwares use the naming convention
MKS_GD_TFT*_V*_*.*.x.bin
- Any binary file for an MKS firmware (e.g.
MKS_GD_TFT28_V4_0.27.x.bin
) MUST be renamed toMKSTFT*EVO.bin
(e.g.MKSTFT28EVO.bin
,MKSTFT35EVO.bin
etc.) in order to be recognized and installed by the TFT
1. In order to be able to update the TFTs FW some files/folders must be present on the SD Card:
- empty "mks_pic" folder (not applicable if using the patched bootloader)
- empty "mks_font" folder (not applicable if using the patched bootloader)
- empty "mks_config.txt" file (not applicable if using the patched bootloader)
MKS_GD_TFT28_V*_*.*.x.bin
renamed toMKSTFT28EVO.bin
2. With original bootloader upon FW update the SPI flash gets deleted so copy to the root of the SD Card:
- "TFT28" folder from the theme of your choice
- "config.ini"
- "language_xx.ini" (optional)
If using the patched bootloader than the above are optional, the new FW will let the user know if they are needed or not.
3. If the TFT doesn't start after the FW upgrade put an empty "reset.txt" on the SD Card and reboot the TFT.
After that redeploy the "config.ini" file to the root of the SD card and reboot the TFT again to reload the config file.
For example, for BTT TFT35 V3 select:
BIGTREE_TFT35_V3.0.27.x.bin
where:
BIGTREE_TFT35
: ModelV3.0
: Hardware version27.x
: Software version
NOTE:
For BTT TFT35, there are currently three different kinds of firmware available:
- V3.0
- E3_V3.0
- B1_V3.0
So, make sure to use the firmware matching your TFT screen.
Themes are available on Copy to SD Card root directory to update
folder.
The root folder for fonts and icons is TFT*
, where *
is the size of the TFT (e.g. TFT24
, TFT35
, TFT50
etc). Fonts and icons folder structure:
TFT*/font
: Includes the fonts in .fon format and a readme.mdTFT*/bmp
: Includes the icons in .bmp format and a readme.md
For MKS TFT32, the TFT28
folder has to be used and MUST be renamed to TFT32
in order to be recognized and installed by the TFT.
Templates for configuration file are available on Copy to SD Card root directory to update
folder.
The configuration file is named config.ini
.
NOTE: RepRap firmware users have to make their changes using the config_rrf.ini
template file and renaming it to config.ini
.
Optional language files are available on Copy to SD Card root directory to update/Language Packs
folder.
Language files use the naming convention language_*.ini
(e.g. language_it.ini
).
The firmware configuration can be modified by changing the config.ini
(or the renamed config_rrf.ini
) file using a simple text editor (make sure to use UTF encoding).
A configuration can be uploaded without the need to upload the firmware or the TFT folder again, as long as the firmware and the configuration file are from the same version (see Configuration Update).
NOTE: RepRap firmware users have to make their changes using the config_rrf.ini
template file and renaming it to config.ini
.
To edit the config.ini
file, follow the instructions here: Detailed Instructions.
NOTE: For devices with USB flash drive support, it is possible to update the icons, fonts, config and the language files from a USB flash drive in the same way it is done through an SD card. However, the firmware can only be updated using an SD card.
The following steps are needed in order to install the firmware:
-
Copy the precompiled
BIGTREE_TFT*_V*.*.*.bin
or your self compiled firmware, plus theTFT*
folder of your preferred theme along withconfig.ini
to the root of a blank SD card not greater than 8GB and formatted as FAT32: -
Optionally, copy one or more
language_*.ini
file(s) onto the SD card. Doing so, it will allow you to switch between English and the uploaded language(s) from the Language menu present in the TFT firmware. We recommend to upload the minimum amount of languages to keep the memory usage low. Thelanguage_*.ini
file can be edited to change the text shown on the TFT: -
Place the SD card with
BIGTREE_TFT*_V*.*.*.bin
, theTFT*
folder,config.ini
and the optionallanguage_*.ini
file(s) into the TFT's SD card reader and reset your TFT (or optionally - power cycle your printer) to start the update process:⚠️ Failing to update your icons & fonts will result in missing icons and/or unreadable text⚠️ Update process shown on TFT screen:
A successful update looks like this on the screen:
... and the name of the elements on the SD card changes to this:
In case one or several parts of the update failed, an error will be shown. Follow the information on the screen to update the missing or outdated elements:
⚠️ Errors during the update can not be ignored and must be solved before using the TFT⚠️ After the update is done and the files are renamed, it is possible to reuse them again. To do so, change the name of the element(s) to the pre-update name and start the update process again.
-
After a successful update, the TFT will switch to one of the following menus:
- Main menu: The update is completed and you can use the TFT
- Touch Screen Calibration menu: A post installation process is needed before switching to Main menu. Please, see Post Installation section for completing the post installation process
TIP: Format the SD card after the firmware update in case you would like to print from it.
In case major changes have been applied by the installed firmware, a post installation process consisting on touch screen calibration is automatically started.
Please, see Touch Screen Calibration section for completing the process.
Please, see Configuration section for configuring config.ini
file.
NOTES:
- For devices with USB flash drive support, it is possible to update the icons, fonts, config and the language files from a USB flash drive in the same way it is done through an SD card. However, the firmware can only be updated using an SD card
- The following procedure can be also applied to any combination of resources (e.g. only icons, icons + fonts, config + language files etc.)
In order to update the firmware configuration:
- Copy your edited
config.ini
file to the root of the SD card. The SD card capacity should be less than or equal to 8GB and formatted as FAT32 - Insert the SD card into the TFT's SD card slot and press the reset button of the TFT (or power cycle your printer)
- The TFT's configuration will update from the configuration file on reboot
- The
config.ini
file will be renamed toconfig.ini.CUR
after updating the configuration
The touch screen calibration process begins showing a white screen with a red dot in the upper right corner and the following text:
Touch Screen Calibration - Please click on the red dot
Once the process is started, to calibrate the touch screen press (with your finger or a stylus):
- the red dot in the upper left corner
- then the red dot in the upper right corner
- then the red dot in the lower right corner
- and finally, the black dot in the middle of the screen to finish the calibration
Repeat the process in case the following message is shown:
Adjustment failed, please try again.
The touch screen calibration process can be forced in two ways:
- by menu: The calibration can be started from Menu->Settings->Screen->TSC Adjust menu
- by hard reset: The calibration is started at the end of the hard reset process (see Hard Reset)
NOTES:
- The hard reset process is typically used as the last chance when the firmware is not properly working (e.g. in case of freezes, errors on screen etc.)
- Unless the default hard coded settings have been properly configured (e.g. a self compiled firmware was installed), after an hard reset the TFT typically needs to be reconfigured with the proper
config.ini
file (see Configuration Update)
The hard reset process consists in:
- resetting the TFT's configuration to the TFT's default hard coded settings
- starting the touch screen calibration process (see Touch Screen Calibration) at startup before moving to Main menu
In order to hard reset the firmware:
- Create a blank file named
reset.txt
- Copy the
reset.txt
file to the root of the SD card. The SD card capacity should be less than or equal to 8GB and formatted as FAT32 - Insert the SD card into the TFT's SD card slot and press the reset button of the TFT (or power cycle your printer)
- The TFT's configuration will be reset to the TFT's default hard coded settings and the touch screen calibration process will start on reboot
- The
reset.txt
file will be renamed toreset.txt.DONE
after the touch screen calibration process is completed
When the default hard coded settings are properly configured for a TFT and the TFT's basic function such as surfing on the menus is working, in case of issues the user can opt to apply only a configuration reset (soft reset) instead of an hard reset.
In order to reset to default settings:
- Enter on Menu->Settings->Feature menu
- Select and press on Reset default settings item
- Press on Ok button to confirm the reset
- Leave the menu
Please, see Customization Guides section for detailed information.
View full instructions
- Setup Visual Studio Code with PlatformIO instructions
- Click on the PlatformIO icon (①) and then click on Open Project (②):
- Find the BIGTREETECH firmware source directory, then click Open:
- After opening the project, edit
platformio.ini
and change thedefault_envs
to one that matches your TFT model and version:;BIGTREE_TFT35_V1_0 ;BIGTREE_TFT35_V1_1 ;BIGTREE_TFT35_V1_2 ;BIGTREE_TFT35_V2_0 ;BIGTREE_TFT35_V3_0 ;BIGTREE_TFT35_E3_V3_0 ;BIGTREE_TFT28_V1_0 ;BIGTREE_TFT28_V3_0 ;BIGTREE_TFT24_V1_1 ;MKS_TFT32_V1_3 ;MKS_TFT32_V1_4 ;MKS_TFT32_V1_4_NOBL ;MKS_TFT28_V3_0 ;MKS_TFT28_V4_0 ;MKS_TFT28_NEW_GENIUS ;MKS_TFT35_V1_0 [platformio] src_dir = TFT boards_dir = buildroot/boards default_envs = BIGTREE_TFT35_V3_0
- Click the check mark (✓) at the bottom of VSCode or press
Ctrl
+Alt
+B
(Windows) /Ctrl
+Option
+B
(macOS) to compile: - A
BIGTREE_TFT*_V*.*.*.bin
file will be generated in the hidden.pio\build\BIGTREE_TFT*_V*_*
folder. Follow the update process outlined in the Firmware Update section above to update your TFT to the latest version
TIP: In case there is a problem compiling the TFT firmware try to restart VSC. If this does not help and you are using macOS, delete the packages and platforms folders usually present under the folder /Users/***username***/.platformio/
.
All the precompiled firmwares available on Copy to SD Card root directory to update
folder are compiled to support the standard (horizontal) screen orientation.
In case the TFT needs to be placed with a vertical orientation (e.g. 90°), the firmware needs to be compiled with the portrait mode support and installed following the procedure below:
- Start VSC
- Open
platformio.ini
- Uncomment (remove the leading
;
character) the following line:
; -DPORTRAIT_MODE="_portrait" ; uncomment here to enable Portrait Mode .bin firmware generation
- Compile the firmware
- The binary file named
BIGTREE_TFT*_V*.*.*.x_portrait.bin
is created (see the presence of the _portrait suffix) - Rename the binary file to the standard name
BIGTREE_TFT*_V*.*.*.x.bin
- Copy
BIGTREE_TFT*_V*.*.*.x.bin
, theTFT*
folder,config.ini
and alsoreset.txt
(needed to force the screen calibration) into the SD card - Proceed with the firmware update (following the usual procedure)
In case the firmware update process failed:
- Verify that you have been using the firmware matching your TFT
- Try to upload the firmware, the
TFT*
folder andconfig.ini
again (like described above) using a new SD card - 8GB or smaller, FAT32 formatted
NOTE: Some uploads worked fine after executing a low level format of the SD card and not a quick format.
In case:
- The screen remains black or the brightness is not stable
- The screen does not react after pressing a button or executes clicks by itself or does something similar
and the reset described above did not help, try the following:
- Remove the TFT from the enclosure and disconnect everything from the TFT, including the cable to the mainboard
- Cut a USB cable you do not need anymore and connect the red and black wire to 5V and GND of the TFT
- Do not use the unshielded wires directly but use a 2 pin connector instead
- Power up the TFT and try to reset the TFT or to instal a new firmware like described in this document
NOTE: With only power supplied, you should be able to navigate through the menus using the touchscreen and even to switch to Marlin Mode (if available). Marlin Mode will not show any interface without a proper EXP connection (see Marlin Mode Setup).
Please, see BIGTREETECH-TouchScreenFirmware/releases section for a complete version history.
OctoPrint, ESP3D, Pronterface etc, connected to a TFT's serial port, can browse files on both the TFT's and mainboard's media devices and start a print that will be handled by the host (TFT or mainboard). The following actions and the related triggering G-codes are currently supported by the TFT fw:
TFT SD | TFT USB | onboard media | |
---|---|---|---|
ACTION | G-CODE | G-CODE | G-CODE |
init media device | M21 <S> <U> |
||
release media device | M22 |
||
list files | M20 SD:<folder path> or M20 S <folder path> Examples: M20 SD: M20 SD:/test M20 S /test |
M20 U:<folder path> or M20 U <folder path> |
M20 |
select file | M23 SD:<file path> or M23 S <file path> Examples: M23 SD:cap.gcode M23 SD:/test/cap2.gcode M23 S /test/cap2.gcode |
M23 U:<file path> or M23 U <file path> |
M23 <file path> |
start/resume print | M24 |
M24 |
M24 |
pause print | M25 |
M25 |
M25 |
pause print and park head | M125 |
M125 |
M125 |
abort print | M524 |
M524 |
M524 |
report print status | M27 [C] |
M27 [C] |
M27 [C] [S<seconds>] |
start file write | M28 SD:<file path> or M28 S <file path> Examples: M28 SD:cap.gcode M28 SD:/test/cap2.gcode M28 S /test/cap2.gcode |
M28 U:<file path> or M28 U <file path> |
M28 [B1] <file path> |
stop file write | M29 |
M29 |
M29 |
delete file | M30 SD:<file path> or M30 S <file path> Examples: M30 SD:cap.gcode M30 SD:/test/cap2.gcode M30 S /test/cap2.gcode |
M30 U:<file path> or M30 U <file path> |
M30 <file path> |
firmware info | M115 TFT |
M115 TFT |
M115 |
play tone | M300 TFT [P<ms>] [S<Hz>] |
M300 TFT [P<ms>] [S<Hz>] |
M300 [P<ms>] [S<Hz>] |
NOTES:
- TFT's media devices, if any, does not need to be initialized/released
- When present, the G-code's options (e.g.
M27 C
) have the same meaning like in Marlin fw
OctoPrint, ESP3D, Pronterface etc, connected to a TFT's or mainboard's serial port, can host a print (print handled by the host) and optionally can trigger some actions to the TFT sending specific G-codes. The following actions and the related triggering G-codes are currently supported by the TFT fw:
ACTION | G-CODE |
---|---|
start | M118 P0 A1 action:print_start |
end | M118 P0 A1 action:print_end |
cancel | M118 P0 A1 action:cancel |
pause | M118 P0 A1 action:pause |
resume | M118 P0 A1 action:resume |
remaining time progress | M118 P0 A1 action:notification Time Left <XX>h<YY>m<ZZ>s or M117 Time Left <XX>h<YY>m<ZZ>s Examples: M118 P0 A1 action:notification Time Left 02h04m06s M117 Time Left 02h04m06s |
print layer progress | M118 P0 A1 action:notification Layer Left <XXXX>/<YYYY> or M117 Layer Left <XXXX>/<YYYY> Examples: M118 P0 A1 action:notification Layer Left 51/940 M117 Layer Left 51/940 |
file data progress | M118 P0 A1 action:notification Data Left <XXXX>/<YYYY> or M117 Data Left <XXXX>/<YYYY> Examples: M118 P0 A1 action:notification Data Left 123/12345 M117 Data Left 123/12345 |
When the trigger print_start
is received, the TFT switches to Printing menu.
When the trigger print_end
or cancel
is received, the TFT Printing menu is finalized (statistics available etc.).
When on Printing menu, pressing on the pause, resume and stop buttons will trigger to the remote host the following notifications, respectively:
NOTIFICATION | ACK MESSAGE |
---|---|
pause | //action:notification remote pause |
resume | //action:notification remote resume |
cancel | //action:notification remote cancel |
The remote host must properly handle the received notifications. For example, if //action:notification remote pause
is received then the remote host must effectively pause the print and send M118 P0 A1 action:pause
in order to trigger the pause action to the TFT.
NOTES:
- A new plugin on OctoPrint implementing the above protocol should be the preferable way (available to everyone)
- With the exception of TFT70, the maximum number of displayable layer count is 999 (there's no space to display layer number and count if the layer count is above 999)
The TFT can display embedded G-code thumbnails in the file viewer using two different flavors:
- Bigtreetech-style
- PrusaSlicer-style
The first type is to store the thumbnails at a specific location in the G-code file using a dedicated Cura plugin or external post-processing script. The thumbnail's image data is raw encoded in a format which can be displayed on the TFT without any complex image transformation. Displaying these embedded thumbnails at the TFT is the fastest approach and suitable for all different BigTreeTech's TFT variants. Downside is that you either need a dedicated plugin, for example the BTT 3D Plug-In Suit, or you have to use the post-processing script.
The other type is to store the thumbnails using dedicated comments (thumbnail begin...
and thumbnail end
) which is implemented in stock by some slicers like Prusa-Slicer.
The thumbnail's image data is a PNG file encoded in Base64 which cannot be displayed directly on the TFT:
A base64 decoding and png decoding needs to be performed which is quite complex for the TFT.
Displaying these thumbnails is slower but more flexible.
Due to the memory requirements it is not suitable for all the different TFT variants (only for those with RAM_SIZE > 96
).
Thumbnail generation needs to be specifically enabled in Prusa-Slicer. Under Printer Settings at the G-code thumbnails settings you have to enter the specific required thumbnail image size for your TFT.
Thumbnail image sizes are:
70x70
: TFT24 / TFT2895x80
: TFT43 / TFT5095x95
: TFT35160x140
: TFT70
If this setting is not visible within the Prusa-Slicer you need to enable Expert Settings Mode:
The most recent version of the standard bigtreetech TFT firmware has built in support for RepRap firmware. The pre-built images have this enabled by default.
There is now an RRF config file. It needs to be renamed from config_rrf.ini
to config.ini
for updating the configuration of the TFT for RRF.
Add the following line to your config.g
to enable the screen: M575 P1 S2 B57600
.
- Auto detect fw type + separate config.ini for easier setup
- Temperature/movement/cooling status monitoring and control
- Print status monitoring with mid-print tuning/pausing
- Macro support
- Print from onboard/external SD card
- Please see RRF further tweaks #2278 for more information.
- Thumbnail and menu system support for onboard G-codes
- Load/unload menu
- PID tune menu
The following mainboards are covered by this document:
- MKS GEN_L v1.0
- MKS SGEN (LPC1769)
- MKS SGEN_L v1.0 (LPC1768)
- MKS SGEN_L v2.0 (LPC1769)
The TFT35 E3 V3.0 has 3 cables to connect to the mainboard. Two 10 pin ribbon cables and one 5 pin serial cable. The 2 ribbon cables connect to the EXP1 and the EXP2 connections on both the TFT35 E3 V3.0 and the MKS mainboards.
The RS232 cable is connected to the RS232 connection on the touchscreen, with the other end connecting to the AUX1 connection on the mainboard. The RS232 cable has 5 wires. One end has a single 5 wire connector that goes to the RS232 connector on the touchscreen, and the other end has two connectors, one has 4 wires, and the second one has one wire. That single wire is for the Reset and is not used on these MKS mainboards. The 4-pin connector plugs into the AUX1 connection. It must connect to the top row of pins when looking at the socket with the notch facing away from the mainboard and must be also plugged in with the 5v+ wire connected to the first pin in the upper left corner of the socket. The RESET wire is not connected to anything.
NOTE: On the MKS mainboards there is an issue that involves at least the MKS GEN_L, MKS SGEN, and MKS SGEN_L models. The EXP1 and EXP2 connections have the socket shell installed wrong way around. The notch that indexes the cable should be facing towards the mainboard. If you get a blank screen on the TFT35 E3 V3.0 touchscreen after connecting the two EXP cables and turning the printer on, turn printer off and disconnect the 10 pin cables from either the touch screen or the mainboard and using small diagonal cutters trim the tab down to be as close to flush as you can get on both cables (and only on one end) and plug them back in with the trimmed tab now facing the mainboard.
The second workaround for this issue is to carefully pry the two shells surrounding the pins on the mainboard upwards until they clear the pins. Do NOT use a metal tool for this, use a sturdy plastic or whalebone prying tool. Turn the shell 180 degrees and align the pins with the holes in the shells and push the shells back on with your thumb. Do not push the shell back on with something that could cause damage if it were to slip. Once the shells are installed you can use the stock (unaltered) cables as they are.
Edit the Configuration.h
file and enable (uncomment) REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
. Rebuild and deploy the Marlin firmware to your 3D Printer.
Statistics as filament length, filament weight and filament cost can be embedded into the G-code. After the print is finished there will be an infobox that you can click and a popup will present you the printed filename (limited to the first 25 characters), the time needed for the print, the filament length used, the filament weight and its cost. In the case of multi-filament usage the statistics will show the sum of all individual data (sum of length, sum of weight, sum of cost). The statistic data in the G-code must have the following format (a good practice would be to include this at the beginning of the G-code):
M118 P0 filament_data L:{12.3456}m
L: represents the length in metersM118 P0 filemant_data W:{1.23456}g
W: represents the weight in gramsM118 P0 filament_data C:{0.1234}
C: represents the cost without a unit
The values of every filament data can be in a brackets, parentheses, apostrophes, etc. or without them, measurement units can be there or not.
So M118 P0 filament_data L:(12.3456)m
, M118 P0 filament_data L:12.3456meters
, M118 P0 filament_data L:[12.3456]
and so on are all valid formats.
For multi-filament print statistics the data for each used filament should be written, they can be separated by comma, space, asterix, whatever, except ;
and .
.
Examples for multi-filament:
M118 P0 filament_data L:(12.3456, 8.2520974)m
M118 P0 filament_data W: 24.87652 15.568264 gramm
M118 P0 filament_data C:[1.3456], [0.56024]
The inclusion of the filament data into the G-code can be automated. In Cura all you have to do is to insert the following into the Start G-Code:
M118 P0 filament_data L:{filament_amount}m
M118 P0 filament_data W:{filament_weight}g
M118 P0 filament_data C:{filament_cost}
In case the G-code file has been generated using the BTT 3D Plug-In Suit, the data is automatically added.
In case filament data is not present in the G-code, the filament length data is calculated during print. Length is calculated regardless of using the TFT USB, TFT SD or the onboard media. Calculations are done in both absolute or relative extrusion mode. Filament data takes into account the flow rate also but with a caveat. It has to be the same flow rate during the entire time of the printing, because the end result is calculated based on the flow rate at the time the print has finished. If flow rate changes during the print the results will not be accurate anymore.