Fix swapped W5500 clk/miso pins on Waveshare ESP32-S3-ETH#1621
Merged
Conversation
The board manifest had clk_pin GPIO12 and miso_pin GPIO13, but Waveshare's pinout is SCLK GPIO13 and MISO GPIO12. With MISO listening on the SCLK line the W5500 chip-ID read returned 0x00 ("version mismatched, expected 0x04, got 0x00") and ethernet never came up. Swap the two pins (and the matching pin annotations) and regenerate the catalog. The transposition passed esphome config because both are valid GPIOs; only flashing real hardware surfaced it.
3d07015 to
e56b4a1
Compare
Contributor
PR Review — Fix swapped W5500 clk/miso pins on Waveshare ESP32-S3-ETHCorrect, hardware-verified pin swap. Merge-ready.
Checklist
Automated review by Kōan (Claude) |
esphbot
approved these changes
Jun 20, 2026
esphbot
left a comment
Contributor
There was a problem hiding this comment.
No blocking issues found.
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes an incorrect SPI pin mapping in the Waveshare ESP32-S3-ETH board definition so generated configs can reliably initialize the onboard W5500 Ethernet controller at boot.
Changes:
- Swap W5500
clk_pinandmiso_pinvalues in the Waveshare ESP32-S3-ETH board manifest to match the vendor pinout. - Update the corresponding
pins[].occupied_byannotations for GPIO12/GPIO13. - Regenerate the board body JSON so the shipped catalog reflects the corrected pins.
Reviewed changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| esphome_device_builder/definitions/boards/waveshare-esp32-s3-eth/manifest.yaml | Corrects W5500 CLK/MISO pin assignments and updates pin-occupancy annotations. |
| esphome_device_builder/definitions/board_bodies/waveshare-esp32-s3-eth.json | Regenerated board body to reflect the corrected featured-component fields and pin labels. |
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
What does this implement/fix?
A device generated from the Waveshare ESP32-S3-ETH board failed to bring up its onboard W5500 at boot:
The board manifest had
clk_pin: GPIO12andmiso_pin: GPIO13, but Waveshare's pinout is SCLK GPIO13 and MISO GPIO12. With MISO listening on the SCLK line the chip-ID read came back all-zeros, so ethernet never initialized. This swaps the two pins (and the matchingoccupied_bypin annotations) and regenerates the catalog. MOSI/CS/INT/RST and 25MHz were already correct.The transposition slipped through because both pins are valid GPIOs, so
esphome configaccepted it; only flashing real hardware surfaced it. Verified against Waveshare's ETH_DHCP pin table and confirmed on hardware (W5500 now initializes, link plus DHCP).Related issue or feature (if applicable):
Reported via hardware flash; introduced in #1602.
Types of changes
bugfixnew-featureenhancementbreaking-changerefactordocsmaintenancecidependenciesFrontend coordination
Checklist
ruff,codespell, yaml/json/python checks).tests/where applicable.components.index.json/definitions/components/*.jsonhave not been hand-edited (regenerate viascript/sync_components.pyif a sync is needed).docs/ARCHITECTURE.mdand/ordocs/API.md.