Skip to content

boards: Add support for Waveshare ESP32-S3-GEEK board#67

Merged
wujiangang merged 1 commit into
espressif:masterfrom
mogenson:waveshare-esp32-s3-geek
May 28, 2026
Merged

boards: Add support for Waveshare ESP32-S3-GEEK board#67
wujiangang merged 1 commit into
espressif:masterfrom
mogenson:waveshare-esp32-s3-geek

Conversation

@mogenson

@mogenson mogenson commented May 11, 2026

Copy link
Copy Markdown
Contributor

Add support for the ESP32-S3-GEEK board from Waveshare.

Description

This board package follows the existing esp_board_manager YAML-driven pattern used by other supported boards.

The following hardware definitions were added:

Chip:

  • ESP32-S3R2 — 16 MB QIO NOR flash, 2 MB on-chip Quad PSRAM, dual-core @240 MHz

Display

  • 1.14" ST7789 IPS LCD, 135×240 resolution
  • Connected via SPI3_HOST (write-only, no MISO): MOSI=GPIO11, CLK=GPIO12, CS=GPIO10, DC=GPIO8, RST=GPIO9
  • Panel has a 52/40 pixel offset (the visible area doesn't start at (0,0) on the ST7789 framebuffer)
  • Colors inverted, X-axis mirrored, 40 MHz SPI clock
  • Backlight via GPIO7 → SS8050 NPN transistor (active-high PWM, LEDC @ 5 kHz, fixed at full duty)

Storage

  • TF (microSD) card slot in SPI mode via SPI2_HOST: MOSI=GPIO35, MISO=GPIO37, CLK=GPIO36, CS=GPIO34
  • Mounted at /sdcard as FAT, max 5 open files, 16 KB allocation units

Expansion headers (no onboard devices, just broken out)

  • I2C: SDA=GPIO16, SCL=GPIO17 (H1)
  • GPIO: GPIO6, GPIO13, GPIO14 (H2)
  • UART: RX=GPIO44, TX=GPIO43 (H3)
  • BOOT button: GPIO0

Since this board only has 2 MB of PSRAM, disable XIP from PSRAM, don't copy flash code segments into PSRAM, and don't copy read-only data into PSRAM.

Related

N/A

Testing

I validated that this project builds and flashes successfully. The board boots up to the agent loop. The Telegram bot and Brave search are functional. The agent is able to call the Lua API. The display renders the Lobster mascot correctly.

Checklist

Before submitting a Pull Request, please ensure the following:

  • 🚨 This PR does not introduce breaking changes.
  • All CI checks (GH Actions) pass.
  • Documentation is updated as needed.
  • Tests are updated or added as necessary.
  • Code is well-commented, especially in complex areas.
  • Git history is clean — commits are squashed to the minimum necessary.

@CLAassistant

CLAassistant commented May 11, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@laride

laride commented May 15, 2026

Copy link
Copy Markdown
Collaborator

Thanks for the PR!

If the USB interface on this board is used as Serial JTAG, please add the following configuration to sdkconfig.defaults.board:

# USB: Serial JTAG
CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y

If the USB interface is connected through a USB-to-UART bridge instead, then no modification is needed — please just help confirm which configuration this board is using.

@mogenson mogenson force-pushed the waveshare-esp32-s3-geek branch from 3bb2ac5 to 50a6ebf Compare May 15, 2026 18:55
@mogenson

Copy link
Copy Markdown
Contributor Author
# USB: Serial JTAG

Thanks for the suggestion. Added. The console interface works over USB and the board still boots up on a USB charger (with USB serial unconnected).

@laride

laride commented May 26, 2026

Copy link
Copy Markdown
Collaborator

sha=50a6ebf9375f87dbfacaf79d3b330c43cced6244

@laride

laride commented May 26, 2026

Copy link
Copy Markdown
Collaborator

Thank you for your PR! We are currently going through our internal merge process.

@laride

laride commented May 26, 2026

Copy link
Copy Markdown
Collaborator

Thanks for the PR!

We think the ESP32-S3R2 variant, with only 2 MB of PSRAM, may be a bit too limited for the current ESP-Claw and might not be sufficient to support normal operation.

Could you please rebase this PR onto the latest master and test whether ESP-Claw can still run properly on this board?

Add support for the ESP32-S3-GEEK board from Waveshare.

This board package follows the existing `esp_board_manager` YAML-driven pattern
used by other supported boards.

The following hardware definitions were added:

Chip:
- ESP32-S3R2 — 16 MB QIO NOR flash, 2 MB on-chip Quad PSRAM, dual-core @240 MHz

Display
- 1.14" ST7789 IPS LCD, 135×240 resolution
- Connected via SPI3_HOST (write-only, no MISO): MOSI=GPIO11, CLK=GPIO12,
CS=GPIO10, DC=GPIO8, RST=GPIO9
- Panel has a 52/40 pixel offset (the visible area doesn't start at (0,0) on
the ST7789 framebuffer)
- Colors inverted, X-axis mirrored, 40 MHz SPI clock
- Backlight via GPIO7 → SS8050 NPN transistor (active-high PWM, LEDC @ 5 kHz,
fixed at full duty)

Storage
- TF (microSD) card slot in SPI mode via SPI2_HOST: MOSI=GPIO35, MISO=GPIO37,
CLK=GPIO36, CS=GPIO34
- Mounted at /sdcard as FAT, max 5 open files, 16 KB allocation units

Expansion headers (no onboard devices, just broken out)
- I2C: SDA=GPIO16, SCL=GPIO17 (H1)
- GPIO: GPIO6, GPIO13, GPIO14 (H2)
- UART: RX=GPIO44, TX=GPIO43 (H3)
- BOOT button: GPIO0

Since this board only has 2 MB of PSRAM, disable XIP from PSRAM, don't copy
flash code segments into PSRAM, and don't copy read-only data into PSRAM.

I validated that this project builds and flashes successfully. The board boots
up to the agent loop. The Telegram bot and Brave search are functional. The
agent is able to call the Lua API. The display renders the Lobster mascot
correctly.
@mogenson mogenson force-pushed the waveshare-esp32-s3-geek branch from 50a6ebf to bdb0211 Compare May 27, 2026 13:29
@mogenson

Copy link
Copy Markdown
Contributor Author

Could you please rebase this PR onto the latest master and test whether ESP-Claw can still run properly on this board?

Sure, commit is rebased on master. I built and loaded the firmware and tried a sample prompt: "What is the weather tomorrow?"

The get_current_time() and web_search() tools ran successfully and a correct response with weather forecast was returned over the Telegram channel. Everything appears to still work fine.

@laride

laride commented May 28, 2026

Copy link
Copy Markdown
Collaborator

sha=bdb02116fec3560857c13fc1ca54b1877d84af34

@wujiangang wujiangang merged commit bdb0211 into espressif:master May 28, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants