MCUfriend 2.8 TFT LCD Shield not working (with any libraries Ive found).

Thanks for your question.

You seem to have the same display as in #13.
Does your pcb look exactly the same as in your link?
i.e. same components, same copper traces.

My advice in #14, #16 should "work"
Likewise, my advice in #18 to delete old libraries and only install via the IDE Library Manager.

I would like to identify the controller properly.
Please run LCD_ID_readnew.ino from the examples.

Edit setup() to enable different unlock statements. e.g.

    ...
    //    unlock = unlock_1520;
    unlock = unlock_1526;
    //    unlock = unlock_8357;
    //    unlock = unlock_5310;
    //    page_N = d5310_1_in;
    //    for (uint16_t i = 0x00; i <= 0xFE; i++) readReg(i, 10, "f.k");
    read_regs("diagnose any controller");
    ...

Run the sketch. See if other registers are revealed.
Only unlock one statement at a time.

Please report back with your results. Paste any "good" readreg output.

If you get a visible graphictest_kbv result, a video will show me everything. e.g. "Adafruit Tests screen + Penguin screens"

Of course you should always email Banggood to ask for the controller model.
And if we can not get the screen working, BangGood should refund your purchase. (or supply another screen)

David.

No additional registers were shown in the serial monitor with the various unlock statements enabled in LCD_ID_readnew.

Here's a video of the graphictest_kbv run (yes, the screen arrived cracked).

I also have another 2.8" one from this pack

that is marked with ili9338 on the back but also reports D3D3 and behaves the same way in the graphictest_kbv. Here's the backside of the two side by side

Google Photos

Your video shows graphictest_kbv.ino running with ID=0xD3D3
If it receives 0xD3D3 it assumes it is a write-only ILI9481 (320x480)

I would like to see a video with ID = 0x9329 i.e. you edit setup() to force the ID value.

Both of your pcbs seem to have identical components and copper traces.
The only difference seems to be a printed (ili9338)

If you received a cracked glass, you have received a damaged item. You MUST ask for a refund.

Obviously the screens are "not fit for purpose" if we can't get them to display properly.
Yes, it is wise to ask on this forum.
Yes, it is wise to ask on the BangGood forum.
If they still fail, you MUST ask for a refund.

Personally, I think that the current Mcufriend pcb design is WRONG because it omits the AMS1117 regulator that was on the original Mcufriend pcb.
This is a subject for Mcufriend and not BangGood. (but Mcufriend would be more likely to listen to BangGood)
BangGood would be more likely to complain if they have to refund hundreds of customers.

David.

Replacement screen is already on the way, I'm just afraid all their "new" stock of 2.8" TFT's are going to be this new style.

Previously I had been buying from here, https://www.aliexpress.com/item/32831754174.html, always got a ili9341 with VRM, but they ship in just bubble wrap and to many were arriving broken. Banggood used to use a nice size box, but now even that has gotten thinner, hence the latest one arriving broken.

Google Photos

Forcing to 0x9329 fixed the geometry and scrolling issues, but text is still mirrored and now colors are inverted.

Video here https://photos.app.goo.gl/fx1oJcXKCmKhHhk97

Forcing to 0x9338 or 0x9341 seems to make everything work correctly. Colors, rotation, geometry, and scrolling all seem OK. Here's a video in 0x9338 mode https://photos.app.goo.gl/1XuKLKX9RTKUgSty6

Thanks for the feedback. The 0x9338 video shows everything working correctly except for readID()

Please can you do some further tests with LCD_ID_readnew.ino

    ...
    //    unlock = unlock_1520;
    //    unlock = unlock_1526;
    //    unlock = unlock_8357;
    //    unlock = unlock_5310;
    //    page_N = d5310_1_in;
    for (uint16_t i = 0x00; i <= 0xFE; i++) readReg(i, 10, "f.k");
    read_regs("diagnose any controller");
    ...

You will see output for any possible register. Most will show garbage results e.g. same byte repeated.
Perhaps some real registers are revealed. You can try with unlock statements too.

If you find something interesting, paste to your message (without the garbage lines)
Or just copy the full output to a .TXT file and attach to your message.

I would like to identify this "0x9338" controller for readID(). I am pretty certain that it is not made by Ilitek.

David.

Tried LCD_ID_readnew plain and with all the different unlock combos (one at a time), and always got the same dump of the same repeated byte on each line.

You have misread my post. You should uncomment the for() loop statement.

I did, attached is the output with none of the unlocks enabled.

Unkown_LCD_readnew.txt (13.5 KB)

reg(0x0004) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x0009) 00 00 61 00 00 00 00 00 00 00	f.k
reg(0x000A) 08 08 08 08 08 08 08 08 08 08	f.k
reg(0x000B) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x000C) 06 06 06 06 06 06 06 06 06 06	f.k
reg(0x000D) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x000E) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x000F) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x0052) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x0054) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x0056) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x005F) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x0068) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x00DA) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x00DB) 00 00 00 00 00 00 00 00 00 00	f.k
reg(0x00DC) 00 00 00 00 00 00 00 00 00 00	f.k

Thanks for the feedback. There are readable registers as above. These are regular MIPI User readable registers. (0x2E and 0x3E are GRAM registers)

I don't see anything that I can use for identifition. You will just have to put this in every sketch.

      uint16_t ID = tft.readID();
      if (ID == 0xD3D3) ID = 0x9338;
      tft.begin(ID);

David.