Add Waveshare ESP32-S3-Touch-AMOLED-2.06 board port#34
Merged
HermannBjorgvin merged 1 commit intoJul 16, 2026
Merged
Conversation
Owner
|
Do you have a picture of it running on the device? |
HermannBjorgvin
approved these changes
May 24, 2026
Owner
|
Thanks for the port! I'll merge this once the conflicts are resolved, looks good to me! |
Contributor
Author
Hybrid of the existing two ports: CO5300 display from the 2.16 port, FT3168 touch from the 1.8 port, fixed orientation (watch enclosure), direct-GPIO resets (no IO expander), 32 MB flash, AXP PKEY for PWR. Key gotcha worth documenting: CO5300 panels expose their visible viewport at a horizontal offset inside the controller's internal RAM, and the offset varies per physical panel. The 2.06 panel uses col_offset1 = 23 (Waveshare's reference library uses 22, ±1 picks centering empirically). Without it, a vertical strip of stale content shows through on one edge. Added a note in docs/porting/adding-a-board.md. Tested end-to-end: display lights up centered, BLE pairs and the daemon pushes usage data, touch coordinates accurate (verified via the BLE reset zone, not just the tap-to-toggle event). Also patches flash-mac.sh to take an env argument so users can't accidentally flash the wrong env onto a board with multiple defined.
samestrin
force-pushed
the
add-waveshare-amoled-206-board-port
branch
from
July 16, 2026 03:21
b542b09 to
7fd28d9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Adds a board port for the Waveshare ESP32-S3-Touch-AMOLED-2.06 — a 410×502 watch-form-factor AMOLED kit. The port is a hybrid of the existing ports:
board_init()default_32MB.csvpartition tablePin assignments were taken from Waveshare's reference
Mylibrary/pin_config.hin their demo repo.CO5300 col_offset gotcha (worth highlighting)
The 2.06 panel exposes its visible 410-wide viewport at a horizontal offset inside the CO5300's internal RAM. Without passing the right
col_offset1to theArduino_CO5300constructor, framebuffer writes land at the wrong columns and a vertical strip of stale boot content shows through on the right edge. Waveshare's library usescol_offset1 = 22; this port uses23after fine-tuning for centering on one unit. The 2.16" port doesn't have this issue because its 480×480 viewport fills the controller's RAM. I've added a note todocs/porting/adding-a-board.mdso the next CO5300 porter doesn't lose an afternoon to this.Rebased onto current main
This branch was originally cut before the sound HAL, the hold-to-pair gesture, and the BLE supervision-timeout fix landed. It's now rebased onto current
main, which required three additions to the port beyond the original hardware bring-up:sound.cpp—main.cppnow callssound_hal_init/tick/play_resetunconditionally, so the port wouldn't link without it. The 2.06 does have an ES8311 codec on the shared I2C bus, but the amp path is unverified on this board, so this no-ops (same posture as the C6 1.8 port). The sharedchime.cppengine is ready to wire up once someone tests it on this hardware.power.cpp— addedpower_hal_pwr_long_pressed()/power_hal_pwr_released()for hold-to-pair, mirroring the 2.16's AXP PKEY implementation (LONG + POSITIVE IRQs, plus the 8s press-off bump).platformio.ini— picked up the PPCP connection-parameter flags from fix(windows): end the BLE reconnect churn — widen supervision timeout (2s→6s) + crash-proof the daemon #106 so this board doesn't ship with the Windows supervision-timeout churn.An earlier revision of this PR also tweaked
flash-mac.shto take an optional env argument. #30 fixed that same footgun more strictly onmain, so that change is dropped — this PR no longer touchesflash-mac.sh.Test plan
Verified on hardware (pre-rebase build):
col_offset1 = 23— splash animation centered, no edge artifactsVerified post-rebase:
pio run -e waveshare_amoled_206builds clean (1.34 MB, 10.2% of the app partition, 31.6% RAM)Not yet exercised on hardware:
Photo of the working device available on request.