How to diagnose why the Geeetech A10x display shows nothing

In Marlin the display is configured by defining YHCB2004 and it resolves to HD44780 handled by marlinui_HD44780.cpp.

For Klipper I have it defined in the printer.cfg as:

[display]
hd44780_protocol_init: True
line_length: 20
lcd_type: hd44780
rs_pin: PD1
e_pin: PH0
d4_pin: PH1
d5_pin: PD0
d6_pin: PE3
d7_pin: PC1
encoder_pins: ^PL7, ^PG1
click_pin: ^!PD2

I have double checked with the schematic for the board that the pin-out is correct. The display is plugged in with a short ribbon cable that appears to work fine with Marlin. In Klipper the display back-light lights up and the display shows the first and third rows as just boxes with the second and fourth row just blank.

How can I diagnose what needs to be changed to get Klipper to init the display successfully? This is using the current stock v4.1b control board for the Geeetech A10x (and A20x) machines.

Thanks for any advise

Hey,
you solved the Problem with the display? I have the same setup…
thank u

Unfortunately, no. Nor any advise about how to diagnose why it does not work.

I did hear that the display does work on an older 4.0 board but I have the 4.1b board that is presumably the same pinout.

If you have ideas about how to figure it out or have a working solution I would be most interested!

Hi. This is problem with serial port. Not with LCD or motherboeard pins. Check it and reinitialised. Pins in the motherboard v.3.x and 4.0 are the same. This can be seen in the Marlin config file. I did not check on version 4.1. I installed Klipper in a docker container on Synology for my Geeetech A10T. At the beginning of working with the printer, I make /dev/ttyUSB0 in the Docker container shell using the “tee /dev/ttyUSB0” command. I’ll find the real reason later.

I hope this information helps you solve the problem

I don’t think that the serial connection to the board has any bearing on the problem. The printer itself is working fine it is just that the LCD does not init when using a 4.1b board. Either the LCD unit is different or the pins are used differently. If you don’t have a 4.1b board how can you say?

Because, I have scheme v.4 and v4.1b :))

Look, it’s v4.1b

From official site - https://www.geeetech.com/download.html?version_id=451

And this - v4

From official site - https://www.geeetech.com/download.html?version_id=450

Compare the following pins: LCM_RS, LCM_EN, LCM_D4, LCM_D5, LCM_D6, LCM_D7

The same.

Klipper is not standard firmware. When you turn on the printer it doesn’t know what to do until Klipper tells it to. If you see 2 black lines on the screen, then this is just such a case.

OK then for a 4.1b board, what IS the correct config for the display? This is what I have in my config (yes, commented out now). BTW, right now I have an A20 display working fine on the 4.1b but I’d rather use the stock display.

#[display]
## pins set based on the schmatic but it shows nothing
#hd44780_protocol_init: True
#line_length: 20
#lcd_type: hd44780
#rs_pin: PD1
#e_pin: PH0
#d4_pin: PH1
#d5_pin: PD0
#d6_pin: PE3
#d7_pin: PC1
#encoder_pins: ^PL7, ^PG1
#click_pin: ^!PD2

Hello, I’ve find the configuration for my A20M. It works well. The board is a GT2560 v4.0

[display]
lcd_type: st7920
cs_pin: PE3
sclk_pin: PD0
sid_pin: PC1
encoder_pins: ^PH0, ^PH1
click_pin: ^!PD2
1 Like

Yup, I bought an ST7920 based A20 display and I’m using that with pretty much the same config.
The A10x machines come with the hd44780 based display and I could not get it working even though the display type seems to be supported and the config I have for it is based on the A10M schematic.

Tried to make it work on A10M so looked on Marlin code and schematics.
So my findings:
V4.1b uses display named YHCB2004:

#define in Marlin Arduino # AVR port schematics NET H2 pins Reality
YHCB2004_CLK 5 E3 LCM_D6 4 CS
YHCB2004_MOSI 21 D0 LCM_D5 5 CLK
YHCB2004_MISO 36 C1 LCM_D7 3 MOSI
BTN_EN1 16 H1 LCM_D4 7 BTN_EN1
BTN_EN2 17 H0 LCM_EN 8 BTN_EN2
BTN_ENC 19 D2 EC_PRESS 9 BTN_ENC
RESET 11
BEEP 12
V5 1
GND 2,6,10

Schematics:
https://www.geeetech.com/download.html?version_id=449
Using board configuration for Geetech A10 V4.1:

with mapping from Arduino pin#(e.g. 1) to AVR port (e.g. E1):

And according to source code it is based on AiP31068:

and uses following library to communicate:

I have all the HW and even logic analyzer connected to the pins. Trying to debug it. Maybe somebody can help me with python part. how to init it and send commands manually.

For now using this config but it sends 8-bits commands instead of required 9-bits:

[display]
lcd_type: hd44780_spi
latch_pin: PE3
spi_software_sclk_pin: PD0
spi_software_mosi_pin: PC1
spi_software_miso_pin: PH7 # any unused pin
encoder_pins: ^PH0, ^PH1
click_pin: ^!PD2

I don’t have a solution but will be interested in what you find.

I ended up putting on an A20 display with a quiet 4.1b board as that plugs into the board with the same cable and it works with Klipper. Well that is until the day that I powered on the machine and it went BANG and took out the voltage regulator and a stepper driver. Not having the capability to repair SMT boards I replaced it with an after-market board and better display :wink:

1 Like

Well, it wasn’t so fast and easy, but at least it was very educating:)

I pushed all my changes here:

Will try to propagate it klipper main sources, but not sure that it will be easy, as it touches a lot of files.

Hi All,

I have a A10T, I try to control it with klipper…

are you using klipper with a geeetech printer? and can i get your printer.cfg file?

balzes uploaded her/his printer.cfg

Worked perfect for me as well thank you.

Hey dude. Could you share your full A20M config? Just got one of these and the generic GT2560 config I’m getting an ADC out of range error on the extruder temp sensor. I tried changing the type, no dice. Do i need a ! or ^ on the sensor pin?

See ADC out of range
It also very much depends on when you get this error:

  • If only when heating up or when hot then most likely a defect thermistor or wrongly set max values
  • If already at Klipper startup, it could be wrongly assigned pins, wrong limits or also a dead thermistor / defect wiring
1 Like

hey, thanks this worked perfectly for the ADC issues. I did have to comment out the klipper/macro/XXX.cfg includes… did quite a bit of googling and could seem to track down what you could have been referencing there. your github profile also didn’t have any other repos… so kinda at a loss there. not a blocker, would just like to see these scripts for reference.

thanks again