2.8" TFT Display with uSD Card Module KeDei QQ:310953417

Hi all, it's a while I try to get this TFT LCD working with my UNO R3. please have a look at http://item.taobao.com/item.htm?spm=a1z0b. A picture of my unit:


The library they mention is not downloadable there's only a printout of the file listing. I tried many libraries, also forcing ID's for the unknown lcd controller... no result at all except the backlight (white screen) and nothing more. Also very few pins are identified and marked on the PCB, like RST; the others are SD related only. My LCD has MFG back on Dec 20 2014; it is not the more recent (2015) product from same KeDei manufacturer - this last has a different, black color PCB. Is there anybody that was able to successfully had this product working?

Any help greatly appreciated.

I have a more recent 2.4 display, it is red and dated 2015/01/20
In the eBay page there was tis link
and I found this page

When I ran the LCD_ID_Reader Version 1.2 I got 303 as described in the table.
I made the modification of the ild Adafruit library

since the new library work using SPI instead this shield use a parallel communication.

I made the modifications but I get the same result, only white backlight and a flickering at the initialisation of the library.
I also tried the modified library here

with no luck!

Maybe this can be useful to you.
Remember that the main difference is the different ID and the swapped control lines, this

#define LCD_CS A0
#define LCD_CD A1
#define LCD_WR A2
#define LCD_RD A3

instead of this

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

Good luck!

Same problem for the same display. Download TFTLCD library . See link (below the 0x0303).

modifiy Adafruit_TFTLCD.cpp: else if ( id == 0x9341 )
becomes: else if ((id == 0x9341 ) || (id == 0x0303))

modifiy example >>>>> graficstest.ino <<<<<<<< IT WORK !!! :slight_smile: <<<<<<<<<

#define LCD_CS A0
#define LCD_CD A1
#define LCD_WR A2
#define LCD_RD A3

else if ( identifier == 0x9341 )
becomes: else if ((identifier == 0x9341 ) || (identifier == 0x0303))

For other examples not know. I use Arduino only one month, I have not experience.
I want to use the display for other things.
Where do I find the syntax of writing for this library?
Now I use u8glib to display 64x128.

You was lucky because for me these modification doesn't work!

The seller sent me a Datasheet for a ILI9325 controller so I tryed also this one with no luck.


my display is 2.8" TFT Display with uSD Card Module KeDei QQ:310953417

I found Kedei shop on Aliexpress, wrote to him.
He was very kind and mailed me the drivers. They works.

I attached them here.

2.8_并口_c++.zip (422 KB)

I tried your driver but the examples are not compiled in my Arduino IDE 1.6.4. :(

See Error: C: \ Program Files (x86) \ arduino-1.6.4 \ libraries \ LCDTFT \ font.cpp: In member function 'void Font :: set_txt (unsigned short int, unsigned short int, unsigned short int, unsigned short int, short unsigned int) ': C: \ Program Files (x86) \ arduino-1.6.4 \ libraries \ LCDTFT \ font.cpp: 153: 20: warning: NULL used in arithmetic [-Wpointer-arith] if (txt_b_color! = NULL)

Ho provato i tuoi drivers ma l'Ide di Arduino non compila gli esempi e mi da questo errore. Ciao.

Wich examples? I compiled with 1.6.5 IDE with the last Arduino core, 1.6.7 if I remember well.

Quali esempi? Io ho usato l'ultimo IDE con l'ultimo core Arduino.

Ok ho riprovato e funziona con la libreria che mi hai mandato! Grazie. :)

Ok I tried again and it works with the library you sent me! Thanks!

I have 2 displays from them, one for the Uno and one for the Mega. the examples they sent me all work perfectly for both using Arduino 1.0.6

Many thanks to all! Grazie a tutti!

I got this module working on UNO R3 with:

  1. Downloading the library from ZOOMX (for BMP example, you need to add #include <SPI.h> to the example to compile it). uSD and Touch panel working fine.

  2. the suggested http://misc.ws/2015/01/24/lcd-touch-screen-information with 0x0303 as controller ID. BTW: Thanks to the misc.ws moderator to have found the right controller driver for my chip ID under my request. Touch screen not yet working though, still trying on this

I found Kedei shop on Aliexpress, wrote to him.
He was very kind and mailed me the drivers. They works.

I attached them here.


The library works but you don’t able to use with UNO R3 because the memory shortage. Please someone can you modify this library to MEGA or optimize it for lower memory usage? I try to show a picture and some text but it will use 127% of the memory. It’s a large array with the font hex codes what eating up all the memory. Can someone help with this problem?

Hello I need the library for mega the 2.8tft kedei taobao. Takes


What does my LCD_ID_readreg.ino sketch show? I do not recognise the controller from the ZIP file that you attached. Mind you, I can't read Chinese.

It looks very similar to the 2.4" and 2.8" mcufriend boards. However, the mcufriend boards use level-translator chips. The Kedei display looks as if it just uses resistors. The SD traces look as if it is 3.3V only.


I have to check.

There are other differences: A0-A3 lines are swapped.

In the code I believe that there is not written the name of the driver anywere. I was not able to recognise the driver using the initial setup, I didn’t find any similar setup so I believe that is a custom code written over older Adafruit code. But I am not sure.
The hardware is different from other builders.

The ZIP that you posted implies that the Shield wiring is identical. i.e. LCD_RD on A0, LCD_D0 on 8.

You can change the defines for RD etc in the LCD_ID_readreg sketch if you need to.


Check made!
With your original sketch I get

reg(0x0000) 03 03	ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 03 03 03 03	Manufacturer ID
reg(0x00BF) 03 03 03 03 03 03	ILI9481
reg(0x00D0) 03 03	HX8357
reg(0x00D3) 03 03 93 43	ILI9341, ILI9488
reg(0x00EF) 03 03 83 03 03 03	ILI9327

If I swap lines according to config.h file I get

reg(0x0000) 03 03	ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 03 03 03 03	Manufacturer ID
reg(0x00BF) 03 03 03 03 03 03	ILI9481
reg(0x00D0) 03 03	HX8357
reg(0x00D3) 03 03 03 03	ILI9341, ILI9488
reg(0x00EF) 03 03 03 03 03 03	ILI9327

These are the pins definition in config.h in the original drivers

#define		RST	A4
#define		CS	A3
#define		RS	A2
#define		WR	A1
#define		RD	A0

#define		D0	2
#define		D1	3
#define		D2	4
#define		D3	5
#define		D4	6
#define		D5	7
#define		D6	8
#define		D7	9

#define		XP	A1	
#define		XM	2	
#define		YP	A2	
#define		YM	3

You should be able to just inspect the pcb traces.

Since you get 0x9343 from register 0xD3, l will put serious money on a ILI9340 or ILI9341. Bits 0, 1 are clearly reading 1 regardless of your defines. My default defines expect bits LCD_D0, LCD_D1 to be on digital #8, 9.

Try Digital #0, 1. You will probably get bit 0 reading as 1 because it has the Serial RXD0 on this pin. e.g. the sketch would show 0x01 everywhere except for the 9341.

Since an ILI9340 is very similar to a 9341, it is worth trying any 9341 library with the databus on PORTD.

Please try the digital #0, 1 and let me know. If it is wired like this, the MCUFRIEND_kbv library will run at about twice the speed. However the Read functions might conflict with the Serial port. And you will get garbage on a connected Terminal.


No traces start from Digital #0, 1 all traces seems to be as declared in config.h, 2-9 are for sure. Kedey build these shields, he don't sell shields builded from others, you can find his shop on Aliexpress.

The bmp example works fine so I believe that all the declared lines work. have not greenish colours.

I am very confused. I must have been tired when I originally read the “config.h” from your ZIP.

Please edit LCD_ID_readreg.ino

// for Kedei:
#define LCD_D0 2
#define LCD_D1 3
#define LCD_D2 4
#define LCD_D3 5
#define LCD_D4 6
#define LCD_D5 7
#define LCD_D6 8
#define LCD_D7 9
/* my original wiring
#define LCD_D0 8
#define LCD_D1 9
#define LCD_D2 2
#define LCD_D3 3
#define LCD_D4 4
#define LCD_D5 5
#define LCD_D6 6
#define LCD_D7 7

In message #16, you got a 93 43 from register(0xD3) with “my” wiring.
Please edit for “kedei’s” wiring. And paste the result.

Yes, looking (when not tired) at your photo of the pcb, it shows LCD_RESET on A4 and LCD_D7 on digital #9