Skip to content

T5-4.7-S3 Epaper Pro support#6625

Merged
thebentern merged 85 commits into
masterfrom
t5-epaper-pro
Mar 25, 2026
Merged

T5-4.7-S3 Epaper Pro support#6625
thebentern merged 85 commits into
masterfrom
t5-epaper-pro

Conversation

@mverch67

@mverch67 mverch67 commented Apr 18, 2025

Copy link
Copy Markdown
Collaborator

resolves #6607

Status

V1: hw version v1.0-240810
V2: hw version v1.0-241224

  • V1: SX1262 LoRa
  • V2: SX1262 LoRa
  • E-Ink display ED047TC1
  • V2: EInk power driver TPS65185 (0x68)
  • GT911 touch controller (0x5D)
  • PMU BQ25896 (0x6B)
  • Battery Mgmt BQ27220 (0x55)
  • RTC PCF85063A (0x51) see RTC: PCF85063 support, port to SensorLib 0.3.1 #8061
  • V2: GNNS MIA-M10Q
  • SD card
  • V2: IO expander XL9555 (0x20)

🤝 Attestations

  • I have tested that my proposed changes behave as described.
  • I have tested that my proposed changes do not cause any obvious regressions on the following devices:
    • Heltec (Lora32) V3
    • LilyGo T-Deck
    • LilyGo T-Beam
    • RAK WisBlock 4631
    • Seeed Studio T-1000E tracker card
    • Other (please specify below)
      • T5-4.7-S3 Epaper Pro V1
      • T5-4.7-S3 Epaper Pro V2

@todd-herbert

todd-herbert commented Apr 18, 2025

Copy link
Copy Markdown
Contributor

I'd be excited if anyone wants to take up the challenge of supporting this device, but I don't feel that InkHUD is particularly suitable. The device really deserves a more interactive UI, but that'd be no small task to implement, whatever the approach.

Edit: I had confused this variant with the T-Deck Pro. The non-touch version of the T5-4.7-S3 E-Paper probably is a reasonable target for InkHUD.

@caveman99

caveman99 commented Apr 20, 2025

Copy link
Copy Markdown
Member

@todd-herbert T-Deck pro adds a keyboard to a similar device. Epaper Pro does have a touchscreen too. I have the V1.2 with GPS here, while @mverch67 does have the first iteration. Since there's more differences it's a challenge to make both of them work :-)

@Xaositek

Xaositek commented Apr 21, 2025

Copy link
Copy Markdown
Contributor

I have one of these units if you need me to test anything. I downloaded the files manually and was able to build it via Visual Studio. Seems like the radio portion itself it operational, but the screen never does draw; not a boot logo or anything. Attached bootup log if anything is useful or I failed to do something.

t5s3_boot.txt

@mverch67

Copy link
Copy Markdown
Collaborator Author

I have one of these units if you need me to test anything.

it's still draft. display support is missing. radio also does not work yet.

@github-actions github-actions Bot added the Stale Issues that will be closed if not triaged. label Jun 6, 2025
@mr-tbot

mr-tbot commented Jun 6, 2025

Copy link
Copy Markdown

Bumping this - grabbed one - hoping for future support!

@mr-tbot

mr-tbot commented Jun 8, 2025

Copy link
Copy Markdown

Please note: Apparently the meshcore team support this device - but there now appears to be a version with GPS and a version without.

They individually require different approaches to get running from what I understand.

I have the newer model with GPS - brand new - happy to send to the dev team as long as I eventually get it back... =)

Comment thread variants/t5s3_epaper/variant.h Outdated
@github-actions github-actions Bot removed the Stale Issues that will be closed if not triaged. label Jun 8, 2025
@github-actions github-actions Bot added the Stale Issues that will be closed if not triaged. label Jul 29, 2025
@github-actions github-actions Bot closed this Aug 5, 2025
@thebentern thebentern reopened this Aug 5, 2025
@thebentern thebentern added enhancement New feature or request triaged Reviewed by the team, has enough information and ready to work on now. and removed Stale Issues that will be closed if not triaged. labels Aug 5, 2025
@caveman99 caveman99 added the hardware-support Hardware related: new devices or modules, problems specific to hardware label Aug 7, 2025
@Ringmast4r

Copy link
Copy Markdown

Good question - I haven't tested sleep behavior yet. I'll check the stock firmware's sleep handling in epd_board_v7.c to see if they set these pins LOW before entering sleep.

I have noticed occasional flickering - if that's happening during sleep/wake cycles, this could be the cause. I'll test and report back.

@mverch67

Copy link
Copy Markdown
Collaborator Author

Good question - I haven't tested sleep behavior yet. I'll check the stock firmware's sleep handling in epd_board_v7.c to see if they set these pins LOW before entering sleep.

In my experience from the past the stock firmware [source] is just some demo but not complete and cannot be used 1:1 as a blueprint for production code. It may be buggy or incomplete.
For the IO states I suggest measuring the total power consumption in state ON / LS / DS and check if they match the expectations.

Comment thread variants/esp32s3/t5s3_epaper/variant.cpp
@Bandicoot

Copy link
Copy Markdown

[Hi - my name is Andy and I get that this is Alpha code - I have other devices to "depend" on. I'm very happy there's forward motion on this neat little platform.]

Good question - I haven't tested sleep behavior yet. I'll check the stock firmware's sleep handling in epd_board_v7.c to see if they set these pins LOW before entering sleep.

In my experience from the past the stock firmware [source] is just some demo but not complete and cannot be used 1:1 as a blueprint for production code. It may be buggy or incomplete. For the IO states I suggest measuring the total power consumption in state ON / LS / DS and check if they match the expectations.

2.7.19 has the device going incommunicado displaying "<node#>Screen Paused" at the bottom and won't do anything until I press the BOOT button on the side, rebooting it. A bluetooth connection from my (Android) phone would not wake it up.

2.7.20 (just pulled from your latest commit 17 mins ago at 1902 UTC (1302 CST)) seemingly woke up from the "Screen Paused" display just now when my phone tried to reconnect to it, but when I tried to reproduce the behavior - ̶i̶t̶ ̶w̶o̶u̶l̶d̶n̶'̶t̶ . This was after I set the carousel interval (seemly to no effect) and also set "reasonable" deep sleep and on values in the power settings̶ ̶-̶ ̶I̶ ̶m̶u̶s̶t̶ ̶h̶a̶v̶e̶ ̶i̶n̶a̶d̶v̶e̶r̶t̶a̶n̶t̶l̶y̶ ̶b̶u̶m̶p̶e̶d̶ ̶B̶O̶O̶T̶ ̶w̶h̶e̶n̶ ̶I̶ ̶s̶e̶t̶ ̶i̶t̶ ̶o̶n̶ ̶m̶y̶ ̶d̶e̶s̶k̶. Ok, that apparently fixed that problem - at least this once. Super deep sleep duration of 5 seconds and minimum On time of 1 minute (which seems short for an e-paper display - time to reconnect from the current (2.7.12) Google Store Android client was a lot longer than 5 seconds but it eventually did reconnect. Maybe I wasn't as patient with the 2.7.19 build - I thought I'd tried setting the power settings on that one.

@thebentern thebentern merged commit 3b079c9 into master Mar 25, 2026
78 checks passed
skrashevich pushed a commit to skrashevich/meshtastic-firmware that referenced this pull request Apr 4, 2026
* preliminary io pin definitions

* Update product link

* Move to new variant structure and refactor inkHUD - Display does not work and SX1262 init fails on HT752-02

* update variant definitions

* add EPD driver

* fix lora, add v1/v2 variant targets

* adapt pins for v1/v2

* alt button

* add compile guards

* use lilygo epd47 lib

* workaround for INT ERR_NOT_FOUND

* USE_EPD (e-ink parallel display)

* use FastEPD driver

* create screen

* EInkParallelDisplay definition

* setup screen

* dispaly() implementation

* enable touchscreen

* rotate touch screen

* refactor display buffer processing

* provide local copy of TwoWire instance as the touch driver calls end()

* use larger fonts

* replace touch driver; enable debugging

* replace touch driver; enable debugging

* consider bitsremain == 0

* tryfix crash

* fix button

* update touch driver

* set lora_cs pin

* update touch driver and lib reference

* add locks

* limit Ghosting similar to EInkDynamicDisplay

* workaround for FastEPD partial update bug (artifacts)

* display() code cleanup

* fix a few platformio definitions

* more EPD display cleanup

* set rotation

* use FastEPD arduino I2C by default

* touch rotation

* update screen for EPD

* increase swipe distance for larger screen

* EPD UIRenderer

* trunk fmt

* further #ifdef USE_EPD

* disable rotation which messes up w/h; more cleanup

* switch off ghosting algo

* releease build; V1 buttons

* swap V1 buttons

* rearrange USE_EINK/EPD macros, use large font

* cleanup (revert modified files)

* more cleanup

* revert

* revert file

* revert file

Removed redundant line continuation in preprocessor directives.

* Temporary gate off PSRam calculations until we can fix them

* move variant.cpp and update commit references

* revert wrong merge

* add earlyInitVariant()

* initialize all port 0 pins (0-7) as outputs / HIGH

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Jason P <applewiz@mac.com>
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
todd-herbert added a commit to todd-herbert/meshtastic-firmware that referenced this pull request Apr 8, 2026
meshtastic#6625
Device is inappropriate for InkHUD due to touch input
todd-herbert added a commit to todd-herbert/meshtastic-firmware that referenced this pull request Apr 11, 2026
meshtastic#6625
Device is inappropriate for InkHUD due to touch input
@caveman99 caveman99 deleted the t5-epaper-pro branch April 12, 2026 15:16
todd-herbert added a commit to todd-herbert/meshtastic-firmware that referenced this pull request Apr 16, 2026
meshtastic#6625
Device is inappropriate for InkHUD due to touch input
@giannoug

Copy link
Copy Markdown
Contributor

In case anyone is interested, I have done some work for this device on a branch in my repo: https://github.com/giannoug/meshtastic-firmware/tree/feature/t5s3-epaper-inkhud

I have everything (mostly) working for InkHUD and I'm using the device daily

@giannoug

Copy link
Copy Markdown
Contributor

PR is open here: #10211

jeek pushed a commit to jeek/Meshtastic-Exploiteers-Hacker-Pager that referenced this pull request Jun 30, 2026
* preliminary io pin definitions

* Update product link

* Move to new variant structure and refactor inkHUD - Display does not work and SX1262 init fails on HT752-02

* update variant definitions

* add EPD driver

* fix lora, add v1/v2 variant targets

* adapt pins for v1/v2

* alt button

* add compile guards

* use lilygo epd47 lib

* workaround for INT ERR_NOT_FOUND

* USE_EPD (e-ink parallel display)

* use FastEPD driver

* create screen

* EInkParallelDisplay definition

* setup screen

* dispaly() implementation

* enable touchscreen

* rotate touch screen

* refactor display buffer processing

* provide local copy of TwoWire instance as the touch driver calls end()

* use larger fonts

* replace touch driver; enable debugging

* replace touch driver; enable debugging

* consider bitsremain == 0

* tryfix crash

* fix button

* update touch driver

* set lora_cs pin

* update touch driver and lib reference

* add locks

* limit Ghosting similar to EInkDynamicDisplay

* workaround for FastEPD partial update bug (artifacts)

* display() code cleanup

* fix a few platformio definitions

* more EPD display cleanup

* set rotation

* use FastEPD arduino I2C by default

* touch rotation

* update screen for EPD

* increase swipe distance for larger screen

* EPD UIRenderer

* trunk fmt

* further #ifdef USE_EPD

* disable rotation which messes up w/h; more cleanup

* switch off ghosting algo

* releease build; V1 buttons

* swap V1 buttons

* rearrange USE_EINK/EPD macros, use large font

* cleanup (revert modified files)

* more cleanup

* revert

* revert file

* revert file

Removed redundant line continuation in preprocessor directives.

* Temporary gate off PSRam calculations until we can fix them

* move variant.cpp and update commit references

* revert wrong merge

* add earlyInitVariant()

* initialize all port 0 pins (0-7) as outputs / HIGH

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Jason P <applewiz@mac.com>
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request hardware-support Hardware related: new devices or modules, problems specific to hardware triaged Reviewed by the team, has enough information and ready to work on now.

Projects

None yet

Development

Successfully merging this pull request may close these issues.