Stripped down version of BIGTREETECH-TouchScreenFirmware which only supports ST7920 emulation (Marlin Mode)

Overview

NoTouchScreenFirmware

Stripped down version of BIGTREETECH-TouchScreenFirmware which only supports ST7920 emulation (Marlin Mode). This project only uses peripheral drivers supplied by the screen manufacturer and uses it's own library to parse the ST7920 commands.

What it does and what not

This firmware only emulates a ST7920. There is no support for touch, fonts, icons, etc. ... I only tested the firmware with the TFT35v3. Others might work - or not. If someone wants to add support for other screens as well, this is very welcome. Don't blame me if it does not work for your display, if it burns down your house or causes any other harm.

Supported BTT screens

Precompiled binares can be found in the binares folder.

Environment Tested
BIGTREE_TFT24_V1_1 YES
BIGTREE_TFT28_V3_0 NO
BIGTREE_TFT35_B1_V3_0 NO
BIGTREE_TFT35_E3_V3_0 YES
BIGTREE_TFT35_V3_0 YES
BIGTREE_TFT43_V3_0 NO
BIGTREE_TFT50_V3_0 NO
BIGTREE_TFT70_V3_0 NO
MKS_28_V1_0 NO
MKS_32_V1_4 NO
MKS_32_V1_4_NOBL NO

Installation and configuration

Check out the wiki for installation instructions and example configurations.

Further development

This project is ment not to be BTT exclusive. To achieve this goal we need to move away from the BTT sources and on to a more flexible framework. If you want your screen to be supported, feel free to create a MR.

Support

If you like this project and/or want to support further development you might consider to ko-fi or Buy Me A Coffee

Comments
  • BTT GTR and TFT35v3 E3 not working

    BTT GTR and TFT35v3 E3 not working

    I am running an TFT35 E3 on a GTR board with Klipper. I DL'd the config.ini from BTT and the Notouchscreen binary "BIGTREETECH-TFT35_V3.0_E3.26.x.bin" and put them on an SD, inserted and restarted. Now it just says ST7920 Ready. Please let me know what I need to change.

    opened by bakaufman 73
  • BIGTREE_TFT35_V3.0_E3

    BIGTREE_TFT35_V3.0_E3

    Commit: 9e32d731e2bc118e29bcdaf2b2336dc93e847faa Display: BIGTREE_TFT35_V3.0_E3

    Only showing "NoTouchFW V1.1" on a otherwise black screen.

    Thanks for keeping working on it!

    opened by Sineos 16
  • Initialize the PS_ON-Pin to HIGH

    Initialize the PS_ON-Pin to HIGH

    Can you initialize the PS_ON pin to HIGH on boot so that a connected BTT relay 1.2 does not automatically shuts down after 15 seconds? I know there is no point in keeping the relay connected this way, but it's the original wiring.

    BIGTREETECH-TouchScreenFirmware/TFT/src/User/API/extend.c

    // Power Supply Control pins Initialization
    void PS_ON_Init(void)
    {
      GPIO_InitSet(PS_ON_PIN, MGPIO_MODE_OUT_PP, 0);
      GPIO_SetLevel(PS_ON_PIN, infoSettings.ps_active_high);
    }
    
    opened by emtrax-ltd 14
  • Help needed (BTT SKR mini e3 v2 & TFT35 E3 V3)

    Help needed (BTT SKR mini e3 v2 & TFT35 E3 V3)

    So im poking around at the TFT35 E3 V3.0 screen for a few hours now and im stuck...

    What i got so far:

    • I installed the matching noTouchScreenFirmware in Version 1.2 successfully
    • i see on screen "ST7920Emulator ready"

    But im not getting any further...

    Im using a BTT SKR mini e3 v2 with klipper and my klipper config for the screen looks like this:

    [board_pins]
    aliases:
        # EXP1 header
        EXP1_1=PB5, EXP1_3=PA9,   EXP1_5=PA10, EXP1_7=PB8, EXP1_9=<GND>,
        EXP1_2=PA15, EXP1_4=<RST>, EXP1_6=PB9,  EXP1_8=PB15, EXP1_10=<5V>
    
    [display]
    lcd_type: st7920
    cs_pin: EXP1_7
    sclk_pin: EXP1_6
    sid_pin: EXP1_8
    encoder_pins: ^EXP1_5, ^EXP1_3
    click_pin: ^!EXP1_2
    
    opened by jappyjan 11
  • Dimming

    Dimming

    Thanks for keeping it up. I can confirm that https://github.com/teeminus/NoTouchScreenFirmware/commit/37e3f05072bee8606ad9ce6f2cb3f8091a147846 works for my setup.

    Is it possible to control dimming from within Klipper?

    opened by Sineos 9
  • Rotated screen on Artillery Sidewinder X1

    Rotated screen on Artillery Sidewinder X1

    Hi, i tried MKSTFT28.bin on my Artillery Sidewinder X1 with a MKS TFT28 3.2, and it flashed without problems and now displays the "ST7920Emulator ready" screen, but i guess due to how the screen is built into the printer case, all text is upside down. Can you maybe create a version that flips the output vertically?

    opened by jangrewe 8
  • Feature Request: Brightness for supported models

    Feature Request: Brightness for supported models

    Amazing work with this firmware, it just works perfectly :)

    I'm trying to add brightness support through PWM, but it seems that the screen just blinks instead reducing the brightness. I'm probably doing something wrong as I'm not super familiar with the code.

    I'm wondering if this would be something you could add and let the user define in some .h file for supported models?

    Thanks a lot for your great work again!

    enhancement 
    opened by RomRider 8
  • TFT35 V3 + Skr 1.4 Turbo correcct values

    TFT35 V3 + Skr 1.4 Turbo correcct values

    Not an issue, but rather a correction.. Tried connecting my 1.4 Turbo with TFT35 V3 screen, as per the template posted here and it was giving me an error, the values below worked for me ..

    image

    `

    opened by gitxmax 7
  • unable to flash firmware / revert to BT firmware

    unable to flash firmware / revert to BT firmware

    Hi there,

    I wanted to reflash my TFT35 to BTT firmware, and no mater what SD card or USB stick I choose, it does not flash the firmware. I renamed the .bin to firmware.bin, FIRMWARE.bin and took he original name... nothing works.

    opened by cropduster 7
  • BTT LCD 24 & SKR 1.3 Not working past Ready msg.

    BTT LCD 24 & SKR 1.3 Not working past Ready msg.

    I followed the previous thread on Klipper where you guided on how to make BTT's firmware to function in Marlin mode. I compiled that one and everything worked, except some wierd menu artifacts and some other small stuff.

    However, wanted to confirm the NoTouch working instead. So i have tried both downlaoded the precompiled binary and i have also tried to compile myself. In both cases the LCD is stuck at NoTouchFw V1.2 with ST7920Emulator ready.

    Running the same pin config in Klipper as i did with the "original" firmware, reflashed it and that one works. But i want the NoTouch to function instead.

    This is what i have in Klipper:

    [board_pins]
    aliases:
        EXP1_1=P1.30, EXP1_3=P1.18, EXP1_5=P1.20, EXP1_7=P1.22, EXP1_9=<GND>,
        EXP1_2=P0.28, EXP1_4=P1.19, EXP1_6=P1.21, EXP1_8=P1.23, EXP1_10=<5V>,
        EXP2_1=P0.17, EXP2_3=P3.26, EXP2_5=P3.25, EXP2_7=P1.31, EXP2_9=<GND>,
        EXP2_2=P0.15, EXP2_4=P0.16, EXP2_6=P0.18, EXP2_8=<RST>, EXP2_10=<NC
    
    [display]
    lcd_type: st7920
    cs_pin: EXP1_4
    sclk_pin: EXP1_5
    sid_pin: EXP1_3
    encoder_pins: ^EXP2_5, ^EXP2_3
    click_pin: ^!EXP1_2
    

    Any tips?

    opened by CraXyOW3 7
  • BTT GTR and TFT70v3 Not Working.

    BTT GTR and TFT70v3 Not Working.

    Now I noticed you have another challenge open in regards to the GTR board, so I am wondering if it may be related to that and not the screen. I did notice some of the GTR pinouts had been confused... So I have more information for this one...

    From Marlin -> pinouts -> GTR:

    /**
     *               -----                                    -----
     *           NC | · · | GND                           5V | · · | GND
     *        RESET | · · | PB10(SD_DETECT)    (LCD_D7)  PG5 | · · | PG6  (LCD_D6)
     *   (MOSI)PB15 | · · | PH10(BTN_EN2)      (LCD_D5)  PG7 | · · | PG8  (LCD_D4)
     *  (SD_SS)PB12 | · · | PD10(BTN_EN1)      (LCD_RS)  PA8 | · · | PC10 (LCD_EN)
     *    (SCK)PB13 | · · | PB14(MISO)        (BTN_ENC) PA15 | · · | PC11  (BEEPER)
     *               -----                                    -----
     *               EXP2                                     EXP1
     */
    
    #define LCD_PINS_RS                     PA8
    #define BTN_EN1                         PD10
    #define BTN_EN2                         PH10
    #define LCD_PINS_ENABLE                 PC10
    #define LCD_PINS_D4                     PG8
    

    The TFT70v3 does work under Marlin with these settings.

    From the Klipper GTR Board Config File:

    ########################################

    EXP1 / EXP2 pins - GTR Board

    ########################################

    [board_pins] aliases: # EXP1 header EXP1_1=PC11, EXP1_3=PC10, EXP1_5=PG8, EXP1_7=PG6, EXP1_9=, EXP1_2=PA15, EXP1_4=PA8, EXP1_6=PG7, EXP1_8=PG5, EXP1_10=<5V>, # EXP2 header EXP2_1=PB14, EXP2_3=PD10, EXP2_5=PH10, EXP2_7=PB10, EXP2_9=, EXP2_2=PB13, EXP2_4=PB12, EXP2_6=PB15, EXP2_8=, EXP2_10=

    ######################################################################

    "RepRapDiscount 128x64 Full Graphic Smart Controller" type displays

    ######################################################################

    Display Definitions & Mappings

    #display_group: _default_16x4 #cs_pin: LCD_PINS_ENABLE / EXP1_3 / PC10 #sclk_pin: LCD_PINS_D4 / EXP1_5 / PG8 #sid_pin: LCD_PINS_RS / EXP1_4 / PA8 #encoder_pins: BTN_EN1, BTN_EN2 / EXP2_3, EXP2_5 / PD10, PH10 #click_pin: BTN_ENC / EXP1_2 / PA15 #spi_software_sclk_pin: [SCK??|LCD_PINS_D4] / EXP2_2 / PB13 (SCK???) #spi_software_mosi_pin: MOSI / EXP2_6 / PB15 #spi_software_miso_pin: MISO / EXP2_1 / PB14

    ######################

    Tried & Did Not Work

    #######################

    [display] lcd_type: st7920 #display_group: _default_16x4 cs_pin: EXP1_3 sclk_pin: EXP1_5 sid_pin: EXP1_4 encoder_pins: ^EXP2_3, ^EXP2_5 click_pin: ^!EXP1_2 #kill_pin: ^!EXP2_8

    #[display] #lcd_type: emulated_st7920 #display_group: _default_16x4 #en_pin: EXP1_3 #spi_software_sclk_pin: EXP1_5 #spi_software_mosi_pin: EXP1_4 #spi_software_miso_pin: EXP1_6 #encoder_pins: ^EXP2_3, ^EXP2_5 #click_pin: ^!EXP1_2

    #[display] #lcd_type: emulated_st7920 #display_group: _default_16x4 #en_pin: EXP1_3 #spi_software_sclk_pin: EXP2_2 #spi_software_mosi_pin: EXP2_6 #spi_software_miso_pin: EXP2_1 #encoder_pins: ^EXP2_3, ^EXP2_5 #click_pin: ^!EXP1_2

    ######################

    Yet To Try

    #######################

    #[display] #lcd_type: emulated_st7920 #display_group: _default_16x4 #en_pin: EXP1_3 #spi_software_sclk_pin: EXP1_5 #spi_software_mosi_pin: EXP2_6 #spi_software_miso_pin: EXP2_1 #encoder_pins: ^EXP2_3, ^EXP2_5 #click_pin: ^!EXP1_2

    NOTES:

    • I have loaded 1.3 of the firmware onto the TFT70v3 and it does say ST7920 Emulator Ready
    opened by jbeima 5
  • Knob LED on TFT35 E3 v3

    Knob LED on TFT35 E3 v3

    Everything works great with the firmware. I searched and looked at the code some and could not find on how to control the LED on the knob itself for a TFT35 E3 v3? Is that something the firmware is set to do?

    opened by samwiseg0 18
  • Screen will always get garbled after a while.

    Screen will always get garbled after a while.

    Used both modes (emulated and not), but in both cases the screen (TFT35-B1 in a Biqu B1) always gets garbled after a little while.

    #[display]
    #lcd_type: st7920 
    #cs_pin: EXP1_4
    #sclk_pin: EXP1_5
    #sid_pin: EXP1_3
    #encoder_pins: ^EXP2_5, ^EXP2_3
    #click_pin: ^!EXP1_2
    
    [display]
    lcd_type: emulated_st7920
    spi_software_miso_pin: EXP2_1
    spi_software_mosi_pin: EXP1_3
    spi_software_sclk_pin: EXP1_5
    en_pin: EXP1_4
    encoder_pins: ^EXP2_3, ^EXP2_5
    click_pin: ^!EXP1_2
    

    Starting to think it might be some interference going on with the EXP1/EXP2 cables internally, but these issues don't surface when using the normal fw with Marlin mode. This makes me wonder why this implementation suffers from this issue.

    opened by hapklaar 34
Releases(V1.3.1)
  • V1.3.1(Nov 3, 2021)

  • v1.3(Mar 2, 2021)

    Changes:

    • Added support to rotate screen by 180 degree. Can be enabled by uncommenting the define LCD_ROTATE_180 in features.hpp.
    • Added static dimming of backlight. Can be enabled by uncommenting the define LCD_PWM_DIMMER in features.hpp. Brightness levels can be changed there as well.
    • Added support for turning off display backlight on inactivity. Can be enabled by uncommenting the define LCD_IDLE_OFF in features.hpp. Idle timeout can be changed there as well. Rotating or clicking the encoder knob will reactivate the display.
    • Added feature to restart the SPI bus by pressing the encoder knob for at least 3 seconds. The display backlight will turn off and on again to indicate that the SPI bus has been reset.
    • Added support for CS/Enable pin. This features will automatically reset the SPI bus when signalled by the display driver.
    • Added debug binaries to check if the display receives data from the 3D printer. A more detailed description of this firmware can be found in the wiki.

    Please note: Due to the changes of the CS/Enable pin behaviour, your screen might stop working in your current configuration. However, a fix for this problem has been added to Klipper v0.9.1-290 which is described in the wiki.

    Source code(tar.gz)
    Source code(zip)
  • v1.2(Feb 4, 2021)

  • v1.1(Feb 3, 2021)

    Completely reimplemented the ST7920 emulator and made it publically available here: ST7920Emulator

    The new emulator now fully supports Klipper and has no more screen artifacts (tested on the TFT35v3).

    Also please note:

    • The SPI which is used to receive data from Klipper/Marlin is now always ON
    • Unsupported BTT screens have been removed
    Source code(tar.gz)
    Source code(zip)
  • v1.0(Feb 3, 2021)

Owner
null
Juno 60 emulation synthesizer

Hera Juno 60 emulation synthesizer, with support of MPE. About This synthesizer is considered of alpha quality currently. It can produce some decent s

JP Cimalando 32 Dec 31, 2022
A top-down shooter made for the raylib 5K gamejam.

ANTISPELL Description A top-down shooter where you have to use your enemies' attacks to spell your spells! Features Absorb letters getting close to en

Francisco Javier Andrés Casas Barrientos 3 Apr 9, 2022
Internet Key Exchange version 2 (IKEv2) daemon - portable version of OpenBSD iked

Portable OpenIKED This is a port of OpenBSD's OpenIKED to different Unix-like operating systems, including Linux, macOS and FreeBSD.

OpenIKED 27 Dec 4, 2022
This is a Header-only c++ string implentation which specializes in dealing with small strings. 🧵

string-impl This is a Header-only c++ string implentation which specializes in dealing with small strings. ?? Usage ⌨ Instantiation A string can be in

null 1 Oct 26, 2022
C++17 and reactor mode task/timer executor

reactor A C++17 single-file header-only, based on reactor mode, It can add tasks and timers and file descriptor to reactor(one loop one thread) Simple

null 7 Sep 15, 2021
An attempt to restore and adapt to modern Win10 version the Rootkit Arsenal original code samples

rootkit-arsenal-guacamole An attempt to restore and adapt to modern Win10 version the Rootkit Arsenal original code samples All projects have been por

Matteo Malvica 51 Nov 6, 2022
CE-Plugin - 📃 Support Version Cheat Engine 6.5~Higher

?? Support Version Cheat Engine 6.5~Higher ?? Preview ❄️ Reference & Thanks Cheat Engine[Debugger with plugin] Unicorn[CPU emulator framework] Capston

kanren3 1 Jul 25, 2022
Simple password/cookies/history/bookmarks stealer/dumper for chrome all version (includes 80+)

Simple password/cookies/history/bookmarks stealer/dumper for chrome all version (includes 80+), microsoft edge browser,includes all chromium based browsers, and all gecko based browser (firefox etc.).

null 75 Dec 16, 2022
The libxo library allows an application to generate text, XML, JSON, and HTML output using a common set of function calls. The application decides at run time which output style should be produced.

libxo libxo - A Library for Generating Text, XML, JSON, and HTML Output The libxo library allows an application to generate text, XML, JSON, and HTML

Juniper Networks 253 Dec 10, 2022
A Cobalt Strike Beacon Object File (BOF) project which uses direct system calls to enumerate processes for specific loaded modules or process handles.

FindObjects-BOF A Cobalt Strike Beacon Object File (BOF) project which uses direct system calls to enumerate processes for specific modules or process

Outflank B.V. 247 Dec 28, 2022
A Beacon Object File (BOF) for Cobalt Strike which uses direct system calls to enable WDigest credential caching.

WdToggle A Proof of Concept Cobalt Strike Beacon Object File which uses direct system calls to enable WDigest credential caching and circumvent Creden

Outflank B.V. 205 Dec 3, 2022
A small proxy DLL which enables dev. console in Mass Effect 1, 2 and 3 (Legendary Edition).

LEBinkProxy A small proxy DLL which enables dev. console in Mass Effect 1, 2 and 3 (Legendary Edition). Usage In your game binary directory (Game\ME?\

null 10 Jan 6, 2022
A LKM rootkit targeting 4.x and 5.x kernel versions which opens a backdoor that can be used to spawn a reverse shell to a remote host and more.

Umbra Umbra (/ˈʌmbrə/) is an experimental LKM rootkit for kernels 4.x and 5.x (up to 5.7) which opens a network backdoor that spawns reverse shells to

Marcos S. Bajo 93 Dec 10, 2022
A interpreter that runs the script which is programmed in the language of FF0 script (or you can call it as Warfarin)

ff0-script A interpreter that runs the script which is programmed in the language of FF0 script (or you can call it as Warfarin) You can do it, unders

null 24 Apr 27, 2022
D3D9On12 is a mapping layer, which maps graphics commands from D3D9 to D3D12

D3D9On12 is a mapping layer, which maps graphics commands from D3D9 to D3D12. D3D9On12 is not an implementation of the D3D9 API, but is instead an implementation of the D3D9 usermode DDI (device driver interface).

Microsoft 253 Dec 31, 2022
Whitee is a tiny compiler written in C++17, which translates SysY language into ARM-v7a assembly.

Whitee is a tiny compiler written in C++17, which translates SysY language into ARM-v7a assembly. Table of Contents Background Install Usage Ar

null 14 Dec 11, 2022
A simple YAML parser which produces a Node Tree Object representation of YAML Documents

A simple YAML parser which produces a Node Tree Object representation of YAML Documents and includes a find method to locate individual Nodes within the parsed Node Tree.

Timothy Rule 2 Sep 18, 2022
CppDyn is a library which aims to simplify use of polymorphism in C++20

Cpp Dyn Cpp-Dyn tries to improve C++ runtime polymorphism. Indeed, C++ runtime polymorphism, originally, uses inheritance and virtual methods. Sean Pa

Antoine MORRIER 14 Jun 7, 2022
Thor is a DoS(slowloris) tool which can be used against a target.

Thor is a DoS(slowloris) tool which can be used against a target. It does this by continuously sending partial HTTP requests, none of which are completed.

AnonabdulJ 1 Nov 6, 2021