Like many others, I tried to use the GxEPD and GxEPD2 libraries to get my EPS32 + epaper unit working. It was a 2.13" e-paper, and Banggood advertised it as "LILYGO® TTGO T5 V2.0 " so I looked for all the display declarations for that size with some hint of that display type, and uncommented them one by one. Doing so evidently allowed me to upload new programs (I could see some things happening in the Serial Monitor, for instance), but none of the programs altered the display.
I finally realized that the board (which I bought through Banggood) had screenprinting on it that told me what I needed to know. It said, among other things
201901017 T5_V2.3_2.13
and
// BUSY - IO4
// RST = IO16
// MOSI - IO23
// CLK -- IO18
// DC -- IO17
// CS -- IO5
With that in hand (and some confusion because Banggood's LILYGO® TTGO T5 V2.0 didn't match the version number printed on the board), I looked at the EPD2 declarations, things like this:
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=77*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1, phased out
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=77*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=77*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=77*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74
and realized that the CS, DC, and RST parameters didn't match those on my board, so it was no surprise that the display wasn't working. So I searched a bit more, for something saying "CS=5", and came to these lines:
> //GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDE0213B1, phased out
> //GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B72
> //GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B73
> //GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0213B74
> //GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213I5F
I tried those one by one, and the third one worked just fine.
I assume that there are others out there just as naive about doing this as I was, so I thought it'd be worth putting this here to help someone out.