GxEPD2 - M5Paper support

Hi @ZinggJM - pinging you here as you've asked for all communication regarding GxEPD2 to take place on this forum.

I wanted to bring the M5Paper to your attention, which has been around on the market for a while. It is currently not supported by GxEPD2, however I think it can be added relatively easily.

Here's the official specs sheet and documentation: https://docs.m5stack.com/en/core/m5paper

This device uses the same ED047TC1 panel as e.g. the LilyGo T5 4.7 EPD and the earlier version of the same model. LilyGo has published the EPD driver for both the new model as well as the old model.

However fortunately none of that needs to be ported, as the M5Paper uses an IT8951E to control the display, the same as the already supported Waveshare unit. In fact, most of the commands seem to be the same (aside from the M5EPD library defining a few extra TCON_MEM_BST commands), and aside from the parameters specific to the display itself, most of the code seems to be a very close match. I think with a handful of small changes, support could be added to this model.

Hi @fonix232 , welcome to the forum!

I still have a backlog of things to to, e.g. work in the garden and house.
So I need to minimize my effort in answering posts concerning GxEPD2.

You don't ask any question, so I can only guess about your intention.

The display you refer to looks interesting - I will take a look at the docs later.

So I don't know if the IT8951E it uses is completely configured (parameterized) for the panel, like the Waveshare versions are. If so, then you could take one of the drivers for these, and just adapt the WIDTH and HIGHT parameters in the header file, to try to use.

I have an offer for SPI e-paper panels to get donated and add support to GxEPD2 that I am more interested in. So even if you would offer an M5Stack with m5paper, adding it to GxEPD2 would need to wait.
-jz-

Ah, apologies - I got so focused on providing the details that I completely forgot the actual part. Indeed, my intention was to request support.

Thank you very much!

It is, sort of. There's been some reports on the M5 forums about the IT8951DevInfoStruct block read from the chip having issues (although I have not noticed this on my end - once the chip is properly initialised, the struct gets filled with proper information, except for the firmware/LUT version which returns random garbage data), but otherwise, as per the M5EPD library, I'm seeing no major differences - obviously your code is much better written, so it's not straightforward to compare 1:1, but based on my understanding, pretty much everything happens the same way.

I could give it a quick go, presuming no other changes are needed, it should indeed be as simple as adding a new subclass/copy of the current IT60 implementation with the modified width/height, and adding the panel type as well (though that might cause issues with some of the samples). If I do make said changes, could you review the PR and possibly fix the code style, etc., as long as I can confirm it working on my end? I don't mind testing but my C(pp)-fu is severely lacking, and coming from a Java/C# background, not all aspects of the language make immediate sense to me, so for any major change I'd rely on your expertise.

Yes, I could review it. But I don't merge pull requests. And I don't add support for displays I don't have.
-jz-

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.